diff --git a/chaste_codegen/__init__.py b/chaste_codegen/__init__.py index 65e96bc8d..6d324b39b 100644 --- a/chaste_codegen/__init__.py +++ b/chaste_codegen/__init__.py @@ -4,6 +4,7 @@ from cellmlmanip.parser import Transpiler from ._chaste_printer import ChastePrinter # noqa +from ._chaste_printer_common import ChastePrinterCommon # noqa # # Load constants and version information # diff --git a/chaste_codegen/_chaste_printer.py b/chaste_codegen/_chaste_printer.py index 74ca9c51c..3a9aabdc2 100644 --- a/chaste_codegen/_chaste_printer.py +++ b/chaste_codegen/_chaste_printer.py @@ -1,30 +1,31 @@ -from cellmlmanip.printer import Printer -from sympy import ( - Mul, - Not, - Piecewise, - Pow, - Rational, - S, -) -from sympy.core.mul import _keep_coeff from sympy.printing import cxxcode from sympy.printing.precedence import precedence +from chaste_codegen._chaste_printer_common import ChastePrinterCommon + C_MAX_INT = 2147483647 C_MIN_INT = -2147483647 -class ChastePrinter(Printer): +class ChastePrinter(ChastePrinterCommon): """ Converts Sympy expressions to strings for use in Chaste code generation. + + Expressions are generated in terms of the CHASTE_MATH name space, it is then the job + of the Jinja template to ensure CHASTE_MATH points to the correct C++ namespace + using the appropriate #include. E.g., #include "ChasteCpuMacros.hpp" converts these + namespaced calls to std library calls + + To use, create a :class:`ChastePrinter` instance, and call its method :meth:`doprint()` with a Sympy expression argument. + Arguments: + ``symbol_function`` A function that converts symbols to strings (variable names). ``derivative_function`` @@ -32,205 +33,95 @@ class ChastePrinter(Printer): ``lookup_table_function`` A function that prints lookup table expressions or returns None if the expression is not in the lookup table. + """ _function_names = { - 'abs_': 'fabs', - 'acos_': 'acos', - 'cos_': 'cos', - 'exp_': 'exp', - 'sqrt_': 'sqrt', - 'sin_': 'sin', - - 'Abs': 'fabs', - 'acos': 'acos', - 'acosh': 'acosh', - 'asin': 'asin', - 'asinh': 'asinh', - 'atan': 'atan', - 'atan2': 'atan2', - 'atanh': 'atanh', - 'ceiling': 'ceil', - 'cos': 'cos', - 'cosh': 'cosh', - 'exp': 'exp', - 'expm1': 'expm1', - 'factorial': 'factorial', - 'floor': 'floor', - 'log': 'log', - 'log10': 'log10', - 'log1p': 'log1p', - 'log2': 'log2', - 'sin': 'sin', - 'sinh': 'sinh', - 'sqrt': 'sqrt', - 'tan': 'tan', - 'tanh': 'tanh', - - 'sign': 'Signum', - 'GetIntracellularAreaStimulus': 'GetIntracellularAreaStimulus', - 'HeartConfig::Instance()->GetCapacitance': 'HeartConfig::Instance()->GetCapacitance', - 'GetExperimentalVoltageAtTimeT': 'GetExperimentalVoltageAtTimeT' + 'abs_': 'CHASTE_MATH::Abs', + 'acos_': 'CHASTE_MATH::Acos', + 'cos_': 'CHASTE_MATH::Cos', + 'exp_': 'CHASTE_MATH::Exp', + 'sqrt_': 'CHASTE_MATH::Sqrt', + 'sin_': 'CHASTE_MATH::Sin', + + 'Abs': 'CHASTE_MATH::Abs', + 'acos': 'CHASTE_MATH::Acos', + 'acosh': 'CHASTE_MATH::Acosh', + 'asin': 'CHASTE_MATH::Asin', + 'asinh': 'CHASTE_MATH::Asinh', + 'atan': 'CHASTE_MATH::Atan', + 'atan2': 'CHASTE_MATH::Atan2', + 'atanh': 'CHASTE_MATH::Atanh', + 'ceiling': 'CHASTE_MATH::Ceil', + 'cos': 'CHASTE_MATH::Cos', + 'cosh': 'CHASTE_MATH::Cosh', + 'exp': 'CHASTE_MATH::Exp', + 'expm1': 'CHASTE_MATH::Expm1', + 'factorial': 'CHASTE_MATH::Factorial', + 'floor': 'CHASTE_MATH::Floor', + 'log': 'CHASTE_MATH::Log', + 'log10': 'CHASTE_MATH::Log10', + 'log1p': 'CHASTE_MATH::Log1p', + 'log2': 'CHASTE_MATH::Log2', + 'sin': 'CHASTE_MATH::Sin', + 'sinh': 'CHASTE_MATH::Sinh', + 'sqrt': 'CHASTE_MATH::Sqrt', + 'tan': 'CHASTE_MATH::Tan', + 'tanh': 'CHASTE_MATH::Tanh', + + 'sign': 'CHASTE_MATH::Sign', + + 'GetIntracellularAreaStimulus': 'CHASTE_STIM', + 'HeartConfig::Instance()->GetCapacitance': 'CHASTE_CAP', + 'GetExperimentalVoltageAtTimeT': 'CHASTE_EXP_VOLT' } + _extra_trig_names = { - 'sec': 'cos', - 'csc': 'sin', - 'cot': 'tan', - 'sech': 'cosh', - 'csch': 'sinh', - 'coth': 'tanh', + 'sec': 'CHASTE_MATH::Cos', + 'csc': 'CHASTE_MATH::Sin', + 'cot': 'CHASTE_MATH::Tan', + 'sech': 'CHASTE_MATH::Cosh', + 'csch': 'CHASTE_MATH::Sinh', + 'coth': 'CHASTE_MATH::Tanh', } + _extra_inverse_trig_names = { - 'asec': 'acos', - 'acsc': 'asin', - 'acot': 'atan', - 'asech': 'acosh', - 'acsch': 'asinh', - 'acoth': 'atanh', + 'asec': 'CHASTE_MATH::Acos', + 'acsc': 'CHASTE_MATH::Asin', + 'acot': 'CHASTE_MATH::Atan', + 'asech': 'CHASTE_MATH::Acosh', + 'acsch': 'CHASTE_MATH::Asinh', + 'acoth': 'CHASTE_MATH::Atanh', } _literal_names = { - 'e': 'e', - 'nan': 'NAN', - 'pi': 'M_PI', + 'e': 'CHASTE_CONST(CHASTE_MATH::E)', + 'nan': 'CHASTE_CONST(CHASTE_MATH::NaN)', + 'pi': 'CHASTE_CONST(CHASTE_MATH::Pi)', } - def __init__(self, symbol_function=None, derivative_function=None, lookup_table_function=lambda e: None): - super().__init__(symbol_function, derivative_function) - self.lookup_table_function = lookup_table_function - - def _print(self, expr, **kwargs): - """Internal dispatcher. - - Here we intercept lookup table expressions if we have lookup tables. - Otherwise the base class method is used. - """ - printed_expr = self.lookup_table_function(expr) - if printed_expr: - return printed_expr - return super()._print(expr, **kwargs) - - def _print_And(self, expr): - """ Handles logical And. """ - my_prec = precedence(expr) - return ' && '.join(['(' + self._bracket(x, my_prec) + ')' for x in expr.args]) - - def _print_BooleanFalse(self, expr): - """ Handles False """ - return 'false' - - def _print_BooleanTrue(self, expr): - """ Handles True """ - return 'true' - - def _print_Or(self, expr): - """ Handles logical Or. """ - my_prec = precedence(expr) - return ' || '.join(['(' + self._bracket(x, my_prec) + ')' for x in expr.args]) - def _print_ordinary_pow(self, expr): - """ Handles Pow(), handles just ordinary powers without division. - For C++ printing we need to write ``x**y`` as ``pow(x, y)`` with lowercase ``p``.""" + """ Handles Pow(), handles just ordinary powers without division.""" p = precedence(expr) if expr.exp == 0.5: - return 'sqrt(' + self._bracket(expr.base, p) + ')' - return 'pow(' + self._bracket(expr.base, p) + ', ' + self._bracket(expr.exp, p) + ')' - - def _print_ternary(self, cond, expr): - parts = '' - parts += '(' - parts += self._print(cond) - parts += ') ? (' - parts += self._print(expr) - parts += ') : (' - return parts - - def _print_IntegerConstant(self, expr): - return self._print_int(float(expr)) + return 'CHASTE_MATH::Sqrt(' + self._bracket(expr.base, p) + ')' + return 'CHASTE_MATH::Pow(' + self._bracket(expr.base, p) + ', ' + self._bracket(expr.exp, p) + ')' def _print_float(self, expr): - """ Handles ``float``s. """ + """ + Handles ``float``s. All constants must be wrapped with a macro so that + generated code that ends up in a device kernel can easily be cast between + float and double as this has huge performance implications on device + + ChastePrinterCommon._print_Mul strips away - signs in the expression and then + passes along the absolute value to print. When the multiplication is a number, + this means we get output of the form -CHASTE_CONST(...), hence for consistency, + we factor any negatives outside of CHASTE_CONST in the below. + """ # print integers as int if they are between min & max int in c++ if expr.is_integer() and C_MIN_INT < expr < C_MAX_INT: return cxxcode(int(expr), standard='C++11') - else: - return cxxcode(float(expr), standard='C++11') - - def _print_int(self, expr): - """ Handles ``ints``s. """ - return self._print_float(float(expr)) - - def _print_ITE(self, expr): - """ Handles ITE (if then else) objects by rewriting them as Piecewise """ - return self._print_Piecewise(expr.rewrite(Piecewise)) - def _print_Mul(self, expr): - """ - Handles multiplication & division, with n terms. - - Division is specified as a power: ``x / y --> x * y**-1``. - Subtraction is specified as ``x - y --> x + (-1 * y)``. - """ - # This method is mostly copied from sympy.printing.Str - - # Check overall sign of multiplication - sign = '' - c, e = expr.as_coeff_Mul() - if c < 0: - expr = _keep_coeff(-c, e) - sign = '-' - - # Collect all pows with more than one base element and exp = -1 - pow_brackets = [] - - # Gather terms for numerator and denominator - a, b = [], [] - for item in Mul.make_args(expr): - if item != 1.0: # In multiplications remove 1.0 * ... - # Check if this is a negative power and it's not in a lookup table, so we can write it as a division - if (item.is_commutative and item.is_Pow and item.exp.is_Rational and item.exp.is_negative - and not self.lookup_table_function(item)): - if item.exp != -1: - # E.g. x * y**(-2 / 3) --> x / y**(2 / 3) - # Add as power - b.append(Pow(item.base, -item.exp, evaluate=False)) - else: - # Add without power - b.append(Pow(item.base, -item.exp)) - - # Check if it's a negative power that needs brackets - # Sympy issue #14160 - if (len(item.args[0].args) != 1 and isinstance(item.base, Mul)): - pow_brackets.append(item) - - # Split Rationals over a and b, ignoring any 1s - elif item.is_Rational: - if item.p != 1: - a.append(Rational(item.p)) - if item.q != 1: - b.append(Rational(item.q)) - - else: - a.append(item) - - # Replace empty numerator with one - a = a or [S.One] - - # Convert terms to code - my_prec = precedence(expr) - a_str = [self._bracket(x, my_prec) for x in a] - b_str = [self._bracket(x, my_prec) for x in b] - - # Fix brackets for Pow with exp -1 with more than one Symbol - for item in pow_brackets: - assert item.base in b, "item.base should be kept in b for powers" - b_str[b.index(item.base)] = '(' + b_str[b.index(item.base)] + ')' - - # Combine numerator and denomenator and return - a_str = sign + ' * '.join(a_str) - if len(b) == 0: - return a_str - b_str = ' * '.join(b_str) - return a_str + ' / ' + (b_str if len(b) == 1 else '(' + b_str + ')') - - def _print_Not(self, expr): - return '!(' + self._print(Not(expr)) + ')' + num_str = cxxcode(float(expr), standard='C++11') + if num_str.startswith('-'): + return f'-CHASTE_CONST({num_str[1:]})' + return f'CHASTE_CONST({num_str})' diff --git a/chaste_codegen/_chaste_printer_common.py b/chaste_codegen/_chaste_printer_common.py new file mode 100644 index 000000000..2f36bc0dd --- /dev/null +++ b/chaste_codegen/_chaste_printer_common.py @@ -0,0 +1,236 @@ +from cellmlmanip.printer import Printer +from sympy import ( + Mul, + Not, + Piecewise, + Pow, + Rational, + S, +) +from sympy.core.mul import _keep_coeff +from sympy.printing import cxxcode +from sympy.printing.precedence import precedence + + +C_MAX_INT = 2147483647 +C_MIN_INT = -2147483647 + + +class ChastePrinterCommon(Printer): + """ + Converts Sympy expressions to strings for use in Chaste code generation. + + To use, create a :class:`ChastePrinter` instance, and call its method + :meth:`doprint()` with a Sympy expression argument. + + Arguments: + + ``symbol_function`` + A function that converts symbols to strings (variable names). + ``derivative_function`` + A function that converts derivatives to strings. + ``lookup_table_function`` + A function that prints lookup table expressions or returns None if the expression is not in the lookup table. + + """ + _function_names = { + 'abs_': 'fabs', + 'acos_': 'acos', + 'cos_': 'cos', + 'exp_': 'exp', + 'sqrt_': 'sqrt', + 'sin_': 'sin', + + 'Abs': 'fabs', + 'acos': 'acos', + 'acosh': 'acosh', + 'asin': 'asin', + 'asinh': 'asinh', + 'atan': 'atan', + 'atan2': 'atan2', + 'atanh': 'atanh', + 'ceiling': 'ceil', + 'cos': 'cos', + 'cosh': 'cosh', + 'exp': 'exp', + 'expm1': 'expm1', + 'factorial': 'factorial', + 'floor': 'floor', + 'log': 'log', + 'log10': 'log10', + 'log1p': 'log1p', + 'log2': 'log2', + 'sin': 'sin', + 'sinh': 'sinh', + 'sqrt': 'sqrt', + 'tan': 'tan', + 'tanh': 'tanh', + + 'sign': 'Signum', + 'GetIntracellularAreaStimulus': 'GetIntracellularAreaStimulus', + 'HeartConfig::Instance()->GetCapacitance': 'HeartConfig::Instance()->GetCapacitance', + 'GetExperimentalVoltageAtTimeT': 'GetExperimentalVoltageAtTimeT' + } + _extra_trig_names = { + 'sec': 'cos', + 'csc': 'sin', + 'cot': 'tan', + 'sech': 'cosh', + 'csch': 'sinh', + 'coth': 'tanh', + } + _extra_inverse_trig_names = { + 'asec': 'acos', + 'acsc': 'asin', + 'acot': 'atan', + 'asech': 'acosh', + 'acsch': 'asinh', + 'acoth': 'atanh', + } + + _literal_names = { + 'e': 'e', + 'nan': 'NAN', + 'pi': 'M_PI', + } + + def __init__(self, symbol_function=None, derivative_function=None, lookup_table_function=lambda e: None): + super().__init__(symbol_function, derivative_function) + self.lookup_table_function = lookup_table_function + + def _print(self, expr, **kwargs): + """Internal dispatcher. + + Here we intercept lookup table expressions if we have lookup tables. + Otherwise the base class method is used. + """ + printed_expr = self.lookup_table_function(expr) + if printed_expr: + return printed_expr + return super()._print(expr, **kwargs) + + def _print_And(self, expr): + """ Handles logical And. """ + my_prec = precedence(expr) + return ' && '.join(['(' + self._bracket(x, my_prec) + ')' for x in expr.args]) + + def _print_BooleanFalse(self, expr): + """ Handles False """ + return 'false' + + def _print_BooleanTrue(self, expr): + """ Handles True """ + return 'true' + + def _print_Or(self, expr): + """ Handles logical Or. """ + my_prec = precedence(expr) + return ' || '.join(['(' + self._bracket(x, my_prec) + ')' for x in expr.args]) + + def _print_ordinary_pow(self, expr): + """ Handles Pow(), handles just ordinary powers without division. + For C++ printing we need to write ``x**y`` as ``pow(x, y)`` with lowercase ``p``.""" + p = precedence(expr) + if expr.exp == 0.5: + return 'sqrt(' + self._bracket(expr.base, p) + ')' + return 'pow(' + self._bracket(expr.base, p) + ', ' + self._bracket(expr.exp, p) + ')' + + def _print_ternary(self, cond, expr): + parts = '' + parts += '(' + parts += self._print(cond) + parts += ') ? (' + parts += self._print(expr) + parts += ') : (' + return parts + + def _print_IntegerConstant(self, expr): + return self._print_int(float(expr)) + + def _print_float(self, expr): + """ Handles ``float``s. """ + # print integers as int if they are between min & max int in c++ + if expr.is_integer() and C_MIN_INT < expr < C_MAX_INT: + return cxxcode(int(expr), standard='C++11') + else: + return cxxcode(float(expr), standard='C++11') + + def _print_int(self, expr): + """ Handles ``ints``s. """ + return self._print_float(float(expr)) + + def _print_ITE(self, expr): + """ Handles ITE (if then else) objects by rewriting them as Piecewise """ + return self._print_Piecewise(expr.rewrite(Piecewise)) + + def _print_Mul(self, expr): + """ + Handles multiplication & division, with n terms. + + Division is specified as a power: ``x / y --> x * y**-1``. + Subtraction is specified as ``x - y --> x + (-1 * y)``. + """ + # This method is mostly copied from sympy.printing.Str + + # Check overall sign of multiplication + sign = '' + c, e = expr.as_coeff_Mul() + if c < 0: + expr = _keep_coeff(-c, e) + sign = '-' + + # Collect all pows with more than one base element and exp = -1 + pow_brackets = [] + + # Gather terms for numerator and denominator + a, b = [], [] + for item in Mul.make_args(expr): + if item != 1.0: # In multiplications remove 1.0 * ... + # Check if this is a negative power and it's not in a lookup table, so we can write it as a division + if (item.is_commutative and item.is_Pow and item.exp.is_Rational and item.exp.is_negative + and not self.lookup_table_function(item)): + if item.exp != -1: + # E.g. x * y**(-2 / 3) --> x / y**(2 / 3) + # Add as power + b.append(Pow(item.base, -item.exp, evaluate=False)) + else: + # Add without power + b.append(Pow(item.base, -item.exp)) + + # Check if it's a negative power that needs brackets + # Sympy issue #14160 + if (len(item.args[0].args) != 1 and isinstance(item.base, Mul)): + pow_brackets.append(item) + + # Split Rationals over a and b, ignoring any 1s + elif item.is_Rational: + if item.p != 1: + a.append(Rational(item.p)) + if item.q != 1: + b.append(Rational(item.q)) + + else: + a.append(item) + + # Replace empty numerator with one + a = a or [S.One] + + # Convert terms to code + my_prec = precedence(expr) + a_str = [self._bracket(x, my_prec) for x in a] + b_str = [self._bracket(x, my_prec) for x in b] + + # Fix brackets for Pow with exp -1 with more than one Symbol + for item in pow_brackets: + assert item.base in b, "item.base should be kept in b for powers" + b_str[b.index(item.base)] = '(' + b_str[b.index(item.base)] + ')' + + # Combine numerator and denomenator and return + a_str = sign + ' * '.join(a_str) + if len(b) == 0: + return a_str + b_str = ' * '.join(b_str) + return a_str + ' / ' + (b_str if len(b) == 1 else '(' + b_str + ')') + + def _print_Not(self, expr): + return '!(' + self._print(Not(expr)) + ')' diff --git a/chaste_codegen/_command_line_script.py b/chaste_codegen/_command_line_script.py index 4c515e90f..3bf9079e2 100644 --- a/chaste_codegen/_command_line_script.py +++ b/chaste_codegen/_command_line_script.py @@ -39,6 +39,8 @@ TRANSLATORS_WITH_MODIFIERS = tuple('--' + t for t in TRANSLATORS if TRANSLATORS[t][3]) +# Store translator types with device implementations available +TRANSLATORS_WITH_KERNELS = ['FromCellMLCvode', 'FromCellMLBackwardEuler'] # Store extensions we can use and how to use them, based on extension of given outfile EXTENSION_LOOKUP_FROM_OUTFILE = {'.cellml': ['.hpp', '.cpp'], '': ['.hpp', '.cpp'], '.cpp': ['.hpp', '.cpp'], @@ -98,6 +100,8 @@ def process_command_line(): help="quiet operation, don't print informational messages to screen") group.add_argument('--skip-singularity-fixes', action='store_true', default=False, help="skip singularity fixes in Goldman-Hodgkin-Katz (GHK) equations.") + group.add_argument('--generate-kernels', action='store_true', default=False, + help="Generate GPU/Device kernel files (...Kernels.hpp) for supported model types.") group = parser.add_argument_group('Chaste options', description='Options specific to Chaste code output') group.add_argument('-y', '--dll', '--dynamically-loadable', dest='dynamically_loadable', @@ -194,7 +198,14 @@ def process_command_line(): outfile_path, model_name_from_file, outfile_base, ext = \ get_outfile_parts(args.outfile, args.output_dir, args.cellml_file, translator_class) - ext = ext if ext else translator_class.DEFAULT_EXTENSIONS + # Must make a copy of ext else we will later try to append to the actual DEFAULT_EXTENSIONS + ext = list(ext) if ext else list(translator_class.DEFAULT_EXTENSIONS) + + # Make sure we generate GPU kernels for models that provide kernel templates (if they are wanted) + # TODO: Maybe make this look more like use_modifiers by adding an extra entry to the TRANSLATORS tuples + args.will_generate_kernels = args.generate_kernels and translator[1] in TRANSLATORS_WITH_KERNELS + if args.generate_kernels and translator[1] in TRANSLATORS_WITH_KERNELS: + ext.append('Kernels.hpp') if args.cls_name is not None: args.class_name = args.cls_name @@ -217,6 +228,9 @@ def process_command_line(): print(file) else: with translator_class(model, outfile_base, header_ext=ext[0], **vars(args)) as chaste_model: + # TODO: Consider adding a class variable chaste_model.generate_kernels and using this to prevent + # filling unused jinja template variables (if filling in these variables really adds that much work!) + chaste_model.generate_chaste_code() for file, code in zip(get_files, chaste_model.generated_code): diff --git a/chaste_codegen/_labview_printer.py b/chaste_codegen/_labview_printer.py index 8a40a91e4..8073c5a9f 100644 --- a/chaste_codegen/_labview_printer.py +++ b/chaste_codegen/_labview_printer.py @@ -1,9 +1,9 @@ from sympy import Not -from chaste_codegen._chaste_printer import ChastePrinter +from chaste_codegen._chaste_printer_common import ChastePrinterCommon -class LabviewPrinter(ChastePrinter): +class LabviewPrinter(ChastePrinterCommon): """ Converts Sympy expressions to strings for use in Chaste code generation. diff --git a/chaste_codegen/_lookup_tables.py b/chaste_codegen/_lookup_tables.py index 5777bbc8b..96a969838 100644 --- a/chaste_codegen/_lookup_tables.py +++ b/chaste_codegen/_lookup_tables.py @@ -53,6 +53,14 @@ class LookupTables: """ Holds information about lookuptables and methods to analyse the model for lookup tables. + + Note: the use of CHASTE_CONST and CHASTE_MATH inside of lookup tables is not completely tested. + There may be a mixture of floats wrapped in macros and some not wrapped in macros here (such as + CHASTE_CONST(3.2) vs 3.2 by itself) because lookup tables have not been implemented on device. + This will work as long as the macro definitions in Chaste remain sensible, however if we + do implement lookup tables on device, we will want to ensure that we do wrap all literals with + CHASTE_CONST and namespace all calls with CHASTE_MATH to ensure correctness and efficiency of + the device implementations. """ def __init__(self, model, lookup_params=DEFAULT_LOOKUP_PARAMETERS): diff --git a/chaste_codegen/backward_euler_model.py b/chaste_codegen/backward_euler_model.py index 9478a7642..885413908 100644 --- a/chaste_codegen/backward_euler_model.py +++ b/chaste_codegen/backward_euler_model.py @@ -20,7 +20,7 @@ class BackwardEulerModel(ChasteModel): def __init__(self, model, file_name, **kwargs): super().__init__(model, file_name, **kwargs) - self._templates = ['backward_euler_model.hpp', 'backward_euler_model.cpp'] + self._templates = ['backward_euler_model.hpp', 'backward_euler_model.cpp', 'backward_euler_kernels.hpp'] self._vars_for_template['base_class'] = 'AbstractBackwardEulerCardiacCell' self._vars_for_template['model_type'] = 'BackwardEuler' diff --git a/chaste_codegen/backward_euler_opt_model.py b/chaste_codegen/backward_euler_opt_model.py index 01de16127..7498678eb 100644 --- a/chaste_codegen/backward_euler_opt_model.py +++ b/chaste_codegen/backward_euler_opt_model.py @@ -12,6 +12,9 @@ def __init__(self, model, file_name, **kwargs): self._lookup_tables = LookupTables(model, lookup_params=kwargs.get('lookup_table', DEFAULT_LOOKUP_PARAMETERS)) super().__init__(model, file_name, **kwargs) + # Note: Opt models do not currently support kernel generation, but do inherit + # 'backward_euler_kernels.hpp' as a template in _templates. The CLI script + # filters these out via TRANSLATORS_WITH_KERNELS so they are never used self._vars_for_template['model_type'] += 'Opt' self._update_formatted_deriv_eq() self._vars_for_template['lookup_parameters'] = self._lookup_tables.print_lookup_parameters(self._printer) diff --git a/chaste_codegen/chaste_model.py b/chaste_codegen/chaste_model.py index ef458f911..408abab92 100644 --- a/chaste_codegen/chaste_model.py +++ b/chaste_codegen/chaste_model.py @@ -1,4 +1,5 @@ import time +from contextlib import contextmanager from sympy import Derivative, Float @@ -49,6 +50,38 @@ def __enter__(self): Defined for overwriting in sub-classes if pre-processing is needed to use the model for code generation. """ return self + @contextmanager + def _device_mode(self): + """ Creates an _is_currently_generating_kernel_code context where we can run methods under 'with' and if the + method contains any branches like: if self._is_currently_generating_kernel_code:, the if part will run when + the method is called in this context + + Example: + with self._device_mode(): + # Any call here will execute code the if parts of if self._is_currently_generating_kernel_code: + device_eqs = self._format_derivative_equations(self._derivative_equations) + """ + original_state = getattr(self, '_is_currently_generating_kernel_code', False) + self._is_currently_generating_kernel_code = True + try: + yield + finally: + self._is_currently_generating_kernel_code = original_state + + def _in_device_mode(self, func): + """ Thin wrapper to allow use of the _is_currently_generating_kernel_code context in one line + + Example: + self._in_device_mode(lambda: self._format_derivative_equations(self._derivative_equations)) + + or if the method does not require any arguments: + self._in_device_mode(self._some_method_without_arguments) + + Note the lack of brackets as we need to pass a callable + """ + with self._device_mode(): + return func() + def __init__(self, model, file_name, **kwargs): """ Initialise a ChasteModel instance Arguments @@ -70,6 +103,10 @@ def __init__(self, model, file_name, **kwargs): self._model = model + # The context manager handles setting and unsetting this for kernel code generation + self._is_currently_generating_kernel_code = False + self.will_generate_kernels = kwargs.get('will_generate_kernels', False) + # retrieve probabilities that don't stay in 0 ... 1 range and shouldn't be checked not_quite_probabilities = \ set(get_variables_transitively(self._model, (OXMETA, 'not_a_probability_even_though_it_should_be'))) @@ -145,6 +182,8 @@ def __init__(self, model, file_name, **kwargs): 'ionic_vars': self._format_ionic_vars(), 'y_derivatives': self._format_y_derivatives(), 'y_derivative_equations': self._format_derivative_equations(self._derivative_equations), + 'y_derivative_equations_device': + self._in_device_mode(lambda: self._format_derivative_equations(self._derivative_equations)), 'free_variable': self._format_free_variable(), 'ode_system_information': self._format_system_info(), 'named_attributes': self._format_named_attributes(), @@ -287,12 +326,15 @@ def _format_rY_entry(self, index): def _format_rY_lookup(self, index, var, use_modifier=True): """ Formatting of rY lookup for printing""" - entry = self._format_rY_entry(index) + if self._is_currently_generating_kernel_code: + entry = 'rY[' + str(index) + ']' + else: + entry = self._format_rY_entry(index) if use_modifier and var in self._modifiers: entry = self._format_modifier(var) +\ '->Calc(' + entry + ', ' + self._printer.doprint(self._model.time_variable) + ')' if var == self._model.membrane_voltage_var: - entry = '(mSetVoltageDerivativeToZero ? this->mFixedVoltage : ' + entry + ')' + entry = '(mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : ' + entry + ')' return entry def _format_state_variables(self): @@ -338,6 +380,7 @@ def get_range_annotation(subject, annotation_tag): 'annotated_var_name': self._model.get_display_name(var[1], OXMETA, get_MultipleUsesAllowed_tags()), 'rY_lookup': self._format_rY_lookup(var[0], var[1]), 'rY_lookup_no_modifier': self._format_rY_lookup(var[0], var[1], use_modifier=False), + 'rY_lookup_device': self._in_device_mode(lambda: self._format_rY_lookup(var[0], var[1])), 'initial_value': str(self._get_initial_value(var[1])), 'modifier': self._format_modifier(var[1]) if var[1] in self._modifiers else None, 'units': self._model.units.format(self._model.units.evaluate_units(var[1])), @@ -455,6 +498,8 @@ def _format_derived_quant_eqs(self): def generate_chaste_code(self): """ Generates and stores chaste code""" for templ in self._templates: + if templ.endswith("kernels.hpp") and not self.will_generate_kernels: + continue template = cg.load_template(templ) self.generated_code.append(template.render(self._vars_for_template)) diff --git a/chaste_codegen/cvode_chaste_model.py b/chaste_codegen/cvode_chaste_model.py index 178d4c279..d9739ae23 100644 --- a/chaste_codegen/cvode_chaste_model.py +++ b/chaste_codegen/cvode_chaste_model.py @@ -20,7 +20,7 @@ def __init__(self, model, file_name, **kwargs): self._use_analytic_jacobian = kwargs.get('use_analytic_jacobian', False) # store if jacobians are needed super().__init__(model, file_name, **kwargs) - self._templates = ['cvode_model.hpp', 'cvode_model.cpp'] + self._templates = ['cvode_model.hpp', 'cvode_model.cpp', 'cvode_model_kernels.hpp'] if self._use_data_clamp: self._vars_for_template['base_class'] = 'AbstractCvodeCellWithDataClamp' @@ -43,11 +43,43 @@ def __init__(self, model, file_name, **kwargs): self._jacobian_equations, self._jacobian_matrix = get_jacobian(self._state_vars, self._derivative_equations) self._formatted_state_vars = self._update_state_vars() - self._vars_for_template['jacobian_equations'], self._vars_for_template['jacobian_entries'] = \ - self._print_jacobian() + jac_eqs, jac_entries = self._print_jacobian() + self._vars_for_template['jacobian_equations'] = jac_eqs + self._vars_for_template['jacobian_entries'] = jac_entries + + jac_eqs_dev, jac_entries_dev = self._in_device_mode(self._print_jacobian) + self._vars_for_template['jacobian_equations_device'] = jac_eqs_dev + self._vars_for_template['jacobian_entries_device'] = jac_entries_dev + + # TODO: not sure if we still need this sort or if the entries are guaranteed to be in this order anyway + sorted_jac_entries = sorted(jac_entries_dev, key=lambda entry: (entry['i'], entry['j'])) + + n_vars = len(self._state_vars) + + # Build row_ptr (size n_vars + 1) + row_counts = [0] * n_vars + for entry in sorted_jac_entries: + row_counts[entry['i']] += 1 + row_ptr = [0] + for count in row_counts: + row_ptr.append(row_ptr[-1] + count) + + # Build col_ind (size num_entries) + col_ind = [entry['j'] for entry in sorted_jac_entries] + + self._vars_for_template['sparse_jacobian_entries'] = sorted_jac_entries + self._vars_for_template['sparse_rowptr'] = row_ptr + self._vars_for_template['sparse_colind'] = col_ind + self._vars_for_template['sparse_nnz'] = len(sorted_jac_entries) else: - self._vars_for_template['jacobian_equations'], self._vars_for_template['jacobian_entries'] = \ - [], Matrix() + self._vars_for_template['jacobian_equations'] = [] + self._vars_for_template['jacobian_entries'] = Matrix() + self._vars_for_template['jacobian_equations_device'] = [] + self._vars_for_template['jacobian_entries_device'] = [] + self._vars_for_template['sparse_jacobian_entries'] = [] + self._vars_for_template['sparse_rowptr'] = [] + self._vars_for_template['sparse_colind'] = [] + self._vars_for_template['sparse_nnz'] = 0 def _add_data_clamp_to_model(self): """ Add add membrane_data_clamp_current_conductance and membrane_data_clamp_current to the model""" @@ -151,9 +183,13 @@ def _print_jacobian(self): modifiers_with_defining_eqs=modifiers_with_defining_eqs)) def _print_modifiable_parameters(self, variable): + if self._is_currently_generating_kernel_code: + return 'mParameters[' + self._modifiable_parameter_lookup[variable] + ']' return 'NV_Ith_S(mParameters, ' + self._modifiable_parameter_lookup[variable] + ')' def _format_rY_entry(self, index): + if self._is_currently_generating_kernel_code: + return 'rY[' + str(index) + ']' return 'NV_Ith_S(rY, ' + str(index) + ')' def _update_state_vars(self): diff --git a/chaste_codegen/data/tests/chaste_reference_models/BE/aslanidi_atrial_model_2009.cpp b/chaste_codegen/data/tests/chaste_reference_models/BE/aslanidi_atrial_model_2009.cpp index 8cb3904a7..5e32b2002 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/BE/aslanidi_atrial_model_2009.cpp +++ b/chaste_codegen/data/tests/chaste_reference_models/BE/aslanidi_atrial_model_2009.cpp @@ -22,6 +22,8 @@ #include "HeartConfig.hpp" #include "IsNan.hpp" #include "MathsCustomFunctions.hpp" +#include "ChasteMathDeviceNamespaces.hpp" +#include "ChasteCpuMacros.hpp" @@ -30,9 +32,9 @@ 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_membrane__Cm_converted = CHASTE_CONST(0.001) * mParameters[4]; // uF + const double var_chaste_interface__membrane__stim_amplitude_converted = -CHASTE_CONST(3.9999999999999998e-6) * CHASTE_CAP() / var_membrane__Cm_converted; // uA_per_cm2 + const double var_chaste_interface__membrane__stim_duration_converted = CHASTE_CONST(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( @@ -63,15 +65,15 @@ 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[1] = CHASTE_CONST(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] + this->mParameters[3] = CHASTE_CONST(0.0040000000000000001); // (var_L_type_Ca_channel__g_Ca_L) [nanoS] + this->mParameters[4] = CHASTE_CONST(5.0000000000000002e-5); // (var_membrane__Cm) [nanoF] + this->mParameters[5] = CHASTE_CONST(1.3999999999999999e-6); // (var_sodium_current__P_Na) [nanolitre_per_second] + this->mParameters[6] = CHASTE_CONST(0.0050800000000000003); // (var_inward_rectifier__g_K1) [nanoS] + this->mParameters[7] = CHASTE_CONST(0.0035000000000000001); // (var_delayed_rectifier_K_current__g_Kr) [nanoS] + this->mParameters[8] = CHASTE_CONST(0.0025000000000000001); // (var_delayed_rectifier_K_current__g_Ks) [nanoS] + this->mParameters[9] = CHASTE_CONST(2.0000000000000002e-5); // (var_Na_Ca_ion_exchanger_current__k_NaCa) [picoA_per_millimolar_4] } Cellaslanidi_atrial_model_2009FromCellMLBackwardEuler::~Cellaslanidi_atrial_model_2009FromCellMLBackwardEuler() @@ -118,7 +120,7 @@ // 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -157,52 +159,52 @@ 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_Ca_independent_transient_outward_K_current__g_to = CHASTE_CONST(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_Na_Ca_ion_exchanger_current__d_NaCa = CHASTE_CONST(0.00029999999999999997); // per_millimolar_4 + const double var_Na_Ca_ion_exchanger_current__gamma = CHASTE_CONST(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_T_type_Ca_channel__g_Ca_T = CHASTE_CONST(0.0060000000000000001); // nanoS + const double var_background_currents__g_B_Ca = CHASTE_CONST(3.1000000000000001e-5); // nanoS + const double var_background_currents__g_B_Na = CHASTE_CONST(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_inward_rectifier__KmK1 = CHASTE_CONST(0.58999999999999997); // millimolar + const double var_inward_rectifier__shiftK1 = -CHASTE_CONST(3.6000000000000001); // millivolt + const double var_inward_rectifier__steepK1 = CHASTE_CONST(1.393); // dimensionless + const double var_membrane__Cm_converted = CHASTE_CONST(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_Ca_independent_transient_outward_K_current__E_K = var_membrane__R * var_membrane__T * CHASTE_MATH::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 = CHASTE_CONST(0.5) * var_membrane__R * var_membrane__T * CHASTE_MATH::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)) ? (CHASTE_CONST(0.098000000000000004) + CHASTE_CONST(0.0014) * var_chaste_interface__membrane__V) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (CHASTE_CONST(0.16799999999999998) + CHASTE_CONST(0.0023999999999999998) * var_chaste_interface__membrane__V) : (CHASTE_CONST(0.070000000000000007) + CHASTE_CONST(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)) ? (CHASTE_CONST(0.20000000000000001) * (CHASTE_CONST(0.40000000000000002) + CHASTE_CONST(0.59999999999999998) * CHASTE_MATH::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) * (CHASTE_CONST(0.58999999999999997) * CHASTE_MATH::Pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + CHASTE_CONST(0.40999999999999998) * CHASTE_MATH::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)) ? (CHASTE_CONST(0.34999999999999998) * (CHASTE_CONST(0.40000000000000002) + CHASTE_CONST(0.59999999999999998) * CHASTE_MATH::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) * (CHASTE_CONST(0.58999999999999997) * CHASTE_MATH::Pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + CHASTE_CONST(0.40999999999999998) * CHASTE_MATH::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) : ((CHASTE_CONST(0.40000000000000002) + CHASTE_CONST(0.59999999999999998) * CHASTE_MATH::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) * (CHASTE_CONST(0.58999999999999997) * CHASTE_MATH::Pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + CHASTE_CONST(0.40999999999999998) * CHASTE_MATH::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 + CHASTE_MATH::Exp(CHASTE_CONST(1.9166666666666667) - CHASTE_CONST(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)) ? (CHASTE_CONST(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)) ? (CHASTE_CONST(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 = CHASTE_CONST(9.9999999999999995e-7) * CHASTE_CAP() * 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 = (CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[1] * CHASTE_MATH::Exp(var_Na_Ca_ion_exchanger_current__gamma * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - CHASTE_MATH::Pow(mParameters[2], 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i * CHASTE_MATH::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 + (CHASTE_MATH::Pow(mParameters[2], 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i + CHASTE_MATH::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 = CHASTE_CONST(9.9999999999999995e-7) * CHASTE_CAP() * 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_background_currents__i_B_Ca = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (CHASTE_CONST(2.0000000000000002e-5) * var_chaste_interface__membrane__V - CHASTE_CONST(2.0000000000000002e-5) * var_background_currents__E_Ca) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (CHASTE_CONST(3.0000000000000001e-5) * var_chaste_interface__membrane__V - CHASTE_CONST(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_Kr_converted = CHASTE_CONST(9.9999999999999995e-7) * CHASTE_CAP() * 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))) : (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_delayed_rectifier_K_current__i_Ks_converted = CHASTE_CONST(9.9999999999999995e-7) * CHASTE_CAP() * 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 * CHASTE_MATH::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 + CHASTE_MATH::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))) * CHASTE_MATH::Pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (CHASTE_CONST(2.5) * CHASTE_MATH::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 + CHASTE_MATH::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))) * CHASTE_MATH::Pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))) : (CHASTE_MATH::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 + CHASTE_MATH::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))) * CHASTE_MATH::Pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))))); // picoA + const double var_inward_rectifier__i_K1_converted = CHASTE_CONST(9.9999999999999995e-7) * CHASTE_CAP() * var_inward_rectifier__i_K1 / var_membrane__Cm_converted; // uA_per_cm2 + const double var_sarcolemmal_calcium_pump_current__i_CaP_max = CHASTE_CONST(0.0095090000000000001); // picoA + const double var_sarcolemmal_calcium_pump_current__k_CaP = CHASTE_CONST(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 - 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 + const double var_sodium_current__E_Na = var_membrane__R * var_membrane__T * CHASTE_MATH::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)) ? (CHASTE_CONST(2.0000000000000002e-5) * var_chaste_interface__membrane__V - CHASTE_CONST(2.0000000000000002e-5) * var_sodium_current__E_Na) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (CHASTE_CONST(3.0000000000000001e-5) * var_chaste_interface__membrane__V - CHASTE_CONST(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 >= -CHASTE_CONST(2.6539450910485349e-6)) && (var_chaste_interface__membrane__V <= CHASTE_CONST(2.6539450910485349e-6))) ? (CHASTE_CONST(188398.77346612973) * (CHASTE_CONST(2.6539450910485349e-6) + var_chaste_interface__membrane__V) * (CHASTE_CONST(0.0096486999999999996) * CHASTE_MATH::Pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8) - CHASTE_MATH::Log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (CHASTE_CONST(0.36499999999999999) * var_chaste_interface__sodium_current_h2_gate__h2 + CHASTE_CONST(0.63500000000000001) * var_chaste_interface__sodium_current_h1_gate__h1) * mParameters[2] * mParameters[5] / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) + CHASTE_CONST(0.0096486999999999996) * CHASTE_MATH::Pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8) - CHASTE_MATH::Log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (CHASTE_CONST(0.36499999999999999) * var_chaste_interface__sodium_current_h2_gate__h2 + CHASTE_CONST(0.63500000000000001) * var_chaste_interface__sodium_current_h1_gate__h1) * mParameters[2] * mParameters[5] / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)))) - CHASTE_CONST(0.0096486999999999996) * CHASTE_MATH::Pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8) - CHASTE_MATH::Log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (CHASTE_CONST(0.36499999999999999) * var_chaste_interface__sodium_current_h2_gate__h2 + CHASTE_CONST(0.63500000000000001) * var_chaste_interface__sodium_current_h1_gate__h1) * mParameters[2] * mParameters[5] / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)))) : (CHASTE_CONST(3635.606491085292) * CHASTE_MATH::Pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + CHASTE_MATH::Exp(CHASTE_CONST(0.037679754693225945) * var_chaste_interface__membrane__V - CHASTE_MATH::Log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (CHASTE_CONST(0.36499999999999999) * var_chaste_interface__sodium_current_h2_gate__h2 + CHASTE_CONST(0.63500000000000001) * var_chaste_interface__sodium_current_h1_gate__h1) * mParameters[2] * var_chaste_interface__membrane__V * mParameters[5] / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(0.037679754693225945) * var_chaste_interface__membrane__V)))); // picoA + const double var_sodium_current__i_Na_converted = CHASTE_CONST(9.9999999999999995e-7) * CHASTE_CAP() * var_sodium_current__i_Na / var_membrane__Cm_converted; // uA_per_cm2 + const double var_sodium_potassium_pump__i_NaK_max = CHASTE_CONST(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 var_sodium_potassium_pump__i_p = CHASTE_CONST(1.6000000000000001) * CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, CHASTE_CONST(1.5)) * var_chaste_interface__cleft_space_ion_concentrations__K_c * var_sodium_potassium_pump__i_NaK_max / ((CHASTE_CONST(1.5) + CHASTE_MATH::Exp(-CHASTE_CONST(1.5) - CHASTE_CONST(0.025000000000000001) * var_chaste_interface__membrane__V)) * (CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, CHASTE_CONST(1.5)) + CHASTE_MATH::Pow(var_sodium_potassium_pump__k_NaK_Na, CHASTE_CONST(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 + CHASTE_CONST(9.9999999999999995e-7) * CHASTE_CAP() * var_Ca_independent_transient_outward_K_current__i_sus + CHASTE_CONST(9.9999999999999995e-7) * CHASTE_CAP() * var_Ca_independent_transient_outward_K_current__i_to + CHASTE_CONST(9.9999999999999995e-7) * CHASTE_CAP() * var_T_type_Ca_channel__i_Ca_T + CHASTE_CONST(9.9999999999999995e-7) * CHASTE_CAP() * var_background_currents__i_B_Ca + CHASTE_CONST(9.9999999999999995e-7) * CHASTE_CAP() * var_background_currents__i_B_Na + CHASTE_CONST(9.9999999999999995e-7) * CHASTE_CAP() * var_sarcolemmal_calcium_pump_current__i_CaP + CHASTE_CONST(9.9999999999999995e-7) * CHASTE_CAP() * 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)); @@ -212,7 +214,7 @@ 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -260,93 +262,93 @@ 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__I_up_max = CHASTE_CONST(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_Ca_handling_by_the_SR__Vol_rel = CHASTE_CONST(4.3999999999999997e-8); // nanolitre + const double var_Ca_handling_by_the_SR__Vol_up = CHASTE_CONST(3.9690000000000001e-7); // nanolitre + const double var_Ca_handling_by_the_SR__k_F3 = CHASTE_CONST(0.81499999999999995); // per_second + const double var_Ca_handling_by_the_SR__k_cyca = CHASTE_CONST(0.00029999999999999997); // millimolar + const double var_Ca_handling_by_the_SR__k_rel = CHASTE_CONST(0.00029999999999999997); // millimolar + const double var_Ca_handling_by_the_SR__k_srca = CHASTE_CONST(0.5); // millimolar + const double var_Ca_handling_by_the_SR__k_xcs = CHASTE_CONST(0.40000000000000002); // dimensionless + const double var_Ca_handling_by_the_SR__tau_tr = CHASTE_CONST(0.01); // second + const double var_Ca_independent_transient_outward_K_current__g_to = CHASTE_CONST(0.050001999999999998); // nanoS + const double d_dt_chaste_interface_var_Ca_handling_by_the_SR__O_Calse = CHASTE_CONST(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_Na_Ca_ion_exchanger_current__d_NaCa = CHASTE_CONST(0.00029999999999999997); // per_millimolar_4 + const double var_Na_Ca_ion_exchanger_current__gamma = CHASTE_CONST(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_T_type_Ca_channel__g_Ca_T = CHASTE_CONST(0.0060000000000000001); // nanoS + const double var_background_currents__g_B_Ca = CHASTE_CONST(3.1000000000000001e-5); // nanoS + const double var_background_currents__g_B_Na = CHASTE_CONST(6.3999999999999997e-5); // nanoS + const double var_cleft_space_ion_concentrations__Vol_c = CHASTE_CONST(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__Mg_i = CHASTE_CONST(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 d_dt_chaste_interface_var_intracellular_Ca_buffering__O_TMgMg = CHASTE_CONST(0.001) * var_intracellular_Ca_buffering__O_TMgMg_orig_deriv; // 1 / millisecond + const double var_Ca_handling_by_the_SR__i_rel = CHASTE_MATH::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] / CHASTE_MATH::Pow((CHASTE_CONST(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 - CHASTE_MATH::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 = CHASTE_CONST(33.960000000000001) + CHASTE_CONST(339.60000000000002) * CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Ca_i, 4) / CHASTE_MATH::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 d_dt_chaste_interface_var_Ca_handling_by_the_SR__F3 = CHASTE_CONST(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 d_dt_chaste_interface_var_intracellular_Ca_buffering__O_C = CHASTE_CONST(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 d_dt_chaste_interface_var_intracellular_Ca_buffering__O_TC = CHASTE_CONST(0.001) * var_intracellular_Ca_buffering__O_TC_orig_deriv; // 1 / millisecond + const double var_intracellular_Ca_buffering__dOTMgCdt = -CHASTE_CONST(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 d_dt_chaste_interface_var_intracellular_Ca_buffering__O_TMgC = CHASTE_CONST(0.001) * var_intracellular_Ca_buffering__O_TMgC_orig_deriv; // 1 / millisecond + const double var_intracellular_ion_concentrations__Vol_Ca = CHASTE_CONST(5.8839999999999999e-6); // nanolitre + const double var_intracellular_ion_concentrations__Vol_i = CHASTE_CONST(1.26e-5); // nanolitre + const double var_inward_rectifier__KmK1 = CHASTE_CONST(0.58999999999999997); // millimolar + const double var_inward_rectifier__shiftK1 = -CHASTE_CONST(3.6000000000000001); // millivolt + const double var_inward_rectifier__steepK1 = CHASTE_CONST(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_Ca_handling_by_the_SR__Ca_rel_orig_deriv = -31 * var_Ca_handling_by_the_SR__O_Calse_orig_deriv + CHASTE_CONST(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 = CHASTE_CONST(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 = CHASTE_CONST(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 = CHASTE_CONST(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_independent_transient_outward_K_current__E_K = var_membrane__R * var_membrane__T * CHASTE_MATH::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 = CHASTE_CONST(0.5) * var_membrane__R * var_membrane__T * CHASTE_MATH::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 * CHASTE_MATH::Exp(-CHASTE_CONST(1.6000000000000001) + CHASTE_CONST(0.080000000000000002) * var_chaste_interface__membrane__V) + CHASTE_CONST(203.80000000000001) * CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Ca_i, 4) / CHASTE_MATH::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_Ca_independent_transient_outward_K_current__i_sus = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (CHASTE_CONST(0.098000000000000004) + CHASTE_CONST(0.0014) * var_chaste_interface__membrane__V) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (CHASTE_CONST(0.16799999999999998) + CHASTE_CONST(0.0023999999999999998) * var_chaste_interface__membrane__V) : (CHASTE_CONST(0.070000000000000007) + CHASTE_CONST(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)) ? (CHASTE_CONST(0.20000000000000001) * (CHASTE_CONST(0.40000000000000002) + CHASTE_CONST(0.59999999999999998) * CHASTE_MATH::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) * (CHASTE_CONST(0.58999999999999997) * CHASTE_MATH::Pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + CHASTE_CONST(0.40999999999999998) * CHASTE_MATH::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)) ? (CHASTE_CONST(0.34999999999999998) * (CHASTE_CONST(0.40000000000000002) + CHASTE_CONST(0.59999999999999998) * CHASTE_MATH::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) * (CHASTE_CONST(0.58999999999999997) * CHASTE_MATH::Pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + CHASTE_CONST(0.40999999999999998) * CHASTE_MATH::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) : ((CHASTE_CONST(0.40000000000000002) + CHASTE_CONST(0.59999999999999998) * CHASTE_MATH::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) * (CHASTE_CONST(0.58999999999999997) * CHASTE_MATH::Pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + CHASTE_CONST(0.40999999999999998) * CHASTE_MATH::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 = CHASTE_CONST(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 = CHASTE_CONST(0.001) * var_Ca_handling_by_the_SR__F2_orig_deriv; // 1 / millisecond + const double var_L_type_Ca_channel__d_prime = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(1.9166666666666667) - CHASTE_CONST(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)) ? (CHASTE_CONST(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)) ? (CHASTE_CONST(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 = (CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[1] * CHASTE_MATH::Exp(var_Na_Ca_ion_exchanger_current__gamma * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - CHASTE_MATH::Pow(mParameters[2], 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i * CHASTE_MATH::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 + (CHASTE_MATH::Pow(mParameters[2], 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i + CHASTE_MATH::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_background_currents__i_B_Ca = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (CHASTE_CONST(2.0000000000000002e-5) * var_chaste_interface__membrane__V - CHASTE_CONST(2.0000000000000002e-5) * var_background_currents__E_Ca) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (CHASTE_CONST(3.0000000000000001e-5) * var_chaste_interface__membrane__V - CHASTE_CONST(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))) : (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_inward_rectifier__i_K1 = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (2 * CHASTE_MATH::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 + CHASTE_MATH::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))) * CHASTE_MATH::Pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (CHASTE_CONST(2.5) * CHASTE_MATH::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 + CHASTE_MATH::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))) * CHASTE_MATH::Pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))) : (CHASTE_MATH::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 + CHASTE_MATH::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))) * CHASTE_MATH::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 = CHASTE_CONST(0.0095090000000000001); // picoA + const double var_sarcolemmal_calcium_pump_current__k_CaP = CHASTE_CONST(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 - 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_intracellular_ion_concentrations__Ca_i_orig_deriv = -CHASTE_CONST(0.044999999999999998) * var_intracellular_Ca_buffering__dOCdt - CHASTE_CONST(0.080000000000000002) * var_intracellular_Ca_buffering__dOTCdt - CHASTE_CONST(0.16) * var_intracellular_Ca_buffering__dOTMgCdt + CHASTE_CONST(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 = CHASTE_CONST(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 * CHASTE_MATH::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)) ? (CHASTE_CONST(2.0000000000000002e-5) * var_chaste_interface__membrane__V - CHASTE_CONST(2.0000000000000002e-5) * var_sodium_current__E_Na) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (CHASTE_CONST(3.0000000000000001e-5) * var_chaste_interface__membrane__V - CHASTE_CONST(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 >= -CHASTE_CONST(2.6539450910485349e-6)) && (var_chaste_interface__membrane__V <= CHASTE_CONST(2.6539450910485349e-6))) ? (CHASTE_CONST(188398.77346612973) * (CHASTE_CONST(2.6539450910485349e-6) + var_chaste_interface__membrane__V) * (CHASTE_CONST(0.0096486999999999996) * CHASTE_MATH::Pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8) - CHASTE_MATH::Log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (CHASTE_CONST(0.36499999999999999) * var_chaste_interface__sodium_current_h2_gate__h2 + CHASTE_CONST(0.63500000000000001) * var_chaste_interface__sodium_current_h1_gate__h1) * mParameters[2] * mParameters[5] / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) + CHASTE_CONST(0.0096486999999999996) * CHASTE_MATH::Pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8) - CHASTE_MATH::Log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (CHASTE_CONST(0.36499999999999999) * var_chaste_interface__sodium_current_h2_gate__h2 + CHASTE_CONST(0.63500000000000001) * var_chaste_interface__sodium_current_h1_gate__h1) * mParameters[2] * mParameters[5] / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)))) - CHASTE_CONST(0.0096486999999999996) * CHASTE_MATH::Pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8) - CHASTE_MATH::Log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (CHASTE_CONST(0.36499999999999999) * var_chaste_interface__sodium_current_h2_gate__h2 + CHASTE_CONST(0.63500000000000001) * var_chaste_interface__sodium_current_h1_gate__h1) * mParameters[2] * mParameters[5] / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)))) : (CHASTE_CONST(3635.606491085292) * CHASTE_MATH::Pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + CHASTE_MATH::Exp(CHASTE_CONST(0.037679754693225945) * var_chaste_interface__membrane__V - CHASTE_MATH::Log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (CHASTE_CONST(0.36499999999999999) * var_chaste_interface__sodium_current_h2_gate__h2 + CHASTE_CONST(0.63500000000000001) * var_chaste_interface__sodium_current_h1_gate__h1) * mParameters[2] * var_chaste_interface__membrane__V * mParameters[5] / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(0.037679754693225945) * var_chaste_interface__membrane__V)))); // picoA + const double var_sodium_potassium_pump__i_NaK_max = CHASTE_CONST(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_sodium_potassium_pump__i_p = CHASTE_CONST(1.6000000000000001) * CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, CHASTE_CONST(1.5)) * var_chaste_interface__cleft_space_ion_concentrations__K_c * var_sodium_potassium_pump__i_NaK_max / ((CHASTE_CONST(1.5) + CHASTE_MATH::Exp(-CHASTE_CONST(1.5) - CHASTE_CONST(0.025000000000000001) * var_chaste_interface__membrane__V)) * (CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, CHASTE_CONST(1.5)) + CHASTE_MATH::Pow(var_sodium_potassium_pump__k_NaK_Na, CHASTE_CONST(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 d_dt_chaste_interface_var_cleft_space_ion_concentrations__K_c = CHASTE_CONST(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 d_dt_chaste_interface_var_intracellular_ion_concentrations__K_i = CHASTE_CONST(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 + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Na_i = CHASTE_CONST(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; @@ -367,7 +369,7 @@ 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -404,106 +406,106 @@ 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_x0 = CHASTE_CONST(0.25) + var_chaste_interface__Ca_handling_by_the_SR__F2; + const double var_x1 = CHASTE_MATH::Pow(var_x0, (-2)); + const double var_x2 = CHASTE_MATH::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_x4 = CHASTE_CONST(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_x6 = CHASTE_CONST(0.23554751134632365) * var_x5; + const double var_x7 = var_x2 / CHASTE_MATH::Pow(var_x0, 3); + const double var_x8 = 1 / (CHASTE_CONST(1.3999999999999999) + CHASTE_CONST(0.80000000000000004) * var_chaste_interface__Ca_handling_by_the_SR__Ca_up + CHASTE_CONST(3333.3333333333335) * var_chaste_interface__intracellular_ion_concentrations__Ca_i); + const double var_x9 = CHASTE_MATH::Pow((CHASTE_CONST(0.00041999999999999996) + CHASTE_CONST(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 = CHASTE_CONST(3333.3333333333335) * var_chaste_interface__intracellular_ion_concentrations__Ca_i - CHASTE_CONST(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_x12 = CHASTE_CONST(0.00029999999999999997) + var_chaste_interface__intracellular_ion_concentrations__Ca_i; + const double var_x13 = CHASTE_MATH::Pow(var_x12, (-4)); + const double var_x14 = CHASTE_MATH::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 = var_x13 * pow(var_chaste_interface__intracellular_ion_concentrations__Ca_i, 3); - const double var_x19 = 0.81520000000000004 * var_x17 - 0.81520000000000004 * var_x18; - const double var_x20 = 0.033960000000000004 + 0.33960000000000001 * var_x15; - const double var_x21 = 1.3584000000000001 * var_x17 - 1.3584000000000001 * var_x18; + const double var_x16 = CHASTE_CONST(0.20380000000000001) * var_x15 + CHASTE_CONST(0.23999999999999999) * CHASTE_MATH::Exp(-CHASTE_CONST(1.6000000000000001) + CHASTE_CONST(0.080000000000000002) * var_chaste_interface__membrane__V); + const double var_x17 = var_x14 / CHASTE_MATH::Pow(var_x12, 5); + const double var_x18 = var_x13 * CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Ca_i, 3); + const double var_x19 = CHASTE_CONST(0.81520000000000004) * var_x17 - CHASTE_CONST(0.81520000000000004) * var_x18; + const double var_x20 = CHASTE_CONST(0.033960000000000004) + CHASTE_CONST(0.33960000000000001) * var_x15; + const double var_x21 = CHASTE_CONST(1.3584000000000001) * var_x17 - CHASTE_CONST(1.3584000000000001) * var_x18; 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 = pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 6); - const double var_x26 = 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_x27 = 26.53945091048535 * var_x26 * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r; - const double var_x28 = var_x27 * (1.6583208100573134e-5 + 2.4874812150859699e-5 * var_x25); - const double var_x29 = pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 1.5); - const double var_x30 = 1 / (36.4828726939094 + var_x29); + const double var_x24 = CHASTE_CONST(0.11002290841454433) * var_x23; + const double var_x25 = CHASTE_MATH::Pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 6); + const double var_x26 = CHASTE_CONST(0.58999999999999997) * CHASTE_MATH::Pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + CHASTE_CONST(0.40999999999999998) * CHASTE_MATH::Pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2, 3); + const double var_x27 = CHASTE_CONST(26.53945091048535) * var_x26 * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r; + const double var_x28 = var_x27 * (CHASTE_CONST(1.6583208100573134e-5) + CHASTE_CONST(2.4874812150859699e-5) * var_x25); + const double var_x29 = CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, CHASTE_CONST(1.5)); + const double var_x30 = 1 / (CHASTE_CONST(36.4828726939094) + 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_x33 = 1 / (CHASTE_CONST(1.5) + CHASTE_MATH::Exp(-CHASTE_CONST(1.5) - CHASTE_CONST(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_x29 * 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_x38 = CHASTE_MATH::Pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 2); + const double var_x39 = CHASTE_CONST(0.58999999999999997) + var_chaste_interface__cleft_space_ion_concentrations__K_c; + const double var_x40 = CHASTE_MATH::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_x42 = CHASTE_MATH::Log(var_x41 * var_chaste_interface__cleft_space_ion_concentrations__K_c); + const double var_x43 = CHASTE_MATH::Exp(CHASTE_CONST(0.18895643383558949) + CHASTE_CONST(0.052487898287663745) * var_chaste_interface__membrane__V - CHASTE_CONST(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_x49 = -CHASTE_CONST(26.53945091048535) * var_x42 + var_chaste_interface__membrane__V; + const double var_x50 = CHASTE_MATH::Pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3); + const double var_x51 = var_x46 * var_x50 / CHASTE_MATH::Pow(var_x39, 4); + const double var_x52 = CHASTE_MATH::Pow(var_x31, (-2)); + const double var_x53 = CHASTE_MATH::Pow(var_x44, (-2)); const double var_x54 = var_x22 * 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 * sqrt(var_chaste_interface__intracellular_ion_concentrations__Na_i) * var_chaste_interface__cleft_space_ion_concentrations__K_c; - const double var_x60 = pow((1 + 0.027410122234342148 * var_x29), (-2)); - const double var_x61 = pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 2); + const double var_x59 = var_x35 * CHASTE_MATH::Sqrt(var_chaste_interface__intracellular_ion_concentrations__Na_i) * var_chaste_interface__cleft_space_ion_concentrations__K_c; + const double var_x60 = CHASTE_MATH::Pow((1 + CHASTE_CONST(0.027410122234342148) * var_x29), (-2)); + const double var_x61 = CHASTE_MATH::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_x63 = CHASTE_CONST(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_x65 = CHASTE_CONST(0.00020000000000000001) + var_chaste_interface__intracellular_ion_concentrations__Ca_i; + const double var_x66 = CHASTE_MATH::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_x69 = CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[1]; + const double var_x70 = 1 + CHASTE_CONST(0.00029999999999999997) * var_x68 + CHASTE_CONST(0.00029999999999999997) * var_x69; + const double var_x71 = CHASTE_MATH::Pow(var_x70, (-2)); + const double var_x72 = CHASTE_MATH::Exp(CHASTE_CONST(0.016955889611951675) * var_chaste_interface__membrane__V); + const double var_x73 = CHASTE_MATH::Exp(-CHASTE_CONST(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_x79 = CHASTE_MATH::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_x23; - const double var_x82 = -3.290319067574035e-6 - 4.9354786013610522e-6 * var_x25; - const double var_x83 = 0.0049352811901134472 * var_x49; + const double var_x81 = CHASTE_CONST(0.021829942145742926) * var_x23; + const double var_x82 = -CHASTE_CONST(3.290319067574035e-6) - CHASTE_CONST(4.9354786013610522e-6) * var_x25; + const double var_x83 = CHASTE_CONST(0.0049352811901134472) * var_x49; const double var_x84 = var_x29 * var_x30 * var_x33 * var_x52 * var_chaste_interface__cleft_space_ion_concentrations__K_c; 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_x87 = CHASTE_MATH::Log(var_x86); + const double var_x88 = var_x86 * CHASTE_MATH::Pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (CHASTE_CONST(0.36499999999999999) * var_chaste_interface__sodium_current_h2_gate__h2 + CHASTE_CONST(0.63500000000000001) * var_chaste_interface__sodium_current_h1_gate__h1) * mParameters[5]; + const double var_x89 = CHASTE_CONST(0.0096486999999999996) * var_x88; + const double var_x90 = var_x89 * CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8) - var_x87) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8))); + const double var_x91 = CHASTE_CONST(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][0] = 1.0 - (mDt * (-CHASTE_CONST(14.98) - var_x4 + CHASTE_CONST(14.880000000000001) * var_chaste_interface__Ca_handling_by_the_SR__O_Calse)); + rJacobian[0][1] = -(mDt * (CHASTE_CONST(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][5] = -(mDt * (CHASTE_CONST(12.4) + CHASTE_CONST(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; @@ -512,8 +514,8 @@ 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][0] = -(mDt * (CHASTE_CONST(0.011085915847820609))); + rJacobian[1][1] = 1.0 - (mDt * (-CHASTE_CONST(0.011085915847820609) - CHASTE_CONST(2.6321499680605046e-9) * var_x11 - CHASTE_CONST(0.011698444302491135) * var_x8)); rJacobian[1][2] = 0.0; rJacobian[1][3] = 0.0; rJacobian[1][4] = 0.0; @@ -523,14 +525,14 @@ 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][11] = -(mDt * (CHASTE_CONST(121.85879481761599) * var_x8 - CHASTE_CONST(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][4] = -(mDt * (CHASTE_CONST(0.00081499999999999997))); rJacobian[2][5] = 0.0; rJacobian[2][6] = 0.0; rJacobian[2][7] = 0.0; @@ -558,7 +560,7 @@ 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][4] = 1.0 - (mDt * (-CHASTE_CONST(0.00081499999999999997))); rJacobian[4][5] = 0.0; rJacobian[4][6] = 0.0; rJacobian[4][7] = 0.0; @@ -568,12 +570,12 @@ rJacobian[4][11] = -(mDt * (-var_x21 * var_chaste_interface__Ca_handling_by_the_SR__F2)); 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][0] = -(mDt * (CHASTE_CONST(0.47999999999999998) - CHASTE_CONST(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][5] = 1.0 - (mDt * (-CHASTE_CONST(0.40000000000000002) - CHASTE_CONST(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; @@ -588,14 +590,14 @@ 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_x22 * var_x24 - var_x23 * var_x28 - var_x24 * var_x37 - 0.024873817198171774 * var_x49 * var_x51 + 0.024873817198171774 * var_x38 * var_x40 * var_x45 * var_x49 * mParameters[6] + 0.00085446536839159674 * var_x29 * 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][6] = 1.0 - (mDt * (-CHASTE_CONST(0.00085446536839159674) * var_x36 - CHASTE_CONST(0.22004581682908866) * var_x48 - var_x22 * var_x24 - var_x23 * var_x28 - var_x24 * var_x37 - CHASTE_CONST(0.024873817198171774) * var_x49 * var_x51 + CHASTE_CONST(0.024873817198171774) * var_x38 * var_x40 * var_x45 * var_x49 * mParameters[6] + CHASTE_CONST(0.00085446536839159674) * var_x29 * var_x30 * var_x33 * var_x52 * var_chaste_interface__cleft_space_ion_concentrations__K_c + CHASTE_CONST(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_x28 * var_x41 - 0.011549742452351092 * var_x56 * var_x58)); - rJacobian[6][13] = -(mDt * (-0.0012816980525873951 * var_x59 + 9.6295871719563877e-7 * var_x32 * var_x33 * var_x60 * var_x61 * var_chaste_interface__cleft_space_ion_concentrations__K_c)); + rJacobian[6][12] = -(mDt * (CHASTE_CONST(0.11002290841454433) * var_x54 + CHASTE_CONST(0.11002290841454433) * var_x55 + CHASTE_CONST(0.22004581682908866) * var_x57 + var_x28 * var_x41 - CHASTE_CONST(0.011549742452351092) * var_x56 * var_x58)); + rJacobian[6][13] = -(mDt * (-CHASTE_CONST(0.0012816980525873951) * var_x59 + CHASTE_CONST(9.6295871719563877e-7) * 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; @@ -603,7 +605,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_x62)); + rJacobian[7][7] = 1.0 - (mDt * (-CHASTE_CONST(0.47599999999999998) - var_x62)); rJacobian[7][8] = 0.0; rJacobian[7][9] = 0.0; rJacobian[7][10] = 0.0; @@ -618,10 +620,10 @@ 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][8] = 1.0 - (mDt * (-CHASTE_CONST(0.39200000000000002) - CHASTE_CONST(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][11] = -(mDt * (CHASTE_CONST(78.400000000000006) - CHASTE_CONST(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; @@ -633,7 +635,7 @@ 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][9] = 1.0 - (mDt * (-CHASTE_CONST(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; @@ -648,59 +650,59 @@ 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][10] = 1.0 - (mDt * (-CHASTE_CONST(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 * (1.7754934097947219e-10 * var_x11 + 0.00078910818213098765 * var_x8)); + rJacobian[11][1] = -(mDt * (CHASTE_CONST(1.7754934097947219e-10) * var_x11 + CHASTE_CONST(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][3] = -(mDt * (-CHASTE_CONST(0.0017614021922566689) * var_x5 * var_x7 + CHASTE_CONST(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][7] = -(mDt * (CHASTE_CONST(0.021419999999999998) + 9 * var_chaste_interface__intracellular_ion_concentrations__Ca_i)); + rJacobian[11][8] = -(mDt * (CHASTE_CONST(0.031359999999999999) + CHASTE_CONST(6.2720000000000002) * var_chaste_interface__intracellular_ion_concentrations__Ca_i)); + rJacobian[11][9] = -(mDt * (CHASTE_CONST(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_x8 - 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) + 7.3978892074780085e-7 * var_x10 * var_x9)); + rJacobian[11][11] = 1.0 - (mDt * (-CHASTE_CONST(47.271999999999998) - var_x63 + CHASTE_CONST(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 - CHASTE_CONST(8.3745867230843319e-6) / var_x65 - CHASTE_CONST(5.2842065767700058e-7) * var_x76 - CHASTE_CONST(8.2198768971977874) * var_x8 - CHASTE_CONST(0.0017614021922566689) * var_x78 - CHASTE_CONST(2.3373323507508574e-7) / var_chaste_interface__intracellular_ion_concentrations__Ca_i + CHASTE_CONST(8.3745867230843319e-6) * var_chaste_interface__intracellular_ion_concentrations__Ca_i / CHASTE_MATH::Pow(var_x65, 2) + CHASTE_CONST(7.3978892074780085e-7) * var_x10 * var_x9)); 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[11][13] = -(mDt * (-CHASTE_CONST(1.5852619730310017e-6) * var_x75 * var_x80 + CHASTE_CONST(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_x22 * var_x81 + var_x37 * var_x81 + var_x51 * var_x83 - var_x48 * var_x83 - 0.0022916155659426776 * var_x38 * var_x58 - var_x23 * var_x27 * var_x82)); + rJacobian[12][6] = -(mDt * (CHASTE_CONST(0.043659884291485852) * var_x48 + CHASTE_CONST(0.00016953677944277714) * var_x36 - CHASTE_CONST(0.00016953677944277714) * var_x84 + var_x22 * var_x81 + var_x37 * var_x81 + var_x51 * var_x83 - var_x48 * var_x83 - CHASTE_CONST(0.0022916155659426776) * var_x38 * var_x58 - var_x23 * var_x27 * var_x82)); 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 + 26.53945091048535 * var_x26 * var_x41 * var_x82 * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r + 0.0022916155659426776 * var_x40 * var_x41 * var_x43 * var_x49 * var_x50 * var_x53 * mParameters[6])); - rJacobian[12][13] = -(mDt * (0.00025430516916416572 * var_x59 - 1.9106323753881723e-7 * var_x34 * var_x60 * var_x61 * var_chaste_interface__cleft_space_ion_concentrations__K_c)); + rJacobian[12][12] = 1.0 - (mDt * (-CHASTE_CONST(0.021829942145742926) * var_x54 - CHASTE_CONST(0.021829942145742926) * var_x55 - CHASTE_CONST(0.043659884291485852) * var_x57 + CHASTE_CONST(26.53945091048535) * var_x26 * var_x41 * var_x82 * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r + CHASTE_CONST(0.0022916155659426776) * var_x40 * var_x41 * var_x43 * var_x49 * var_x50 * var_x53 * mParameters[6])); + rJacobian[12][13] = -(mDt * (CHASTE_CONST(0.00025430516916416572) * var_x59 - CHASTE_CONST(1.9106323753881723e-7) * var_x34 * var_x60 * var_x61 * 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_x84 - 0.00025430516916416572 * var_x36)); + rJacobian[13][6] = -(mDt * (CHASTE_CONST(0.00025430516916416572) * var_x84 - CHASTE_CONST(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][11] = -(mDt * (CHASTE_CONST(0.0024676405950567236) * var_x78 + CHASTE_CONST(7.4029217851701709e-7) * var_x76)); rJacobian[13][12] = 0.0; - rJacobian[13][13] = 1.0 - (mDt * (-0.00038145775374624855 * var_x59 - 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_x91 - var_x87) / (-1 + exp(var_x91)))) - 0.0074029217851701709 * var_x72 * var_x77 * var_x80 + 2.2208765355510512e-6 * var_x71 * var_x74 * var_x79 * mParameters[9] * mParameters[1] + 2.8659485630822583e-7 * var_x32 * var_x33 * var_x60 * var_x61 * var_chaste_interface__cleft_space_ion_concentrations__K_c)); + rJacobian[13][13] = 1.0 - (mDt * (-CHASTE_CONST(0.00038145775374624855) * var_x59 - CHASTE_CONST(4.3659884291485854e-7) * var_x85 - CHASTE_CONST(0.00082254686501890791) * (((var_chaste_interface__membrane__V >= -CHASTE_CONST(2.6539450910485349e-6)) && (var_chaste_interface__membrane__V <= CHASTE_CONST(2.6539450910485349e-6))) ? (-var_x90 + (CHASTE_CONST(0.5) + CHASTE_CONST(188398.77346612973) * var_chaste_interface__membrane__V) * (var_x90 + var_x89 * CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8) - var_x87) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))))) : (CHASTE_CONST(3635.606491085292) * var_x88 * var_chaste_interface__membrane__V * CHASTE_MATH::Exp(var_x91 - var_x87) / (-1 + CHASTE_MATH::Exp(var_x91)))) - CHASTE_CONST(0.0074029217851701709) * var_x72 * var_x77 * var_x80 + CHASTE_CONST(2.2208765355510512e-6) * var_x71 * var_x74 * var_x79 * mParameters[9] * mParameters[1] + CHASTE_CONST(2.8659485630822583e-7) * var_x32 * var_x33 * var_x60 * var_x61 * 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -739,49 +741,49 @@ 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_Ca_independent_transient_outward_K_current__g_to = CHASTE_CONST(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_Na_Ca_ion_exchanger_current__d_NaCa = CHASTE_CONST(0.00029999999999999997); // per_millimolar_4 + const double var_Na_Ca_ion_exchanger_current__gamma = CHASTE_CONST(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_T_type_Ca_channel__g_Ca_T = CHASTE_CONST(0.0060000000000000001); // nanoS + const double var_background_currents__g_B_Ca = CHASTE_CONST(3.1000000000000001e-5); // nanoS + const double var_background_currents__g_B_Na = CHASTE_CONST(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_inward_rectifier__KmK1 = CHASTE_CONST(0.58999999999999997); // millimolar + const double var_inward_rectifier__shiftK1 = -CHASTE_CONST(3.6000000000000001); // millivolt + const double var_inward_rectifier__steepK1 = CHASTE_CONST(1.393); // dimensionless + const double var_membrane__Cm_converted = CHASTE_CONST(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_Ca_independent_transient_outward_K_current__E_K = var_membrane__R * var_membrane__T * CHASTE_MATH::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 = CHASTE_CONST(0.5) * var_membrane__R * var_membrane__T * CHASTE_MATH::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)) ? (CHASTE_CONST(0.098000000000000004) + CHASTE_CONST(0.0014) * var_chaste_interface__membrane__V) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (CHASTE_CONST(0.16799999999999998) + CHASTE_CONST(0.0023999999999999998) * var_chaste_interface__membrane__V) : (CHASTE_CONST(0.070000000000000007) + CHASTE_CONST(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)) ? (CHASTE_CONST(0.20000000000000001) * (CHASTE_CONST(0.40000000000000002) + CHASTE_CONST(0.59999999999999998) * CHASTE_MATH::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) * (CHASTE_CONST(0.58999999999999997) * CHASTE_MATH::Pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + CHASTE_CONST(0.40999999999999998) * CHASTE_MATH::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)) ? (CHASTE_CONST(0.34999999999999998) * (CHASTE_CONST(0.40000000000000002) + CHASTE_CONST(0.59999999999999998) * CHASTE_MATH::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) * (CHASTE_CONST(0.58999999999999997) * CHASTE_MATH::Pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + CHASTE_CONST(0.40999999999999998) * CHASTE_MATH::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) : ((CHASTE_CONST(0.40000000000000002) + CHASTE_CONST(0.59999999999999998) * CHASTE_MATH::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) * (CHASTE_CONST(0.58999999999999997) * CHASTE_MATH::Pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + CHASTE_CONST(0.40999999999999998) * CHASTE_MATH::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 + CHASTE_MATH::Exp(CHASTE_CONST(1.9166666666666667) - CHASTE_CONST(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)) ? (CHASTE_CONST(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)) ? (CHASTE_CONST(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 = (CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[1] * CHASTE_MATH::Exp(var_Na_Ca_ion_exchanger_current__gamma * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - CHASTE_MATH::Pow(mParameters[2], 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i * CHASTE_MATH::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 + (CHASTE_MATH::Pow(mParameters[2], 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i + CHASTE_MATH::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_background_currents__i_B_Ca = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (CHASTE_CONST(2.0000000000000002e-5) * var_chaste_interface__membrane__V - CHASTE_CONST(2.0000000000000002e-5) * var_background_currents__E_Ca) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (CHASTE_CONST(3.0000000000000001e-5) * var_chaste_interface__membrane__V - CHASTE_CONST(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))) : (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_inward_rectifier__i_K1 = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (2 * CHASTE_MATH::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 + CHASTE_MATH::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))) * CHASTE_MATH::Pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (CHASTE_CONST(2.5) * CHASTE_MATH::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 + CHASTE_MATH::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))) * CHASTE_MATH::Pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))) : (CHASTE_MATH::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 + CHASTE_MATH::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))) * CHASTE_MATH::Pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))))); // picoA + const double var_membrane__i_Stim_converted = CHASTE_STIM(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 / CHASTE_CAP(); // picoA + const double var_sarcolemmal_calcium_pump_current__i_CaP_max = CHASTE_CONST(0.0095090000000000001); // picoA + const double var_sarcolemmal_calcium_pump_current__k_CaP = CHASTE_CONST(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 - 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_current__E_Na = var_membrane__R * var_membrane__T * CHASTE_MATH::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)) ? (CHASTE_CONST(2.0000000000000002e-5) * var_chaste_interface__membrane__V - CHASTE_CONST(2.0000000000000002e-5) * var_sodium_current__E_Na) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (CHASTE_CONST(3.0000000000000001e-5) * var_chaste_interface__membrane__V - CHASTE_CONST(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 >= -CHASTE_CONST(2.6539450910485349e-6)) && (var_chaste_interface__membrane__V <= CHASTE_CONST(2.6539450910485349e-6))) ? (CHASTE_CONST(188398.77346612973) * (CHASTE_CONST(2.6539450910485349e-6) + var_chaste_interface__membrane__V) * (CHASTE_CONST(0.0096486999999999996) * CHASTE_MATH::Pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8) - CHASTE_MATH::Log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (CHASTE_CONST(0.36499999999999999) * var_chaste_interface__sodium_current_h2_gate__h2 + CHASTE_CONST(0.63500000000000001) * var_chaste_interface__sodium_current_h1_gate__h1) * mParameters[2] * mParameters[5] / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) + CHASTE_CONST(0.0096486999999999996) * CHASTE_MATH::Pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8) - CHASTE_MATH::Log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (CHASTE_CONST(0.36499999999999999) * var_chaste_interface__sodium_current_h2_gate__h2 + CHASTE_CONST(0.63500000000000001) * var_chaste_interface__sodium_current_h1_gate__h1) * mParameters[2] * mParameters[5] / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)))) - CHASTE_CONST(0.0096486999999999996) * CHASTE_MATH::Pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8) - CHASTE_MATH::Log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (CHASTE_CONST(0.36499999999999999) * var_chaste_interface__sodium_current_h2_gate__h2 + CHASTE_CONST(0.63500000000000001) * var_chaste_interface__sodium_current_h1_gate__h1) * mParameters[2] * mParameters[5] / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)))) : (CHASTE_CONST(3635.606491085292) * CHASTE_MATH::Pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + CHASTE_MATH::Exp(CHASTE_CONST(0.037679754693225945) * var_chaste_interface__membrane__V - CHASTE_MATH::Log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (CHASTE_CONST(0.36499999999999999) * var_chaste_interface__sodium_current_h2_gate__h2 + CHASTE_CONST(0.63500000000000001) * var_chaste_interface__sodium_current_h1_gate__h1) * mParameters[2] * var_chaste_interface__membrane__V * mParameters[5] / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(0.037679754693225945) * var_chaste_interface__membrane__V)))); // picoA + const double var_sodium_potassium_pump__i_NaK_max = CHASTE_CONST(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_sodium_potassium_pump__i_p = CHASTE_CONST(1.6000000000000001) * CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, CHASTE_CONST(1.5)) * var_chaste_interface__cleft_space_ion_concentrations__K_c * var_sodium_potassium_pump__i_NaK_max / ((CHASTE_CONST(1.5) + CHASTE_MATH::Exp(-CHASTE_CONST(1.5) - CHASTE_CONST(0.025000000000000001) * var_chaste_interface__membrane__V)) * (CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, CHASTE_CONST(1.5)) + CHASTE_MATH::Pow(var_sodium_potassium_pump__k_NaK_Na, CHASTE_CONST(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 = -(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 + const double d_dt_chaste_interface_var_membrane__V = CHASTE_CONST(0.001) * var_membrane__V_orig_deriv; // millivolt / millisecond rY[0] += mDt*d_dt_chaste_interface_var_membrane__V; } @@ -790,7 +792,7 @@ { // Time units: millisecond std::vector& rY = rGetStateVariables(); - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -821,72 +823,72 @@ 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_Ca_independent_transient_outward_K_current_r_gate__alpha_r = CHASTE_CONST(386.60000000000002) * CHASTE_MATH::Exp(CHASTE_CONST(0.083333333333333329) * var_chaste_interface__membrane__V); + const double var_Ca_independent_transient_outward_K_current_r_gate__beta_r = CHASTE_CONST(8.0109999999999992) * CHASTE_MATH::Exp(-CHASTE_CONST(0.1388888888888889) * var_chaste_interface__membrane__V); + const double var_Ca_independent_transient_outward_K_current_r_gate__r_infinity = 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.6628794603230959) - CHASTE_CONST(0.17752529735487307) * var_chaste_interface__membrane__V)); + const double var_Ca_independent_transient_outward_K_current_r_gate__tau_r = CHASTE_CONST(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 + CHASTE_MATH::Exp(CHASTE_CONST(4.0070821529745047) + CHASTE_CONST(0.14164305949008499) * var_chaste_interface__membrane__V)); + const double var_Ca_independent_transient_outward_K_current_s1_gate__tau_s1 = CHASTE_CONST(0.020400000000000001) + CHASTE_CONST(0.54659999999999997) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(327.99999999999994) + 10 * var_chaste_interface__membrane__V)); + const double var_Ca_independent_transient_outward_K_current_s2_gate__s2_infinity = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(4.0070821529745047) + CHASTE_CONST(0.14164305949008499) * var_chaste_interface__membrane__V)); + const double var_Ca_independent_transient_outward_K_current_s2_gate__tau_s2 = CHASTE_CONST(5.75) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(327.99999999999994) + 10 * var_chaste_interface__membrane__V)) + CHASTE_CONST(0.45000000000000001) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(0.96921975662133131) - CHASTE_CONST(0.071581961345740866) * var_chaste_interface__membrane__V)); + const double var_Ca_independent_transient_outward_K_current_s3_gate__s3_infinity = CHASTE_CONST(0.39975990396158467) + CHASTE_CONST(0.60024009603841544) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(1.8506208911614319) + CHASTE_CONST(0.036523009495982472) * var_chaste_interface__membrane__V)); + const double var_Ca_independent_transient_outward_K_current_s3_gate__tau_s3 = CHASTE_CONST(0.5) + CHASTE_CONST(7.5) / (1 + CHASTE_MATH::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__alpha_d_L = (((var_chaste_interface__membrane__V >= -CHASTE_CONST(10.000000480800001)) && (var_chaste_interface__membrane__V <= -CHASTE_CONST(9.9999995191999993))) ? (CHASTE_CONST(2.4040000000391526e-5) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(1.0000000000162864e-7))) + CHASTE_CONST(1039933.4442576389) * (CHASTE_CONST(10.000000480800001) + var_chaste_interface__membrane__V) * (-CHASTE_CONST(2.4040000000391526e-5) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(1.0000000000162864e-7))) - CHASTE_CONST(2.4039999999697637e-5) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999998742257e-8))))) : (-50 * (10 + var_chaste_interface__membrane__V) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.0798668885191347) - CHASTE_CONST(0.20798668885191349) * var_chaste_interface__membrane__V)))) + (((var_chaste_interface__membrane__V >= -CHASTE_CONST(45.000000249999999)) && (var_chaste_interface__membrane__V <= -CHASTE_CONST(44.999999750000001))) ? (CHASTE_CONST(4.1799999996561256e-6) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999991773334e-8))) + CHASTE_CONST(1999999.9999424887) * (CHASTE_CONST(45.000000249999999) + var_chaste_interface__membrane__V) * (-CHASTE_CONST(4.1800000005842713e-6) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(1.000000000139778e-7))) - CHASTE_CONST(4.1799999996561256e-6) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999991773334e-8))))) : (-CHASTE_CONST(16.719999999999999) * (45 + var_chaste_interface__membrane__V) / (-1 + CHASTE_MATH::Exp(-18 - CHASTE_CONST(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 >= -CHASTE_CONST(5.0000002500000003)) && (var_chaste_interface__membrane__V <= -CHASTE_CONST(4.9999997499999997))) ? (-CHASTE_CONST(1.1200000000011203e-6) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(1.0000000000010001e-7))) + CHASTE_CONST(1999999.9999979998) * (CHASTE_CONST(5.0000002500000003) + var_chaste_interface__membrane__V) * (CHASTE_CONST(1.1200000000011203e-6) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(1.0000000000010001e-7))) + CHASTE_CONST(1.1200000000011203e-6) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(1.0000000000010001e-7))))) : (CHASTE_CONST(4.4800000000000004) * (5 + var_chaste_interface__membrane__V) / (-1 + CHASTE_MATH::Exp(2 + CHASTE_CONST(0.40000000000000002) * var_chaste_interface__membrane__V)))); + const double var_L_type_Ca_channel_d_L_gate__d_L_infinity = 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.14393939393939395) - CHASTE_CONST(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__alpha_f_L = (((var_chaste_interface__membrane__V >= -CHASTE_CONST(18.000000400000001)) && (var_chaste_interface__membrane__V <= -CHASTE_CONST(17.999999599999999))) ? (-CHASTE_CONST(3.3960000000976542e-6) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(1.0000000000287557e-7))) + CHASTE_CONST(1249999.9999640554) * (CHASTE_CONST(18.000000400000001) + var_chaste_interface__membrane__V) * (CHASTE_CONST(3.3960000000976542e-6) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(1.0000000000287557e-7))) + CHASTE_CONST(3.3960000000976542e-6) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(1.0000000000287557e-7))))) : (CHASTE_CONST(8.4900000000000002) * (18 + var_chaste_interface__membrane__V) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(4.5) + CHASTE_CONST(0.25) * var_chaste_interface__membrane__V)))); + const double var_L_type_Ca_channel_f_L_gate__beta_f_L = CHASTE_CONST(67.921999999999997) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(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__E0_d_T = CHASTE_CONST(23.300000000000001) + var_chaste_interface__membrane__V; + const double var_T_type_Ca_channel_d_T_gate__alpha_d_T = CHASTE_CONST(674.173) * CHASTE_MATH::Exp(CHASTE_CONST(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 = CHASTE_CONST(674.173) * CHASTE_MATH::Exp(-CHASTE_CONST(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 + CHASTE_MATH::Exp(CHASTE_CONST(0.049180327868852458) - CHASTE_CONST(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__alpha_f_T = CHASTE_CONST(9.6370000000000005) * CHASTE_MATH::Exp(-CHASTE_CONST(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 = CHASTE_CONST(9.6370000000000005) * CHASTE_MATH::Exp(CHASTE_CONST(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__alpha_p_a = 9 * CHASTE_MATH::Exp(CHASTE_CONST(0.03941508020968823) * var_chaste_interface__membrane__V); + const double var_delayed_rectifier_K_current_pa_gate__beta_p_a = CHASTE_CONST(1.3) * CHASTE_MATH::Exp(-CHASTE_CONST(0.076769537847382163) * var_chaste_interface__membrane__V); + const double var_delayed_rectifier_K_current_pa_gate__p_a_infinity = 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.68918918918918914) - CHASTE_CONST(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__alpha_p_i = 100 * CHASTE_MATH::Exp(-CHASTE_CONST(0.018299935950224173) * var_chaste_interface__membrane__V); + const double var_delayed_rectifier_K_current_pi_gate__beta_p_i = 656 * CHASTE_MATH::Exp(CHASTE_CONST(0.009420009985210585) * var_chaste_interface__membrane__V); + const double var_delayed_rectifier_K_current_pi_gate__p_i_infinity = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(2.539728728905752) + CHASTE_CONST(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_delayed_rectifier_K_current_z_gate__alpha_z = CHASTE_CONST(1.6599999999999999) * CHASTE_MATH::Exp(CHASTE_CONST(0.014398433450440593) * var_chaste_interface__membrane__V); + const double var_delayed_rectifier_K_current_z_gate__beta_z = CHASTE_CONST(0.29999999999999999) * CHASTE_MATH::Exp(-CHASTE_CONST(0.045816915605241454) * var_chaste_interface__membrane__V); + const double var_delayed_rectifier_K_current_z_gate__tau_z = CHASTE_CONST(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 + CHASTE_MATH::Exp(CHASTE_CONST(0.065217391304347824) - CHASTE_CONST(0.072463768115942032) * var_chaste_interface__membrane__V)); + const double var_sodium_current_h1_gate__alpha_h = CHASTE_CONST(44.899999999999999) * CHASTE_MATH::Exp(-CHASTE_CONST(12.010771992818672) - CHASTE_CONST(0.17953321364452424) * var_chaste_interface__membrane__V); + const double var_sodium_current_h1_gate__beta_h = 1491 / (1 + CHASTE_CONST(323.30000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(7.333333333333333) - CHASTE_CONST(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); + const double var_sodium_current_h1_gate__tau_h1 = CHASTE_CONST(0.00014999999999999999) + CHASTE_CONST(0.029999999999999999) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(6.666666666666667) + CHASTE_CONST(0.16666666666666666) * var_chaste_interface__membrane__V)); + const double var_sodium_current_h2_gate__tau_h2 = CHASTE_CONST(0.00044999999999999999) + CHASTE_CONST(0.12) / (1 + CHASTE_MATH::Exp(30 + CHASTE_CONST(0.5) * var_chaste_interface__membrane__V)); + const double var_sodium_current_m_gate__E0_m = CHASTE_CONST(44.399999999999999) + var_chaste_interface__membrane__V; + const double var_sodium_current_m_gate__alpha_m = (((var_chaste_interface__membrane__V >= -CHASTE_CONST(44.400001267299999)) && (var_chaste_interface__membrane__V <= -CHASTE_CONST(44.399998732699999))) ? (CHASTE_CONST(0.00058295799999830145) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999708629e-8))) + CHASTE_CONST(394539.57232025318) * (CHASTE_CONST(44.400001267299999) + var_chaste_interface__membrane__V) * (-CHASTE_CONST(0.00058295799999830145) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999708629e-8))) - CHASTE_CONST(0.00058295799999830145) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999708629e-8))))) : (-460 * (CHASTE_CONST(44.399999999999999) + var_chaste_interface__membrane__V) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(3.5035114021936398) - CHASTE_CONST(0.078907914463820727) * var_chaste_interface__membrane__V)))); + const double var_sodium_current_m_gate__beta_m = 18400 * CHASTE_MATH::Exp(-CHASTE_CONST(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)); + rY[9] = (var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r + ((CHASTE_CONST(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 - ((-CHASTE_CONST(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 + ((CHASTE_CONST(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 - ((-CHASTE_CONST(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 + ((CHASTE_CONST(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 - ((-CHASTE_CONST(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 + ((CHASTE_CONST(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 - ((-CHASTE_CONST(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 + ((CHASTE_CONST(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 - ((-CHASTE_CONST(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 + ((CHASTE_CONST(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 - ((-CHASTE_CONST(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 + ((CHASTE_CONST(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 - ((-CHASTE_CONST(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 + ((CHASTE_CONST(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 - ((-CHASTE_CONST(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 + ((CHASTE_CONST(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 - ((-CHASTE_CONST(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 + ((CHASTE_CONST(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 - ((-CHASTE_CONST(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 + ((CHASTE_CONST(0.001) * var_delayed_rectifier_K_current_z_gate__z_infinity / var_delayed_rectifier_K_current_z_gate__tau_z) * mDt)) / (1.0 - ((-CHASTE_CONST(0.001) / var_delayed_rectifier_K_current_z_gate__tau_z) * mDt)); + rY[3] = (var_chaste_interface__sodium_current_h1_gate__h1 + ((CHASTE_CONST(0.001) * var_sodium_current_h1_gate__h_infinity / var_sodium_current_h1_gate__tau_h1) * mDt)) / (1.0 - ((-CHASTE_CONST(0.001) / var_sodium_current_h1_gate__tau_h1) * mDt)); + rY[4] = (var_chaste_interface__sodium_current_h2_gate__h2 + ((CHASTE_CONST(0.001) * var_sodium_current_h1_gate__h_infinity / var_sodium_current_h2_gate__tau_h2) * mDt)) / (1.0 - ((-CHASTE_CONST(0.001) / var_sodium_current_h2_gate__tau_h2) * mDt)); + rY[2] = (var_chaste_interface__sodium_current_m_gate__m + ((CHASTE_CONST(0.001) * var_sodium_current_m_gate__alpha_m) * mDt)) / (1.0 - ((-CHASTE_CONST(0.001) * var_sodium_current_m_gate__alpha_m - CHASTE_CONST(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(); @@ -911,7 +913,7 @@ { // Inputs: // Time units: millisecond - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -944,33 +946,33 @@ // 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_Na_Ca_ion_exchanger_current__d_NaCa = CHASTE_CONST(0.00029999999999999997); // per_millimolar_4 + const double var_Na_Ca_ion_exchanger_current__gamma = CHASTE_CONST(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_Ca_handling_by_the_SR__i_rel = CHASTE_MATH::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] / CHASTE_MATH::Pow((CHASTE_CONST(0.25) + var_chaste_interface__Ca_handling_by_the_SR__F2), 2); // picoA + const double var_inward_rectifier__KmK1 = CHASTE_CONST(0.58999999999999997); // millimolar + const double var_inward_rectifier__shiftK1 = -CHASTE_CONST(3.6000000000000001); // millivolt + const double var_inward_rectifier__steepK1 = CHASTE_CONST(1.393); // dimensionless + const double var_membrane__Cm_converted = CHASTE_CONST(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_Ca_independent_transient_outward_K_current__E_K = var_membrane__R * var_membrane__T * CHASTE_MATH::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 + CHASTE_MATH::Exp(CHASTE_CONST(1.9166666666666667) - CHASTE_CONST(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)) ? (CHASTE_CONST(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)) ? (CHASTE_CONST(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 = CHASTE_CONST(9.9999999999999995e-7) * CHASTE_CAP() * 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 = (CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[1] * CHASTE_MATH::Exp(var_Na_Ca_ion_exchanger_current__gamma * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - CHASTE_MATH::Pow(mParameters[2], 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i * CHASTE_MATH::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 + (CHASTE_MATH::Pow(mParameters[2], 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i + CHASTE_MATH::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 = CHASTE_CONST(9.9999999999999995e-7) * CHASTE_CAP() * 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_Kr_converted = CHASTE_CONST(9.9999999999999995e-7) * CHASTE_CAP() * 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))) : (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 - 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_delayed_rectifier_K_current__i_Ks_converted = CHASTE_CONST(9.9999999999999995e-7) * CHASTE_CAP() * 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 * CHASTE_MATH::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 + CHASTE_MATH::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))) * CHASTE_MATH::Pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (CHASTE_CONST(2.5) * CHASTE_MATH::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 + CHASTE_MATH::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))) * CHASTE_MATH::Pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))) : (CHASTE_MATH::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 + CHASTE_MATH::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))) * CHASTE_MATH::Pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))))); // picoA + const double var_inward_rectifier__i_K1_converted = CHASTE_CONST(9.9999999999999995e-7) * CHASTE_CAP() * var_inward_rectifier__i_K1 / var_membrane__Cm_converted; // uA_per_cm2 + const double var_membrane__i_Stim_converted = CHASTE_STIM(var_chaste_interface__environment__time_converted); // uA_per_cm2 + const double var_sodium_current__i_Na = (((var_chaste_interface__membrane__V >= -CHASTE_CONST(2.6539450910485349e-6)) && (var_chaste_interface__membrane__V <= CHASTE_CONST(2.6539450910485349e-6))) ? (CHASTE_CONST(188398.77346612973) * (CHASTE_CONST(2.6539450910485349e-6) + var_chaste_interface__membrane__V) * (CHASTE_CONST(0.0096486999999999996) * CHASTE_MATH::Pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8) - CHASTE_MATH::Log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (CHASTE_CONST(0.36499999999999999) * var_chaste_interface__sodium_current_h2_gate__h2 + CHASTE_CONST(0.63500000000000001) * var_chaste_interface__sodium_current_h1_gate__h1) * mParameters[2] * mParameters[5] / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) + CHASTE_CONST(0.0096486999999999996) * CHASTE_MATH::Pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8) - CHASTE_MATH::Log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (CHASTE_CONST(0.36499999999999999) * var_chaste_interface__sodium_current_h2_gate__h2 + CHASTE_CONST(0.63500000000000001) * var_chaste_interface__sodium_current_h1_gate__h1) * mParameters[2] * mParameters[5] / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)))) - CHASTE_CONST(0.0096486999999999996) * CHASTE_MATH::Pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8) - CHASTE_MATH::Log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (CHASTE_CONST(0.36499999999999999) * var_chaste_interface__sodium_current_h2_gate__h2 + CHASTE_CONST(0.63500000000000001) * var_chaste_interface__sodium_current_h1_gate__h1) * mParameters[2] * mParameters[5] / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)))) : (CHASTE_CONST(3635.606491085292) * CHASTE_MATH::Pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + CHASTE_MATH::Exp(CHASTE_CONST(0.037679754693225945) * var_chaste_interface__membrane__V - CHASTE_MATH::Log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (CHASTE_CONST(0.36499999999999999) * var_chaste_interface__sodium_current_h2_gate__h2 + CHASTE_CONST(0.63500000000000001) * var_chaste_interface__sodium_current_h1_gate__h1) * mParameters[2] * var_chaste_interface__membrane__V * mParameters[5] / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(0.037679754693225945) * var_chaste_interface__membrane__V)))); // picoA + const double var_sodium_current__i_Na_converted = CHASTE_CONST(9.9999999999999995e-7) * CHASTE_CAP() * 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; diff --git a/chaste_codegen/data/tests/chaste_reference_models/BE/aslanidi_atrial_model_2009.hpp b/chaste_codegen/data/tests/chaste_reference_models/BE/aslanidi_atrial_model_2009.hpp index 2e3fbe1dd..d87814afe 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/BE/aslanidi_atrial_model_2009.hpp +++ b/chaste_codegen/data/tests/chaste_reference_models/BE/aslanidi_atrial_model_2009.hpp @@ -16,8 +16,16 @@ #include "ChasteSerialization.hpp" #include #include "AbstractStimulusFunction.hpp" +#if USING_DEVICE_COMPILER +#include "StimulusEvaluatorCuda.hpp" +#endif #include "AbstractBackwardEulerCardiacCell.hpp" +#if USING_DEVICE_COMPILER +template +class BackwardEulerKernelLauncher; // Forward declare to hide CUDA-specifics from standard C++ compiler +#endif + class Cellaslanidi_atrial_model_2009FromCellMLBackwardEuler : public AbstractBackwardEulerCardiacCell<14> { friend class boost::serialization::access; @@ -37,19 +45,50 @@ class Cellaslanidi_atrial_model_2009FromCellMLBackwardEuler : public AbstractBac const bool is_concentration[29] = {false, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true, false, false, false, false, true, false, false, false, false, false, false}; const bool is_probability[29] = {false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false}; public: +#if USING_DEVICE_COMPILER + template using SolverKernelLauncher = BackwardEulerKernelLauncher; + static constexpr unsigned TOTAL_SIZE = 29u; + static constexpr unsigned NONLINEAR_SIZE = 14u; +#endif boost::shared_ptr UseCellMLDefaultStimulus(); double GetIntracellularCalciumConcentration(); - Cellaslanidi_atrial_model_2009FromCellMLBackwardEuler(boost::shared_ptr /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus); + Cellaslanidi_atrial_model_2009FromCellMLBackwardEuler(boost::shared_ptr /* unused */, boost::shared_ptr pIntracellularStimulus); ~Cellaslanidi_atrial_model_2009FromCellMLBackwardEuler(); void VerifyStateVariables(); - double GetIIonic(const std::vector* pStateVariables=NULL);void ComputeResidual(double var_chaste_interface__environment__time_converted, const double rCurrentGuess[14], double rResidual[14]); - void ComputeJacobian(double var_chaste_interface__environment__time_converted, const double rCurrentGuess[14], double rJacobian[14][14]);protected: + double GetIIonic(const std::vector* pStateVariables=NULL); + void ComputeResidual(double var_chaste_interface__environment__time_converted, const double rCurrentGuess[14], double rResidual[14]); + void ComputeJacobian(double var_chaste_interface__environment__time_converted, const double rCurrentGuess[14], double rJacobian[14][14]); + +#if USING_DEVICE_COMPILER + template + DEVICE + static void ComputeResidualDevice(ValueType var_chaste_interface__environment__time_converted, const ValueType rCurrentGuess[NONLINEAR_SIZE], const ValueType rY[], ValueType rResidual[NONLINEAR_SIZE], ValueType mDt, const ValueType mParameters[], bool mSetVoltageDerivativeToZero, ValueType mFixedVoltage, ValueType capacitance, const DeviceStimulusFunctor stim); + + template + DEVICE + static void ComputeJacobianDevice(ValueType var_chaste_interface__environment__time_converted, const ValueType rCurrentGuess[NONLINEAR_SIZE], const ValueType rY[], ValueType rJacobian[NONLINEAR_SIZE][NONLINEAR_SIZE], ValueType mDt, const ValueType mParameters[], bool mSetVoltageDerivativeToZero, ValueType mFixedVoltage, ValueType capacitance, const DeviceStimulusFunctor stim); + template + DEVICE + static void UpdateTransmembranePotentialDevice(ValueType var_chaste_interface__environment__time_converted, ValueType rY[], ValueType mDt, const ValueType mParameters[], bool mSetVoltageDerivativeToZero, ValueType mFixedVoltage, DeviceStimulusFunctor stim, ValueType capacitance); + + template + DEVICE + static void SolveClosedFormVarsDevice(ValueType rY[TOTAL_SIZE], ValueType mDt, const ValueType mParameters[], bool mSetVoltageDerivativeToZero, ValueType mFixedVoltage, ValueType capacitance); + + template + DEVICE + static void FillInitialGuessDevice(ValueType _guess[NONLINEAR_SIZE], const ValueType rY[TOTAL_SIZE]); + + template + DEVICE + static void ScatterSolutionDevice(const ValueType _guess[NONLINEAR_SIZE], ValueType rY[TOTAL_SIZE]); +#endif +protected: void UpdateTransmembranePotential(double var_chaste_interface__environment__time_converted); void ComputeOneStepExceptVoltage(double var_chaste_interface__environment__time_converted); - std::vector ComputeDerivedQuantities(double var_chaste_interface__environment__time_converted, const std::vector & rY); -}; + std::vector ComputeDerivedQuantities(double var_chaste_interface__environment__time_converted, const std::vector & rY);}; // Needs to be included last #include "SerializationExportWrapper.hpp" @@ -84,4 +123,9 @@ namespace boost } -#endif // CELLASLANIDI_ATRIAL_MODEL_2009FROMCELLMLBACKWARDEULER_HPP_ \ No newline at end of file +#endif // CELLASLANIDI_ATRIAL_MODEL_2009FROMCELLMLBACKWARDEULER_HPP_ + +#if USING_DEVICE_COMPILER + #include "aslanidi_atrial_model_2009Kernels.hpp" + #include "BackwardEulerKernels.hpp" +#endif \ No newline at end of file diff --git a/chaste_codegen/data/tests/chaste_reference_models/BE/aslanidi_atrial_model_2009Kernels.hpp b/chaste_codegen/data/tests/chaste_reference_models/BE/aslanidi_atrial_model_2009Kernels.hpp new file mode 100644 index 000000000..5eafd199f --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/BE/aslanidi_atrial_model_2009Kernels.hpp @@ -0,0 +1,448 @@ +#ifndef CELLASLANIDI_ATRIAL_MODEL_2009FROMCELLMLBACKWARDEULERKERNELS_HPP_ +#define CELLASLANIDI_ATRIAL_MODEL_2009FROMCELLMLBACKWARDEULERKERNELS_HPP_ + +//! @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 "MathsCustomFunctions.hpp" +#include "ChasteDeviceMacros.hpp" + + +template +DEVICE +void Cellaslanidi_atrial_model_2009FromCellMLBackwardEuler::SolveClosedFormVarsDevice(ValueType rY[Cellaslanidi_atrial_model_2009FromCellMLBackwardEuler::TOTAL_SIZE], + ValueType mDt, + const ValueType mParameters[], + bool mSetVoltageDerivativeToZero, + ValueType mFixedVoltage, + ValueType capacitance) +{ + ValueType var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); + // Units: millivolt; Initial value: -80.0 + ValueType var_chaste_interface__sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.01309 + ValueType var_chaste_interface__sodium_current_h1_gate__h1 = rY[3]; + // Units: dimensionless; Initial value: 0.706 + ValueType var_chaste_interface__sodium_current_h2_gate__h2 = rY[4]; + // Units: dimensionless; Initial value: 0.61493 + ValueType var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L = rY[5]; + // Units: dimensionless; Initial value: 3e-05 + ValueType var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L = rY[6]; + // Units: dimensionless; Initial value: 0.99981 + ValueType var_chaste_interface__T_type_Ca_channel_d_T_gate__d_T = rY[7]; + // Units: dimensionless; Initial value: 0.00046 + ValueType var_chaste_interface__T_type_Ca_channel_f_T_gate__f_T = rY[8]; + // Units: dimensionless; Initial value: 0.30752 + ValueType var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r = rY[9]; + // Units: dimensionless; Initial value: 6e-05 + ValueType var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1 = rY[10]; + // Units: dimensionless; Initial value: 0.5753 + ValueType var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2 = rY[11]; + // Units: dimensionless; Initial value: 0.39871 + ValueType var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3 = rY[12]; + // Units: dimensionless; Initial value: 0.57363 + ValueType var_chaste_interface__delayed_rectifier_K_current_z_gate__z = rY[13]; + // Units: dimensionless; Initial value: 0.02032 + ValueType var_chaste_interface__delayed_rectifier_K_current_pa_gate__p_a = rY[14]; + // Units: dimensionless; Initial value: 0.00016 + ValueType var_chaste_interface__delayed_rectifier_K_current_pi_gate__p_i = rY[15]; + // Units: dimensionless; Initial value: 0.76898 + + const ValueType var_Ca_independent_transient_outward_K_current_r_gate__alpha_r = CHASTE_CONST(386.60000000000002) * CHASTE_MATH::Exp(CHASTE_CONST(0.083333333333333329) * var_chaste_interface__membrane__V);const ValueType var_Ca_independent_transient_outward_K_current_r_gate__beta_r = CHASTE_CONST(8.0109999999999992) * CHASTE_MATH::Exp(-CHASTE_CONST(0.1388888888888889) * var_chaste_interface__membrane__V);const ValueType var_Ca_independent_transient_outward_K_current_r_gate__r_infinity = 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.6628794603230959) - CHASTE_CONST(0.17752529735487307) * var_chaste_interface__membrane__V));const ValueType var_Ca_independent_transient_outward_K_current_r_gate__tau_r = CHASTE_CONST(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 ValueType var_Ca_independent_transient_outward_K_current_s1_gate__s1_infinity = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(4.0070821529745047) + CHASTE_CONST(0.14164305949008499) * var_chaste_interface__membrane__V));const ValueType var_Ca_independent_transient_outward_K_current_s1_gate__tau_s1 = CHASTE_CONST(0.020400000000000001) + CHASTE_CONST(0.54659999999999997) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(327.99999999999994) + 10 * var_chaste_interface__membrane__V));const ValueType var_Ca_independent_transient_outward_K_current_s2_gate__s2_infinity = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(4.0070821529745047) + CHASTE_CONST(0.14164305949008499) * var_chaste_interface__membrane__V));const ValueType var_Ca_independent_transient_outward_K_current_s2_gate__tau_s2 = CHASTE_CONST(5.75) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(327.99999999999994) + 10 * var_chaste_interface__membrane__V)) + CHASTE_CONST(0.45000000000000001) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(0.96921975662133131) - CHASTE_CONST(0.071581961345740866) * var_chaste_interface__membrane__V));const ValueType var_Ca_independent_transient_outward_K_current_s3_gate__s3_infinity = CHASTE_CONST(0.39975990396158467) + CHASTE_CONST(0.60024009603841544) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(1.8506208911614319) + CHASTE_CONST(0.036523009495982472) * var_chaste_interface__membrane__V));const ValueType var_Ca_independent_transient_outward_K_current_s3_gate__tau_s3 = CHASTE_CONST(0.5) + CHASTE_CONST(7.5) / (1 + CHASTE_MATH::Exp(46 + 2 * var_chaste_interface__membrane__V));const ValueType var_L_type_Ca_channel_d_L_gate__E10 = 10 + var_chaste_interface__membrane__V;const ValueType var_L_type_Ca_channel_d_L_gate__alpha_d_L = (((var_chaste_interface__membrane__V >= -CHASTE_CONST(10.000000480800001)) && (var_chaste_interface__membrane__V <= -CHASTE_CONST(9.9999995191999993))) ? (CHASTE_CONST(2.4040000000391526e-5) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(1.0000000000162864e-7))) + CHASTE_CONST(1039933.4442576389) * (CHASTE_CONST(10.000000480800001) + var_chaste_interface__membrane__V) * (-CHASTE_CONST(2.4040000000391526e-5) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(1.0000000000162864e-7))) - CHASTE_CONST(2.4039999999697637e-5) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999998742257e-8))))) : (-50 * (10 + var_chaste_interface__membrane__V) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.0798668885191347) - CHASTE_CONST(0.20798668885191349) * var_chaste_interface__membrane__V)))) + (((var_chaste_interface__membrane__V >= -CHASTE_CONST(45.000000249999999)) && (var_chaste_interface__membrane__V <= -CHASTE_CONST(44.999999750000001))) ? (CHASTE_CONST(4.1799999996561256e-6) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999991773334e-8))) + CHASTE_CONST(1999999.9999424887) * (CHASTE_CONST(45.000000249999999) + var_chaste_interface__membrane__V) * (-CHASTE_CONST(4.1800000005842713e-6) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(1.000000000139778e-7))) - CHASTE_CONST(4.1799999996561256e-6) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999991773334e-8))))) : (-CHASTE_CONST(16.719999999999999) * (45 + var_chaste_interface__membrane__V) / (-1 + CHASTE_MATH::Exp(-18 - CHASTE_CONST(0.40000000000000002) * var_chaste_interface__membrane__V))));const ValueType var_L_type_Ca_channel_d_L_gate__beta_d_L = (((var_chaste_interface__membrane__V >= -CHASTE_CONST(5.0000002500000003)) && (var_chaste_interface__membrane__V <= -CHASTE_CONST(4.9999997499999997))) ? (-CHASTE_CONST(1.1200000000011203e-6) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(1.0000000000010001e-7))) + CHASTE_CONST(1999999.9999979998) * (CHASTE_CONST(5.0000002500000003) + var_chaste_interface__membrane__V) * (CHASTE_CONST(1.1200000000011203e-6) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(1.0000000000010001e-7))) + CHASTE_CONST(1.1200000000011203e-6) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(1.0000000000010001e-7))))) : (CHASTE_CONST(4.4800000000000004) * (5 + var_chaste_interface__membrane__V) / (-1 + CHASTE_MATH::Exp(2 + CHASTE_CONST(0.40000000000000002) * var_chaste_interface__membrane__V))));const ValueType var_L_type_Ca_channel_d_L_gate__d_L_infinity = 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.14393939393939395) - CHASTE_CONST(0.15151515151515152) * var_L_type_Ca_channel_d_L_gate__E10));const ValueType 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 ValueType var_L_type_Ca_channel_f_L_gate__E0_f_L = 18 + var_chaste_interface__membrane__V;const ValueType var_L_type_Ca_channel_f_L_gate__alpha_f_L = (((var_chaste_interface__membrane__V >= -CHASTE_CONST(18.000000400000001)) && (var_chaste_interface__membrane__V <= -CHASTE_CONST(17.999999599999999))) ? (-CHASTE_CONST(3.3960000000976542e-6) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(1.0000000000287557e-7))) + CHASTE_CONST(1249999.9999640554) * (CHASTE_CONST(18.000000400000001) + var_chaste_interface__membrane__V) * (CHASTE_CONST(3.3960000000976542e-6) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(1.0000000000287557e-7))) + CHASTE_CONST(3.3960000000976542e-6) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(1.0000000000287557e-7))))) : (CHASTE_CONST(8.4900000000000002) * (18 + var_chaste_interface__membrane__V) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(4.5) + CHASTE_CONST(0.25) * var_chaste_interface__membrane__V))));const ValueType var_L_type_Ca_channel_f_L_gate__beta_f_L = CHASTE_CONST(67.921999999999997) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.25) * var_L_type_Ca_channel_f_L_gate__E0_f_L));const ValueType 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 ValueType 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 ValueType var_T_type_Ca_channel_d_T_gate__E0_d_T = CHASTE_CONST(23.300000000000001) + var_chaste_interface__membrane__V;const ValueType var_T_type_Ca_channel_d_T_gate__alpha_d_T = CHASTE_CONST(674.173) * CHASTE_MATH::Exp(CHASTE_CONST(0.033333333333333333) * var_T_type_Ca_channel_d_T_gate__E0_d_T);const ValueType var_T_type_Ca_channel_d_T_gate__beta_d_T = CHASTE_CONST(674.173) * CHASTE_MATH::Exp(-CHASTE_CONST(0.033333333333333333) * var_T_type_Ca_channel_d_T_gate__E0_d_T);const ValueType var_T_type_Ca_channel_d_T_gate__d_T_infinity = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(0.049180327868852458) - CHASTE_CONST(0.16393442622950821) * var_T_type_Ca_channel_d_T_gate__E0_d_T));const ValueType 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 ValueType var_T_type_Ca_channel_f_T_gate__E0_f_T = 75 + var_chaste_interface__membrane__V;const ValueType var_T_type_Ca_channel_f_T_gate__alpha_f_T = CHASTE_CONST(9.6370000000000005) * CHASTE_MATH::Exp(-CHASTE_CONST(0.012004801920768308) * var_T_type_Ca_channel_f_T_gate__E0_f_T);const ValueType var_T_type_Ca_channel_f_T_gate__beta_f_T = CHASTE_CONST(9.6370000000000005) * CHASTE_MATH::Exp(CHASTE_CONST(0.065019505851755519) * var_T_type_Ca_channel_f_T_gate__E0_f_T);const ValueType 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 ValueType 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 ValueType var_delayed_rectifier_K_current_pa_gate__alpha_p_a = 9 * CHASTE_MATH::Exp(CHASTE_CONST(0.03941508020968823) * var_chaste_interface__membrane__V);const ValueType var_delayed_rectifier_K_current_pa_gate__beta_p_a = CHASTE_CONST(1.3) * CHASTE_MATH::Exp(-CHASTE_CONST(0.076769537847382163) * var_chaste_interface__membrane__V);const ValueType var_delayed_rectifier_K_current_pa_gate__p_a_infinity = 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.68918918918918914) - CHASTE_CONST(0.13513513513513511) * var_chaste_interface__membrane__V));const ValueType 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 ValueType var_delayed_rectifier_K_current_pi_gate__alpha_p_i = 100 * CHASTE_MATH::Exp(-CHASTE_CONST(0.018299935950224173) * var_chaste_interface__membrane__V);const ValueType var_delayed_rectifier_K_current_pi_gate__beta_p_i = 656 * CHASTE_MATH::Exp(CHASTE_CONST(0.009420009985210585) * var_chaste_interface__membrane__V);const ValueType var_delayed_rectifier_K_current_pi_gate__p_i_infinity = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(2.539728728905752) + CHASTE_CONST(0.05358970648917756) * var_chaste_interface__membrane__V));const ValueType 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 ValueType var_delayed_rectifier_K_current_z_gate__alpha_z = CHASTE_CONST(1.6599999999999999) * CHASTE_MATH::Exp(CHASTE_CONST(0.014398433450440593) * var_chaste_interface__membrane__V);const ValueType var_delayed_rectifier_K_current_z_gate__beta_z = CHASTE_CONST(0.29999999999999999) * CHASTE_MATH::Exp(-CHASTE_CONST(0.045816915605241454) * var_chaste_interface__membrane__V);const ValueType var_delayed_rectifier_K_current_z_gate__tau_z = CHASTE_CONST(0.059999999999999998) + 1 / (var_delayed_rectifier_K_current_z_gate__alpha_z + var_delayed_rectifier_K_current_z_gate__beta_z);const ValueType var_delayed_rectifier_K_current_z_gate__z_infinity = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(0.065217391304347824) - CHASTE_CONST(0.072463768115942032) * var_chaste_interface__membrane__V));const ValueType var_sodium_current_h1_gate__alpha_h = CHASTE_CONST(44.899999999999999) * CHASTE_MATH::Exp(-CHASTE_CONST(12.010771992818672) - CHASTE_CONST(0.17953321364452424) * var_chaste_interface__membrane__V);const ValueType var_sodium_current_h1_gate__beta_h = 1491 / (1 + CHASTE_CONST(323.30000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(7.333333333333333) - CHASTE_CONST(0.077519379844961239) * var_chaste_interface__membrane__V));const ValueType 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 ValueType var_sodium_current_h1_gate__tau_h1 = CHASTE_CONST(0.00014999999999999999) + CHASTE_CONST(0.029999999999999999) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(6.666666666666667) + CHASTE_CONST(0.16666666666666666) * var_chaste_interface__membrane__V));const ValueType var_sodium_current_h2_gate__tau_h2 = CHASTE_CONST(0.00044999999999999999) + CHASTE_CONST(0.12) / (1 + CHASTE_MATH::Exp(30 + CHASTE_CONST(0.5) * var_chaste_interface__membrane__V));const ValueType var_sodium_current_m_gate__E0_m = CHASTE_CONST(44.399999999999999) + var_chaste_interface__membrane__V;const ValueType var_sodium_current_m_gate__alpha_m = (((var_chaste_interface__membrane__V >= -CHASTE_CONST(44.400001267299999)) && (var_chaste_interface__membrane__V <= -CHASTE_CONST(44.399998732699999))) ? (CHASTE_CONST(0.00058295799999830145) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999708629e-8))) + CHASTE_CONST(394539.57232025318) * (CHASTE_CONST(44.400001267299999) + var_chaste_interface__membrane__V) * (-CHASTE_CONST(0.00058295799999830145) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999708629e-8))) - CHASTE_CONST(0.00058295799999830145) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999708629e-8))))) : (-460 * (CHASTE_CONST(44.399999999999999) + var_chaste_interface__membrane__V) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(3.5035114021936398) - CHASTE_CONST(0.078907914463820727) * var_chaste_interface__membrane__V))));const ValueType var_sodium_current_m_gate__beta_m = 18400 * CHASTE_MATH::Exp(-CHASTE_CONST(0.078907914463820727) * var_sodium_current_m_gate__E0_m); + + rY[9] = (var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r + ((CHASTE_CONST(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 - ((-CHASTE_CONST(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 + ((CHASTE_CONST(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 - ((-CHASTE_CONST(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 + ((CHASTE_CONST(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 - ((-CHASTE_CONST(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 + ((CHASTE_CONST(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 - ((-CHASTE_CONST(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 + ((CHASTE_CONST(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 - ((-CHASTE_CONST(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 + ((CHASTE_CONST(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 - ((-CHASTE_CONST(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 + ((CHASTE_CONST(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 - ((-CHASTE_CONST(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 + ((CHASTE_CONST(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 - ((-CHASTE_CONST(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 + ((CHASTE_CONST(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 - ((-CHASTE_CONST(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 + ((CHASTE_CONST(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 - ((-CHASTE_CONST(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 + ((CHASTE_CONST(0.001) * var_delayed_rectifier_K_current_z_gate__z_infinity / var_delayed_rectifier_K_current_z_gate__tau_z) * mDt)) / (1.0 - ((-CHASTE_CONST(0.001) / var_delayed_rectifier_K_current_z_gate__tau_z) * mDt));rY[3] = (var_chaste_interface__sodium_current_h1_gate__h1 + ((CHASTE_CONST(0.001) * var_sodium_current_h1_gate__h_infinity / var_sodium_current_h1_gate__tau_h1) * mDt)) / (1.0 - ((-CHASTE_CONST(0.001) / var_sodium_current_h1_gate__tau_h1) * mDt));rY[4] = (var_chaste_interface__sodium_current_h2_gate__h2 + ((CHASTE_CONST(0.001) * var_sodium_current_h1_gate__h_infinity / var_sodium_current_h2_gate__tau_h2) * mDt)) / (1.0 - ((-CHASTE_CONST(0.001) / var_sodium_current_h2_gate__tau_h2) * mDt));rY[2] = (var_chaste_interface__sodium_current_m_gate__m + ((CHASTE_CONST(0.001) * var_sodium_current_m_gate__alpha_m) * mDt)) / (1.0 - ((-CHASTE_CONST(0.001) * var_sodium_current_m_gate__alpha_m - CHASTE_CONST(0.001) * var_sodium_current_m_gate__beta_m) * mDt)); +} + +template +DEVICE +void Cellaslanidi_atrial_model_2009FromCellMLBackwardEuler::FillInitialGuessDevice(ValueType _guess[Cellaslanidi_atrial_model_2009FromCellMLBackwardEuler::NONLINEAR_SIZE], + const ValueType rY[Cellaslanidi_atrial_model_2009FromCellMLBackwardEuler::TOTAL_SIZE]) +{ + _guess[0] = rY[23];_guess[1] = rY[24];_guess[2] = rY[26];_guess[3] = rY[27];_guess[4] = rY[28];_guess[5] = rY[25];_guess[6] = rY[22];_guess[7] = rY[18];_guess[8] = rY[19];_guess[9] = rY[20];_guess[10] = rY[21];_guess[11] = rY[1];_guess[12] = rY[17];_guess[13] = rY[16]; +} + +template +DEVICE +void Cellaslanidi_atrial_model_2009FromCellMLBackwardEuler::ScatterSolutionDevice(const ValueType _guess[Cellaslanidi_atrial_model_2009FromCellMLBackwardEuler::NONLINEAR_SIZE], + ValueType rY[Cellaslanidi_atrial_model_2009FromCellMLBackwardEuler::TOTAL_SIZE]) +{ + 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]; +} + +template +DEVICE +void Cellaslanidi_atrial_model_2009FromCellMLBackwardEuler::ComputeResidualDevice(ValueType var_chaste_interface__environment__time_converted, + const ValueType rCurrentGuess[Cellaslanidi_atrial_model_2009FromCellMLBackwardEuler::NONLINEAR_SIZE], + const ValueType rY[], + ValueType rResidual[Cellaslanidi_atrial_model_2009FromCellMLBackwardEuler::NONLINEAR_SIZE], + ValueType mDt, + const ValueType mParameters[], + bool mSetVoltageDerivativeToZero, + ValueType mFixedVoltage, + ValueType capacitance, + const DeviceStimulusFunctor stim) +{ + ValueType var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt + ValueType var_chaste_interface__sodium_current_m_gate__m = rY[2]; // Units: dimensionless + ValueType var_chaste_interface__sodium_current_h1_gate__h1 = rY[3]; // Units: dimensionless + ValueType var_chaste_interface__sodium_current_h2_gate__h2 = rY[4]; // Units: dimensionless + ValueType var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L = rY[5]; // Units: dimensionless + ValueType var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L = rY[6]; // Units: dimensionless + ValueType var_chaste_interface__T_type_Ca_channel_d_T_gate__d_T = rY[7]; // Units: dimensionless + ValueType var_chaste_interface__T_type_Ca_channel_f_T_gate__f_T = rY[8]; // Units: dimensionless + ValueType var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r = rY[9]; // Units: dimensionless + ValueType var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1 = rY[10]; // Units: dimensionless + ValueType var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2 = rY[11]; // Units: dimensionless + ValueType var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3 = rY[12]; // Units: dimensionless + ValueType var_chaste_interface__delayed_rectifier_K_current_z_gate__z = rY[13]; // Units: dimensionless + ValueType var_chaste_interface__delayed_rectifier_K_current_pa_gate__p_a = rY[14]; // Units: dimensionless + ValueType var_chaste_interface__delayed_rectifier_K_current_pi_gate__p_i = rY[15]; // Units: dimensionless + + ValueType var_chaste_interface__Ca_handling_by_the_SR__Ca_rel = rCurrentGuess[0]; + ValueType var_chaste_interface__Ca_handling_by_the_SR__Ca_up = rCurrentGuess[1]; + ValueType var_chaste_interface__Ca_handling_by_the_SR__F1 = rCurrentGuess[2]; + ValueType var_chaste_interface__Ca_handling_by_the_SR__F2 = rCurrentGuess[3]; + ValueType var_chaste_interface__Ca_handling_by_the_SR__F3 = rCurrentGuess[4]; + ValueType var_chaste_interface__Ca_handling_by_the_SR__O_Calse = rCurrentGuess[5]; + ValueType var_chaste_interface__cleft_space_ion_concentrations__K_c = rCurrentGuess[6]; + ValueType var_chaste_interface__intracellular_Ca_buffering__O_C = rCurrentGuess[7]; + ValueType var_chaste_interface__intracellular_Ca_buffering__O_TC = rCurrentGuess[8]; + ValueType var_chaste_interface__intracellular_Ca_buffering__O_TMgC = rCurrentGuess[9]; + ValueType var_chaste_interface__intracellular_Ca_buffering__O_TMgMg = rCurrentGuess[10]; + ValueType var_chaste_interface__intracellular_ion_concentrations__Ca_i = rCurrentGuess[11]; + ValueType var_chaste_interface__intracellular_ion_concentrations__K_i = rCurrentGuess[12]; + ValueType var_chaste_interface__intracellular_ion_concentrations__Na_i = rCurrentGuess[13]; + + const ValueType var_Ca_handling_by_the_SR__I_up_max = CHASTE_CONST(2.7999999999999998); // picoA + const ValueType 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 ValueType var_Ca_handling_by_the_SR__Vol_rel = CHASTE_CONST(4.3999999999999997e-8); // nanolitre + const ValueType var_Ca_handling_by_the_SR__Vol_up = CHASTE_CONST(3.9690000000000001e-7); // nanolitre + const ValueType var_Ca_handling_by_the_SR__k_F3 = CHASTE_CONST(0.81499999999999995); // per_second + const ValueType var_Ca_handling_by_the_SR__k_cyca = CHASTE_CONST(0.00029999999999999997); // millimolar + const ValueType var_Ca_handling_by_the_SR__k_rel = CHASTE_CONST(0.00029999999999999997); // millimolar + const ValueType var_Ca_handling_by_the_SR__k_srca = CHASTE_CONST(0.5); // millimolar + const ValueType var_Ca_handling_by_the_SR__k_xcs = CHASTE_CONST(0.40000000000000002); // dimensionless + const ValueType var_Ca_handling_by_the_SR__tau_tr = CHASTE_CONST(0.01); // second + const ValueType var_Ca_independent_transient_outward_K_current__g_to = CHASTE_CONST(0.050001999999999998); // nanoS + const ValueType d_dt_chaste_interface_var_Ca_handling_by_the_SR__O_Calse = CHASTE_CONST(0.001) * var_Ca_handling_by_the_SR__O_Calse_orig_deriv; // 1 / millisecond + const ValueType var_L_type_Ca_channel__E_Ca_app = 50; // millivolt + const ValueType var_Na_Ca_ion_exchanger_current__d_NaCa = CHASTE_CONST(0.00029999999999999997); // per_millimolar_4 + const ValueType var_Na_Ca_ion_exchanger_current__gamma = CHASTE_CONST(0.45000000000000001); // dimensionless + const ValueType var_T_type_Ca_channel__E_Ca_T = 38; // millivolt + const ValueType var_T_type_Ca_channel__g_Ca_T = CHASTE_CONST(0.0060000000000000001); // nanoS + const ValueType var_background_currents__g_B_Ca = CHASTE_CONST(3.1000000000000001e-5); // nanoS + const ValueType var_background_currents__g_B_Na = CHASTE_CONST(6.3999999999999997e-5); // nanoS + const ValueType var_cleft_space_ion_concentrations__Vol_c = CHASTE_CONST(2.5000000000000002e-6); // nanolitre + const ValueType var_environment__CT = 1; // dimensionless + const ValueType var_environment__PM = 0; // dimensionless + const ValueType var_intracellular_Ca_buffering__Mg_i = CHASTE_CONST(2.5); // millimolar + const ValueType 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 ValueType d_dt_chaste_interface_var_intracellular_Ca_buffering__O_TMgMg = CHASTE_CONST(0.001) * var_intracellular_Ca_buffering__O_TMgMg_orig_deriv; // 1 / millisecond + const ValueType var_Ca_handling_by_the_SR__i_rel = CHASTE_MATH::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] / CHASTE_MATH::Pow((CHASTE_CONST(0.25) + var_chaste_interface__Ca_handling_by_the_SR__F2), 2); // picoA + const ValueType var_Ca_handling_by_the_SR__i_up = (var_chaste_interface__intracellular_ion_concentrations__Ca_i / var_Ca_handling_by_the_SR__k_cyca - CHASTE_MATH::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 ValueType var_Ca_handling_by_the_SR__r_inact = CHASTE_CONST(33.960000000000001) + CHASTE_CONST(339.60000000000002) * CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Ca_i, 4) / CHASTE_MATH::Pow((var_Ca_handling_by_the_SR__k_rel + var_chaste_interface__intracellular_ion_concentrations__Ca_i), 4); // per_second + const ValueType 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 ValueType d_dt_chaste_interface_var_Ca_handling_by_the_SR__F3 = CHASTE_CONST(0.001) * var_Ca_handling_by_the_SR__F3_orig_deriv; // 1 / millisecond + const ValueType 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 ValueType var_intracellular_Ca_buffering__O_C_orig_deriv = var_intracellular_Ca_buffering__dOCdt; // 1 / second + const ValueType d_dt_chaste_interface_var_intracellular_Ca_buffering__O_C = CHASTE_CONST(0.001) * var_intracellular_Ca_buffering__O_C_orig_deriv; // 1 / millisecond + const ValueType 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 ValueType var_intracellular_Ca_buffering__O_TC_orig_deriv = var_intracellular_Ca_buffering__dOTCdt; // 1 / second + const ValueType d_dt_chaste_interface_var_intracellular_Ca_buffering__O_TC = CHASTE_CONST(0.001) * var_intracellular_Ca_buffering__O_TC_orig_deriv; // 1 / millisecond + const ValueType var_intracellular_Ca_buffering__dOTMgCdt = -CHASTE_CONST(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 ValueType var_intracellular_Ca_buffering__O_TMgC_orig_deriv = var_intracellular_Ca_buffering__dOTMgCdt; // 1 / second + const ValueType d_dt_chaste_interface_var_intracellular_Ca_buffering__O_TMgC = CHASTE_CONST(0.001) * var_intracellular_Ca_buffering__O_TMgC_orig_deriv; // 1 / millisecond + const ValueType var_intracellular_ion_concentrations__Vol_Ca = CHASTE_CONST(5.8839999999999999e-6); // nanolitre + const ValueType var_intracellular_ion_concentrations__Vol_i = CHASTE_CONST(1.26e-5); // nanolitre + const ValueType var_inward_rectifier__KmK1 = CHASTE_CONST(0.58999999999999997); // millimolar + const ValueType var_inward_rectifier__shiftK1 = -CHASTE_CONST(3.6000000000000001); // millivolt + const ValueType var_inward_rectifier__steepK1 = CHASTE_CONST(1.393); // dimensionless + const ValueType var_membrane__F = 96487; // coulomb_per_mole + const ValueType 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 ValueType var_Ca_handling_by_the_SR__Ca_rel_orig_deriv = -31 * var_Ca_handling_by_the_SR__O_Calse_orig_deriv + CHASTE_CONST(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 ValueType var_Ca_handling_by_the_SR__Ca_up_orig_deriv = CHASTE_CONST(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 ValueType d_dt_chaste_interface_var_Ca_handling_by_the_SR__Ca_rel = CHASTE_CONST(0.001) * var_Ca_handling_by_the_SR__Ca_rel_orig_deriv; // millimolar / millisecond + const ValueType d_dt_chaste_interface_var_Ca_handling_by_the_SR__Ca_up = CHASTE_CONST(0.001) * var_Ca_handling_by_the_SR__Ca_up_orig_deriv; // millimolar / millisecond + const ValueType var_membrane__R = 8314; // millijoule_per_mole_kelvin + const ValueType var_membrane__T = 308; // kelvin + const ValueType var_Ca_independent_transient_outward_K_current__E_K = var_membrane__R * var_membrane__T * CHASTE_MATH::Log(var_chaste_interface__cleft_space_ion_concentrations__K_c / var_chaste_interface__intracellular_ion_concentrations__K_i) / var_membrane__F; // millivolt + const ValueType var_background_currents__E_Ca = CHASTE_CONST(0.5) * var_membrane__R * var_membrane__T * CHASTE_MATH::Log(mParameters[1] / var_chaste_interface__intracellular_ion_concentrations__Ca_i) / var_membrane__F; // millivolt + const ValueType var_Ca_handling_by_the_SR__r_act = 240 * CHASTE_MATH::Exp(-CHASTE_CONST(1.6000000000000001) + CHASTE_CONST(0.080000000000000002) * var_chaste_interface__membrane__V) + CHASTE_CONST(203.80000000000001) * CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Ca_i, 4) / CHASTE_MATH::Pow((var_Ca_handling_by_the_SR__k_rel + var_chaste_interface__intracellular_ion_concentrations__Ca_i), 4); // per_second + const ValueType 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 ValueType 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 ValueType var_Ca_independent_transient_outward_K_current__i_sus = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (CHASTE_CONST(0.098000000000000004) + CHASTE_CONST(0.0014) * var_chaste_interface__membrane__V) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (CHASTE_CONST(0.16799999999999998) + CHASTE_CONST(0.0023999999999999998) * var_chaste_interface__membrane__V) : (CHASTE_CONST(0.070000000000000007) + CHASTE_CONST(0.001) * var_chaste_interface__membrane__V))); // picoA + const ValueType var_Ca_independent_transient_outward_K_current__i_to = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (CHASTE_CONST(0.20000000000000001) * (CHASTE_CONST(0.40000000000000002) + CHASTE_CONST(0.59999999999999998) * CHASTE_MATH::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) * (CHASTE_CONST(0.58999999999999997) * CHASTE_MATH::Pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + CHASTE_CONST(0.40999999999999998) * CHASTE_MATH::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)) ? (CHASTE_CONST(0.34999999999999998) * (CHASTE_CONST(0.40000000000000002) + CHASTE_CONST(0.59999999999999998) * CHASTE_MATH::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) * (CHASTE_CONST(0.58999999999999997) * CHASTE_MATH::Pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + CHASTE_CONST(0.40999999999999998) * CHASTE_MATH::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) : ((CHASTE_CONST(0.40000000000000002) + CHASTE_CONST(0.59999999999999998) * CHASTE_MATH::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) * (CHASTE_CONST(0.58999999999999997) * CHASTE_MATH::Pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + CHASTE_CONST(0.40999999999999998) * CHASTE_MATH::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 ValueType d_dt_chaste_interface_var_Ca_handling_by_the_SR__F1 = CHASTE_CONST(0.001) * var_Ca_handling_by_the_SR__F1_orig_deriv; // 1 / millisecond + const ValueType d_dt_chaste_interface_var_Ca_handling_by_the_SR__F2 = CHASTE_CONST(0.001) * var_Ca_handling_by_the_SR__F2_orig_deriv; // 1 / millisecond + const ValueType var_L_type_Ca_channel__d_prime = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(1.9166666666666667) - CHASTE_CONST(0.083333333333333329) * var_chaste_interface__membrane__V)); // dimensionless + const ValueType var_L_type_Ca_channel__i_Ca_L = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (CHASTE_CONST(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)) ? (CHASTE_CONST(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 ValueType var_Na_Ca_ion_exchanger_current__i_NaCa = (CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[1] * CHASTE_MATH::Exp(var_Na_Ca_ion_exchanger_current__gamma * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - CHASTE_MATH::Pow(mParameters[2], 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i * CHASTE_MATH::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 + (CHASTE_MATH::Pow(mParameters[2], 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i + CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[1]) * var_Na_Ca_ion_exchanger_current__d_NaCa); // picoA + const ValueType 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 ValueType var_background_currents__i_B_Ca = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (CHASTE_CONST(2.0000000000000002e-5) * var_chaste_interface__membrane__V - CHASTE_CONST(2.0000000000000002e-5) * var_background_currents__E_Ca) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (CHASTE_CONST(3.0000000000000001e-5) * var_chaste_interface__membrane__V - CHASTE_CONST(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 ValueType 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 ValueType 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 ValueType var_inward_rectifier__i_K1 = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (2 * CHASTE_MATH::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 + CHASTE_MATH::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))) * CHASTE_MATH::Pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (CHASTE_CONST(2.5) * CHASTE_MATH::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 + CHASTE_MATH::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))) * CHASTE_MATH::Pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))) : (CHASTE_MATH::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 + CHASTE_MATH::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))) * CHASTE_MATH::Pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))))); // picoA + const ValueType var_sarcolemmal_calcium_pump_current__i_CaP_max = CHASTE_CONST(0.0095090000000000001); // picoA + const ValueType var_sarcolemmal_calcium_pump_current__k_CaP = CHASTE_CONST(0.00020000000000000001); // millimolar + const ValueType 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 ValueType var_intracellular_ion_concentrations__Ca_i_orig_deriv = -CHASTE_CONST(0.044999999999999998) * var_intracellular_Ca_buffering__dOCdt - CHASTE_CONST(0.080000000000000002) * var_intracellular_Ca_buffering__dOTCdt - CHASTE_CONST(0.16) * var_intracellular_Ca_buffering__dOTMgCdt + CHASTE_CONST(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 ValueType d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_i = CHASTE_CONST(0.001) * var_intracellular_ion_concentrations__Ca_i_orig_deriv; // millimolar / millisecond + const ValueType var_sodium_current__E_Na = var_membrane__R * var_membrane__T * CHASTE_MATH::Log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i) / var_membrane__F; // millivolt + const ValueType var_background_currents__i_B_Na = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (CHASTE_CONST(2.0000000000000002e-5) * var_chaste_interface__membrane__V - CHASTE_CONST(2.0000000000000002e-5) * var_sodium_current__E_Na) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (CHASTE_CONST(3.0000000000000001e-5) * var_chaste_interface__membrane__V - CHASTE_CONST(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 ValueType var_sodium_current__i_Na = (((var_chaste_interface__membrane__V >= -CHASTE_CONST(2.6539450910485349e-6)) && (var_chaste_interface__membrane__V <= CHASTE_CONST(2.6539450910485349e-6))) ? (CHASTE_CONST(188398.77346612973) * (CHASTE_CONST(2.6539450910485349e-6) + var_chaste_interface__membrane__V) * (CHASTE_CONST(0.0096486999999999996) * CHASTE_MATH::Pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8) - CHASTE_MATH::Log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (CHASTE_CONST(0.36499999999999999) * var_chaste_interface__sodium_current_h2_gate__h2 + CHASTE_CONST(0.63500000000000001) * var_chaste_interface__sodium_current_h1_gate__h1) * mParameters[2] * mParameters[5] / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) + CHASTE_CONST(0.0096486999999999996) * CHASTE_MATH::Pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8) - CHASTE_MATH::Log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (CHASTE_CONST(0.36499999999999999) * var_chaste_interface__sodium_current_h2_gate__h2 + CHASTE_CONST(0.63500000000000001) * var_chaste_interface__sodium_current_h1_gate__h1) * mParameters[2] * mParameters[5] / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)))) - CHASTE_CONST(0.0096486999999999996) * CHASTE_MATH::Pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8) - CHASTE_MATH::Log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (CHASTE_CONST(0.36499999999999999) * var_chaste_interface__sodium_current_h2_gate__h2 + CHASTE_CONST(0.63500000000000001) * var_chaste_interface__sodium_current_h1_gate__h1) * mParameters[2] * mParameters[5] / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)))) : (CHASTE_CONST(3635.606491085292) * CHASTE_MATH::Pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + CHASTE_MATH::Exp(CHASTE_CONST(0.037679754693225945) * var_chaste_interface__membrane__V - CHASTE_MATH::Log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (CHASTE_CONST(0.36499999999999999) * var_chaste_interface__sodium_current_h2_gate__h2 + CHASTE_CONST(0.63500000000000001) * var_chaste_interface__sodium_current_h1_gate__h1) * mParameters[2] * var_chaste_interface__membrane__V * mParameters[5] / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(0.037679754693225945) * var_chaste_interface__membrane__V)))); // picoA + const ValueType var_sodium_potassium_pump__i_NaK_max = CHASTE_CONST(0.064409999999999995); // picoA + const ValueType var_sodium_potassium_pump__k_NaK_K = 1; // millimolar + const ValueType var_sodium_potassium_pump__k_NaK_Na = 11; // millimolar + const ValueType var_sodium_potassium_pump__i_p = CHASTE_CONST(1.6000000000000001) * CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, CHASTE_CONST(1.5)) * var_chaste_interface__cleft_space_ion_concentrations__K_c * var_sodium_potassium_pump__i_NaK_max / ((CHASTE_CONST(1.5) + CHASTE_MATH::Exp(-CHASTE_CONST(1.5) - CHASTE_CONST(0.025000000000000001) * var_chaste_interface__membrane__V)) * (CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, CHASTE_CONST(1.5)) + CHASTE_MATH::Pow(var_sodium_potassium_pump__k_NaK_Na, CHASTE_CONST(1.5))) * (var_chaste_interface__cleft_space_ion_concentrations__K_c + var_sodium_potassium_pump__k_NaK_K)); // picoA + const ValueType 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 ValueType d_dt_chaste_interface_var_cleft_space_ion_concentrations__K_c = CHASTE_CONST(0.001) * var_cleft_space_ion_concentrations__K_c_orig_deriv; // millimolar / millisecond + const ValueType 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 ValueType d_dt_chaste_interface_var_intracellular_ion_concentrations__K_i = CHASTE_CONST(0.001) * var_intracellular_ion_concentrations__K_i_orig_deriv; // millimolar / millisecond + const ValueType 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 ValueType d_dt_chaste_interface_var_intracellular_ion_concentrations__Na_i = CHASTE_CONST(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; +} + +template +DEVICE +void Cellaslanidi_atrial_model_2009FromCellMLBackwardEuler::ComputeJacobianDevice(ValueType var_chaste_interface__environment__time_converted, + const ValueType rCurrentGuess[Cellaslanidi_atrial_model_2009FromCellMLBackwardEuler::NONLINEAR_SIZE], + const ValueType rY[], + ValueType rJacobian[Cellaslanidi_atrial_model_2009FromCellMLBackwardEuler::NONLINEAR_SIZE][Cellaslanidi_atrial_model_2009FromCellMLBackwardEuler::NONLINEAR_SIZE], + ValueType mDt, + const ValueType mParameters[], + bool mSetVoltageDerivativeToZero, + ValueType mFixedVoltage, + ValueType capacitance, + const DeviceStimulusFunctor stim) +{ + ValueType var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt + ValueType var_chaste_interface__sodium_current_m_gate__m = rY[2]; // Units: dimensionless + ValueType var_chaste_interface__sodium_current_h1_gate__h1 = rY[3]; // Units: dimensionless + ValueType var_chaste_interface__sodium_current_h2_gate__h2 = rY[4]; // Units: dimensionless + ValueType var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r = rY[9]; // Units: dimensionless + ValueType var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1 = rY[10]; // Units: dimensionless + ValueType var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2 = rY[11]; // Units: dimensionless + ValueType var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3 = rY[12]; // Units: dimensionless + ValueType var_chaste_interface__delayed_rectifier_K_current_z_gate__z = rY[13]; // Units: dimensionless + ValueType var_chaste_interface__delayed_rectifier_K_current_pa_gate__p_a = rY[14]; // Units: dimensionless + ValueType var_chaste_interface__delayed_rectifier_K_current_pi_gate__p_i = rY[15]; // Units: dimensionless + + ValueType var_chaste_interface__Ca_handling_by_the_SR__Ca_rel = rCurrentGuess[0]; + ValueType var_chaste_interface__Ca_handling_by_the_SR__Ca_up = rCurrentGuess[1]; + ValueType var_chaste_interface__Ca_handling_by_the_SR__F1 = rCurrentGuess[2]; + ValueType var_chaste_interface__Ca_handling_by_the_SR__F2 = rCurrentGuess[3]; + ValueType var_chaste_interface__Ca_handling_by_the_SR__O_Calse = rCurrentGuess[4]; + ValueType var_chaste_interface__cleft_space_ion_concentrations__K_c = rCurrentGuess[5]; + ValueType var_chaste_interface__intracellular_Ca_buffering__O_C = rCurrentGuess[6]; + ValueType var_chaste_interface__intracellular_Ca_buffering__O_TC = rCurrentGuess[7]; + ValueType var_chaste_interface__intracellular_Ca_buffering__O_TMgC = rCurrentGuess[8]; + ValueType var_chaste_interface__intracellular_Ca_buffering__O_TMgMg = rCurrentGuess[9]; + ValueType var_chaste_interface__intracellular_ion_concentrations__Ca_i = rCurrentGuess[10]; + ValueType var_chaste_interface__intracellular_ion_concentrations__K_i = rCurrentGuess[11]; + ValueType var_chaste_interface__intracellular_ion_concentrations__Na_i = rCurrentGuess[12]; + + const ValueType var_x0 = CHASTE_CONST(0.25) + var_chaste_interface__Ca_handling_by_the_SR__F2; + const ValueType var_x1 = CHASTE_MATH::Pow(var_x0, (-2)); + const ValueType var_x2 = CHASTE_MATH::Pow(var_chaste_interface__Ca_handling_by_the_SR__F2, 2) * mParameters[0]; + const ValueType var_x3 = var_x1 * var_x2; + const ValueType var_x4 = CHASTE_CONST(0.11777375567316183) * var_x3; + const ValueType var_x5 = -var_chaste_interface__intracellular_ion_concentrations__Ca_i + var_chaste_interface__Ca_handling_by_the_SR__Ca_rel; + const ValueType var_x6 = CHASTE_CONST(0.23554751134632365) * var_x5; + const ValueType var_x7 = var_x2 / CHASTE_MATH::Pow(var_x0, 3); + const ValueType var_x8 = 1 / (CHASTE_CONST(1.3999999999999999) + CHASTE_CONST(0.80000000000000004) * var_chaste_interface__Ca_handling_by_the_SR__Ca_up + CHASTE_CONST(3333.3333333333335) * var_chaste_interface__intracellular_ion_concentrations__Ca_i); + const ValueType var_x9 = CHASTE_MATH::Pow((CHASTE_CONST(0.00041999999999999996) + CHASTE_CONST(0.00023999999999999998) * var_chaste_interface__Ca_handling_by_the_SR__Ca_up + var_chaste_interface__intracellular_ion_concentrations__Ca_i), (-2)); + const ValueType var_x10 = CHASTE_CONST(3333.3333333333335) * var_chaste_interface__intracellular_ion_concentrations__Ca_i - CHASTE_CONST(0.32000000000000006) * var_chaste_interface__Ca_handling_by_the_SR__Ca_up; + const ValueType var_x11 = var_x10 * var_x9; + const ValueType var_x12 = CHASTE_CONST(0.00029999999999999997) + var_chaste_interface__intracellular_ion_concentrations__Ca_i; + const ValueType var_x13 = CHASTE_MATH::Pow(var_x12, (-4)); + const ValueType var_x14 = CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Ca_i, 4); + const ValueType var_x15 = var_x13 * var_x14; + const ValueType var_x16 = CHASTE_CONST(0.20380000000000001) * var_x15 + CHASTE_CONST(0.23999999999999999) * CHASTE_MATH::Exp(-CHASTE_CONST(1.6000000000000001) + CHASTE_CONST(0.080000000000000002) * var_chaste_interface__membrane__V); + const ValueType var_x17 = var_x14 / CHASTE_MATH::Pow(var_x12, 5); + const ValueType var_x18 = var_x13 * CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Ca_i, 3); + const ValueType var_x19 = CHASTE_CONST(0.81520000000000004) * var_x17 - CHASTE_CONST(0.81520000000000004) * var_x18; + const ValueType var_x20 = CHASTE_CONST(0.033960000000000004) + CHASTE_CONST(0.33960000000000001) * var_x15; + const ValueType var_x21 = CHASTE_CONST(1.3584000000000001) * var_x17 - CHASTE_CONST(1.3584000000000001) * var_x18; + const ValueType var_x22 = mParameters[8] * var_chaste_interface__delayed_rectifier_K_current_z_gate__z; + const ValueType var_x23 = 1 / var_chaste_interface__cleft_space_ion_concentrations__K_c; + const ValueType var_x24 = CHASTE_CONST(0.11002290841454433) * var_x23; + const ValueType var_x25 = CHASTE_MATH::Pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 6); + const ValueType var_x26 = CHASTE_CONST(0.58999999999999997) * CHASTE_MATH::Pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + CHASTE_CONST(0.40999999999999998) * CHASTE_MATH::Pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2, 3); + const ValueType var_x27 = CHASTE_CONST(26.53945091048535) * var_x26 * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r; + const ValueType var_x28 = var_x27 * (CHASTE_CONST(1.6583208100573134e-5) + CHASTE_CONST(2.4874812150859699e-5) * var_x25); + const ValueType var_x29 = CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, CHASTE_CONST(1.5)); + const ValueType var_x30 = 1 / (CHASTE_CONST(36.4828726939094) + var_x29); + const ValueType var_x31 = 1 + var_chaste_interface__cleft_space_ion_concentrations__K_c; + const ValueType var_x32 = 1 / var_x31; + const ValueType var_x33 = 1 / (CHASTE_CONST(1.5) + CHASTE_MATH::Exp(-CHASTE_CONST(1.5) - CHASTE_CONST(0.025000000000000001) * var_chaste_interface__membrane__V)); + const ValueType var_x34 = var_x32 * var_x33; + const ValueType var_x35 = var_x30 * var_x34; + const ValueType var_x36 = var_x29 * var_x35; + const ValueType 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 ValueType var_x38 = CHASTE_MATH::Pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 2); + const ValueType var_x39 = CHASTE_CONST(0.58999999999999997) + var_chaste_interface__cleft_space_ion_concentrations__K_c; + const ValueType var_x40 = CHASTE_MATH::Pow(var_x39, (-3)); + const ValueType var_x41 = 1 / var_chaste_interface__intracellular_ion_concentrations__K_i; + const ValueType var_x42 = CHASTE_MATH::Log(var_x41 * var_chaste_interface__cleft_space_ion_concentrations__K_c); + const ValueType var_x43 = CHASTE_MATH::Exp(CHASTE_CONST(0.18895643383558949) + CHASTE_CONST(0.052487898287663745) * var_chaste_interface__membrane__V - CHASTE_CONST(1.393) * var_x42); + const ValueType var_x44 = 1 + var_x43; + const ValueType var_x45 = 1 / var_x44; + const ValueType var_x46 = var_x45 * mParameters[6]; + const ValueType var_x47 = var_x40 * var_x46; + const ValueType var_x48 = var_x38 * var_x47; + const ValueType var_x49 = -CHASTE_CONST(26.53945091048535) * var_x42 + var_chaste_interface__membrane__V; + const ValueType var_x50 = CHASTE_MATH::Pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3); + const ValueType var_x51 = var_x46 * var_x50 / CHASTE_MATH::Pow(var_x39, 4); + const ValueType var_x52 = CHASTE_MATH::Pow(var_x31, (-2)); + const ValueType var_x53 = CHASTE_MATH::Pow(var_x44, (-2)); + const ValueType var_x54 = var_x22 * var_x41; + const ValueType var_x55 = var_x37 * var_x41; + const ValueType var_x56 = var_x41 * var_x50; + const ValueType var_x57 = var_x47 * var_x56; + const ValueType var_x58 = var_x40 * var_x43 * var_x49 * var_x53 * mParameters[6]; + const ValueType var_x59 = var_x35 * CHASTE_MATH::Sqrt(var_chaste_interface__intracellular_ion_concentrations__Na_i) * var_chaste_interface__cleft_space_ion_concentrations__K_c; + const ValueType var_x60 = CHASTE_MATH::Pow((1 + CHASTE_CONST(0.027410122234342148) * var_x29), (-2)); + const ValueType var_x61 = CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 2); + const ValueType var_x62 = 200 * var_chaste_interface__intracellular_ion_concentrations__Ca_i; + const ValueType var_x63 = CHASTE_CONST(0.00088070109612833447) * var_x3; + const ValueType var_x64 = 32 * var_chaste_interface__intracellular_ion_concentrations__Ca_i; + const ValueType var_x65 = CHASTE_CONST(0.00020000000000000001) + var_chaste_interface__intracellular_ion_concentrations__Ca_i; + const ValueType var_x66 = CHASTE_MATH::Pow(mParameters[2], 3); + const ValueType var_x67 = var_x66 * mParameters[9]; + const ValueType var_x68 = var_x66 * var_chaste_interface__intracellular_ion_concentrations__Ca_i; + const ValueType var_x69 = CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[1]; + const ValueType var_x70 = 1 + CHASTE_CONST(0.00029999999999999997) * var_x68 + CHASTE_CONST(0.00029999999999999997) * var_x69; + const ValueType var_x71 = CHASTE_MATH::Pow(var_x70, (-2)); + const ValueType var_x72 = CHASTE_MATH::Exp(CHASTE_CONST(0.016955889611951675) * var_chaste_interface__membrane__V); + const ValueType var_x73 = CHASTE_MATH::Exp(-CHASTE_CONST(0.02072386508127427) * var_chaste_interface__membrane__V); + const ValueType var_x74 = var_x69 * var_x72 - var_x68 * var_x73; + const ValueType var_x75 = var_x71 * var_x74; + const ValueType var_x76 = var_x67 * var_x75; + const ValueType var_x77 = 1 / var_x70; + const ValueType var_x78 = var_x67 * var_x73 * var_x77; + const ValueType var_x79 = CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 2); + const ValueType var_x80 = var_x79 * mParameters[9] * mParameters[1]; + const ValueType var_x81 = CHASTE_CONST(0.021829942145742926) * var_x23; + const ValueType var_x82 = -CHASTE_CONST(3.290319067574035e-6) - CHASTE_CONST(4.9354786013610522e-6) * var_x25; + const ValueType var_x83 = CHASTE_CONST(0.0049352811901134472) * var_x49; + const ValueType var_x84 = var_x29 * var_x30 * var_x33 * var_x52 * var_chaste_interface__cleft_space_ion_concentrations__K_c; + const ValueType var_x85 = 1 / var_chaste_interface__intracellular_ion_concentrations__Na_i; + const ValueType var_x86 = var_x85 * mParameters[2]; + const ValueType var_x87 = CHASTE_MATH::Log(var_x86); + const ValueType var_x88 = var_x86 * CHASTE_MATH::Pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (CHASTE_CONST(0.36499999999999999) * var_chaste_interface__sodium_current_h2_gate__h2 + CHASTE_CONST(0.63500000000000001) * var_chaste_interface__sodium_current_h1_gate__h1) * mParameters[5]; + const ValueType var_x89 = CHASTE_CONST(0.0096486999999999996) * var_x88; + const ValueType var_x90 = var_x89 * CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8) - var_x87) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8))); + const ValueType var_x91 = CHASTE_CONST(0.037679754693225945) * var_chaste_interface__membrane__V; + + rJacobian[0][0] = 1.0 - (mDt * (-CHASTE_CONST(14.98) - var_x4 + CHASTE_CONST(14.880000000000001) * var_chaste_interface__Ca_handling_by_the_SR__O_Calse));rJacobian[0][1] = -(mDt * (CHASTE_CONST(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 * (CHASTE_CONST(12.4) + CHASTE_CONST(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 * (CHASTE_CONST(0.011085915847820609)));rJacobian[1][1] = 1.0 - (mDt * (-CHASTE_CONST(0.011085915847820609) - CHASTE_CONST(2.6321499680605046e-9) * var_x11 - CHASTE_CONST(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 * (CHASTE_CONST(121.85879481761599) * var_x8 - CHASTE_CONST(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 * (CHASTE_CONST(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 * var_chaste_interface__Ca_handling_by_the_SR__F1));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_x21 * var_chaste_interface__Ca_handling_by_the_SR__F2 - var_x19 * var_chaste_interface__Ca_handling_by_the_SR__F1));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 * (-CHASTE_CONST(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 * var_chaste_interface__Ca_handling_by_the_SR__F2));rJacobian[4][12] = 0.0;rJacobian[4][13] = 0.0;rJacobian[5][0] = -(mDt * (CHASTE_CONST(0.47999999999999998) - CHASTE_CONST(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 * (-CHASTE_CONST(0.40000000000000002) - CHASTE_CONST(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 * (-CHASTE_CONST(0.00085446536839159674) * var_x36 - CHASTE_CONST(0.22004581682908866) * var_x48 - var_x22 * var_x24 - var_x23 * var_x28 - var_x24 * var_x37 - CHASTE_CONST(0.024873817198171774) * var_x49 * var_x51 + CHASTE_CONST(0.024873817198171774) * var_x38 * var_x40 * var_x45 * var_x49 * mParameters[6] + CHASTE_CONST(0.00085446536839159674) * var_x29 * var_x30 * var_x33 * var_x52 * var_chaste_interface__cleft_space_ion_concentrations__K_c + CHASTE_CONST(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 * (CHASTE_CONST(0.11002290841454433) * var_x54 + CHASTE_CONST(0.11002290841454433) * var_x55 + CHASTE_CONST(0.22004581682908866) * var_x57 + var_x28 * var_x41 - CHASTE_CONST(0.011549742452351092) * var_x56 * var_x58));rJacobian[6][13] = -(mDt * (-CHASTE_CONST(0.0012816980525873951) * var_x59 + CHASTE_CONST(9.6295871719563877e-7) * 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 * (-CHASTE_CONST(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 * (-CHASTE_CONST(0.39200000000000002) - CHASTE_CONST(78.400000000000006) * var_chaste_interface__intracellular_ion_concentrations__Ca_i));rJacobian[8][9] = 0.0;rJacobian[8][10] = 0.0;rJacobian[8][11] = -(mDt * (CHASTE_CONST(78.400000000000006) - CHASTE_CONST(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 * (-CHASTE_CONST(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 * (-CHASTE_CONST(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 * (CHASTE_CONST(1.7754934097947219e-10) * var_x11 + CHASTE_CONST(0.00078910818213098765) * var_x8));rJacobian[11][2] = 0.0;rJacobian[11][3] = -(mDt * (-CHASTE_CONST(0.0017614021922566689) * var_x5 * var_x7 + CHASTE_CONST(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 * (CHASTE_CONST(0.021419999999999998) + 9 * var_chaste_interface__intracellular_ion_concentrations__Ca_i));rJacobian[11][8] = -(mDt * (CHASTE_CONST(0.031359999999999999) + CHASTE_CONST(6.2720000000000002) * var_chaste_interface__intracellular_ion_concentrations__Ca_i));rJacobian[11][9] = -(mDt * (CHASTE_CONST(0.0010559999999999999) + var_x64));rJacobian[11][10] = -(mDt * (var_x64));rJacobian[11][11] = 1.0 - (mDt * (-CHASTE_CONST(47.271999999999998) - var_x63 + CHASTE_CONST(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 - CHASTE_CONST(8.3745867230843319e-6) / var_x65 - CHASTE_CONST(5.2842065767700058e-7) * var_x76 - CHASTE_CONST(8.2198768971977874) * var_x8 - CHASTE_CONST(0.0017614021922566689) * var_x78 - CHASTE_CONST(2.3373323507508574e-7) / var_chaste_interface__intracellular_ion_concentrations__Ca_i + CHASTE_CONST(8.3745867230843319e-6) * var_chaste_interface__intracellular_ion_concentrations__Ca_i / CHASTE_MATH::Pow(var_x65, 2) + CHASTE_CONST(7.3978892074780085e-7) * var_x10 * var_x9));rJacobian[11][12] = 0.0;rJacobian[11][13] = -(mDt * (-CHASTE_CONST(1.5852619730310017e-6) * var_x75 * var_x80 + CHASTE_CONST(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 * (CHASTE_CONST(0.043659884291485852) * var_x48 + CHASTE_CONST(0.00016953677944277714) * var_x36 - CHASTE_CONST(0.00016953677944277714) * var_x84 + var_x22 * var_x81 + var_x37 * var_x81 + var_x51 * var_x83 - var_x48 * var_x83 - CHASTE_CONST(0.0022916155659426776) * var_x38 * var_x58 - var_x23 * var_x27 * var_x82));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 * (-CHASTE_CONST(0.021829942145742926) * var_x54 - CHASTE_CONST(0.021829942145742926) * var_x55 - CHASTE_CONST(0.043659884291485852) * var_x57 + CHASTE_CONST(26.53945091048535) * var_x26 * var_x41 * var_x82 * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r + CHASTE_CONST(0.0022916155659426776) * var_x40 * var_x41 * var_x43 * var_x49 * var_x50 * var_x53 * mParameters[6]));rJacobian[12][13] = -(mDt * (CHASTE_CONST(0.00025430516916416572) * var_x59 - CHASTE_CONST(1.9106323753881723e-7) * var_x34 * var_x60 * var_x61 * 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 * (CHASTE_CONST(0.00025430516916416572) * var_x84 - CHASTE_CONST(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 * (CHASTE_CONST(0.0024676405950567236) * var_x78 + CHASTE_CONST(7.4029217851701709e-7) * var_x76));rJacobian[13][12] = 0.0;rJacobian[13][13] = 1.0 - (mDt * (-CHASTE_CONST(0.00038145775374624855) * var_x59 - CHASTE_CONST(4.3659884291485854e-7) * var_x85 - CHASTE_CONST(0.00082254686501890791) * (((var_chaste_interface__membrane__V >= -CHASTE_CONST(2.6539450910485349e-6)) && (var_chaste_interface__membrane__V <= CHASTE_CONST(2.6539450910485349e-6))) ? (-var_x90 + (CHASTE_CONST(0.5) + CHASTE_CONST(188398.77346612973) * var_chaste_interface__membrane__V) * (var_x90 + var_x89 * CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8) - var_x87) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))))) : (CHASTE_CONST(3635.606491085292) * var_x88 * var_chaste_interface__membrane__V * CHASTE_MATH::Exp(var_x91 - var_x87) / (-1 + CHASTE_MATH::Exp(var_x91)))) - CHASTE_CONST(0.0074029217851701709) * var_x72 * var_x77 * var_x80 + CHASTE_CONST(2.2208765355510512e-6) * var_x71 * var_x74 * var_x79 * mParameters[9] * mParameters[1] + CHASTE_CONST(2.8659485630822583e-7) * var_x32 * var_x33 * var_x60 * var_x61 * var_chaste_interface__cleft_space_ion_concentrations__K_c)); +} + +template +DEVICE +void Cellaslanidi_atrial_model_2009FromCellMLBackwardEuler::UpdateTransmembranePotentialDevice(ValueType var_chaste_interface__environment__time_converted, + ValueType rY[], + ValueType mDt, + const ValueType mParameters[], + bool mSetVoltageDerivativeToZero, + ValueType mFixedVoltage, + DeviceStimulusFunctor stim, + ValueType capacitance) +{ + ValueType var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); + // Units: millivolt; Initial value: -80.0 + ValueType var_chaste_interface__intracellular_ion_concentrations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 7.1e-05 + ValueType var_chaste_interface__sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.01309 + ValueType var_chaste_interface__sodium_current_h1_gate__h1 = rY[3]; + // Units: dimensionless; Initial value: 0.706 + ValueType var_chaste_interface__sodium_current_h2_gate__h2 = rY[4]; + // Units: dimensionless; Initial value: 0.61493 + ValueType var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L = rY[5]; + // Units: dimensionless; Initial value: 3e-05 + ValueType var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L = rY[6]; + // Units: dimensionless; Initial value: 0.99981 + ValueType var_chaste_interface__T_type_Ca_channel_d_T_gate__d_T = rY[7]; + // Units: dimensionless; Initial value: 0.00046 + ValueType var_chaste_interface__T_type_Ca_channel_f_T_gate__f_T = rY[8]; + // Units: dimensionless; Initial value: 0.30752 + ValueType var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r = rY[9]; + // Units: dimensionless; Initial value: 6e-05 + ValueType var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1 = rY[10]; + // Units: dimensionless; Initial value: 0.5753 + ValueType var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2 = rY[11]; + // Units: dimensionless; Initial value: 0.39871 + ValueType var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3 = rY[12]; + // Units: dimensionless; Initial value: 0.57363 + ValueType var_chaste_interface__delayed_rectifier_K_current_z_gate__z = rY[13]; + // Units: dimensionless; Initial value: 0.02032 + ValueType var_chaste_interface__delayed_rectifier_K_current_pa_gate__p_a = rY[14]; + // Units: dimensionless; Initial value: 0.00016 + ValueType var_chaste_interface__delayed_rectifier_K_current_pi_gate__p_i = rY[15]; + // Units: dimensionless; Initial value: 0.76898 + ValueType var_chaste_interface__intracellular_ion_concentrations__Na_i = rY[16]; + // Units: millimolar; Initial value: 8.4 + ValueType var_chaste_interface__intracellular_ion_concentrations__K_i = rY[17]; + // Units: millimolar; Initial value: 100.0 + ValueType var_chaste_interface__cleft_space_ion_concentrations__K_c = rY[22]; + // Units: millimolar; Initial value: 5.0 + + const ValueType var_Ca_independent_transient_outward_K_current__g_to = CHASTE_CONST(0.050001999999999998); // nanoS + const ValueType var_L_type_Ca_channel__E_Ca_app = 50; // millivolt + const ValueType var_Na_Ca_ion_exchanger_current__d_NaCa = CHASTE_CONST(0.00029999999999999997); // per_millimolar_4 + const ValueType var_Na_Ca_ion_exchanger_current__gamma = CHASTE_CONST(0.45000000000000001); // dimensionless + const ValueType var_T_type_Ca_channel__E_Ca_T = 38; // millivolt + const ValueType var_T_type_Ca_channel__g_Ca_T = CHASTE_CONST(0.0060000000000000001); // nanoS + const ValueType var_background_currents__g_B_Ca = CHASTE_CONST(3.1000000000000001e-5); // nanoS + const ValueType var_background_currents__g_B_Na = CHASTE_CONST(6.3999999999999997e-5); // nanoS + const ValueType var_environment__CT = 1; // dimensionless + const ValueType var_environment__PM = 0; // dimensionless + const ValueType var_inward_rectifier__KmK1 = CHASTE_CONST(0.58999999999999997); // millimolar + const ValueType var_inward_rectifier__shiftK1 = -CHASTE_CONST(3.6000000000000001); // millivolt + const ValueType var_inward_rectifier__steepK1 = CHASTE_CONST(1.393); // dimensionless + const ValueType var_membrane__Cm_converted = CHASTE_CONST(0.001) * mParameters[4]; // uF + const ValueType var_membrane__F = 96487; // coulomb_per_mole + const ValueType var_membrane__R = 8314; // millijoule_per_mole_kelvin + const ValueType var_membrane__T = 308; // kelvin + const ValueType var_Ca_independent_transient_outward_K_current__E_K = var_membrane__R * var_membrane__T * CHASTE_MATH::Log(var_chaste_interface__cleft_space_ion_concentrations__K_c / var_chaste_interface__intracellular_ion_concentrations__K_i) / var_membrane__F; // millivolt + const ValueType var_background_currents__E_Ca = CHASTE_CONST(0.5) * var_membrane__R * var_membrane__T * CHASTE_MATH::Log(mParameters[1] / var_chaste_interface__intracellular_ion_concentrations__Ca_i) / var_membrane__F; // millivolt + const ValueType var_Ca_independent_transient_outward_K_current__i_sus = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (CHASTE_CONST(0.098000000000000004) + CHASTE_CONST(0.0014) * var_chaste_interface__membrane__V) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (CHASTE_CONST(0.16799999999999998) + CHASTE_CONST(0.0023999999999999998) * var_chaste_interface__membrane__V) : (CHASTE_CONST(0.070000000000000007) + CHASTE_CONST(0.001) * var_chaste_interface__membrane__V))); // picoA + const ValueType var_Ca_independent_transient_outward_K_current__i_to = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (CHASTE_CONST(0.20000000000000001) * (CHASTE_CONST(0.40000000000000002) + CHASTE_CONST(0.59999999999999998) * CHASTE_MATH::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) * (CHASTE_CONST(0.58999999999999997) * CHASTE_MATH::Pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + CHASTE_CONST(0.40999999999999998) * CHASTE_MATH::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)) ? (CHASTE_CONST(0.34999999999999998) * (CHASTE_CONST(0.40000000000000002) + CHASTE_CONST(0.59999999999999998) * CHASTE_MATH::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) * (CHASTE_CONST(0.58999999999999997) * CHASTE_MATH::Pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + CHASTE_CONST(0.40999999999999998) * CHASTE_MATH::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) : ((CHASTE_CONST(0.40000000000000002) + CHASTE_CONST(0.59999999999999998) * CHASTE_MATH::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) * (CHASTE_CONST(0.58999999999999997) * CHASTE_MATH::Pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + CHASTE_CONST(0.40999999999999998) * CHASTE_MATH::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 ValueType var_L_type_Ca_channel__d_prime = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(1.9166666666666667) - CHASTE_CONST(0.083333333333333329) * var_chaste_interface__membrane__V)); // dimensionless + const ValueType var_L_type_Ca_channel__i_Ca_L = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (CHASTE_CONST(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)) ? (CHASTE_CONST(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 ValueType var_Na_Ca_ion_exchanger_current__i_NaCa = (CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[1] * CHASTE_MATH::Exp(var_Na_Ca_ion_exchanger_current__gamma * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - CHASTE_MATH::Pow(mParameters[2], 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i * CHASTE_MATH::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 + (CHASTE_MATH::Pow(mParameters[2], 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i + CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[1]) * var_Na_Ca_ion_exchanger_current__d_NaCa); // picoA + const ValueType 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 ValueType var_background_currents__i_B_Ca = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (CHASTE_CONST(2.0000000000000002e-5) * var_chaste_interface__membrane__V - CHASTE_CONST(2.0000000000000002e-5) * var_background_currents__E_Ca) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (CHASTE_CONST(3.0000000000000001e-5) * var_chaste_interface__membrane__V - CHASTE_CONST(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 ValueType 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 ValueType 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 ValueType var_inward_rectifier__i_K1 = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (2 * CHASTE_MATH::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 + CHASTE_MATH::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))) * CHASTE_MATH::Pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (CHASTE_CONST(2.5) * CHASTE_MATH::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 + CHASTE_MATH::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))) * CHASTE_MATH::Pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))) : (CHASTE_MATH::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 + CHASTE_MATH::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))) * CHASTE_MATH::Pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))))); // picoA + const ValueType var_membrane__i_Stim_converted = CHASTE_STIM(var_chaste_interface__environment__time_converted); // uA_per_cm2 + const ValueType var_membrane__i_Stim = 1000000 * var_membrane__Cm_converted * var_membrane__i_Stim_converted / CHASTE_CAP(); // picoA + const ValueType var_sarcolemmal_calcium_pump_current__i_CaP_max = CHASTE_CONST(0.0095090000000000001); // picoA + const ValueType var_sarcolemmal_calcium_pump_current__k_CaP = CHASTE_CONST(0.00020000000000000001); // millimolar + const ValueType 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 ValueType var_sodium_current__E_Na = var_membrane__R * var_membrane__T * CHASTE_MATH::Log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i) / var_membrane__F; // millivolt + const ValueType var_background_currents__i_B_Na = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (CHASTE_CONST(2.0000000000000002e-5) * var_chaste_interface__membrane__V - CHASTE_CONST(2.0000000000000002e-5) * var_sodium_current__E_Na) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (CHASTE_CONST(3.0000000000000001e-5) * var_chaste_interface__membrane__V - CHASTE_CONST(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 ValueType var_sodium_current__i_Na = (((var_chaste_interface__membrane__V >= -CHASTE_CONST(2.6539450910485349e-6)) && (var_chaste_interface__membrane__V <= CHASTE_CONST(2.6539450910485349e-6))) ? (CHASTE_CONST(188398.77346612973) * (CHASTE_CONST(2.6539450910485349e-6) + var_chaste_interface__membrane__V) * (CHASTE_CONST(0.0096486999999999996) * CHASTE_MATH::Pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8) - CHASTE_MATH::Log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (CHASTE_CONST(0.36499999999999999) * var_chaste_interface__sodium_current_h2_gate__h2 + CHASTE_CONST(0.63500000000000001) * var_chaste_interface__sodium_current_h1_gate__h1) * mParameters[2] * mParameters[5] / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) + CHASTE_CONST(0.0096486999999999996) * CHASTE_MATH::Pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8) - CHASTE_MATH::Log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (CHASTE_CONST(0.36499999999999999) * var_chaste_interface__sodium_current_h2_gate__h2 + CHASTE_CONST(0.63500000000000001) * var_chaste_interface__sodium_current_h1_gate__h1) * mParameters[2] * mParameters[5] / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)))) - CHASTE_CONST(0.0096486999999999996) * CHASTE_MATH::Pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8) - CHASTE_MATH::Log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (CHASTE_CONST(0.36499999999999999) * var_chaste_interface__sodium_current_h2_gate__h2 + CHASTE_CONST(0.63500000000000001) * var_chaste_interface__sodium_current_h1_gate__h1) * mParameters[2] * mParameters[5] / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)))) : (CHASTE_CONST(3635.606491085292) * CHASTE_MATH::Pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + CHASTE_MATH::Exp(CHASTE_CONST(0.037679754693225945) * var_chaste_interface__membrane__V - CHASTE_MATH::Log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (CHASTE_CONST(0.36499999999999999) * var_chaste_interface__sodium_current_h2_gate__h2 + CHASTE_CONST(0.63500000000000001) * var_chaste_interface__sodium_current_h1_gate__h1) * mParameters[2] * var_chaste_interface__membrane__V * mParameters[5] / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(0.037679754693225945) * var_chaste_interface__membrane__V)))); // picoA + const ValueType var_sodium_potassium_pump__i_NaK_max = CHASTE_CONST(0.064409999999999995); // picoA + const ValueType var_sodium_potassium_pump__k_NaK_K = 1; // millimolar + const ValueType var_sodium_potassium_pump__k_NaK_Na = 11; // millimolar + const ValueType var_sodium_potassium_pump__i_p = CHASTE_CONST(1.6000000000000001) * CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, CHASTE_CONST(1.5)) * var_chaste_interface__cleft_space_ion_concentrations__K_c * var_sodium_potassium_pump__i_NaK_max / ((CHASTE_CONST(1.5) + CHASTE_MATH::Exp(-CHASTE_CONST(1.5) - CHASTE_CONST(0.025000000000000001) * var_chaste_interface__membrane__V)) * (CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, CHASTE_CONST(1.5)) + CHASTE_MATH::Pow(var_sodium_potassium_pump__k_NaK_Na, CHASTE_CONST(1.5))) * (var_chaste_interface__cleft_space_ion_concentrations__K_c + var_sodium_potassium_pump__k_NaK_K)); // picoA + const ValueType var_membrane__V_orig_deriv = -(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 ValueType d_dt_chaste_interface_var_membrane__V = CHASTE_CONST(0.001) * var_membrane__V_orig_deriv; // millivolt / millisecond + + rY[0] += mDt*d_dt_chaste_interface_var_membrane__V; +} + +#include "ChasteCpuMacros.hpp" +#endif // CELLASLANIDI_ATRIAL_MODEL_2009FROMCELLMLBACKWARDEULERKERNELS_HPP_ \ No newline at end of file diff --git a/chaste_codegen/data/tests/chaste_reference_models/BE/bondarenko_szigeti_bett_kim_rasmusson_2004_apical.cpp b/chaste_codegen/data/tests/chaste_reference_models/BE/bondarenko_szigeti_bett_kim_rasmusson_2004_apical.cpp index da9a18ac0..a102d3d57 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/BE/bondarenko_szigeti_bett_kim_rasmusson_2004_apical.cpp +++ b/chaste_codegen/data/tests/chaste_reference_models/BE/bondarenko_szigeti_bett_kim_rasmusson_2004_apical.cpp @@ -22,6 +22,8 @@ #include "HeartConfig.hpp" #include "IsNan.hpp" #include "MathsCustomFunctions.hpp" +#include "ChasteMathDeviceNamespaces.hpp" +#include "ChasteCpuMacros.hpp" @@ -30,9 +32,9 @@ 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_amplitude_converted = -80 * CHASTE_CAP(); // uA_per_cm2 + const double var_chaste_interface__membrane__stim_duration = CHASTE_CONST(0.5); // millisecond + const double var_chaste_interface__membrane__stim_period = CHASTE_CONST(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), @@ -61,23 +63,23 @@ // 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[0] = CHASTE_CONST(1.7399999999999999e-5); // (var_calcium_fluxes__v2) [per_millisecond] + this->mParameters[1] = CHASTE_CONST(4.5); // (var_calcium_fluxes__v1) [per_millisecond] + this->mParameters[2] = CHASTE_CONST(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[7] = CHASTE_CONST(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] + this->mParameters[11] = CHASTE_CONST(0.29380000000000001); // (var_time_independent_potassium_current__g_K1) [milliS_per_microF] + this->mParameters[12] = CHASTE_CONST(0.050000000000000003); // (var_non_inactivating_steady_state_potassium_current__g_Kss) [milliS_per_microF] + this->mParameters[13] = CHASTE_CONST(0.078); // (var_rapid_delayed_rectifier_potassium_current__g_Kr) [milliS_per_microF] + this->mParameters[14] = CHASTE_CONST(0.0057499999999999999); // (var_slow_delayed_rectifier_potassium_current__g_Ks) [milliS_per_microF] + this->mParameters[15] = CHASTE_CONST(292.80000000000001); // (var_sodium_calcium_exchange_current__k_NaCa) [picoA_per_picoF] + this->mParameters[16] = CHASTE_CONST(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() @@ -124,7 +126,7 @@ // 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -161,53 +163,53 @@ 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_background_current__g_Cab = CHASTE_CONST(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__Km_pCa = CHASTE_CONST(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_calcium_pump_current__i_pCa = CHASTE_MATH::Pow(var_calcium_concentration__Cai, 2) * var_calcium_pump_current__i_pCa_max / (CHASTE_MATH::Pow(var_calcium_concentration__Cai, 2) + CHASTE_MATH::Pow(var_calcium_pump_current__Km_pCa, 2)); // picoA_per_picoF + const double var_membrane__F = CHASTE_CONST(96.5); // coulomb_per_millimole + const double var_membrane__R = CHASTE_CONST(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_calcium_background_current__E_CaN = CHASTE_CONST(0.5) * var_membrane__R * var_membrane__T * CHASTE_MATH::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_L_type_calcium_current__i_CaL_converted = CHASTE_CAP() * var_L_type_calcium_current__i_CaL; // uA_per_cm2 + const double var_calcium_activated_chloride_current__O_ClCa = CHASTE_CONST(0.20000000000000001) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(5.9871794871794881) - CHASTE_CONST(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_fast_transient_outward_potassium_current__E_K = var_membrane__R * var_membrane__T * CHASTE_MATH::Log(mParameters[5] / var_chaste_interface__potassium_concentration__Ki) / var_membrane__F; // millivolt + const double var_fast_transient_outward_potassium_current__i_Kto_f = CHASTE_MATH::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 = CHASTE_CAP() * 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_non_inactivating_steady_state_potassium_current__i_Kss_converted = CHASTE_CAP() * var_non_inactivating_steady_state_potassium_current__i_Kss; // uA_per_cm2 + const double var_slow_delayed_rectifier_potassium_current__i_Ks = CHASTE_MATH::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 = CHASTE_CAP() * 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_background_current__g_Nab = CHASTE_CONST(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((mParameters[6] + 0.1111111111111111 * mParameters[5]) / (var_chaste_interface__sodium_concentration__Nai + 0.1111111111111111 * var_chaste_interface__potassium_concentration__Ki)) / var_membrane__F; // millivolt + const double var_sodium_calcium_exchange_current__eta = CHASTE_CONST(0.34999999999999998); // dimensionless + const double var_sodium_calcium_exchange_current__k_sat = CHASTE_CONST(0.10000000000000001); // dimensionless + const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * CHASTE_MATH::Log((mParameters[6] + CHASTE_CONST(0.1111111111111111) * mParameters[5]) / (var_chaste_interface__sodium_concentration__Nai + CHASTE_CONST(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((mParameters[5] + 0.020408163265306124 * mParameters[6]) / (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_fast_sodium_current__i_Na_converted = CHASTE_CAP() * 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 * CHASTE_MATH::Log((mParameters[5] + CHASTE_CONST(0.020408163265306124) * mParameters[6]) / (var_chaste_interface__potassium_concentration__Ki + CHASTE_CONST(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 = CHASTE_CAP() * 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 = (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_calcium_exchange_current__i_NaCa = (CHASTE_MATH::Pow(var_chaste_interface__sodium_concentration__Nai, 3) * mParameters[4] * CHASTE_MATH::Exp(var_membrane__F * var_chaste_interface__membrane__V * var_sodium_calcium_exchange_current__eta / (var_membrane__R * var_membrane__T)) - CHASTE_MATH::Pow(mParameters[6], 3) * var_calcium_concentration__Cai * CHASTE_MATH::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 * CHASTE_MATH::Exp((-1 + var_sodium_calcium_exchange_current__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (CHASTE_MATH::Pow(mParameters[6], 3) + CHASTE_MATH::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 = CHASTE_CAP() * 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 = 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_sodium_potassium_pump_current__i_NaK_max = CHASTE_CONST(0.88); // picoA_per_picoF + const double var_sodium_potassium_pump_current__sigma = -CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * CHASTE_MATH::Exp(CHASTE_CONST(1.4858841010401188e-5) * mParameters[6]); // dimensionless + const double var_sodium_potassium_pump_current__f_NaK = 1 / (1 + CHASTE_CONST(0.1245) * CHASTE_MATH::Exp(-CHASTE_CONST(0.10000000000000001) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) + CHASTE_CONST(0.036499999999999998) * var_sodium_potassium_pump_current__sigma * CHASTE_MATH::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 = mParameters[5] * var_sodium_potassium_pump_current__f_NaK * var_sodium_potassium_pump_current__i_NaK_max / ((1 + CHASTE_MATH::Pow((var_sodium_potassium_pump_current__Km_Nai / var_chaste_interface__sodium_concentration__Nai), CHASTE_CONST(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 + CHASTE_MATH::Exp(CHASTE_CONST(0.089599999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(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 = CHASTE_CAP() * var_time_independent_potassium_current__i_K1; // uA_per_cm2 + const double var_ultra_rapidly_activating_delayed_rectifier_potassium_current__g_Kur = CHASTE_CONST(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 var_chaste_interface__i_ionic = CHASTE_CAP() * var_calcium_activated_chloride_current__i_ClCa + CHASTE_CAP() * var_calcium_background_current__i_Cab + CHASTE_CAP() * var_calcium_pump_current__i_pCa + CHASTE_CAP() * var_slow_transient_outward_potassium_current__i_Kto_s + CHASTE_CAP() * var_sodium_background_current__i_Nab + CHASTE_CAP() * var_sodium_potassium_pump_current__i_NaK + CHASTE_CAP() * 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)); @@ -217,7 +219,7 @@ 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -274,28 +276,28 @@ 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__Kpc_max = CHASTE_CONST(0.23324); // per_millisecond + const double var_L_type_calcium_current__Kpcb = CHASTE_CONST(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_background_current__g_Cab = CHASTE_CONST(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_CMDN = CHASTE_CONST(0.23799999999999999); // micromolar + const double var_calcium_concentration__Bi = 1 / (1 + var_calcium_concentration__CMDN_tot * var_calcium_concentration__Km_CMDN / CHASTE_MATH::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 / CHASTE_MATH::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 var_calcium_concentration__BJSR = 1 / (1 + var_calcium_concentration__CSQN_tot * var_calcium_concentration__Km_CSQN / CHASTE_MATH::Pow((var_chaste_interface__calcium_concentration__CaJSR + var_calcium_concentration__Km_CSQN), 2)); // dimensionless + const double var_calcium_fluxes__Km_up = CHASTE_CONST(0.5); // micromolar + const double var_calcium_fluxes__k_minus_htrpn = CHASTE_CONST(3.1999999999999999e-5); // per_millisecond + const double var_calcium_fluxes__k_minus_ltrpn = CHASTE_CONST(0.019599999999999999); // per_millisecond + const double var_calcium_fluxes__k_plus_htrpn = CHASTE_CONST(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 var_calcium_fluxes__k_plus_ltrpn = CHASTE_CONST(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 @@ -303,40 +305,40 @@ 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_fluxes__J_up = CHASTE_MATH::Pow(var_calcium_concentration__Cai, 2) * mParameters[2] / (CHASTE_MATH::Pow(var_calcium_concentration__Cai, 2) + CHASTE_MATH::Pow(var_calcium_fluxes__Km_up, 2)); // micromolar_per_millisecond + const double var_calcium_pump_current__Km_pCa = CHASTE_CONST(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_calcium_pump_current__i_pCa = CHASTE_MATH::Pow(var_calcium_concentration__Cai, 2) * var_calcium_pump_current__i_pCa_max / (CHASTE_MATH::Pow(var_calcium_concentration__Cai, 2) + CHASTE_MATH::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__Acap = CHASTE_CONST(0.00015339999999999999); // cm2 + const double var_membrane__F = CHASTE_CONST(96.5); // coulomb_per_millimole + const double var_membrane__R = CHASTE_CONST(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(-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 var_calcium_background_current__E_CaN = CHASTE_CONST(0.5) * var_membrane__R * var_membrane__T * CHASTE_MATH::Log(mParameters[4] / var_calcium_concentration__Cai) / var_membrane__F; // millivolt + const double var_L_type_calcium_current__Kpcf = 13 - 13 * CHASTE_MATH::Exp(-CHASTE_CONST(2.1025) * CHASTE_MATH::Pow((1 + CHASTE_CONST(0.068965517241379309) * var_chaste_interface__membrane__V), 2)); // per_millisecond + const double var_L_type_calcium_current__alpha = CHASTE_CONST(0.40000000000000002) * (1 + CHASTE_CONST(0.69999999999999996) * CHASTE_MATH::Exp(-160 * CHASTE_MATH::Pow((1 + CHASTE_CONST(0.025000000000000001) * var_chaste_interface__membrane__V), 2)) - CHASTE_CONST(0.75) * CHASTE_MATH::Exp(-CHASTE_MATH::Pow((1 + CHASTE_CONST(0.050000000000000003) * var_chaste_interface__membrane__V), 2))) * CHASTE_MATH::Exp(CHASTE_CONST(1.2) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V) / (1 + CHASTE_CONST(0.12) * CHASTE_MATH::Exp(CHASTE_CONST(1.2) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V)); // per_millisecond + const double var_L_type_calcium_current__beta = CHASTE_CONST(0.050000000000000003) * CHASTE_MATH::Exp(-CHASTE_CONST(0.92307692307692313) - CHASTE_CONST(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 - 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 + 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 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 + CHASTE_CONST(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 - CHASTE_CONST(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 + CHASTE_CONST(0.040000000000000001) * var_chaste_interface__L_type_calcium_current__I1 * var_L_type_calcium_current__Kpcb * var_L_type_calcium_current__beta - var_chaste_interface__L_type_calcium_current__C4 * var_L_type_calcium_current__Kpcf * var_L_type_calcium_current__gamma - CHASTE_CONST(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 + CHASTE_CONST(0.001) * var_chaste_interface__L_type_calcium_current__I3 * var_L_type_calcium_current__alpha - CHASTE_CONST(0.001) * var_chaste_interface__L_type_calcium_current__I1 * var_L_type_calcium_current__Kpcf + CHASTE_CONST(0.01) * var_chaste_interface__L_type_calcium_current__C4 * var_L_type_calcium_current__alpha * var_L_type_calcium_current__gamma - CHASTE_CONST(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 + CHASTE_CONST(0.001) * var_L_type_calcium_current__Kpcf * var_chaste_interface__L_type_calcium_current__O + CHASTE_CONST(0.002) * var_chaste_interface__L_type_calcium_current__C4 * var_L_type_calcium_current__Kpcf - CHASTE_CONST(0.001) * var_chaste_interface__L_type_calcium_current__I2 * var_L_type_calcium_current__alpha - CHASTE_CONST(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 + CHASTE_CONST(0.001) * var_chaste_interface__L_type_calcium_current__I1 * var_L_type_calcium_current__Kpcf - CHASTE_CONST(0.001) * var_chaste_interface__L_type_calcium_current__I3 * var_L_type_calcium_current__alpha + 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 + CHASTE_CONST(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 - CHASTE_CONST(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 d_dt_chaste_interface_var_calcium_fluxes__P_RyR = -CHASTE_CONST(0.040000000000000001) * var_chaste_interface__calcium_fluxes__P_RyR - CHASTE_CONST(0.10000000000000001) * var_L_type_calcium_current__i_CaL * CHASTE_MATH::Exp(-CHASTE_CONST(0.038580246913580245) * CHASTE_MATH::Pow((-1 + CHASTE_CONST(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 var_fast_sodium_current__alpha_Na11 = CHASTE_CONST(3.802) / (CHASTE_CONST(0.20000000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(0.016666666666666666) - CHASTE_CONST(0.0066666666666666671) * var_chaste_interface__membrane__V) + CHASTE_CONST(0.1027) * CHASTE_MATH::Exp(-CHASTE_CONST(0.14705882352941177) - CHASTE_CONST(0.058823529411764705) * var_chaste_interface__membrane__V)); // per_millisecond + const double var_fast_sodium_current__alpha_Na12 = CHASTE_CONST(3.802) / (CHASTE_CONST(0.1027) * CHASTE_MATH::Exp(-CHASTE_CONST(0.16666666666666666) - CHASTE_CONST(0.066666666666666666) * var_chaste_interface__membrane__V) + CHASTE_CONST(0.23000000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(0.016666666666666666) - CHASTE_CONST(0.0066666666666666671) * var_chaste_interface__membrane__V)); // per_millisecond + const double var_fast_sodium_current__alpha_Na13 = CHASTE_CONST(3.802) / (CHASTE_CONST(0.25) * CHASTE_MATH::Exp(-CHASTE_CONST(0.016666666666666666) - CHASTE_CONST(0.0066666666666666671) * var_chaste_interface__membrane__V) + CHASTE_CONST(0.1027) * CHASTE_MATH::Exp(-CHASTE_CONST(0.20833333333333334) - CHASTE_CONST(0.083333333333333329) * var_chaste_interface__membrane__V)); // per_millisecond + const double var_fast_sodium_current__alpha_Na2 = 1 / (CHASTE_CONST(0.39395599999999997) + CHASTE_CONST(0.188495) * CHASTE_MATH::Exp(-CHASTE_CONST(0.42168674698795178) + CHASTE_CONST(0.060240963855421679) * mParameters[10] - CHASTE_CONST(0.060240963855421679) * var_chaste_interface__membrane__V)); // per_millisecond + const double var_fast_sodium_current__alpha_Na3 = CHASTE_CONST(6.9999999999999997e-7) * CHASTE_MATH::Exp(-CHASTE_CONST(0.90909090909090906) - CHASTE_CONST(0.12987012987012986) * var_chaste_interface__membrane__V); // per_millisecond + const double var_fast_sodium_current__alpha_Na4 = CHASTE_CONST(0.001) * var_fast_sodium_current__alpha_Na2; // per_millisecond + const double var_fast_sodium_current__alpha_Na5 = CHASTE_CONST(1.0526315789473684e-5) * var_fast_sodium_current__alpha_Na2; // per_millisecond + const double var_fast_sodium_current__beta_Na11 = CHASTE_CONST(0.19170000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(0.12315270935960591) - CHASTE_CONST(0.04926108374384236) * var_chaste_interface__membrane__V); // per_millisecond + const double var_fast_sodium_current__beta_Na12 = CHASTE_CONST(0.20000000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.12315270935960591) - CHASTE_CONST(0.04926108374384236) * var_chaste_interface__membrane__V); // per_millisecond + const double var_fast_sodium_current__beta_Na13 = CHASTE_CONST(0.22) * CHASTE_MATH::Exp(CHASTE_CONST(0.36945812807881773) - CHASTE_CONST(0.04926108374384236) * var_chaste_interface__membrane__V); // per_millisecond + const double var_fast_sodium_current__beta_Na3 = CHASTE_CONST(0.008539999999999999) + CHASTE_CONST(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 @@ -345,69 +347,69 @@ 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 var_fast_sodium_current__beta_Na5 = CHASTE_CONST(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 var_membrane__VJSR = CHASTE_CONST(1.1999999999999999e-7); // microlitre + const double var_membrane__VNSR = CHASTE_CONST(2.0980000000000001e-6); // microlitre + const double var_membrane__Vmyo = CHASTE_CONST(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_membrane__Vss = CHASTE_CONST(1.4849999999999999e-9); // microlitre + const double var_fast_transient_outward_potassium_current__E_K = var_membrane__R * var_membrane__T * CHASTE_MATH::Log(mParameters[5] / var_chaste_interface__potassium_concentration__Ki) / var_membrane__F; // millivolt + const double var_fast_transient_outward_potassium_current__i_Kto_f = CHASTE_MATH::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 var_rapid_delayed_rectifier_potassium_current__alpha_a0 = CHASTE_CONST(0.022348) * CHASTE_MATH::Exp(CHASTE_CONST(0.01176) * var_chaste_interface__membrane__V); // per_millisecond + const double var_rapid_delayed_rectifier_potassium_current__alpha_a1 = CHASTE_CONST(0.013733) * CHASTE_MATH::Exp(CHASTE_CONST(0.038198000000000003) * var_chaste_interface__membrane__V); // per_millisecond + const double var_rapid_delayed_rectifier_potassium_current__alpha_i = CHASTE_CONST(0.090820999999999999) * CHASTE_MATH::Exp(CHASTE_CONST(0.11695499999999999) + CHASTE_CONST(0.023390999999999999) * var_chaste_interface__membrane__V); // per_millisecond + const double var_rapid_delayed_rectifier_potassium_current__beta_a0 = CHASTE_CONST(0.047002000000000002) * CHASTE_MATH::Exp(-CHASTE_CONST(0.063100000000000003) * var_chaste_interface__membrane__V); // per_millisecond + const double var_rapid_delayed_rectifier_potassium_current__beta_a1 = CHASTE_CONST(6.8899999999999994e-5) * CHASTE_MATH::Exp(-CHASTE_CONST(0.041779999999999998) * var_chaste_interface__membrane__V); // per_millisecond + const double var_rapid_delayed_rectifier_potassium_current__beta_i = CHASTE_CONST(0.0064970000000000002) * CHASTE_MATH::Exp(-CHASTE_CONST(0.16339999999999999) - CHASTE_CONST(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 var_rapid_delayed_rectifier_potassium_current__kb = CHASTE_CONST(0.036777999999999998); // per_millisecond + const double var_rapid_delayed_rectifier_potassium_current__kf = CHASTE_CONST(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 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 - CHASTE_CONST(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 var_ryanodine_receptors__k_minus_a = CHASTE_CONST(0.071249999999999994); // per_millisecond + const double var_ryanodine_receptors__k_minus_b = CHASTE_CONST(0.96499999999999997); // per_millisecond + const double var_ryanodine_receptors__k_minus_c = CHASTE_CONST(0.00080000000000000004); // per_millisecond + const double var_ryanodine_receptors__k_plus_a = CHASTE_CONST(0.0060749999999999997); // micromolar4_per_millisecond + const double var_ryanodine_receptors__k_plus_b = CHASTE_CONST(0.0040499999999999998); // micromolar3_per_millisecond + const double var_ryanodine_receptors__k_plus_c = CHASTE_CONST(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 d_dt_chaste_interface_var_ryanodine_receptors__P_O2 = -var_chaste_interface__ryanodine_receptors__P_O2 * var_ryanodine_receptors__k_minus_b + CHASTE_MATH::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 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 + CHASTE_MATH::Pow(var_chaste_interface__calcium_concentration__Cass, var_ryanodine_receptors__n) * var_ryanodine_receptors__P_C1 * var_ryanodine_receptors__k_plus_a - CHASTE_MATH::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 = CHASTE_MATH::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_background_current__g_Nab = CHASTE_CONST(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((mParameters[6] + 0.1111111111111111 * mParameters[5]) / (var_chaste_interface__sodium_concentration__Nai + 0.1111111111111111 * var_chaste_interface__potassium_concentration__Ki)) / var_membrane__F; // millivolt + const double var_sodium_calcium_exchange_current__eta = CHASTE_CONST(0.34999999999999998); // dimensionless + const double var_sodium_calcium_exchange_current__k_sat = CHASTE_CONST(0.10000000000000001); // dimensionless + const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * CHASTE_MATH::Log((mParameters[6] + CHASTE_CONST(0.1111111111111111) * mParameters[5]) / (var_chaste_interface__sodium_concentration__Nai + CHASTE_CONST(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((mParameters[5] + 0.020408163265306124 * mParameters[6]) / (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 = (-var_membrane__R * var_membrane__T * CHASTE_MATH::Log((mParameters[5] + CHASTE_CONST(0.020408163265306124) * mParameters[6]) / (var_chaste_interface__potassium_concentration__Ki + CHASTE_CONST(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 = (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_calcium_exchange_current__i_NaCa = (CHASTE_MATH::Pow(var_chaste_interface__sodium_concentration__Nai, 3) * mParameters[4] * CHASTE_MATH::Exp(var_membrane__F * var_chaste_interface__membrane__V * var_sodium_calcium_exchange_current__eta / (var_membrane__R * var_membrane__T)) - CHASTE_MATH::Pow(mParameters[6], 3) * var_calcium_concentration__Cai * CHASTE_MATH::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 * CHASTE_MATH::Exp((-1 + var_sodium_calcium_exchange_current__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (CHASTE_MATH::Pow(mParameters[6], 3) + CHASTE_MATH::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 - CHASTE_CONST(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 = CHASTE_CONST(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 = 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_sodium_potassium_pump_current__i_NaK_max = CHASTE_CONST(0.88); // picoA_per_picoF + const double var_sodium_potassium_pump_current__sigma = -CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * CHASTE_MATH::Exp(CHASTE_CONST(1.4858841010401188e-5) * mParameters[6]); // dimensionless + const double var_sodium_potassium_pump_current__f_NaK = 1 / (1 + CHASTE_CONST(0.1245) * CHASTE_MATH::Exp(-CHASTE_CONST(0.10000000000000001) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) + CHASTE_CONST(0.036499999999999998) * var_sodium_potassium_pump_current__sigma * CHASTE_MATH::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 = mParameters[5] * var_sodium_potassium_pump_current__f_NaK * var_sodium_potassium_pump_current__i_NaK_max / ((1 + CHASTE_MATH::Pow((var_sodium_potassium_pump_current__Km_Nai / var_chaste_interface__sodium_concentration__Nai), CHASTE_CONST(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_time_independent_potassium_current__i_K1 = (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[5] * mParameters[11] / ((1 + CHASTE_MATH::Exp(CHASTE_CONST(0.089599999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(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 = CHASTE_CONST(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 @@ -448,7 +450,7 @@ 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -482,45 +484,45 @@ 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(-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_x0 = CHASTE_MATH::Exp(-CHASTE_CONST(0.92307692307692313) - CHASTE_CONST(0.076923076923076927) * var_chaste_interface__membrane__V); + const double var_x1 = CHASTE_MATH::Exp(CHASTE_CONST(1.2) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V); + const double var_x2 = var_x1 * (1 + CHASTE_CONST(0.69999999999999996) * CHASTE_MATH::Exp(-160 * CHASTE_MATH::Pow((1 + CHASTE_CONST(0.025000000000000001) * var_chaste_interface__membrane__V), 2)) - CHASTE_CONST(0.75) * CHASTE_MATH::Exp(-CHASTE_MATH::Pow((1 + CHASTE_CONST(0.050000000000000003) * var_chaste_interface__membrane__V), 2))) / (1 + CHASTE_CONST(0.12) * var_x1); + const double var_x3 = CHASTE_CONST(0.10000000000000001) * var_x0; + const double var_x4 = -CHASTE_CONST(1.6000000000000001) * var_x2; + const double var_x5 = CHASTE_CONST(0.80000000000000004) * var_x2; + const double var_x6 = CHASTE_CONST(0.15000000000000002) * var_x0; + const double var_x7 = CHASTE_MATH::Exp(-CHASTE_CONST(2.1025) * CHASTE_MATH::Pow((1 + CHASTE_CONST(0.068965517241379309) * var_chaste_interface__membrane__V), 2)); + const double var_x8 = CHASTE_CONST(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_x11 = CHASTE_CONST(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_x14 = CHASTE_CONST(0.40000000000000002) * var_x2; + const double var_x15 = CHASTE_CONST(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_x17 = CHASTE_CONST(0.00040000000000000002) * var_x0; + const double var_x18 = CHASTE_CONST(0.0001) * var_x0; + const double var_x19 = CHASTE_CONST(0.20000000000000001) * var_x0; + const double var_x20 = var_chaste_interface__calcium_concentration__Cass / CHASTE_MATH::Pow((1 + CHASTE_CONST(0.050000000000000003) * var_chaste_interface__calcium_concentration__Cass), 2); + const double var_x21 = -var_x15 * var_chaste_interface__L_type_calcium_current__C4 + CHASTE_CONST(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_x23 = CHASTE_CONST(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 = 0.00040000000000000002 * var_x2; + const double var_x25 = CHASTE_CONST(0.013000000000000001) * var_x7; + const double var_x26 = CHASTE_CONST(0.00040000000000000002) * var_x2; const double var_x27 = var_x23 * var_chaste_interface__L_type_calcium_current__O - var_x11 * var_chaste_interface__L_type_calcium_current__O; - const double var_x28 = 0.013000000000000001 - var_x25; + const double var_x28 = CHASTE_CONST(0.013000000000000001) - var_x25; const double var_x29 = var_x23 * var_chaste_interface__L_type_calcium_current__I2 - var_x11 * var_chaste_interface__L_type_calcium_current__I2; - const double var_x30 = 2.3700000000000001 * var_chaste_interface__calcium_concentration__Cai_converted; - const double var_x31 = 3.1999999999999999e-5 + var_x30; - const double var_x32 = 2.3700000000000001 * var_chaste_interface__calcium_buffering__HTRPN_Ca; - const double var_x33 = 32.699999999999996 * var_chaste_interface__calcium_concentration__Cai_converted; - const double var_x34 = 0.019599999999999999 + var_x33; - const double var_x35 = 32.699999999999996 * var_chaste_interface__calcium_buffering__LTRPN_Ca; - const double var_x36 = 1 + 0.00125 * var_chaste_interface__calcium_concentration__CaJSR; - const double var_x37 = pow(var_x36, (-2)); - const double var_x38 = 1 / (1 + 18.75 * var_x37); + const double var_x30 = CHASTE_CONST(2.3700000000000001) * var_chaste_interface__calcium_concentration__Cai_converted; + const double var_x31 = CHASTE_CONST(3.1999999999999999e-5) + var_x30; + const double var_x32 = CHASTE_CONST(2.3700000000000001) * var_chaste_interface__calcium_buffering__HTRPN_Ca; + const double var_x33 = CHASTE_CONST(32.699999999999996) * var_chaste_interface__calcium_concentration__Cai_converted; + const double var_x34 = CHASTE_CONST(0.019599999999999999) + var_x33; + const double var_x35 = CHASTE_CONST(32.699999999999996) * var_chaste_interface__calcium_buffering__LTRPN_Ca; + const double var_x36 = 1 + CHASTE_CONST(0.00125) * var_chaste_interface__calcium_concentration__CaJSR; + const double var_x37 = CHASTE_MATH::Pow(var_x36, (-2)); + const double var_x38 = 1 / (1 + CHASTE_CONST(18.75) * var_x37); const double var_x39 = var_chaste_interface__ryanodine_receptors__P_O1 + var_chaste_interface__ryanodine_receptors__P_O2; const double var_x40 = var_chaste_interface__calcium_fluxes__P_RyR * mParameters[1]; const double var_x41 = -var_chaste_interface__calcium_concentration__Cass + var_chaste_interface__calcium_concentration__CaJSR; @@ -528,90 +530,90 @@ const double var_x43 = -var_x38 * var_x41; const double var_x44 = var_x39 * mParameters[1]; const double var_x45 = var_x40 * var_x43; - const double var_x46 = pow(var_chaste_interface__calcium_concentration__Cai_converted, 2); + const double var_x46 = CHASTE_MATH::Pow(var_chaste_interface__calcium_concentration__Cai_converted, 2); const double var_x47 = 1000000 * var_x46; - const double var_x48 = 1 / (0.25 + var_x47); + const double var_x48 = 1 / (CHASTE_CONST(0.25) + var_x47); const double var_x49 = var_x48 * var_chaste_interface__calcium_concentration__Cai_converted; const double var_x50 = var_x49 * mParameters[2]; - const double var_x51 = pow((2.4999999999999999e-7 + var_x46), (-2)); - const double var_x52 = pow(var_chaste_interface__calcium_concentration__Cai_converted, 3); + const double var_x51 = CHASTE_MATH::Pow((CHASTE_CONST(2.4999999999999999e-7) + var_x46), (-2)); + const double var_x52 = CHASTE_MATH::Pow(var_chaste_interface__calcium_concentration__Cai_converted, 3); const double var_x53 = var_x51 * var_x52 * mParameters[2]; - 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_x54 = CHASTE_CONST(0.00023799999999999998) + var_chaste_interface__calcium_concentration__Cai_converted; + const double var_x55 = 1 + CHASTE_CONST(1.19e-5) / CHASTE_MATH::Pow(var_x54, 2); const double var_x56 = 1 / var_x55; - const double var_x57 = 0.001 * var_x56; + const double var_x57 = CHASTE_CONST(0.001) * var_x56; const double var_x58 = 1 / var_chaste_interface__calcium_concentration__Cai_converted; - const double var_x59 = exp(-0.025317124991725771 * var_chaste_interface__membrane__V); - const double var_x60 = pow(mParameters[6], 3); + const double var_x59 = CHASTE_MATH::Exp(-CHASTE_CONST(0.025317124991725771) * var_chaste_interface__membrane__V); + const double var_x60 = CHASTE_MATH::Pow(mParameters[6], 3); const double var_x61 = var_x59 * var_x60; - const double var_x62 = mParameters[15] / ((1 + 0.10000000000000001 * var_x59) * (1380 + mParameters[4]) * (669921875000000.0 + var_x60)); + const double var_x62 = mParameters[15] / ((1 + CHASTE_CONST(0.10000000000000001) * var_x59) * (1380 + mParameters[4]) * (CHASTE_CONST(669921875000000.0) + var_x60)); const double var_x63 = var_x61 * var_x62; const double var_x64 = 1000 * var_chaste_interface__calcium_concentration__Cai_converted; const double var_x65 = var_x47 * var_x48; - const double var_x66 = exp(0.013632298072467722 * var_chaste_interface__membrane__V); - const double var_x67 = var_x62 * var_x66 * pow(var_chaste_interface__sodium_concentration__Nai, 2) * mParameters[4]; - const double var_x68 = 0.23799999999999999 + var_chaste_interface__calcium_concentration__Cass; - const double var_x69 = pow(var_x68, (-2)); - const double var_x70 = 1 / (1 + 11.899999999999999 * var_x69); + const double var_x66 = CHASTE_MATH::Exp(CHASTE_CONST(0.013632298072467722) * var_chaste_interface__membrane__V); + const double var_x67 = var_x62 * var_x66 * CHASTE_MATH::Pow(var_chaste_interface__sodium_concentration__Nai, 2) * mParameters[4]; + const double var_x68 = CHASTE_CONST(0.23799999999999999) + var_chaste_interface__calcium_concentration__Cass; + const double var_x69 = CHASTE_MATH::Pow(var_x68, (-2)); + const double var_x70 = 1 / (1 + CHASTE_CONST(11.899999999999999) * var_x69); const double var_x71 = mParameters[7] * mParameters[8]; - const double var_x72 = 80.808080808080803 * var_chaste_interface__ryanodine_receptors__P_O1 + 80.808080808080803 * var_chaste_interface__ryanodine_receptors__P_O2; + const double var_x72 = CHASTE_CONST(80.808080808080803) * var_chaste_interface__ryanodine_receptors__P_O1 + CHASTE_CONST(80.808080808080803) * var_chaste_interface__ryanodine_receptors__P_O2; const double var_x73 = var_x40 * var_x70; - const double var_x74 = 80.808080808080803 * var_chaste_interface__calcium_concentration__CaJSR - 80.808080808080803 * var_chaste_interface__calcium_concentration__Cass; + const double var_x74 = CHASTE_CONST(80.808080808080803) * var_chaste_interface__calcium_concentration__CaJSR - CHASTE_CONST(80.808080808080803) * var_chaste_interface__calcium_concentration__Cass; const double var_x75 = var_x73 * var_x74; - const double var_x76 = 0.04926108374384236 * var_chaste_interface__membrane__V; - const double var_x77 = 0.20000000000000001 * exp(0.12315270935960591 - var_x76); - const double var_x78 = exp(-0.016666666666666666 - 0.0066666666666666671 * var_chaste_interface__membrane__V); - const double var_x79 = 1 / (0.25 * var_x78 + 0.1027 * exp(-0.20833333333333334 - 0.083333333333333329 * var_chaste_interface__membrane__V)); - const double var_x80 = 3.802 * var_x79; - const double var_x81 = 0.008539999999999999 + 2.0000000000000002e-5 * var_chaste_interface__membrane__V; - const double var_x82 = 3.802 / (0.1027 * exp(-0.16666666666666666 - 0.066666666666666666 * var_chaste_interface__membrane__V) + 0.23000000000000001 * var_x78); - const double var_x83 = exp(-0.90909090909090906 - 0.12987012987012986 * var_chaste_interface__membrane__V); - const double var_x84 = 6.9999999999999997e-7 * var_x83; - const double var_x85 = exp(0.36945812807881773 - var_x76); - const double var_x86 = 0.22 * var_x85; - const double var_x87 = 3.802 / (0.20000000000000001 * var_x78 + 0.1027 * exp(-0.14705882352941177 - 0.058823529411764705 * var_chaste_interface__membrane__V)); + const double var_x76 = CHASTE_CONST(0.04926108374384236) * var_chaste_interface__membrane__V; + const double var_x77 = CHASTE_CONST(0.20000000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.12315270935960591) - var_x76); + const double var_x78 = CHASTE_MATH::Exp(-CHASTE_CONST(0.016666666666666666) - CHASTE_CONST(0.0066666666666666671) * var_chaste_interface__membrane__V); + const double var_x79 = 1 / (CHASTE_CONST(0.25) * var_x78 + CHASTE_CONST(0.1027) * CHASTE_MATH::Exp(-CHASTE_CONST(0.20833333333333334) - CHASTE_CONST(0.083333333333333329) * var_chaste_interface__membrane__V)); + const double var_x80 = CHASTE_CONST(3.802) * var_x79; + const double var_x81 = CHASTE_CONST(0.008539999999999999) + CHASTE_CONST(2.0000000000000002e-5) * var_chaste_interface__membrane__V; + const double var_x82 = CHASTE_CONST(3.802) / (CHASTE_CONST(0.1027) * CHASTE_MATH::Exp(-CHASTE_CONST(0.16666666666666666) - CHASTE_CONST(0.066666666666666666) * var_chaste_interface__membrane__V) + CHASTE_CONST(0.23000000000000001) * var_x78); + const double var_x83 = CHASTE_MATH::Exp(-CHASTE_CONST(0.90909090909090906) - CHASTE_CONST(0.12987012987012986) * var_chaste_interface__membrane__V); + const double var_x84 = CHASTE_CONST(6.9999999999999997e-7) * var_x83; + const double var_x85 = CHASTE_MATH::Exp(CHASTE_CONST(0.36945812807881773) - var_x76); + const double var_x86 = CHASTE_CONST(0.22) * var_x85; + const double var_x87 = CHASTE_CONST(3.802) / (CHASTE_CONST(0.20000000000000001) * var_x78 + CHASTE_CONST(0.1027) * CHASTE_MATH::Exp(-CHASTE_CONST(0.14705882352941177) - CHASTE_CONST(0.058823529411764705) * var_chaste_interface__membrane__V)); const double var_x88 = -var_x87; - const double var_x89 = 0.19170000000000001 * exp(-0.12315270935960591 - var_x76); + const double var_x89 = CHASTE_CONST(0.19170000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(0.12315270935960591) - var_x76); const double var_x90 = var_x82 + var_x89; const double var_x91 = var_x81 + var_x87; - const double var_x92 = 1 / (0.39395599999999997 + 0.188495 * exp(-0.42168674698795178 + 0.060240963855421679 * mParameters[10] - 0.060240963855421679 * var_chaste_interface__membrane__V)); - const double var_x93 = 1.0526315789473684e-5 * var_x92; - const double var_x94 = 1.4e-8 * var_x83; - const double var_x95 = 0.001 * var_x92; + const double var_x92 = 1 / (CHASTE_CONST(0.39395599999999997) + CHASTE_CONST(0.188495) * CHASTE_MATH::Exp(-CHASTE_CONST(0.42168674698795178) + CHASTE_CONST(0.060240963855421679) * mParameters[10] - CHASTE_CONST(0.060240963855421679) * var_chaste_interface__membrane__V)); + const double var_x93 = CHASTE_CONST(1.0526315789473684e-5) * var_x92; + const double var_x94 = CHASTE_CONST(1.4e-8) * var_x83; + const double var_x95 = CHASTE_CONST(0.001) * var_x92; const double var_x96 = -var_x81; - const double var_x97 = 1.2097272727272726e-5 * var_x79 * var_x83 * var_x92 / (var_x81 * var_x85); + const double var_x97 = CHASTE_CONST(1.2097272727272726e-5) * var_x79 * var_x83 * var_x92 / (var_x81 * var_x85); const double var_x98 = var_x92; const double var_x99 = 1 / var_chaste_interface__potassium_concentration__Ki; const double var_x100 = var_x99 * mParameters[5]; - const double var_x101 = log(var_x100); - const double var_x102 = -25.674321243523316 * var_x101 + var_chaste_interface__membrane__V; + const double var_x101 = CHASTE_MATH::Log(var_x100); + const double var_x102 = -CHASTE_CONST(25.674321243523316) * var_x101 + var_chaste_interface__membrane__V; const double var_x103 = var_chaste_interface__non_inactivating_steady_state_potassium_current__aKss * mParameters[12]; const double var_x104 = mParameters[8] * mParameters[3]; - const double var_x105 = 0.061518471582797281 * var_x104; - const double var_x106 = 1 / (var_chaste_interface__potassium_concentration__Ki + 0.020408163265306124 * var_chaste_interface__sodium_concentration__Nai); + const double var_x105 = CHASTE_CONST(0.061518471582797281) * var_x104; + const double var_x106 = 1 / (var_chaste_interface__potassium_concentration__Ki + CHASTE_CONST(0.020408163265306124) * var_chaste_interface__sodium_concentration__Nai); const double var_x107 = var_x106 * var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K * mParameters[13]; - const double var_x108 = 1.5794450018272976 * var_x99; - const double var_x109 = exp(0.089599999999999999 * var_chaste_interface__membrane__V - 2.300419183419689 * var_x101); + const double var_x108 = CHASTE_CONST(1.5794450018272976) * var_x99; + const double var_x109 = CHASTE_MATH::Exp(CHASTE_CONST(0.089599999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(2.300419183419689) * var_x101); const double var_x110 = 1 + var_x109; const double var_x111 = 1 / (210 + mParameters[5]); const double var_x112 = 1 / var_chaste_interface__sodium_concentration__Nai; - const double var_x113 = pow(var_x112, 1.5); - const double var_x114 = var_x112 * var_x113 * mParameters[5] / ((1500 + mParameters[5]) * pow((3.2860264730588296e-7 + var_x113), 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_x115 = 0.022348 * exp(0.01176 * var_chaste_interface__membrane__V); + const double var_x113 = CHASTE_MATH::Pow(var_x112, CHASTE_CONST(1.5)); + const double var_x114 = var_x112 * var_x113 * mParameters[5] / ((1500 + mParameters[5]) * CHASTE_MATH::Pow((CHASTE_CONST(3.2860264730588296e-7) + var_x113), 2) * (1 + CHASTE_CONST(0.1245) * CHASTE_MATH::Exp(-CHASTE_CONST(0.0038949423064193493) * var_chaste_interface__membrane__V) + CHASTE_CONST(0.036499999999999998) * (-CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * CHASTE_MATH::Exp(CHASTE_CONST(1.4858841010401188e-5) * mParameters[6])) * CHASTE_MATH::Exp(-CHASTE_CONST(0.038949423064193495) * var_chaste_interface__membrane__V))); + const double var_x115 = CHASTE_CONST(0.022348) * CHASTE_MATH::Exp(CHASTE_CONST(0.01176) * var_chaste_interface__membrane__V); const double var_x116 = -var_x115; - const double var_x117 = 0.013733 * exp(0.038198000000000003 * var_chaste_interface__membrane__V); - const double var_x118 = 6.8899999999999994e-5 * exp(-0.041779999999999998 * var_chaste_interface__membrane__V); - const double var_x119 = 0.0064970000000000002 * exp(-0.16339999999999999 - 0.032680000000000001 * var_chaste_interface__membrane__V); - const double var_x120 = 0.090820999999999999 * exp(0.11695499999999999 + 0.023390999999999999 * var_chaste_interface__membrane__V); - const double var_x121 = 0.012149999999999999 * pow(var_chaste_interface__calcium_concentration__Cass, 2) * var_chaste_interface__ryanodine_receptors__P_O1; - const double var_x122 = pow(var_chaste_interface__calcium_concentration__Cass, 3); - const double var_x123 = 0.0060749999999999997 * pow(var_chaste_interface__calcium_concentration__Cass, 4); - const double var_x124 = 0.0040499999999999998 * var_x122; - const double var_x125 = 1 / (var_chaste_interface__sodium_concentration__Nai + 0.1111111111111111 * var_chaste_interface__potassium_concentration__Ki); + const double var_x117 = CHASTE_CONST(0.013733) * CHASTE_MATH::Exp(CHASTE_CONST(0.038198000000000003) * var_chaste_interface__membrane__V); + const double var_x118 = CHASTE_CONST(6.8899999999999994e-5) * CHASTE_MATH::Exp(-CHASTE_CONST(0.041779999999999998) * var_chaste_interface__membrane__V); + const double var_x119 = CHASTE_CONST(0.0064970000000000002) * CHASTE_MATH::Exp(-CHASTE_CONST(0.16339999999999999) - CHASTE_CONST(0.032680000000000001) * var_chaste_interface__membrane__V); + const double var_x120 = CHASTE_CONST(0.090820999999999999) * CHASTE_MATH::Exp(CHASTE_CONST(0.11695499999999999) + CHASTE_CONST(0.023390999999999999) * var_chaste_interface__membrane__V); + const double var_x121 = CHASTE_CONST(0.012149999999999999) * CHASTE_MATH::Pow(var_chaste_interface__calcium_concentration__Cass, 2) * var_chaste_interface__ryanodine_receptors__P_O1; + const double var_x122 = CHASTE_MATH::Pow(var_chaste_interface__calcium_concentration__Cass, 3); + const double var_x123 = CHASTE_CONST(0.0060749999999999997) * CHASTE_MATH::Pow(var_chaste_interface__calcium_concentration__Cass, 4); + const double var_x124 = CHASTE_CONST(0.0040499999999999998) * var_x122; + const double var_x125 = 1 / (var_chaste_interface__sodium_concentration__Nai + CHASTE_CONST(0.1111111111111111) * var_chaste_interface__potassium_concentration__Ki); const double var_x126 = var_x125 * 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][0] = 1.0 - (mDt * (-CHASTE_CONST(0.050000000000000003) * var_x0 - CHASTE_CONST(2.8000000000000003) * var_x2)); rJacobian[0][1] = -(mDt * (var_x3 + var_x4)); rJacobian[0][2] = -(mDt * (var_x4)); rJacobian[0][3] = -(mDt * (var_x4)); @@ -643,7 +645,7 @@ 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][0] = -(mDt * (CHASTE_CONST(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; @@ -677,8 +679,8 @@ 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][2] = 1.0 - (mDt * (-CHASTE_CONST(0.026000000000000002) + var_x8 - var_x13 - var_x14 - var_x16 - var_x6)); + rJacobian[2][3] = -(mDt * (CHASTE_CONST(1.0000000000000002e-6) * var_x0)); rJacobian[2][4] = -(mDt * (var_x17)); rJacobian[2][5] = -(mDt * (var_x18)); rJacobian[2][6] = -(mDt * (var_x19)); @@ -710,7 +712,7 @@ 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_x25 + var_x0 * (-0.026000000000000002 + 0.026000000000000002 * var_x7))); + rJacobian[3][3] = 1.0 - (mDt * (-CHASTE_CONST(0.0135) + var_x25 + var_x0 * (-CHASTE_CONST(0.026000000000000002) + CHASTE_CONST(0.026000000000000002) * var_x7))); rJacobian[3][4] = 0.0; rJacobian[3][5] = -(mDt * (var_x26)); rJacobian[3][6] = -(mDt * (var_x12)); @@ -741,10 +743,10 @@ 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][2] = -(mDt * (CHASTE_CONST(0.026000000000000002) - var_x8)); rJacobian[4][3] = 0.0; rJacobian[4][4] = 1.0 - (mDt * (-var_x12 - var_x17 - var_x26)); - rJacobian[4][5] = -(mDt * (0.00050000000000000001)); + rJacobian[4][5] = -(mDt * (CHASTE_CONST(0.00050000000000000001))); rJacobian[4][6] = -(mDt * (var_x28)); rJacobian[4][7] = 0.0; rJacobian[4][8] = 0.0; @@ -776,7 +778,7 @@ rJacobian[5][2] = -(mDt * (var_x13)); rJacobian[5][3] = -(mDt * (var_x28)); rJacobian[5][4] = -(mDt * (var_x12)); - rJacobian[5][5] = 1.0 - (mDt * (-0.00050000000000000001 - var_x18 - var_x26)); + rJacobian[5][5] = 1.0 - (mDt * (-CHASTE_CONST(0.00050000000000000001) - var_x18 - var_x26)); rJacobian[5][6] = 0.0; rJacobian[5][7] = 0.0; rJacobian[5][8] = 0.0; @@ -806,10 +808,10 @@ rJacobian[6][0] = 0.0; rJacobian[6][1] = 0.0; rJacobian[6][2] = -(mDt * (var_x14)); - rJacobian[6][3] = -(mDt * (0.00050000000000000001)); + rJacobian[6][3] = -(mDt * (CHASTE_CONST(0.00050000000000000001))); rJacobian[6][4] = -(mDt * (var_x26)); rJacobian[6][5] = 0.0; - rJacobian[6][6] = 1.0 - (mDt * (-0.013000000000000001 + var_x25 - var_x12 - var_x19)); + rJacobian[6][6] = 1.0 - (mDt * (-CHASTE_CONST(0.013000000000000001) + var_x25 - var_x12 - var_x19)); rJacobian[6][7] = 0.0; rJacobian[6][8] = 0.0; rJacobian[6][9] = 0.0; @@ -846,7 +848,7 @@ rJacobian[7][8] = 0.0; rJacobian[7][9] = 0.0; rJacobian[7][10] = 0.0; - rJacobian[7][11] = -(mDt * (331.80000000000001 - var_x32)); + rJacobian[7][11] = -(mDt * (CHASTE_CONST(331.80000000000001) - var_x32)); rJacobian[7][12] = 0.0; rJacobian[7][13] = 0.0; rJacobian[7][14] = 0.0; @@ -908,8 +910,8 @@ rJacobian[9][6] = 0.0; rJacobian[9][7] = 0.0; rJacobian[9][8] = 0.0; - rJacobian[9][9] = 1.0 - (mDt * (var_x38 * (-0.050000000000000003 - var_x39 * var_x40) + 0.00013333333333333334 * (0.050000000000000003 * var_chaste_interface__calcium_concentration__CaNSR - 0.050000000000000003 * var_chaste_interface__calcium_concentration__CaJSR - var_x41 * var_x42) / (pow(var_x36, 3) * pow((0.053333333333333337 + var_x37), 2)))); - rJacobian[9][10] = -(mDt * (0.050000000000000003 * var_x38)); + rJacobian[9][9] = 1.0 - (mDt * (var_x38 * (-CHASTE_CONST(0.050000000000000003) - var_x39 * var_x40) + CHASTE_CONST(0.00013333333333333334) * (CHASTE_CONST(0.050000000000000003) * var_chaste_interface__calcium_concentration__CaNSR - CHASTE_CONST(0.050000000000000003) * var_chaste_interface__calcium_concentration__CaJSR - var_x41 * var_x42) / (CHASTE_MATH::Pow(var_x36, 3) * CHASTE_MATH::Pow((CHASTE_CONST(0.053333333333333337) + var_x37), 2)))); + rJacobian[9][10] = -(mDt * (CHASTE_CONST(0.050000000000000003) * var_x38)); rJacobian[9][11] = 0.0; rJacobian[9][12] = -(mDt * (var_x38 * var_x42)); rJacobian[9][13] = -(mDt * (var_x43 * var_x44)); @@ -940,9 +942,9 @@ 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 - 24.632983794089608 * var_x53)); + rJacobian[10][9] = -(mDt * (CHASTE_CONST(0.0028598665395614866))); + rJacobian[10][10] = 1.0 - (mDt * (-CHASTE_CONST(0.0028598665395614866) - CHASTE_CONST(12.316491897044804) * mParameters[0])); + rJacobian[10][11] = -(mDt * (CHASTE_CONST(12316.491897044803) * mParameters[0] + CHASTE_CONST(24632983.794089608) * var_x50 - CHASTE_CONST(24.632983794089608) * var_x53)); rJacobian[10][12] = 0.0; rJacobian[10][13] = 0.0; rJacobian[10][14] = 0.0; @@ -974,8 +976,8 @@ rJacobian[11][8] = -(mDt * (var_x34 * 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_x32 + var_x35 + 2 * var_x53 - 2000000 * var_x50 - 1000 * mParameters[0] + (-61518.471582797276 * var_x49 - 61.518471582797282 * var_x63 - 0.00014491407891765456 * var_x58 + 0.061518471582797281 * var_x51 * var_x52) * 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_x64 + var_chaste_interface__calcium_concentration__CaNSR) * mParameters[0] - var_x30 * (140 - var_chaste_interface__calcium_buffering__HTRPN_Ca) - var_x33 * (70 - var_chaste_interface__calcium_buffering__LTRPN_Ca) - var_x65 * mParameters[2] - 0.03075923579139864 * (var_x65 + 0.00036699999999999998 * var_chaste_interface__membrane__V - 0.0047112379481865285 * log(0.001 * var_x58 * mParameters[4]) - 2 * var_x62 * (-var_x61 * var_x64 + var_x66 * pow(var_chaste_interface__sodium_concentration__Nai, 3) * mParameters[4])) * mParameters[8]) / (pow(var_x54, 3) * pow(var_x55, 2)))); - rJacobian[11][12] = -(mDt * (0.000125 * var_x56)); + rJacobian[11][11] = 1.0 - (mDt * (var_x57 * (-CHASTE_CONST(2745.8000000000002) + var_x32 + var_x35 + 2 * var_x53 - 2000000 * var_x50 - 1000 * mParameters[0] + (-CHASTE_CONST(61518.471582797276) * var_x49 - CHASTE_CONST(61.518471582797282) * var_x63 - CHASTE_CONST(0.00014491407891765456) * var_x58 + CHASTE_CONST(0.061518471582797281) * var_x51 * var_x52) * mParameters[8]) + CHASTE_CONST(2.3800000000000001e-8) * (CHASTE_CONST(0.125) * var_chaste_interface__calcium_concentration__Cass + CHASTE_CONST(0.019599999999999999) * var_chaste_interface__calcium_buffering__LTRPN_Ca + CHASTE_CONST(3.1999999999999999e-5) * var_chaste_interface__calcium_buffering__HTRPN_Ca - 125 * var_chaste_interface__calcium_concentration__Cai_converted + (-var_x64 + var_chaste_interface__calcium_concentration__CaNSR) * mParameters[0] - var_x30 * (140 - var_chaste_interface__calcium_buffering__HTRPN_Ca) - var_x33 * (70 - var_chaste_interface__calcium_buffering__LTRPN_Ca) - var_x65 * mParameters[2] - CHASTE_CONST(0.03075923579139864) * (var_x65 + CHASTE_CONST(0.00036699999999999998) * var_chaste_interface__membrane__V - CHASTE_CONST(0.0047112379481865285) * CHASTE_MATH::Log(CHASTE_CONST(0.001) * var_x58 * mParameters[4]) - 2 * var_x62 * (-var_x61 * var_x64 + var_x66 * CHASTE_MATH::Pow(var_chaste_interface__sodium_concentration__Nai, 3) * mParameters[4])) * mParameters[8]) / (CHASTE_MATH::Pow(var_x54, 3) * CHASTE_MATH::Pow(var_x55, 2)))); + rJacobian[11][12] = -(mDt * (CHASTE_CONST(0.000125) * var_x56)); rJacobian[11][13] = 0.0; rJacobian[11][14] = 0.0; rJacobian[11][15] = 0.0; @@ -994,20 +996,20 @@ rJacobian[11][28] = 0.0; rJacobian[11][29] = 0.0; rJacobian[11][30] = 0.0; - rJacobian[11][31] = -(mDt * (0.00018455541474839184 * var_x56 * var_x67 * mParameters[8])); + rJacobian[11][31] = -(mDt * (CHASTE_CONST(0.00018455541474839184) * var_x56 * var_x67 * 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_x70 * var_x71 * (33719.579211807191 - 535.23141606043157 * var_chaste_interface__membrane__V))); + rJacobian[12][6] = -(mDt * (var_x70 * var_x71 * (CHASTE_CONST(33719.579211807191) - CHASTE_CONST(535.23141606043157) * var_chaste_interface__membrane__V))); rJacobian[12][7] = 0.0; rJacobian[12][8] = 0.0; rJacobian[12][9] = -(mDt * (var_x72 * var_x73)); rJacobian[12][10] = 0.0; - rJacobian[12][11] = -(mDt * (2175084.1750841751 * var_x70)); - rJacobian[12][12] = 1.0 - (mDt * (var_x70 * (-2175.0841750841751 - var_x40 * var_x72) + 0.16806722689075632 * (2175084.1750841751 * var_chaste_interface__calcium_concentration__Cai_converted - 2175.0841750841751 * var_chaste_interface__calcium_concentration__Cass - 535.23141606043157 * var_x71 * (-63 + var_chaste_interface__membrane__V) * var_chaste_interface__L_type_calcium_current__O + 80.808080808080803 * var_x39 * var_x41 * var_chaste_interface__calcium_fluxes__P_RyR * mParameters[1]) / (pow(var_x68, 3) * pow((0.084033613445378158 + var_x69), 2)))); + rJacobian[12][11] = -(mDt * (CHASTE_CONST(2175084.1750841751) * var_x70)); + rJacobian[12][12] = 1.0 - (mDt * (var_x70 * (-CHASTE_CONST(2175.0841750841751) - var_x40 * var_x72) + CHASTE_CONST(0.16806722689075632) * (CHASTE_CONST(2175084.1750841751) * var_chaste_interface__calcium_concentration__Cai_converted - CHASTE_CONST(2175.0841750841751) * var_chaste_interface__calcium_concentration__Cass - CHASTE_CONST(535.23141606043157) * var_x71 * (-63 + var_chaste_interface__membrane__V) * var_chaste_interface__L_type_calcium_current__O + CHASTE_CONST(80.808080808080803) * var_x39 * var_x41 * var_chaste_interface__calcium_fluxes__P_RyR * mParameters[1]) / (CHASTE_MATH::Pow(var_x68, 3) * CHASTE_MATH::Pow((CHASTE_CONST(0.084033613445378158) + var_x69), 2)))); rJacobian[12][13] = -(mDt * (var_x44 * var_x70 * var_x74)); rJacobian[12][14] = 0.0; rJacobian[12][15] = 0.0; @@ -1033,14 +1035,14 @@ 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 * ((CHASTE_CONST(0.90000000000000002) - CHASTE_CONST(0.014285714285714287) * var_chaste_interface__membrane__V) * mParameters[7] * CHASTE_MATH::Exp(-CHASTE_CONST(0.038580246913580245) * CHASTE_MATH::Pow((-1 + CHASTE_CONST(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][13] = 1.0 - (mDt * (-CHASTE_CONST(0.040000000000000001))); rJacobian[13][14] = 0.0; rJacobian[13][15] = 0.0; rJacobian[13][16] = 0.0; @@ -1370,15 +1372,15 @@ rJacobian[23][20] = 0.0; rJacobian[23][21] = 0.0; rJacobian[23][22] = -(mDt * (-var_x102 * var_x103 * var_x105)); - rJacobian[23][23] = 1.0 - (mDt * (var_x104 * (-1.5794450018272976 * var_x107 - var_x103 * var_x108 * var_chaste_interface__non_inactivating_steady_state_potassium_current__iKss - var_x108 * pow(var_chaste_interface__slow_delayed_rectifier_potassium_current__nKs, 2) * mParameters[14] - 0.25271120029236765 * var_x99 * var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__aur * var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__iur - var_x108 * pow(var_chaste_interface__fast_transient_outward_potassium_current__ato_f, 3) * mParameters[16] * var_chaste_interface__fast_transient_outward_potassium_current__ito_f - 1.5794450018272976 * var_x100 * var_x111 * mParameters[11] / var_x110 + 0.14151827216372587 * var_x102 * var_x109 * var_x111 * var_x99 * mParameters[5] * mParameters[11] / pow(var_x110, 2)))); + rJacobian[23][23] = 1.0 - (mDt * (var_x104 * (-CHASTE_CONST(1.5794450018272976) * var_x107 - var_x103 * var_x108 * var_chaste_interface__non_inactivating_steady_state_potassium_current__iKss - var_x108 * CHASTE_MATH::Pow(var_chaste_interface__slow_delayed_rectifier_potassium_current__nKs, 2) * mParameters[14] - CHASTE_CONST(0.25271120029236765) * var_x99 * var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__aur * var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__iur - var_x108 * CHASTE_MATH::Pow(var_chaste_interface__fast_transient_outward_potassium_current__ato_f, 3) * mParameters[16] * var_chaste_interface__fast_transient_outward_potassium_current__ito_f - CHASTE_CONST(1.5794450018272976) * var_x100 * var_x111 * mParameters[11] / var_x110 + CHASTE_CONST(0.14151827216372587) * var_x102 * var_x109 * var_x111 * var_x99 * mParameters[5] * mParameters[11] / CHASTE_MATH::Pow(var_x110, 2)))); rJacobian[23][24] = 0.0; rJacobian[23][25] = 0.0; rJacobian[23][26] = 0.0; - rJacobian[23][27] = -(mDt * (-var_x105 * (-25.674321243523316 * log(var_x106 * (mParameters[5] + 0.020408163265306124 * mParameters[6])) + var_chaste_interface__membrane__V) * mParameters[13])); + rJacobian[23][27] = -(mDt * (-var_x105 * (-CHASTE_CONST(25.674321243523316) * CHASTE_MATH::Log(var_x106 * (mParameters[5] + CHASTE_CONST(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_x104 * (5.3367950117641947e-8 * var_x114 - 0.032233571465863219 * var_x107))); + rJacobian[23][31] = -(mDt * (var_x104 * (CHASTE_CONST(5.3367950117641947e-8) * var_x114 - CHASTE_CONST(0.032233571465863219) * var_x107))); rJacobian[24][0] = 0.0; rJacobian[24][1] = 0.0; rJacobian[24][2] = 0.0; @@ -1403,8 +1405,8 @@ rJacobian[24][21] = 0.0; rJacobian[24][22] = 0.0; rJacobian[24][23] = 0.0; - rJacobian[24][24] = 1.0 - (mDt * (-0.023761000000000001 - var_x115 - 0.047002000000000002 * exp(-0.063100000000000003 * var_chaste_interface__membrane__V))); - rJacobian[24][25] = -(mDt * (0.036777999999999998 - var_x115)); + rJacobian[24][24] = 1.0 - (mDt * (-CHASTE_CONST(0.023761000000000001) - var_x115 - CHASTE_CONST(0.047002000000000002) * CHASTE_MATH::Exp(-CHASTE_CONST(0.063100000000000003) * var_chaste_interface__membrane__V))); + rJacobian[24][25] = -(mDt * (CHASTE_CONST(0.036777999999999998) - var_x115)); rJacobian[24][26] = -(mDt * (var_x116)); rJacobian[24][27] = -(mDt * (var_x116)); rJacobian[24][28] = 0.0; @@ -1435,8 +1437,8 @@ 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_x117)); + rJacobian[25][24] = -(mDt * (CHASTE_CONST(0.023761000000000001))); + rJacobian[25][25] = 1.0 - (mDt * (-CHASTE_CONST(0.036777999999999998) - var_x117)); rJacobian[25][26] = 0.0; rJacobian[25][27] = -(mDt * (var_x118)); rJacobian[25][28] = 0.0; @@ -1535,8 +1537,8 @@ 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][28] = 1.0 - (mDt * (-CHASTE_CONST(0.00080000000000000004))); + rJacobian[28][29] = -(mDt * (CHASTE_CONST(0.0089999999999999993))); rJacobian[28][30] = 0.0; rJacobian[28][31] = 0.0; rJacobian[29][0] = 0.0; @@ -1551,7 +1553,7 @@ rJacobian[29][9] = 0.0; rJacobian[29][10] = 0.0; rJacobian[29][11] = 0.0; - rJacobian[29][12] = -(mDt * (-var_x121 + 0.024299999999999999 * var_x122 * (1 - var_x39 - var_chaste_interface__ryanodine_receptors__P_C2))); + rJacobian[29][12] = -(mDt * (-var_x121 + CHASTE_CONST(0.024299999999999999) * var_x122 * (1 - var_x39 - var_chaste_interface__ryanodine_receptors__P_C2))); rJacobian[29][13] = 0.0; rJacobian[29][14] = 0.0; rJacobian[29][15] = 0.0; @@ -1567,9 +1569,9 @@ rJacobian[29][25] = 0.0; rJacobian[29][26] = 0.0; rJacobian[29][27] = 0.0; - rJacobian[29][28] = -(mDt * (0.00080000000000000004 - var_x123)); - rJacobian[29][29] = 1.0 - (mDt * (-0.080249999999999988 - var_x123 - var_x124)); - rJacobian[29][30] = -(mDt * (0.96499999999999997 - var_x123)); + rJacobian[29][28] = -(mDt * (CHASTE_CONST(0.00080000000000000004) - var_x123)); + rJacobian[29][29] = 1.0 - (mDt * (-CHASTE_CONST(0.080249999999999988) - var_x123 - var_x124)); + rJacobian[29][30] = -(mDt * (CHASTE_CONST(0.96499999999999997) - var_x123)); rJacobian[29][31] = 0.0; rJacobian[30][0] = 0.0; rJacobian[30][1] = 0.0; @@ -1601,7 +1603,7 @@ rJacobian[30][27] = 0.0; rJacobian[30][28] = 0.0; rJacobian[30][29] = -(mDt * (var_x124)); - rJacobian[30][30] = 1.0 - (mDt * (-0.96499999999999997)); + rJacobian[30][30] = 1.0 - (mDt * (-CHASTE_CONST(0.96499999999999997))); rJacobian[30][31] = 0.0; rJacobian[31][0] = 0.0; rJacobian[31][1] = 0.0; @@ -1614,7 +1616,7 @@ rJacobian[31][8] = 0.0; rJacobian[31][9] = 0.0; rJacobian[31][10] = 0.0; - rJacobian[31][11] = -(mDt * (184.55541474839183 * var_x104 * var_x63)); + rJacobian[31][11] = -(mDt * (CHASTE_CONST(184.55541474839183) * var_x104 * var_x63)); rJacobian[31][12] = 0.0; rJacobian[31][13] = 0.0; rJacobian[31][14] = 0.0; @@ -1624,9 +1626,9 @@ rJacobian[31][18] = 0.0; rJacobian[31][19] = 0.0; rJacobian[31][20] = 0.0; - rJacobian[31][21] = -(mDt * (-var_x105 * (-25.674321243523316 * log(var_x125 * (mParameters[6] + 0.1111111111111111 * mParameters[5])) + var_chaste_interface__membrane__V) * mParameters[9])); + rJacobian[31][21] = -(mDt * (-var_x105 * (-CHASTE_CONST(25.674321243523316) * CHASTE_MATH::Log(var_x125 * (mParameters[6] + CHASTE_CONST(0.1111111111111111) * mParameters[5])) + var_chaste_interface__membrane__V) * mParameters[9])); rJacobian[31][22] = 0.0; - rJacobian[31][23] = -(mDt * (var_x104 * (-0.00045628411163899709 * var_x125 - 0.17549388909192196 * var_x126))); + rJacobian[31][23] = -(mDt * (var_x104 * (-CHASTE_CONST(0.00045628411163899709) * var_x125 - CHASTE_CONST(0.17549388909192196) * var_x126))); rJacobian[31][24] = 0.0; rJacobian[31][25] = 0.0; rJacobian[31][26] = 0.0; @@ -1634,14 +1636,14 @@ rJacobian[31][28] = 0.0; rJacobian[31][29] = 0.0; rJacobian[31][30] = 0.0; - rJacobian[31][31] = 1.0 - (mDt * (var_x104 * (-1.5794450018272976 * var_x126 - 0.0041065570047509742 * var_x125 - 0.55366624424517552 * var_x67 - 8.0051925176462917e-8 * var_x114))); + rJacobian[31][31] = 1.0 - (mDt * (var_x104 * (-CHASTE_CONST(1.5794450018272976) * var_x126 - CHASTE_CONST(0.0041065570047509742) * var_x125 - CHASTE_CONST(0.55366624424517552) * var_x67 - CHASTE_CONST(8.0051925176462917e-8) * var_x114))); } 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -1678,45 +1680,45 @@ 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_background_current__g_Cab = CHASTE_CONST(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__Km_pCa = CHASTE_CONST(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_calcium_pump_current__i_pCa = CHASTE_MATH::Pow(var_calcium_concentration__Cai, 2) * var_calcium_pump_current__i_pCa_max / (CHASTE_MATH::Pow(var_calcium_concentration__Cai, 2) + CHASTE_MATH::Pow(var_calcium_pump_current__Km_pCa, 2)); // picoA_per_picoF + const double var_membrane__F = CHASTE_CONST(96.5); // coulomb_per_millimole + const double var_membrane__R = CHASTE_CONST(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_calcium_background_current__E_CaN = CHASTE_CONST(0.5) * var_membrane__R * var_membrane__T * CHASTE_MATH::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__O_ClCa = CHASTE_CONST(0.20000000000000001) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(5.9871794871794881) - CHASTE_CONST(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_membrane__i_stim_converted = CHASTE_STIM(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_membrane__i_stim = var_membrane__i_stim_converted / CHASTE_CAP(); // picoA_per_picoF + const double var_fast_transient_outward_potassium_current__E_K = var_membrane__R * var_membrane__T * CHASTE_MATH::Log(mParameters[5] / var_chaste_interface__potassium_concentration__Ki) / var_membrane__F; // millivolt + const double var_fast_transient_outward_potassium_current__i_Kto_f = CHASTE_MATH::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_delayed_rectifier_potassium_current__i_Ks = CHASTE_MATH::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_background_current__g_Nab = CHASTE_CONST(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((mParameters[6] + 0.1111111111111111 * mParameters[5]) / (var_chaste_interface__sodium_concentration__Nai + 0.1111111111111111 * var_chaste_interface__potassium_concentration__Ki)) / var_membrane__F; // millivolt + const double var_sodium_calcium_exchange_current__eta = CHASTE_CONST(0.34999999999999998); // dimensionless + const double var_sodium_calcium_exchange_current__k_sat = CHASTE_CONST(0.10000000000000001); // dimensionless + const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * CHASTE_MATH::Log((mParameters[6] + CHASTE_CONST(0.1111111111111111) * mParameters[5]) / (var_chaste_interface__sodium_concentration__Nai + CHASTE_CONST(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((mParameters[5] + 0.020408163265306124 * mParameters[6]) / (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 = (-var_membrane__R * var_membrane__T * CHASTE_MATH::Log((mParameters[5] + CHASTE_CONST(0.020408163265306124) * mParameters[6]) / (var_chaste_interface__potassium_concentration__Ki + CHASTE_CONST(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 = (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 = (CHASTE_MATH::Pow(var_chaste_interface__sodium_concentration__Nai, 3) * mParameters[4] * CHASTE_MATH::Exp(var_membrane__F * var_chaste_interface__membrane__V * var_sodium_calcium_exchange_current__eta / (var_membrane__R * var_membrane__T)) - CHASTE_MATH::Pow(mParameters[6], 3) * var_calcium_concentration__Cai * CHASTE_MATH::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 * CHASTE_MATH::Exp((-1 + var_sodium_calcium_exchange_current__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (CHASTE_MATH::Pow(mParameters[6], 3) + CHASTE_MATH::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 = 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_sodium_potassium_pump_current__i_NaK_max = CHASTE_CONST(0.88); // picoA_per_picoF + const double var_sodium_potassium_pump_current__sigma = -CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * CHASTE_MATH::Exp(CHASTE_CONST(1.4858841010401188e-5) * mParameters[6]); // dimensionless + const double var_sodium_potassium_pump_current__f_NaK = 1 / (1 + CHASTE_CONST(0.1245) * CHASTE_MATH::Exp(-CHASTE_CONST(0.10000000000000001) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) + CHASTE_CONST(0.036499999999999998) * var_sodium_potassium_pump_current__sigma * CHASTE_MATH::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 = mParameters[5] * var_sodium_potassium_pump_current__f_NaK * var_sodium_potassium_pump_current__i_NaK_max / ((1 + CHASTE_MATH::Pow((var_sodium_potassium_pump_current__Km_Nai / var_chaste_interface__sodium_concentration__Nai), CHASTE_CONST(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 + CHASTE_MATH::Exp(CHASTE_CONST(0.089599999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(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 = CHASTE_CONST(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 @@ -1727,7 +1729,7 @@ { // Time units: millisecond std::vector& rY = rGetStateVariables(); - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -1746,19 +1748,19 @@ 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)); + const double var_fast_transient_outward_potassium_current__alpha_a = CHASTE_CONST(0.18064) * CHASTE_MATH::Exp(CHASTE_CONST(1.0731000000000002) + CHASTE_CONST(0.035770000000000003) * var_chaste_interface__membrane__V); + const double var_fast_transient_outward_potassium_current__alpha_i = CHASTE_CONST(0.00015200000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(1.9285714285714286) - CHASTE_CONST(0.14285714285714285) * var_chaste_interface__membrane__V) / (1 + CHASTE_CONST(0.0067083000000000004) * CHASTE_MATH::Exp(-CHASTE_CONST(4.7857142857142856) - CHASTE_CONST(0.14285714285714285) * var_chaste_interface__membrane__V)); + const double var_fast_transient_outward_potassium_current__beta_a = CHASTE_CONST(0.39560000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(1.8711) - CHASTE_CONST(0.062370000000000002) * var_chaste_interface__membrane__V); + const double var_fast_transient_outward_potassium_current__beta_i = CHASTE_CONST(0.00095) * CHASTE_MATH::Exp(CHASTE_CONST(4.7857142857142856) + CHASTE_CONST(0.14285714285714285) * var_chaste_interface__membrane__V) / (1 + CHASTE_CONST(0.051334999999999999) * CHASTE_MATH::Exp(CHASTE_CONST(4.7857142857142856) + CHASTE_CONST(0.14285714285714285) * var_chaste_interface__membrane__V)); + const double var_non_inactivating_steady_state_potassium_current__tau_Kss = CHASTE_CONST(13.17) + CHASTE_CONST(39.299999999999997) * CHASTE_MATH::Exp(-CHASTE_CONST(0.086199999999999999) * var_chaste_interface__membrane__V); + const double var_slow_delayed_rectifier_potassium_current__alpha_n = (((var_chaste_interface__membrane__V >= -CHASTE_CONST(26.500000781250002)) && (var_chaste_interface__membrane__V <= -CHASTE_CONST(26.499999218749998))) ? (-CHASTE_CONST(3.7604140624912359e-12) / (1 - CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999766942e-8))) + CHASTE_CONST(640000.00000149151) * (CHASTE_CONST(26.500000781250002) + var_chaste_interface__membrane__V) * (CHASTE_CONST(3.7604140624912359e-12) / (1 - CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999766942e-8))) + CHASTE_CONST(3.7604140624912359e-12) / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999766942e-8))))) : (CHASTE_CONST(4.8133299999999997e-6) * (CHASTE_CONST(26.5) + var_chaste_interface__membrane__V) / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(3.3919999999999999) - CHASTE_CONST(0.128) * var_chaste_interface__membrane__V)))); + const double var_slow_delayed_rectifier_potassium_current__beta_n = CHASTE_CONST(9.5333299999999997e-5) * CHASTE_MATH::Exp(-CHASTE_CONST(1.0069999999999999) - CHASTE_CONST(0.037999999999999999) * var_chaste_interface__membrane__V); + const double var_slow_transient_outward_potassium_current__ass = 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.9220779220779218) - CHASTE_CONST(0.12987012987012986) * var_chaste_interface__membrane__V)); + const double var_slow_transient_outward_potassium_current__iss = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(7.9298245614035094) + CHASTE_CONST(0.17543859649122806) * var_chaste_interface__membrane__V)); + const double var_slow_transient_outward_potassium_current__tau_ta_s = CHASTE_CONST(2.0579999999999998) + CHASTE_CONST(0.49299999999999999) * CHASTE_MATH::Exp(-CHASTE_CONST(0.062899999999999998) * var_chaste_interface__membrane__V); + const double var_slow_transient_outward_potassium_current__tau_ti_s = 270 + 1050 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(7.9298245614035094) + CHASTE_CONST(0.17543859649122806) * var_chaste_interface__membrane__V)); + const double var_ultra_rapidly_activating_delayed_rectifier_potassium_current__tau_aur = CHASTE_CONST(2.0579999999999998) + CHASTE_CONST(0.49299999999999999) * CHASTE_MATH::Exp(-CHASTE_CONST(0.062899999999999998) * var_chaste_interface__membrane__V); + const double var_ultra_rapidly_activating_delayed_rectifier_potassium_current__tau_iur = 1200 - 170 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(7.9298245614035094) + CHASTE_CONST(0.17543859649122806) * var_chaste_interface__membrane__V)); rY[28] = (var_chaste_interface__fast_transient_outward_potassium_current__ato_f + ((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)); @@ -1811,7 +1813,7 @@ { // Inputs: // Time units: millisecond - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -1849,33 +1851,33 @@ // 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__F = CHASTE_CONST(96.5); // coulomb_per_millimole + const double var_membrane__R = CHASTE_CONST(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_L_type_calcium_current__i_CaL_converted = CHASTE_CAP() * var_L_type_calcium_current__i_CaL; // uA_per_cm2 + const double var_membrane__i_stim_converted = CHASTE_STIM(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_fast_transient_outward_potassium_current__E_K = var_membrane__R * var_membrane__T * CHASTE_MATH::Log(mParameters[5] / var_chaste_interface__potassium_concentration__Ki) / var_membrane__F; // millivolt + const double var_fast_transient_outward_potassium_current__i_Kto_f = CHASTE_MATH::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 = CHASTE_CAP() * 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_non_inactivating_steady_state_potassium_current__i_Kss_converted = CHASTE_CAP() * 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_slow_delayed_rectifier_potassium_current__i_Ks = CHASTE_MATH::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 = CHASTE_CAP() * 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((mParameters[6] + 0.1111111111111111 * mParameters[5]) / (var_chaste_interface__sodium_concentration__Nai + 0.1111111111111111 * var_chaste_interface__potassium_concentration__Ki)) / var_membrane__F; // millivolt + const double var_sodium_calcium_exchange_current__eta = CHASTE_CONST(0.34999999999999998); // dimensionless + const double var_sodium_calcium_exchange_current__k_sat = CHASTE_CONST(0.10000000000000001); // dimensionless + const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * CHASTE_MATH::Log((mParameters[6] + CHASTE_CONST(0.1111111111111111) * mParameters[5]) / (var_chaste_interface__sodium_concentration__Nai + CHASTE_CONST(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((mParameters[5] + 0.020408163265306124 * mParameters[6]) / (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 = (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 + const double var_fast_sodium_current__i_Na_converted = CHASTE_CAP() * 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 * CHASTE_MATH::Log((mParameters[5] + CHASTE_CONST(0.020408163265306124) * mParameters[6]) / (var_chaste_interface__potassium_concentration__Ki + CHASTE_CONST(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 = CHASTE_CAP() * var_rapid_delayed_rectifier_potassium_current__i_Kr; // uA_per_cm2 + const double var_sodium_calcium_exchange_current__i_NaCa = (CHASTE_MATH::Pow(var_chaste_interface__sodium_concentration__Nai, 3) * mParameters[4] * CHASTE_MATH::Exp(var_membrane__F * var_chaste_interface__membrane__V * var_sodium_calcium_exchange_current__eta / (var_membrane__R * var_membrane__T)) - CHASTE_MATH::Pow(mParameters[6], 3) * var_calcium_concentration__Cai * CHASTE_MATH::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 * CHASTE_MATH::Exp((-1 + var_sodium_calcium_exchange_current__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (CHASTE_MATH::Pow(mParameters[6], 3) + CHASTE_MATH::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 = CHASTE_CAP() * 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 + CHASTE_MATH::Exp(CHASTE_CONST(0.089599999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(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 = CHASTE_CAP() * var_time_independent_potassium_current__i_K1; // uA_per_cm2 std::vector dqs(12); dqs[0] = var_calcium_fluxes__J_rel; diff --git a/chaste_codegen/data/tests/chaste_reference_models/BE/bondarenko_szigeti_bett_kim_rasmusson_2004_apical.hpp b/chaste_codegen/data/tests/chaste_reference_models/BE/bondarenko_szigeti_bett_kim_rasmusson_2004_apical.hpp index a83222592..4a86a5ce5 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/BE/bondarenko_szigeti_bett_kim_rasmusson_2004_apical.hpp +++ b/chaste_codegen/data/tests/chaste_reference_models/BE/bondarenko_szigeti_bett_kim_rasmusson_2004_apical.hpp @@ -16,8 +16,16 @@ #include "ChasteSerialization.hpp" #include #include "AbstractStimulusFunction.hpp" +#if USING_DEVICE_COMPILER +#include "StimulusEvaluatorCuda.hpp" +#endif #include "AbstractBackwardEulerCardiacCell.hpp" +#if USING_DEVICE_COMPILER +template +class BackwardEulerKernelLauncher; // Forward declare to hide CUDA-specifics from standard C++ compiler +#endif + class Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEuler : public AbstractBackwardEulerCardiacCell<32> { friend class boost::serialization::access; @@ -37,19 +45,50 @@ class Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEul const bool is_concentration[41] = {false, true, true, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, false, false, false, false, false, false, false, false, true, false, false, false, false, false, false, false, false, false, false, false, false, false}; const bool is_probability[41] = {false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false}; public: +#if USING_DEVICE_COMPILER + template using SolverKernelLauncher = BackwardEulerKernelLauncher; + static constexpr unsigned TOTAL_SIZE = 41u; + static constexpr unsigned NONLINEAR_SIZE = 32u; +#endif boost::shared_ptr UseCellMLDefaultStimulus(); double GetIntracellularCalciumConcentration(); - Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEuler(boost::shared_ptr /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus); + Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEuler(boost::shared_ptr /* unused */, boost::shared_ptr pIntracellularStimulus); ~Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEuler(); void VerifyStateVariables(); - double GetIIonic(const std::vector* pStateVariables=NULL);void ComputeResidual(double var_chaste_interface__environment__time, const double rCurrentGuess[32], double rResidual[32]); - void ComputeJacobian(double var_chaste_interface__environment__time, const double rCurrentGuess[32], double rJacobian[32][32]);protected: + double GetIIonic(const std::vector* pStateVariables=NULL); + void ComputeResidual(double var_chaste_interface__environment__time, const double rCurrentGuess[32], double rResidual[32]); + void ComputeJacobian(double var_chaste_interface__environment__time, const double rCurrentGuess[32], double rJacobian[32][32]); + +#if USING_DEVICE_COMPILER + template + DEVICE + static void ComputeResidualDevice(ValueType var_chaste_interface__environment__time, const ValueType rCurrentGuess[NONLINEAR_SIZE], const ValueType rY[], ValueType rResidual[NONLINEAR_SIZE], ValueType mDt, const ValueType mParameters[], bool mSetVoltageDerivativeToZero, ValueType mFixedVoltage, ValueType capacitance, const DeviceStimulusFunctor stim); + + template + DEVICE + static void ComputeJacobianDevice(ValueType var_chaste_interface__environment__time, const ValueType rCurrentGuess[NONLINEAR_SIZE], const ValueType rY[], ValueType rJacobian[NONLINEAR_SIZE][NONLINEAR_SIZE], ValueType mDt, const ValueType mParameters[], bool mSetVoltageDerivativeToZero, ValueType mFixedVoltage, ValueType capacitance, const DeviceStimulusFunctor stim); + template + DEVICE + static void UpdateTransmembranePotentialDevice(ValueType var_chaste_interface__environment__time, ValueType rY[], ValueType mDt, const ValueType mParameters[], bool mSetVoltageDerivativeToZero, ValueType mFixedVoltage, DeviceStimulusFunctor stim, ValueType capacitance); + + template + DEVICE + static void SolveClosedFormVarsDevice(ValueType rY[TOTAL_SIZE], ValueType mDt, const ValueType mParameters[], bool mSetVoltageDerivativeToZero, ValueType mFixedVoltage, ValueType capacitance); + + template + DEVICE + static void FillInitialGuessDevice(ValueType _guess[NONLINEAR_SIZE], const ValueType rY[TOTAL_SIZE]); + + template + DEVICE + static void ScatterSolutionDevice(const ValueType _guess[NONLINEAR_SIZE], ValueType rY[TOTAL_SIZE]); +#endif +protected: void UpdateTransmembranePotential(double var_chaste_interface__environment__time); void ComputeOneStepExceptVoltage(double var_chaste_interface__environment__time); - std::vector ComputeDerivedQuantities(double var_chaste_interface__environment__time, const std::vector & rY); -}; + std::vector ComputeDerivedQuantities(double var_chaste_interface__environment__time, const std::vector & rY);}; // Needs to be included last #include "SerializationExportWrapper.hpp" @@ -84,4 +123,9 @@ namespace boost } -#endif // CELLBONDARENKO_SZIGETI_BETT_KIM_RASMUSSON_2004_APICALFROMCELLMLBACKWARDEULER_HPP_ \ No newline at end of file +#endif // CELLBONDARENKO_SZIGETI_BETT_KIM_RASMUSSON_2004_APICALFROMCELLMLBACKWARDEULER_HPP_ + +#if USING_DEVICE_COMPILER + #include "bondarenko_szigeti_bett_kim_rasmusson_2004_apicalKernels.hpp" + #include "BackwardEulerKernels.hpp" +#endif \ No newline at end of file diff --git a/chaste_codegen/data/tests/chaste_reference_models/BE/bondarenko_szigeti_bett_kim_rasmusson_2004_apicalKernels.hpp b/chaste_codegen/data/tests/chaste_reference_models/BE/bondarenko_szigeti_bett_kim_rasmusson_2004_apicalKernels.hpp new file mode 100644 index 000000000..7909e7114 --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/BE/bondarenko_szigeti_bett_kim_rasmusson_2004_apicalKernels.hpp @@ -0,0 +1,532 @@ +#ifndef CELLBONDARENKO_SZIGETI_BETT_KIM_RASMUSSON_2004_APICALFROMCELLMLBACKWARDEULERKERNELS_HPP_ +#define CELLBONDARENKO_SZIGETI_BETT_KIM_RASMUSSON_2004_APICALFROMCELLMLBACKWARDEULERKERNELS_HPP_ + +//! @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 "MathsCustomFunctions.hpp" +#include "ChasteDeviceMacros.hpp" + + +template +DEVICE +void Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEuler::SolveClosedFormVarsDevice(ValueType rY[Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEuler::TOTAL_SIZE], + ValueType mDt, + const ValueType mParameters[], + bool mSetVoltageDerivativeToZero, + ValueType mFixedVoltage, + ValueType capacitance) +{ + ValueType var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); + // Units: millivolt; Initial value: -82.4202 + ValueType var_chaste_interface__fast_transient_outward_potassium_current__ato_f = rY[28]; + // Units: dimensionless; Initial value: 0.00265563 + ValueType var_chaste_interface__fast_transient_outward_potassium_current__ito_f = rY[29]; + // Units: dimensionless; Initial value: 0.999977 + ValueType var_chaste_interface__slow_transient_outward_potassium_current__ato_s = rY[30]; + // Units: dimensionless; Initial value: 0.000417069 + ValueType var_chaste_interface__slow_transient_outward_potassium_current__ito_s = rY[31]; + // Units: dimensionless; Initial value: 0.998543 + ValueType var_chaste_interface__slow_delayed_rectifier_potassium_current__nKs = rY[32]; + // Units: dimensionless; Initial value: 0.000262753 + ValueType var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__aur = rY[33]; + // Units: dimensionless; Initial value: 0.000417069 + ValueType var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__iur = rY[34]; + // Units: dimensionless; Initial value: 0.998543 + ValueType var_chaste_interface__non_inactivating_steady_state_potassium_current__aKss = rY[35]; + // Units: dimensionless; Initial value: 0.000417069 + + const ValueType var_fast_transient_outward_potassium_current__alpha_a = CHASTE_CONST(0.18064) * CHASTE_MATH::Exp(CHASTE_CONST(1.0731000000000002) + CHASTE_CONST(0.035770000000000003) * var_chaste_interface__membrane__V);const ValueType var_fast_transient_outward_potassium_current__alpha_i = CHASTE_CONST(0.00015200000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(1.9285714285714286) - CHASTE_CONST(0.14285714285714285) * var_chaste_interface__membrane__V) / (1 + CHASTE_CONST(0.0067083000000000004) * CHASTE_MATH::Exp(-CHASTE_CONST(4.7857142857142856) - CHASTE_CONST(0.14285714285714285) * var_chaste_interface__membrane__V));const ValueType var_fast_transient_outward_potassium_current__beta_a = CHASTE_CONST(0.39560000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(1.8711) - CHASTE_CONST(0.062370000000000002) * var_chaste_interface__membrane__V);const ValueType var_fast_transient_outward_potassium_current__beta_i = CHASTE_CONST(0.00095) * CHASTE_MATH::Exp(CHASTE_CONST(4.7857142857142856) + CHASTE_CONST(0.14285714285714285) * var_chaste_interface__membrane__V) / (1 + CHASTE_CONST(0.051334999999999999) * CHASTE_MATH::Exp(CHASTE_CONST(4.7857142857142856) + CHASTE_CONST(0.14285714285714285) * var_chaste_interface__membrane__V));const ValueType var_non_inactivating_steady_state_potassium_current__tau_Kss = CHASTE_CONST(13.17) + CHASTE_CONST(39.299999999999997) * CHASTE_MATH::Exp(-CHASTE_CONST(0.086199999999999999) * var_chaste_interface__membrane__V);const ValueType var_slow_delayed_rectifier_potassium_current__alpha_n = (((var_chaste_interface__membrane__V >= -CHASTE_CONST(26.500000781250002)) && (var_chaste_interface__membrane__V <= -CHASTE_CONST(26.499999218749998))) ? (-CHASTE_CONST(3.7604140624912359e-12) / (1 - CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999766942e-8))) + CHASTE_CONST(640000.00000149151) * (CHASTE_CONST(26.500000781250002) + var_chaste_interface__membrane__V) * (CHASTE_CONST(3.7604140624912359e-12) / (1 - CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999766942e-8))) + CHASTE_CONST(3.7604140624912359e-12) / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999766942e-8))))) : (CHASTE_CONST(4.8133299999999997e-6) * (CHASTE_CONST(26.5) + var_chaste_interface__membrane__V) / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(3.3919999999999999) - CHASTE_CONST(0.128) * var_chaste_interface__membrane__V))));const ValueType var_slow_delayed_rectifier_potassium_current__beta_n = CHASTE_CONST(9.5333299999999997e-5) * CHASTE_MATH::Exp(-CHASTE_CONST(1.0069999999999999) - CHASTE_CONST(0.037999999999999999) * var_chaste_interface__membrane__V);const ValueType var_slow_transient_outward_potassium_current__ass = 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.9220779220779218) - CHASTE_CONST(0.12987012987012986) * var_chaste_interface__membrane__V));const ValueType var_slow_transient_outward_potassium_current__iss = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(7.9298245614035094) + CHASTE_CONST(0.17543859649122806) * var_chaste_interface__membrane__V));const ValueType var_slow_transient_outward_potassium_current__tau_ta_s = CHASTE_CONST(2.0579999999999998) + CHASTE_CONST(0.49299999999999999) * CHASTE_MATH::Exp(-CHASTE_CONST(0.062899999999999998) * var_chaste_interface__membrane__V);const ValueType var_slow_transient_outward_potassium_current__tau_ti_s = 270 + 1050 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(7.9298245614035094) + CHASTE_CONST(0.17543859649122806) * var_chaste_interface__membrane__V));const ValueType var_ultra_rapidly_activating_delayed_rectifier_potassium_current__tau_aur = CHASTE_CONST(2.0579999999999998) + CHASTE_CONST(0.49299999999999999) * CHASTE_MATH::Exp(-CHASTE_CONST(0.062899999999999998) * var_chaste_interface__membrane__V);const ValueType var_ultra_rapidly_activating_delayed_rectifier_potassium_current__tau_iur = 1200 - 170 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(7.9298245614035094) + CHASTE_CONST(0.17543859649122806) * var_chaste_interface__membrane__V)); + + rY[28] = (var_chaste_interface__fast_transient_outward_potassium_current__ato_f + ((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 + ((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 + ((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)); +} + +template +DEVICE +void Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEuler::FillInitialGuessDevice(ValueType _guess[Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEuler::NONLINEAR_SIZE], + const ValueType rY[Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEuler::TOTAL_SIZE]) +{ + _guess[0] = rY[12];_guess[1] = rY[13];_guess[2] = rY[14];_guess[3] = rY[15];_guess[4] = rY[16];_guess[5] = rY[17];_guess[6] = rY[11];_guess[7] = rY[7];_guess[8] = rY[6];_guess[9] = rY[3];_guess[10] = rY[4];_guess[11] = rY[1];_guess[12] = rY[2];_guess[13] = rY[5];_guess[14] = rY[20];_guess[15] = rY[21];_guess[16] = rY[22];_guess[17] = rY[23];_guess[18] = rY[25];_guess[19] = rY[26];_guess[20] = rY[24];_guess[21] = rY[19];_guess[22] = rY[36];_guess[23] = rY[27];_guess[24] = rY[38];_guess[25] = rY[39];_guess[26] = rY[40];_guess[27] = rY[37];_guess[28] = rY[10];_guess[29] = rY[8];_guess[30] = rY[9];_guess[31] = rY[18]; +} + +template +DEVICE +void Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEuler::ScatterSolutionDevice(const ValueType _guess[Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEuler::NONLINEAR_SIZE], + ValueType rY[Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEuler::TOTAL_SIZE]) +{ + 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]; +} + +template +DEVICE +void Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEuler::ComputeResidualDevice(ValueType var_chaste_interface__environment__time, + const ValueType rCurrentGuess[Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEuler::NONLINEAR_SIZE], + const ValueType rY[], + ValueType rResidual[Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEuler::NONLINEAR_SIZE], + ValueType mDt, + const ValueType mParameters[], + bool mSetVoltageDerivativeToZero, + ValueType mFixedVoltage, + ValueType capacitance, + const DeviceStimulusFunctor stim) +{ + ValueType var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt + ValueType var_chaste_interface__fast_transient_outward_potassium_current__ato_f = rY[28]; // Units: dimensionless + ValueType var_chaste_interface__fast_transient_outward_potassium_current__ito_f = rY[29]; // Units: dimensionless + ValueType var_chaste_interface__slow_transient_outward_potassium_current__ato_s = rY[30]; // Units: dimensionless + ValueType var_chaste_interface__slow_transient_outward_potassium_current__ito_s = rY[31]; // Units: dimensionless + ValueType var_chaste_interface__slow_delayed_rectifier_potassium_current__nKs = rY[32]; // Units: dimensionless + ValueType var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__aur = rY[33]; // Units: dimensionless + ValueType var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__iur = rY[34]; // Units: dimensionless + ValueType var_chaste_interface__non_inactivating_steady_state_potassium_current__aKss = rY[35]; // Units: dimensionless + + ValueType var_chaste_interface__L_type_calcium_current__C2 = rCurrentGuess[0]; + ValueType var_chaste_interface__L_type_calcium_current__C3 = rCurrentGuess[1]; + ValueType var_chaste_interface__L_type_calcium_current__C4 = rCurrentGuess[2]; + ValueType var_chaste_interface__L_type_calcium_current__I1 = rCurrentGuess[3]; + ValueType var_chaste_interface__L_type_calcium_current__I2 = rCurrentGuess[4]; + ValueType var_chaste_interface__L_type_calcium_current__I3 = rCurrentGuess[5]; + ValueType var_chaste_interface__L_type_calcium_current__O = rCurrentGuess[6]; + ValueType var_chaste_interface__calcium_buffering__HTRPN_Ca = rCurrentGuess[7]; + ValueType var_chaste_interface__calcium_buffering__LTRPN_Ca = rCurrentGuess[8]; + ValueType var_chaste_interface__calcium_concentration__CaJSR = rCurrentGuess[9]; + ValueType var_chaste_interface__calcium_concentration__CaNSR = rCurrentGuess[10]; + ValueType var_chaste_interface__calcium_concentration__Cai_converted = rCurrentGuess[11]; + ValueType var_chaste_interface__calcium_concentration__Cass = rCurrentGuess[12]; + ValueType var_chaste_interface__calcium_fluxes__P_RyR = rCurrentGuess[13]; + ValueType var_chaste_interface__fast_sodium_current__C_Na1 = rCurrentGuess[14]; + ValueType var_chaste_interface__fast_sodium_current__C_Na2 = rCurrentGuess[15]; + ValueType var_chaste_interface__fast_sodium_current__I1_Na = rCurrentGuess[16]; + ValueType var_chaste_interface__fast_sodium_current__I2_Na = rCurrentGuess[17]; + ValueType var_chaste_interface__fast_sodium_current__IC_Na2 = rCurrentGuess[18]; + ValueType var_chaste_interface__fast_sodium_current__IC_Na3 = rCurrentGuess[19]; + ValueType var_chaste_interface__fast_sodium_current__IF_Na = rCurrentGuess[20]; + ValueType var_chaste_interface__fast_sodium_current__O_Na = rCurrentGuess[21]; + ValueType var_chaste_interface__non_inactivating_steady_state_potassium_current__iKss = rCurrentGuess[22]; + ValueType var_chaste_interface__potassium_concentration__Ki = rCurrentGuess[23]; + ValueType var_chaste_interface__rapid_delayed_rectifier_potassium_current__C_K1 = rCurrentGuess[24]; + ValueType var_chaste_interface__rapid_delayed_rectifier_potassium_current__C_K2 = rCurrentGuess[25]; + ValueType var_chaste_interface__rapid_delayed_rectifier_potassium_current__I_K = rCurrentGuess[26]; + ValueType var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K = rCurrentGuess[27]; + ValueType var_chaste_interface__ryanodine_receptors__P_C2 = rCurrentGuess[28]; + ValueType var_chaste_interface__ryanodine_receptors__P_O1 = rCurrentGuess[29]; + ValueType var_chaste_interface__ryanodine_receptors__P_O2 = rCurrentGuess[30]; + ValueType var_chaste_interface__sodium_concentration__Nai = rCurrentGuess[31]; + + const ValueType d_dt_chaste_interface_var_non_inactivating_steady_state_potassium_current__iKss = 0; // 1 / millisecond + const ValueType var_L_type_calcium_current__E_CaL = 63; // millivolt + const ValueType var_L_type_calcium_current__Kpc_half = 20; // micromolar + const ValueType var_L_type_calcium_current__Kpc_max = CHASTE_CONST(0.23324); // per_millisecond + const ValueType var_L_type_calcium_current__Kpcb = CHASTE_CONST(0.00050000000000000001); // per_millisecond + const ValueType 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 ValueType var_L_type_calcium_current__i_CaL_max = 7; // picoA_per_picoF + const ValueType var_calcium_background_current__g_Cab = CHASTE_CONST(0.00036699999999999998); // milliS_per_microF + const ValueType var_calcium_buffering__HTRPN_tot = 140; // micromolar + const ValueType var_calcium_buffering__LTRPN_tot = 70; // micromolar + const ValueType var_calcium_concentration__CMDN_tot = 50; // micromolar + const ValueType var_calcium_concentration__CSQN_tot = 15000; // micromolar + const ValueType var_calcium_concentration__Cai = 1000 * var_chaste_interface__calcium_concentration__Cai_converted; // micromolar + const ValueType 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 ValueType var_calcium_concentration__Km_CMDN = CHASTE_CONST(0.23799999999999999); // micromolar + const ValueType var_calcium_concentration__Bi = 1 / (1 + var_calcium_concentration__CMDN_tot * var_calcium_concentration__Km_CMDN / CHASTE_MATH::Pow((var_calcium_concentration__Cai + var_calcium_concentration__Km_CMDN), 2)); // dimensionless + const ValueType var_calcium_concentration__Bss = 1 / (1 + var_calcium_concentration__CMDN_tot * var_calcium_concentration__Km_CMDN / CHASTE_MATH::Pow((var_chaste_interface__calcium_concentration__Cass + var_calcium_concentration__Km_CMDN), 2)); // dimensionless + const ValueType var_calcium_concentration__Km_CSQN = 800; // micromolar + const ValueType var_calcium_concentration__BJSR = 1 / (1 + var_calcium_concentration__CSQN_tot * var_calcium_concentration__Km_CSQN / CHASTE_MATH::Pow((var_chaste_interface__calcium_concentration__CaJSR + var_calcium_concentration__Km_CSQN), 2)); // dimensionless + const ValueType var_calcium_fluxes__Km_up = CHASTE_CONST(0.5); // micromolar + const ValueType var_calcium_fluxes__k_minus_htrpn = CHASTE_CONST(3.1999999999999999e-5); // per_millisecond + const ValueType var_calcium_fluxes__k_minus_ltrpn = CHASTE_CONST(0.019599999999999999); // per_millisecond + const ValueType var_calcium_fluxes__k_plus_htrpn = CHASTE_CONST(0.0023700000000000001); // per_micromolar_millisecond + const ValueType 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 ValueType var_calcium_fluxes__k_plus_ltrpn = CHASTE_CONST(0.0327); // per_micromolar_millisecond + const ValueType 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 ValueType 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 ValueType var_calcium_fluxes__tau_tr = 20; // millisecond + const ValueType 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 ValueType var_calcium_fluxes__tau_xfer = 8; // millisecond + const ValueType var_calcium_fluxes__J_xfer = (-var_calcium_concentration__Cai + var_chaste_interface__calcium_concentration__Cass) / var_calcium_fluxes__tau_xfer; // micromolar_per_millisecond + const ValueType var_calcium_fluxes__J_leak = (-var_calcium_concentration__Cai + var_chaste_interface__calcium_concentration__CaNSR) * mParameters[0]; // micromolar_per_millisecond + const ValueType var_calcium_fluxes__J_up = CHASTE_MATH::Pow(var_calcium_concentration__Cai, 2) * mParameters[2] / (CHASTE_MATH::Pow(var_calcium_concentration__Cai, 2) + CHASTE_MATH::Pow(var_calcium_fluxes__Km_up, 2)); // micromolar_per_millisecond + const ValueType var_calcium_pump_current__Km_pCa = CHASTE_CONST(0.5); // micromolar + const ValueType var_calcium_pump_current__i_pCa_max = 1; // picoA_per_picoF + const ValueType var_calcium_pump_current__i_pCa = CHASTE_MATH::Pow(var_calcium_concentration__Cai, 2) * var_calcium_pump_current__i_pCa_max / (CHASTE_MATH::Pow(var_calcium_concentration__Cai, 2) + CHASTE_MATH::Pow(var_calcium_pump_current__Km_pCa, 2)); // picoA_per_picoF + const ValueType 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 ValueType var_membrane__Acap = CHASTE_CONST(0.00015339999999999999); // cm2 + const ValueType var_membrane__F = CHASTE_CONST(96.5); // coulomb_per_millimole + const ValueType var_membrane__R = CHASTE_CONST(8.3140000000000001); // joule_per_mole_kelvin + const ValueType var_membrane__T = 298; // kelvin + const ValueType var_calcium_background_current__E_CaN = CHASTE_CONST(0.5) * var_membrane__R * var_membrane__T * CHASTE_MATH::Log(mParameters[4] / var_calcium_concentration__Cai) / var_membrane__F; // millivolt + const ValueType var_L_type_calcium_current__Kpcf = 13 - 13 * CHASTE_MATH::Exp(-CHASTE_CONST(2.1025) * CHASTE_MATH::Pow((1 + CHASTE_CONST(0.068965517241379309) * var_chaste_interface__membrane__V), 2)); // per_millisecond + const ValueType var_L_type_calcium_current__alpha = CHASTE_CONST(0.40000000000000002) * (1 + CHASTE_CONST(0.69999999999999996) * CHASTE_MATH::Exp(-160 * CHASTE_MATH::Pow((1 + CHASTE_CONST(0.025000000000000001) * var_chaste_interface__membrane__V), 2)) - CHASTE_CONST(0.75) * CHASTE_MATH::Exp(-CHASTE_MATH::Pow((1 + CHASTE_CONST(0.050000000000000003) * var_chaste_interface__membrane__V), 2))) * CHASTE_MATH::Exp(CHASTE_CONST(1.2) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V) / (1 + CHASTE_CONST(0.12) * CHASTE_MATH::Exp(CHASTE_CONST(1.2) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V)); // per_millisecond + const ValueType var_L_type_calcium_current__beta = CHASTE_CONST(0.050000000000000003) * CHASTE_MATH::Exp(-CHASTE_CONST(0.92307692307692313) - CHASTE_CONST(0.076923076923076927) * var_chaste_interface__membrane__V); // per_millisecond + const ValueType 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 ValueType 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 ValueType 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 + CHASTE_CONST(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 - CHASTE_CONST(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 + CHASTE_CONST(0.040000000000000001) * var_chaste_interface__L_type_calcium_current__I1 * var_L_type_calcium_current__Kpcb * var_L_type_calcium_current__beta - var_chaste_interface__L_type_calcium_current__C4 * var_L_type_calcium_current__Kpcf * var_L_type_calcium_current__gamma - CHASTE_CONST(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 ValueType 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 + CHASTE_CONST(0.001) * var_chaste_interface__L_type_calcium_current__I3 * var_L_type_calcium_current__alpha - CHASTE_CONST(0.001) * var_chaste_interface__L_type_calcium_current__I1 * var_L_type_calcium_current__Kpcf + CHASTE_CONST(0.01) * var_chaste_interface__L_type_calcium_current__C4 * var_L_type_calcium_current__alpha * var_L_type_calcium_current__gamma - CHASTE_CONST(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 ValueType 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 + CHASTE_CONST(0.001) * var_L_type_calcium_current__Kpcf * var_chaste_interface__L_type_calcium_current__O + CHASTE_CONST(0.002) * var_chaste_interface__L_type_calcium_current__C4 * var_L_type_calcium_current__Kpcf - CHASTE_CONST(0.001) * var_chaste_interface__L_type_calcium_current__I2 * var_L_type_calcium_current__alpha - CHASTE_CONST(0.0080000000000000002) * var_chaste_interface__L_type_calcium_current__I2 * var_L_type_calcium_current__beta; // 1 / millisecond + const ValueType 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 + CHASTE_CONST(0.001) * var_chaste_interface__L_type_calcium_current__I1 * var_L_type_calcium_current__Kpcf - CHASTE_CONST(0.001) * var_chaste_interface__L_type_calcium_current__I3 * var_L_type_calcium_current__alpha + 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 ValueType 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 + CHASTE_CONST(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 - CHASTE_CONST(0.001) * var_L_type_calcium_current__Kpcf * var_chaste_interface__L_type_calcium_current__O; // 1 / millisecond + const ValueType 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 ValueType d_dt_chaste_interface_var_calcium_fluxes__P_RyR = -CHASTE_CONST(0.040000000000000001) * var_chaste_interface__calcium_fluxes__P_RyR - CHASTE_CONST(0.10000000000000001) * var_L_type_calcium_current__i_CaL * CHASTE_MATH::Exp(-CHASTE_CONST(0.038580246913580245) * CHASTE_MATH::Pow((-1 + CHASTE_CONST(0.20000000000000001) * var_chaste_interface__membrane__V), 2)) / var_L_type_calcium_current__i_CaL_max; // 1 / millisecond + const ValueType 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 ValueType var_fast_sodium_current__alpha_Na11 = CHASTE_CONST(3.802) / (CHASTE_CONST(0.20000000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(0.016666666666666666) - CHASTE_CONST(0.0066666666666666671) * var_chaste_interface__membrane__V) + CHASTE_CONST(0.1027) * CHASTE_MATH::Exp(-CHASTE_CONST(0.14705882352941177) - CHASTE_CONST(0.058823529411764705) * var_chaste_interface__membrane__V)); // per_millisecond + const ValueType var_fast_sodium_current__alpha_Na12 = CHASTE_CONST(3.802) / (CHASTE_CONST(0.1027) * CHASTE_MATH::Exp(-CHASTE_CONST(0.16666666666666666) - CHASTE_CONST(0.066666666666666666) * var_chaste_interface__membrane__V) + CHASTE_CONST(0.23000000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(0.016666666666666666) - CHASTE_CONST(0.0066666666666666671) * var_chaste_interface__membrane__V)); // per_millisecond + const ValueType var_fast_sodium_current__alpha_Na13 = CHASTE_CONST(3.802) / (CHASTE_CONST(0.25) * CHASTE_MATH::Exp(-CHASTE_CONST(0.016666666666666666) - CHASTE_CONST(0.0066666666666666671) * var_chaste_interface__membrane__V) + CHASTE_CONST(0.1027) * CHASTE_MATH::Exp(-CHASTE_CONST(0.20833333333333334) - CHASTE_CONST(0.083333333333333329) * var_chaste_interface__membrane__V)); // per_millisecond + const ValueType var_fast_sodium_current__alpha_Na2 = 1 / (CHASTE_CONST(0.39395599999999997) + CHASTE_CONST(0.188495) * CHASTE_MATH::Exp(-CHASTE_CONST(0.42168674698795178) + CHASTE_CONST(0.060240963855421679) * mParameters[10] - CHASTE_CONST(0.060240963855421679) * var_chaste_interface__membrane__V)); // per_millisecond + const ValueType var_fast_sodium_current__alpha_Na3 = CHASTE_CONST(6.9999999999999997e-7) * CHASTE_MATH::Exp(-CHASTE_CONST(0.90909090909090906) - CHASTE_CONST(0.12987012987012986) * var_chaste_interface__membrane__V); // per_millisecond + const ValueType var_fast_sodium_current__alpha_Na4 = CHASTE_CONST(0.001) * var_fast_sodium_current__alpha_Na2; // per_millisecond + const ValueType var_fast_sodium_current__alpha_Na5 = CHASTE_CONST(1.0526315789473684e-5) * var_fast_sodium_current__alpha_Na2; // per_millisecond + const ValueType var_fast_sodium_current__beta_Na11 = CHASTE_CONST(0.19170000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(0.12315270935960591) - CHASTE_CONST(0.04926108374384236) * var_chaste_interface__membrane__V); // per_millisecond + const ValueType var_fast_sodium_current__beta_Na12 = CHASTE_CONST(0.20000000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.12315270935960591) - CHASTE_CONST(0.04926108374384236) * var_chaste_interface__membrane__V); // per_millisecond + const ValueType var_fast_sodium_current__beta_Na13 = CHASTE_CONST(0.22) * CHASTE_MATH::Exp(CHASTE_CONST(0.36945812807881773) - CHASTE_CONST(0.04926108374384236) * var_chaste_interface__membrane__V); // per_millisecond + const ValueType var_fast_sodium_current__beta_Na3 = CHASTE_CONST(0.008539999999999999) + CHASTE_CONST(2.0000000000000002e-5) * var_chaste_interface__membrane__V; // per_millisecond + const ValueType 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 ValueType 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 ValueType 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 ValueType 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 ValueType 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 ValueType 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 ValueType var_fast_sodium_current__beta_Na4 = var_fast_sodium_current__alpha_Na3; // per_millisecond + const ValueType 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 ValueType var_fast_sodium_current__beta_Na5 = CHASTE_CONST(0.02) * var_fast_sodium_current__alpha_Na3; // per_millisecond + const ValueType 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 ValueType 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 ValueType var_membrane__VJSR = CHASTE_CONST(1.1999999999999999e-7); // microlitre + const ValueType var_membrane__VNSR = CHASTE_CONST(2.0980000000000001e-6); // microlitre + const ValueType var_membrane__Vmyo = CHASTE_CONST(2.584e-5); // microlitre + const ValueType 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 ValueType var_membrane__Vss = CHASTE_CONST(1.4849999999999999e-9); // microlitre + const ValueType var_fast_transient_outward_potassium_current__E_K = var_membrane__R * var_membrane__T * CHASTE_MATH::Log(mParameters[5] / var_chaste_interface__potassium_concentration__Ki) / var_membrane__F; // millivolt + const ValueType var_fast_transient_outward_potassium_current__i_Kto_f = CHASTE_MATH::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 ValueType 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 ValueType 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 ValueType var_rapid_delayed_rectifier_potassium_current__alpha_a0 = CHASTE_CONST(0.022348) * CHASTE_MATH::Exp(CHASTE_CONST(0.01176) * var_chaste_interface__membrane__V); // per_millisecond + const ValueType var_rapid_delayed_rectifier_potassium_current__alpha_a1 = CHASTE_CONST(0.013733) * CHASTE_MATH::Exp(CHASTE_CONST(0.038198000000000003) * var_chaste_interface__membrane__V); // per_millisecond + const ValueType var_rapid_delayed_rectifier_potassium_current__alpha_i = CHASTE_CONST(0.090820999999999999) * CHASTE_MATH::Exp(CHASTE_CONST(0.11695499999999999) + CHASTE_CONST(0.023390999999999999) * var_chaste_interface__membrane__V); // per_millisecond + const ValueType var_rapid_delayed_rectifier_potassium_current__beta_a0 = CHASTE_CONST(0.047002000000000002) * CHASTE_MATH::Exp(-CHASTE_CONST(0.063100000000000003) * var_chaste_interface__membrane__V); // per_millisecond + const ValueType var_rapid_delayed_rectifier_potassium_current__beta_a1 = CHASTE_CONST(6.8899999999999994e-5) * CHASTE_MATH::Exp(-CHASTE_CONST(0.041779999999999998) * var_chaste_interface__membrane__V); // per_millisecond + const ValueType var_rapid_delayed_rectifier_potassium_current__beta_i = CHASTE_CONST(0.0064970000000000002) * CHASTE_MATH::Exp(-CHASTE_CONST(0.16339999999999999) - CHASTE_CONST(0.032680000000000001) * var_chaste_interface__membrane__V); // per_millisecond + const ValueType 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 ValueType 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 ValueType var_rapid_delayed_rectifier_potassium_current__kb = CHASTE_CONST(0.036777999999999998); // per_millisecond + const ValueType var_rapid_delayed_rectifier_potassium_current__kf = CHASTE_CONST(0.023761000000000001); // per_millisecond + const ValueType 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 ValueType 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 ValueType 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 ValueType 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 ValueType 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 - CHASTE_CONST(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 ValueType 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 ValueType var_ryanodine_receptors__k_minus_a = CHASTE_CONST(0.071249999999999994); // per_millisecond + const ValueType var_ryanodine_receptors__k_minus_b = CHASTE_CONST(0.96499999999999997); // per_millisecond + const ValueType var_ryanodine_receptors__k_minus_c = CHASTE_CONST(0.00080000000000000004); // per_millisecond + const ValueType var_ryanodine_receptors__k_plus_a = CHASTE_CONST(0.0060749999999999997); // micromolar4_per_millisecond + const ValueType var_ryanodine_receptors__k_plus_b = CHASTE_CONST(0.0040499999999999998); // micromolar3_per_millisecond + const ValueType var_ryanodine_receptors__k_plus_c = CHASTE_CONST(0.0089999999999999993); // per_millisecond + const ValueType 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 ValueType var_ryanodine_receptors__m = 3; // dimensionless + const ValueType d_dt_chaste_interface_var_ryanodine_receptors__P_O2 = -var_chaste_interface__ryanodine_receptors__P_O2 * var_ryanodine_receptors__k_minus_b + CHASTE_MATH::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 ValueType var_ryanodine_receptors__n = 4; // dimensionless + const ValueType 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 + CHASTE_MATH::Pow(var_chaste_interface__calcium_concentration__Cass, var_ryanodine_receptors__n) * var_ryanodine_receptors__P_C1 * var_ryanodine_receptors__k_plus_a - CHASTE_MATH::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 ValueType var_slow_delayed_rectifier_potassium_current__i_Ks = CHASTE_MATH::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 ValueType var_slow_transient_outward_potassium_current__g_Kto_s = 0; // milliS_per_microF + const ValueType 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 ValueType var_sodium_background_current__g_Nab = CHASTE_CONST(0.0025999999999999999); // milliS_per_microF + const ValueType var_sodium_calcium_exchange_current__K_mCa = 1380; // micromolar + const ValueType var_sodium_calcium_exchange_current__K_mNa = 87500; // micromolar + const ValueType var_sodium_calcium_exchange_current__eta = CHASTE_CONST(0.34999999999999998); // dimensionless + const ValueType var_sodium_calcium_exchange_current__k_sat = CHASTE_CONST(0.10000000000000001); // dimensionless + const ValueType var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * CHASTE_MATH::Log((mParameters[6] + CHASTE_CONST(0.1111111111111111) * mParameters[5]) / (var_chaste_interface__sodium_concentration__Nai + CHASTE_CONST(0.1111111111111111) * var_chaste_interface__potassium_concentration__Ki)) / var_membrane__F; // millivolt + const ValueType 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 ValueType var_rapid_delayed_rectifier_potassium_current__i_Kr = (-var_membrane__R * var_membrane__T * CHASTE_MATH::Log((mParameters[5] + CHASTE_CONST(0.020408163265306124) * mParameters[6]) / (var_chaste_interface__potassium_concentration__Ki + CHASTE_CONST(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 ValueType 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 ValueType var_sodium_calcium_exchange_current__i_NaCa = (CHASTE_MATH::Pow(var_chaste_interface__sodium_concentration__Nai, 3) * mParameters[4] * CHASTE_MATH::Exp(var_membrane__F * var_chaste_interface__membrane__V * var_sodium_calcium_exchange_current__eta / (var_membrane__R * var_membrane__T)) - CHASTE_MATH::Pow(mParameters[6], 3) * var_calcium_concentration__Cai * CHASTE_MATH::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 * CHASTE_MATH::Exp((-1 + var_sodium_calcium_exchange_current__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (CHASTE_MATH::Pow(mParameters[6], 3) + CHASTE_MATH::Pow(var_sodium_calcium_exchange_current__K_mNa, 3)) * (mParameters[4] + var_sodium_calcium_exchange_current__K_mCa)); // picoA_per_picoF + const ValueType var_calcium_concentration__Cai_orig_deriv = (-var_calcium_fluxes__J_trpn - var_calcium_fluxes__J_up - CHASTE_CONST(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 ValueType d_dt_chaste_interface_var_calcium_concentration__Cai_converted = CHASTE_CONST(0.001) * var_calcium_concentration__Cai_orig_deriv; // millimolar / millisecond + const ValueType var_sodium_potassium_pump_current__Km_Ko = 1500; // micromolar + const ValueType var_sodium_potassium_pump_current__Km_Nai = 21000; // micromolar + const ValueType var_sodium_potassium_pump_current__i_NaK_max = CHASTE_CONST(0.88); // picoA_per_picoF + const ValueType var_sodium_potassium_pump_current__sigma = -CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * CHASTE_MATH::Exp(CHASTE_CONST(1.4858841010401188e-5) * mParameters[6]); // dimensionless + const ValueType var_sodium_potassium_pump_current__f_NaK = 1 / (1 + CHASTE_CONST(0.1245) * CHASTE_MATH::Exp(-CHASTE_CONST(0.10000000000000001) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) + CHASTE_CONST(0.036499999999999998) * var_sodium_potassium_pump_current__sigma * CHASTE_MATH::Exp(-var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))); // dimensionless + const ValueType var_sodium_potassium_pump_current__i_NaK = mParameters[5] * var_sodium_potassium_pump_current__f_NaK * var_sodium_potassium_pump_current__i_NaK_max / ((1 + CHASTE_MATH::Pow((var_sodium_potassium_pump_current__Km_Nai / var_chaste_interface__sodium_concentration__Nai), CHASTE_CONST(1.5))) * (mParameters[5] + var_sodium_potassium_pump_current__Km_Ko)); // picoA_per_picoF + const ValueType 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 ValueType 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 + CHASTE_MATH::Exp(CHASTE_CONST(0.089599999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.089599999999999999) * var_fast_transient_outward_potassium_current__E_K)) * (210 + mParameters[5])); // picoA_per_picoF + const ValueType var_ultra_rapidly_activating_delayed_rectifier_potassium_current__g_Kur = CHASTE_CONST(0.16); // milliS_per_microF + const ValueType 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 ValueType 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; +} + +template +DEVICE +void Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEuler::ComputeJacobianDevice(ValueType var_chaste_interface__environment__time, + const ValueType rCurrentGuess[Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEuler::NONLINEAR_SIZE], + const ValueType rY[], + ValueType rJacobian[Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEuler::NONLINEAR_SIZE][Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEuler::NONLINEAR_SIZE], + ValueType mDt, + const ValueType mParameters[], + bool mSetVoltageDerivativeToZero, + ValueType mFixedVoltage, + ValueType capacitance, + const DeviceStimulusFunctor stim) +{ + ValueType var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt + ValueType var_chaste_interface__fast_transient_outward_potassium_current__ato_f = rY[28]; // Units: dimensionless + ValueType var_chaste_interface__fast_transient_outward_potassium_current__ito_f = rY[29]; // Units: dimensionless + ValueType var_chaste_interface__slow_delayed_rectifier_potassium_current__nKs = rY[32]; // Units: dimensionless + ValueType var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__aur = rY[33]; // Units: dimensionless + ValueType var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__iur = rY[34]; // Units: dimensionless + ValueType var_chaste_interface__non_inactivating_steady_state_potassium_current__aKss = rY[35]; // Units: dimensionless + + ValueType var_chaste_interface__L_type_calcium_current__C4 = rCurrentGuess[0]; + ValueType var_chaste_interface__L_type_calcium_current__I2 = rCurrentGuess[1]; + ValueType var_chaste_interface__L_type_calcium_current__O = rCurrentGuess[2]; + ValueType var_chaste_interface__calcium_buffering__HTRPN_Ca = rCurrentGuess[3]; + ValueType var_chaste_interface__calcium_buffering__LTRPN_Ca = rCurrentGuess[4]; + ValueType var_chaste_interface__calcium_concentration__CaJSR = rCurrentGuess[5]; + ValueType var_chaste_interface__calcium_concentration__CaNSR = rCurrentGuess[6]; + ValueType var_chaste_interface__calcium_concentration__Cai_converted = rCurrentGuess[7]; + ValueType var_chaste_interface__calcium_concentration__Cass = rCurrentGuess[8]; + ValueType var_chaste_interface__calcium_fluxes__P_RyR = rCurrentGuess[9]; + ValueType var_chaste_interface__fast_sodium_current__O_Na = rCurrentGuess[10]; + ValueType var_chaste_interface__non_inactivating_steady_state_potassium_current__iKss = rCurrentGuess[11]; + ValueType var_chaste_interface__potassium_concentration__Ki = rCurrentGuess[12]; + ValueType var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K = rCurrentGuess[13]; + ValueType var_chaste_interface__ryanodine_receptors__P_C2 = rCurrentGuess[14]; + ValueType var_chaste_interface__ryanodine_receptors__P_O1 = rCurrentGuess[15]; + ValueType var_chaste_interface__ryanodine_receptors__P_O2 = rCurrentGuess[16]; + ValueType var_chaste_interface__sodium_concentration__Nai = rCurrentGuess[17]; + + const ValueType var_x0 = CHASTE_MATH::Exp(-CHASTE_CONST(0.92307692307692313) - CHASTE_CONST(0.076923076923076927) * var_chaste_interface__membrane__V); + const ValueType var_x1 = CHASTE_MATH::Exp(CHASTE_CONST(1.2) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V); + const ValueType var_x2 = var_x1 * (1 + CHASTE_CONST(0.69999999999999996) * CHASTE_MATH::Exp(-160 * CHASTE_MATH::Pow((1 + CHASTE_CONST(0.025000000000000001) * var_chaste_interface__membrane__V), 2)) - CHASTE_CONST(0.75) * CHASTE_MATH::Exp(-CHASTE_MATH::Pow((1 + CHASTE_CONST(0.050000000000000003) * var_chaste_interface__membrane__V), 2))) / (1 + CHASTE_CONST(0.12) * var_x1); + const ValueType var_x3 = CHASTE_CONST(0.10000000000000001) * var_x0; + const ValueType var_x4 = -CHASTE_CONST(1.6000000000000001) * var_x2; + const ValueType var_x5 = CHASTE_CONST(0.80000000000000004) * var_x2; + const ValueType var_x6 = CHASTE_CONST(0.15000000000000002) * var_x0; + const ValueType var_x7 = CHASTE_MATH::Exp(-CHASTE_CONST(2.1025) * CHASTE_MATH::Pow((1 + CHASTE_CONST(0.068965517241379309) * var_chaste_interface__membrane__V), 2)); + const ValueType var_x8 = CHASTE_CONST(0.026000000000000002) * var_x7; + const ValueType var_x9 = 13 - 13 * var_x7; + const ValueType var_x10 = 1 / (20 + var_chaste_interface__calcium_concentration__Cass); + const ValueType var_x11 = CHASTE_CONST(0.23324) * var_x10; + const ValueType var_x12 = var_x11 * var_chaste_interface__calcium_concentration__Cass; + const ValueType var_x13 = var_x12 * var_x9; + const ValueType var_x14 = CHASTE_CONST(0.40000000000000002) * var_x2; + const ValueType var_x15 = CHASTE_CONST(0.00093296000000000004) * var_x10 * var_x2; + const ValueType var_x16 = var_x15 * var_chaste_interface__calcium_concentration__Cass; + const ValueType var_x17 = CHASTE_CONST(0.00040000000000000002) * var_x0; + const ValueType var_x18 = CHASTE_CONST(0.0001) * var_x0; + const ValueType var_x19 = CHASTE_CONST(0.20000000000000001) * var_x0; + const ValueType var_x20 = var_chaste_interface__calcium_concentration__Cass / CHASTE_MATH::Pow((1 + CHASTE_CONST(0.050000000000000003) * var_chaste_interface__calcium_concentration__Cass), 2); + const ValueType var_x21 = -var_x15 * var_chaste_interface__L_type_calcium_current__C4 + CHASTE_CONST(2.3324000000000003e-6) * var_x2 * var_x20 * var_chaste_interface__L_type_calcium_current__C4; + const ValueType var_x22 = var_x9 * var_chaste_interface__L_type_calcium_current__C4; + const ValueType var_x23 = CHASTE_CONST(0.00058310000000000002) * var_x20; + const ValueType var_x24 = var_x22 * var_x23 - var_x11 * var_x22; + const ValueType var_x25 = CHASTE_CONST(0.013000000000000001) * var_x7; + const ValueType var_x26 = CHASTE_CONST(0.00040000000000000002) * var_x2; + const ValueType var_x27 = var_x23 * var_chaste_interface__L_type_calcium_current__O - var_x11 * var_chaste_interface__L_type_calcium_current__O; + const ValueType var_x28 = CHASTE_CONST(0.013000000000000001) - var_x25; + const ValueType var_x29 = var_x23 * var_chaste_interface__L_type_calcium_current__I2 - var_x11 * var_chaste_interface__L_type_calcium_current__I2; + const ValueType var_x30 = CHASTE_CONST(2.3700000000000001) * var_chaste_interface__calcium_concentration__Cai_converted; + const ValueType var_x31 = CHASTE_CONST(3.1999999999999999e-5) + var_x30; + const ValueType var_x32 = CHASTE_CONST(2.3700000000000001) * var_chaste_interface__calcium_buffering__HTRPN_Ca; + const ValueType var_x33 = CHASTE_CONST(32.699999999999996) * var_chaste_interface__calcium_concentration__Cai_converted; + const ValueType var_x34 = CHASTE_CONST(0.019599999999999999) + var_x33; + const ValueType var_x35 = CHASTE_CONST(32.699999999999996) * var_chaste_interface__calcium_buffering__LTRPN_Ca; + const ValueType var_x36 = 1 + CHASTE_CONST(0.00125) * var_chaste_interface__calcium_concentration__CaJSR; + const ValueType var_x37 = CHASTE_MATH::Pow(var_x36, (-2)); + const ValueType var_x38 = 1 / (1 + CHASTE_CONST(18.75) * var_x37); + const ValueType var_x39 = var_chaste_interface__ryanodine_receptors__P_O1 + var_chaste_interface__ryanodine_receptors__P_O2; + const ValueType var_x40 = var_chaste_interface__calcium_fluxes__P_RyR * mParameters[1]; + const ValueType var_x41 = -var_chaste_interface__calcium_concentration__Cass + var_chaste_interface__calcium_concentration__CaJSR; + const ValueType var_x42 = var_x39 * var_x40; + const ValueType var_x43 = -var_x38 * var_x41; + const ValueType var_x44 = var_x39 * mParameters[1]; + const ValueType var_x45 = var_x40 * var_x43; + const ValueType var_x46 = CHASTE_MATH::Pow(var_chaste_interface__calcium_concentration__Cai_converted, 2); + const ValueType var_x47 = 1000000 * var_x46; + const ValueType var_x48 = 1 / (CHASTE_CONST(0.25) + var_x47); + const ValueType var_x49 = var_x48 * var_chaste_interface__calcium_concentration__Cai_converted; + const ValueType var_x50 = var_x49 * mParameters[2]; + const ValueType var_x51 = CHASTE_MATH::Pow((CHASTE_CONST(2.4999999999999999e-7) + var_x46), (-2)); + const ValueType var_x52 = CHASTE_MATH::Pow(var_chaste_interface__calcium_concentration__Cai_converted, 3); + const ValueType var_x53 = var_x51 * var_x52 * mParameters[2]; + const ValueType var_x54 = CHASTE_CONST(0.00023799999999999998) + var_chaste_interface__calcium_concentration__Cai_converted; + const ValueType var_x55 = 1 + CHASTE_CONST(1.19e-5) / CHASTE_MATH::Pow(var_x54, 2); + const ValueType var_x56 = 1 / var_x55; + const ValueType var_x57 = CHASTE_CONST(0.001) * var_x56; + const ValueType var_x58 = 1 / var_chaste_interface__calcium_concentration__Cai_converted; + const ValueType var_x59 = CHASTE_MATH::Exp(-CHASTE_CONST(0.025317124991725771) * var_chaste_interface__membrane__V); + const ValueType var_x60 = CHASTE_MATH::Pow(mParameters[6], 3); + const ValueType var_x61 = var_x59 * var_x60; + const ValueType var_x62 = mParameters[15] / ((1 + CHASTE_CONST(0.10000000000000001) * var_x59) * (1380 + mParameters[4]) * (CHASTE_CONST(669921875000000.0) + var_x60)); + const ValueType var_x63 = var_x61 * var_x62; + const ValueType var_x64 = 1000 * var_chaste_interface__calcium_concentration__Cai_converted; + const ValueType var_x65 = var_x47 * var_x48; + const ValueType var_x66 = CHASTE_MATH::Exp(CHASTE_CONST(0.013632298072467722) * var_chaste_interface__membrane__V); + const ValueType var_x67 = var_x62 * var_x66 * CHASTE_MATH::Pow(var_chaste_interface__sodium_concentration__Nai, 2) * mParameters[4]; + const ValueType var_x68 = CHASTE_CONST(0.23799999999999999) + var_chaste_interface__calcium_concentration__Cass; + const ValueType var_x69 = CHASTE_MATH::Pow(var_x68, (-2)); + const ValueType var_x70 = 1 / (1 + CHASTE_CONST(11.899999999999999) * var_x69); + const ValueType var_x71 = mParameters[7] * mParameters[8]; + const ValueType var_x72 = CHASTE_CONST(80.808080808080803) * var_chaste_interface__ryanodine_receptors__P_O1 + CHASTE_CONST(80.808080808080803) * var_chaste_interface__ryanodine_receptors__P_O2; + const ValueType var_x73 = var_x40 * var_x70; + const ValueType var_x74 = CHASTE_CONST(80.808080808080803) * var_chaste_interface__calcium_concentration__CaJSR - CHASTE_CONST(80.808080808080803) * var_chaste_interface__calcium_concentration__Cass; + const ValueType var_x75 = var_x73 * var_x74; + const ValueType var_x76 = CHASTE_CONST(0.04926108374384236) * var_chaste_interface__membrane__V; + const ValueType var_x77 = CHASTE_CONST(0.20000000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.12315270935960591) - var_x76); + const ValueType var_x78 = CHASTE_MATH::Exp(-CHASTE_CONST(0.016666666666666666) - CHASTE_CONST(0.0066666666666666671) * var_chaste_interface__membrane__V); + const ValueType var_x79 = 1 / (CHASTE_CONST(0.25) * var_x78 + CHASTE_CONST(0.1027) * CHASTE_MATH::Exp(-CHASTE_CONST(0.20833333333333334) - CHASTE_CONST(0.083333333333333329) * var_chaste_interface__membrane__V)); + const ValueType var_x80 = CHASTE_CONST(3.802) * var_x79; + const ValueType var_x81 = CHASTE_CONST(0.008539999999999999) + CHASTE_CONST(2.0000000000000002e-5) * var_chaste_interface__membrane__V; + const ValueType var_x82 = CHASTE_CONST(3.802) / (CHASTE_CONST(0.1027) * CHASTE_MATH::Exp(-CHASTE_CONST(0.16666666666666666) - CHASTE_CONST(0.066666666666666666) * var_chaste_interface__membrane__V) + CHASTE_CONST(0.23000000000000001) * var_x78); + const ValueType var_x83 = CHASTE_MATH::Exp(-CHASTE_CONST(0.90909090909090906) - CHASTE_CONST(0.12987012987012986) * var_chaste_interface__membrane__V); + const ValueType var_x84 = CHASTE_CONST(6.9999999999999997e-7) * var_x83; + const ValueType var_x85 = CHASTE_MATH::Exp(CHASTE_CONST(0.36945812807881773) - var_x76); + const ValueType var_x86 = CHASTE_CONST(0.22) * var_x85; + const ValueType var_x87 = CHASTE_CONST(3.802) / (CHASTE_CONST(0.20000000000000001) * var_x78 + CHASTE_CONST(0.1027) * CHASTE_MATH::Exp(-CHASTE_CONST(0.14705882352941177) - CHASTE_CONST(0.058823529411764705) * var_chaste_interface__membrane__V)); + const ValueType var_x88 = -var_x87; + const ValueType var_x89 = CHASTE_CONST(0.19170000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(0.12315270935960591) - var_x76); + const ValueType var_x90 = var_x82 + var_x89; + const ValueType var_x91 = var_x81 + var_x87; + const ValueType var_x92 = 1 / (CHASTE_CONST(0.39395599999999997) + CHASTE_CONST(0.188495) * CHASTE_MATH::Exp(-CHASTE_CONST(0.42168674698795178) + CHASTE_CONST(0.060240963855421679) * mParameters[10] - CHASTE_CONST(0.060240963855421679) * var_chaste_interface__membrane__V)); + const ValueType var_x93 = CHASTE_CONST(1.0526315789473684e-5) * var_x92; + const ValueType var_x94 = CHASTE_CONST(1.4e-8) * var_x83; + const ValueType var_x95 = CHASTE_CONST(0.001) * var_x92; + const ValueType var_x96 = -var_x81; + const ValueType var_x97 = CHASTE_CONST(1.2097272727272726e-5) * var_x79 * var_x83 * var_x92 / (var_x81 * var_x85); + const ValueType var_x98 = var_x92; + const ValueType var_x99 = 1 / var_chaste_interface__potassium_concentration__Ki; + const ValueType var_x100 = var_x99 * mParameters[5]; + const ValueType var_x101 = CHASTE_MATH::Log(var_x100); + const ValueType var_x102 = -CHASTE_CONST(25.674321243523316) * var_x101 + var_chaste_interface__membrane__V; + const ValueType var_x103 = var_chaste_interface__non_inactivating_steady_state_potassium_current__aKss * mParameters[12]; + const ValueType var_x104 = mParameters[8] * mParameters[3]; + const ValueType var_x105 = CHASTE_CONST(0.061518471582797281) * var_x104; + const ValueType var_x106 = 1 / (var_chaste_interface__potassium_concentration__Ki + CHASTE_CONST(0.020408163265306124) * var_chaste_interface__sodium_concentration__Nai); + const ValueType var_x107 = var_x106 * var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K * mParameters[13]; + const ValueType var_x108 = CHASTE_CONST(1.5794450018272976) * var_x99; + const ValueType var_x109 = CHASTE_MATH::Exp(CHASTE_CONST(0.089599999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(2.300419183419689) * var_x101); + const ValueType var_x110 = 1 + var_x109; + const ValueType var_x111 = 1 / (210 + mParameters[5]); + const ValueType var_x112 = 1 / var_chaste_interface__sodium_concentration__Nai; + const ValueType var_x113 = CHASTE_MATH::Pow(var_x112, CHASTE_CONST(1.5)); + const ValueType var_x114 = var_x112 * var_x113 * mParameters[5] / ((1500 + mParameters[5]) * CHASTE_MATH::Pow((CHASTE_CONST(3.2860264730588296e-7) + var_x113), 2) * (1 + CHASTE_CONST(0.1245) * CHASTE_MATH::Exp(-CHASTE_CONST(0.0038949423064193493) * var_chaste_interface__membrane__V) + CHASTE_CONST(0.036499999999999998) * (-CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * CHASTE_MATH::Exp(CHASTE_CONST(1.4858841010401188e-5) * mParameters[6])) * CHASTE_MATH::Exp(-CHASTE_CONST(0.038949423064193495) * var_chaste_interface__membrane__V))); + const ValueType var_x115 = CHASTE_CONST(0.022348) * CHASTE_MATH::Exp(CHASTE_CONST(0.01176) * var_chaste_interface__membrane__V); + const ValueType var_x116 = -var_x115; + const ValueType var_x117 = CHASTE_CONST(0.013733) * CHASTE_MATH::Exp(CHASTE_CONST(0.038198000000000003) * var_chaste_interface__membrane__V); + const ValueType var_x118 = CHASTE_CONST(6.8899999999999994e-5) * CHASTE_MATH::Exp(-CHASTE_CONST(0.041779999999999998) * var_chaste_interface__membrane__V); + const ValueType var_x119 = CHASTE_CONST(0.0064970000000000002) * CHASTE_MATH::Exp(-CHASTE_CONST(0.16339999999999999) - CHASTE_CONST(0.032680000000000001) * var_chaste_interface__membrane__V); + const ValueType var_x120 = CHASTE_CONST(0.090820999999999999) * CHASTE_MATH::Exp(CHASTE_CONST(0.11695499999999999) + CHASTE_CONST(0.023390999999999999) * var_chaste_interface__membrane__V); + const ValueType var_x121 = CHASTE_CONST(0.012149999999999999) * CHASTE_MATH::Pow(var_chaste_interface__calcium_concentration__Cass, 2) * var_chaste_interface__ryanodine_receptors__P_O1; + const ValueType var_x122 = CHASTE_MATH::Pow(var_chaste_interface__calcium_concentration__Cass, 3); + const ValueType var_x123 = CHASTE_CONST(0.0060749999999999997) * CHASTE_MATH::Pow(var_chaste_interface__calcium_concentration__Cass, 4); + const ValueType var_x124 = CHASTE_CONST(0.0040499999999999998) * var_x122; + const ValueType var_x125 = 1 / (var_chaste_interface__sodium_concentration__Nai + CHASTE_CONST(0.1111111111111111) * var_chaste_interface__potassium_concentration__Ki); + const ValueType var_x126 = var_x125 * var_chaste_interface__fast_sodium_current__O_Na * mParameters[9]; + + rJacobian[0][0] = 1.0 - (mDt * (-CHASTE_CONST(0.050000000000000003) * var_x0 - CHASTE_CONST(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 * (CHASTE_CONST(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 * (-CHASTE_CONST(0.026000000000000002) + var_x8 - var_x13 - var_x14 - var_x16 - var_x6));rJacobian[2][3] = -(mDt * (CHASTE_CONST(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 * (-CHASTE_CONST(0.0135) + var_x25 + var_x0 * (-CHASTE_CONST(0.026000000000000002) + CHASTE_CONST(0.026000000000000002) * var_x7)));rJacobian[3][4] = 0.0;rJacobian[3][5] = -(mDt * (var_x26));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_x27));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 * (CHASTE_CONST(0.026000000000000002) - var_x8));rJacobian[4][3] = 0.0;rJacobian[4][4] = 1.0 - (mDt * (-var_x12 - var_x17 - var_x26));rJacobian[4][5] = -(mDt * (CHASTE_CONST(0.00050000000000000001)));rJacobian[4][6] = -(mDt * (var_x28));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_x29));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_x28));rJacobian[5][4] = -(mDt * (var_x12));rJacobian[5][5] = 1.0 - (mDt * (-CHASTE_CONST(0.00050000000000000001) - var_x18 - var_x26));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_x29));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 * (CHASTE_CONST(0.00050000000000000001)));rJacobian[6][4] = -(mDt * (var_x26));rJacobian[6][5] = 0.0;rJacobian[6][6] = 1.0 - (mDt * (-CHASTE_CONST(0.013000000000000001) + var_x25 - var_x12 - var_x19));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_x27));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_x31));rJacobian[7][8] = 0.0;rJacobian[7][9] = 0.0;rJacobian[7][10] = 0.0;rJacobian[7][11] = -(mDt * (CHASTE_CONST(331.80000000000001) - var_x32));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_x34));rJacobian[8][9] = 0.0;rJacobian[8][10] = 0.0;rJacobian[8][11] = -(mDt * (2289 - var_x35));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_x38 * (-CHASTE_CONST(0.050000000000000003) - var_x39 * var_x40) + CHASTE_CONST(0.00013333333333333334) * (CHASTE_CONST(0.050000000000000003) * var_chaste_interface__calcium_concentration__CaNSR - CHASTE_CONST(0.050000000000000003) * var_chaste_interface__calcium_concentration__CaJSR - var_x41 * var_x42) / (CHASTE_MATH::Pow(var_x36, 3) * CHASTE_MATH::Pow((CHASTE_CONST(0.053333333333333337) + var_x37), 2))));rJacobian[9][10] = -(mDt * (CHASTE_CONST(0.050000000000000003) * var_x38));rJacobian[9][11] = 0.0;rJacobian[9][12] = -(mDt * (var_x38 * var_x42));rJacobian[9][13] = -(mDt * (var_x43 * 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_x45));rJacobian[9][30] = -(mDt * (var_x45));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 * (CHASTE_CONST(0.0028598665395614866)));rJacobian[10][10] = 1.0 - (mDt * (-CHASTE_CONST(0.0028598665395614866) - CHASTE_CONST(12.316491897044804) * mParameters[0]));rJacobian[10][11] = -(mDt * (CHASTE_CONST(12316.491897044803) * mParameters[0] + CHASTE_CONST(24632983.794089608) * var_x50 - CHASTE_CONST(24.632983794089608) * var_x53));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_x31 * var_x57));rJacobian[11][8] = -(mDt * (var_x34 * var_x57));rJacobian[11][9] = 0.0;rJacobian[11][10] = -(mDt * (var_x57 * mParameters[0]));rJacobian[11][11] = 1.0 - (mDt * (var_x57 * (-CHASTE_CONST(2745.8000000000002) + var_x32 + var_x35 + 2 * var_x53 - 2000000 * var_x50 - 1000 * mParameters[0] + (-CHASTE_CONST(61518.471582797276) * var_x49 - CHASTE_CONST(61.518471582797282) * var_x63 - CHASTE_CONST(0.00014491407891765456) * var_x58 + CHASTE_CONST(0.061518471582797281) * var_x51 * var_x52) * mParameters[8]) + CHASTE_CONST(2.3800000000000001e-8) * (CHASTE_CONST(0.125) * var_chaste_interface__calcium_concentration__Cass + CHASTE_CONST(0.019599999999999999) * var_chaste_interface__calcium_buffering__LTRPN_Ca + CHASTE_CONST(3.1999999999999999e-5) * var_chaste_interface__calcium_buffering__HTRPN_Ca - 125 * var_chaste_interface__calcium_concentration__Cai_converted + (-var_x64 + var_chaste_interface__calcium_concentration__CaNSR) * mParameters[0] - var_x30 * (140 - var_chaste_interface__calcium_buffering__HTRPN_Ca) - var_x33 * (70 - var_chaste_interface__calcium_buffering__LTRPN_Ca) - var_x65 * mParameters[2] - CHASTE_CONST(0.03075923579139864) * (var_x65 + CHASTE_CONST(0.00036699999999999998) * var_chaste_interface__membrane__V - CHASTE_CONST(0.0047112379481865285) * CHASTE_MATH::Log(CHASTE_CONST(0.001) * var_x58 * mParameters[4]) - 2 * var_x62 * (-var_x61 * var_x64 + var_x66 * CHASTE_MATH::Pow(var_chaste_interface__sodium_concentration__Nai, 3) * mParameters[4])) * mParameters[8]) / (CHASTE_MATH::Pow(var_x54, 3) * CHASTE_MATH::Pow(var_x55, 2))));rJacobian[11][12] = -(mDt * (CHASTE_CONST(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 * (CHASTE_CONST(0.00018455541474839184) * var_x56 * var_x67 * 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_x70 * var_x71 * (CHASTE_CONST(33719.579211807191) - CHASTE_CONST(535.23141606043157) * var_chaste_interface__membrane__V)));rJacobian[12][7] = 0.0;rJacobian[12][8] = 0.0;rJacobian[12][9] = -(mDt * (var_x72 * var_x73));rJacobian[12][10] = 0.0;rJacobian[12][11] = -(mDt * (CHASTE_CONST(2175084.1750841751) * var_x70));rJacobian[12][12] = 1.0 - (mDt * (var_x70 * (-CHASTE_CONST(2175.0841750841751) - var_x40 * var_x72) + CHASTE_CONST(0.16806722689075632) * (CHASTE_CONST(2175084.1750841751) * var_chaste_interface__calcium_concentration__Cai_converted - CHASTE_CONST(2175.0841750841751) * var_chaste_interface__calcium_concentration__Cass - CHASTE_CONST(535.23141606043157) * var_x71 * (-63 + var_chaste_interface__membrane__V) * var_chaste_interface__L_type_calcium_current__O + CHASTE_CONST(80.808080808080803) * var_x39 * var_x41 * var_chaste_interface__calcium_fluxes__P_RyR * mParameters[1]) / (CHASTE_MATH::Pow(var_x68, 3) * CHASTE_MATH::Pow((CHASTE_CONST(0.084033613445378158) + var_x69), 2))));rJacobian[12][13] = -(mDt * (var_x44 * var_x70 * var_x74));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_x75));rJacobian[12][30] = -(mDt * (var_x75));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 * ((CHASTE_CONST(0.90000000000000002) - CHASTE_CONST(0.014285714285714287) * var_chaste_interface__membrane__V) * mParameters[7] * CHASTE_MATH::Exp(-CHASTE_CONST(0.038580246913580245) * CHASTE_MATH::Pow((-1 + CHASTE_CONST(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 * (-CHASTE_CONST(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_x77 - var_x80 - var_x81));rJacobian[14][15] = -(mDt * (var_x82));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_x84));rJacobian[14][21] = -(mDt * (var_x86));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_x77 + var_x88));rJacobian[15][15] = 1.0 - (mDt * (-var_x90 - var_x91));rJacobian[15][16] = -(mDt * (var_x88));rJacobian[15][17] = -(mDt * (var_x88));rJacobian[15][18] = -(mDt * (var_x84 + var_x88));rJacobian[15][19] = -(mDt * (var_x88));rJacobian[15][20] = -(mDt * (var_x88));rJacobian[15][21] = -(mDt * (var_x88));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_x84 - var_x93));rJacobian[16][17] = -(mDt * (var_x94));rJacobian[16][18] = 0.0;rJacobian[16][19] = 0.0;rJacobian[16][20] = -(mDt * (var_x95));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_x93));rJacobian[17][17] = 1.0 - (mDt * (-var_x94));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_x81));rJacobian[18][16] = 0.0;rJacobian[18][17] = 0.0;rJacobian[18][18] = 1.0 - (mDt * (-var_x84 - var_x90));rJacobian[18][19] = -(mDt * (var_x87));rJacobian[18][20] = -(mDt * (var_x77));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_x96));rJacobian[19][15] = -(mDt * (var_x96));rJacobian[19][16] = -(mDt * (var_x96));rJacobian[19][17] = -(mDt * (var_x96));rJacobian[19][18] = -(mDt * (var_x89 - var_x81));rJacobian[19][19] = 1.0 - (mDt * (-var_x84 - var_x91));rJacobian[19][20] = -(mDt * (var_x96));rJacobian[19][21] = -(mDt * (var_x96));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_x81));rJacobian[20][15] = 0.0;rJacobian[20][16] = -(mDt * (var_x84));rJacobian[20][17] = 0.0;rJacobian[20][18] = -(mDt * (var_x82));rJacobian[20][19] = 0.0;rJacobian[20][20] = 1.0 - (mDt * (-var_x77 - var_x84 - var_x95 - var_x97));rJacobian[20][21] = -(mDt * (var_x98));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_x80));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_x97));rJacobian[21][21] = 1.0 - (mDt * (-var_x86 - var_x98));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_x102 * var_x103 * var_x105));rJacobian[23][23] = 1.0 - (mDt * (var_x104 * (-CHASTE_CONST(1.5794450018272976) * var_x107 - var_x103 * var_x108 * var_chaste_interface__non_inactivating_steady_state_potassium_current__iKss - var_x108 * CHASTE_MATH::Pow(var_chaste_interface__slow_delayed_rectifier_potassium_current__nKs, 2) * mParameters[14] - CHASTE_CONST(0.25271120029236765) * var_x99 * var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__aur * var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__iur - var_x108 * CHASTE_MATH::Pow(var_chaste_interface__fast_transient_outward_potassium_current__ato_f, 3) * mParameters[16] * var_chaste_interface__fast_transient_outward_potassium_current__ito_f - CHASTE_CONST(1.5794450018272976) * var_x100 * var_x111 * mParameters[11] / var_x110 + CHASTE_CONST(0.14151827216372587) * var_x102 * var_x109 * var_x111 * var_x99 * mParameters[5] * mParameters[11] / CHASTE_MATH::Pow(var_x110, 2))));rJacobian[23][24] = 0.0;rJacobian[23][25] = 0.0;rJacobian[23][26] = 0.0;rJacobian[23][27] = -(mDt * (-var_x105 * (-CHASTE_CONST(25.674321243523316) * CHASTE_MATH::Log(var_x106 * (mParameters[5] + CHASTE_CONST(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_x104 * (CHASTE_CONST(5.3367950117641947e-8) * var_x114 - CHASTE_CONST(0.032233571465863219) * var_x107)));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 * (-CHASTE_CONST(0.023761000000000001) - var_x115 - CHASTE_CONST(0.047002000000000002) * CHASTE_MATH::Exp(-CHASTE_CONST(0.063100000000000003) * var_chaste_interface__membrane__V)));rJacobian[24][25] = -(mDt * (CHASTE_CONST(0.036777999999999998) - var_x115));rJacobian[24][26] = -(mDt * (var_x116));rJacobian[24][27] = -(mDt * (var_x116));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 * (CHASTE_CONST(0.023761000000000001)));rJacobian[25][25] = 1.0 - (mDt * (-CHASTE_CONST(0.036777999999999998) - var_x117));rJacobian[25][26] = 0.0;rJacobian[25][27] = -(mDt * (var_x118));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_x119));rJacobian[26][27] = -(mDt * (var_x120));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_x117));rJacobian[27][26] = -(mDt * (var_x119));rJacobian[27][27] = 1.0 - (mDt * (-var_x118 - var_x120));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 * (-CHASTE_CONST(0.00080000000000000004)));rJacobian[28][29] = -(mDt * (CHASTE_CONST(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_x121 + CHASTE_CONST(0.024299999999999999) * var_x122 * (1 - var_x39 - 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 * (CHASTE_CONST(0.00080000000000000004) - var_x123));rJacobian[29][29] = 1.0 - (mDt * (-CHASTE_CONST(0.080249999999999988) - var_x123 - var_x124));rJacobian[29][30] = -(mDt * (CHASTE_CONST(0.96499999999999997) - var_x123));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_x121));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_x124));rJacobian[30][30] = 1.0 - (mDt * (-CHASTE_CONST(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 * (CHASTE_CONST(184.55541474839183) * var_x104 * var_x63));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_x105 * (-CHASTE_CONST(25.674321243523316) * CHASTE_MATH::Log(var_x125 * (mParameters[6] + CHASTE_CONST(0.1111111111111111) * mParameters[5])) + var_chaste_interface__membrane__V) * mParameters[9]));rJacobian[31][22] = 0.0;rJacobian[31][23] = -(mDt * (var_x104 * (-CHASTE_CONST(0.00045628411163899709) * var_x125 - CHASTE_CONST(0.17549388909192196) * 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_x104 * (-CHASTE_CONST(1.5794450018272976) * var_x126 - CHASTE_CONST(0.0041065570047509742) * var_x125 - CHASTE_CONST(0.55366624424517552) * var_x67 - CHASTE_CONST(8.0051925176462917e-8) * var_x114))); +} + +template +DEVICE +void Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEuler::UpdateTransmembranePotentialDevice(ValueType var_chaste_interface__environment__time, + ValueType rY[], + ValueType mDt, + const ValueType mParameters[], + bool mSetVoltageDerivativeToZero, + ValueType mFixedVoltage, + DeviceStimulusFunctor stim, + ValueType capacitance) +{ + ValueType var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); + // Units: millivolt; Initial value: -82.4202 + ValueType var_chaste_interface__calcium_concentration__Cai_converted = rY[1]; + // Units: millimolar; Initial value: 0.000115001 + ValueType var_chaste_interface__L_type_calcium_current__O = rY[11]; + // Units: dimensionless; Initial value: 9.30308e-19 + ValueType var_chaste_interface__sodium_concentration__Nai = rY[18]; + // Units: micromolar; Initial value: 14237.1 + ValueType var_chaste_interface__fast_sodium_current__O_Na = rY[19]; + // Units: dimensionless; Initial value: 7.13483e-07 + ValueType var_chaste_interface__potassium_concentration__Ki = rY[27]; + // Units: micromolar; Initial value: 143720.0 + ValueType var_chaste_interface__fast_transient_outward_potassium_current__ato_f = rY[28]; + // Units: dimensionless; Initial value: 0.00265563 + ValueType var_chaste_interface__fast_transient_outward_potassium_current__ito_f = rY[29]; + // Units: dimensionless; Initial value: 0.999977 + ValueType var_chaste_interface__slow_transient_outward_potassium_current__ato_s = rY[30]; + // Units: dimensionless; Initial value: 0.000417069 + ValueType var_chaste_interface__slow_transient_outward_potassium_current__ito_s = rY[31]; + // Units: dimensionless; Initial value: 0.998543 + ValueType var_chaste_interface__slow_delayed_rectifier_potassium_current__nKs = rY[32]; + // Units: dimensionless; Initial value: 0.000262753 + ValueType var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__aur = rY[33]; + // Units: dimensionless; Initial value: 0.000417069 + ValueType var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__iur = rY[34]; + // Units: dimensionless; Initial value: 0.998543 + ValueType var_chaste_interface__non_inactivating_steady_state_potassium_current__aKss = rY[35]; + // Units: dimensionless; Initial value: 0.000417069 + ValueType var_chaste_interface__non_inactivating_steady_state_potassium_current__iKss = rY[36]; + // Units: dimensionless; Initial value: 1.0 + ValueType var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K = rY[37]; + // Units: dimensionless; Initial value: 0.000175298 + + const ValueType var_L_type_calcium_current__E_CaL = 63; // millivolt + const ValueType var_calcium_activated_chloride_current__E_Cl = -40; // millivolt + const ValueType var_calcium_activated_chloride_current__Km_Cl = 10; // micromolar + const ValueType var_calcium_activated_chloride_current__g_ClCa = 10; // milliS_per_microF + const ValueType var_calcium_background_current__g_Cab = CHASTE_CONST(0.00036699999999999998); // milliS_per_microF + const ValueType var_calcium_concentration__Cai = 1000 * var_chaste_interface__calcium_concentration__Cai_converted; // micromolar + const ValueType var_calcium_pump_current__Km_pCa = CHASTE_CONST(0.5); // micromolar + const ValueType var_calcium_pump_current__i_pCa_max = 1; // picoA_per_picoF + const ValueType var_calcium_pump_current__i_pCa = CHASTE_MATH::Pow(var_calcium_concentration__Cai, 2) * var_calcium_pump_current__i_pCa_max / (CHASTE_MATH::Pow(var_calcium_concentration__Cai, 2) + CHASTE_MATH::Pow(var_calcium_pump_current__Km_pCa, 2)); // picoA_per_picoF + const ValueType var_membrane__F = CHASTE_CONST(96.5); // coulomb_per_millimole + const ValueType var_membrane__R = CHASTE_CONST(8.3140000000000001); // joule_per_mole_kelvin + const ValueType var_membrane__T = 298; // kelvin + const ValueType var_calcium_background_current__E_CaN = CHASTE_CONST(0.5) * var_membrane__R * var_membrane__T * CHASTE_MATH::Log(mParameters[4] / var_calcium_concentration__Cai) / var_membrane__F; // millivolt + const ValueType 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 ValueType var_calcium_activated_chloride_current__O_ClCa = CHASTE_CONST(0.20000000000000001) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(5.9871794871794881) - CHASTE_CONST(0.12820512820512822) * var_chaste_interface__membrane__V)); // dimensionless + const ValueType 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 ValueType 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 ValueType var_membrane__i_stim_converted = CHASTE_STIM(var_chaste_interface__environment__time); // uA_per_cm2 + const ValueType var_membrane__i_stim = var_membrane__i_stim_converted / CHASTE_CAP(); // picoA_per_picoF + const ValueType var_fast_transient_outward_potassium_current__E_K = var_membrane__R * var_membrane__T * CHASTE_MATH::Log(mParameters[5] / var_chaste_interface__potassium_concentration__Ki) / var_membrane__F; // millivolt + const ValueType var_fast_transient_outward_potassium_current__i_Kto_f = CHASTE_MATH::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 ValueType 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 ValueType var_slow_delayed_rectifier_potassium_current__i_Ks = CHASTE_MATH::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 ValueType var_slow_transient_outward_potassium_current__g_Kto_s = 0; // milliS_per_microF + const ValueType 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 ValueType var_sodium_background_current__g_Nab = CHASTE_CONST(0.0025999999999999999); // milliS_per_microF + const ValueType var_sodium_calcium_exchange_current__K_mCa = 1380; // micromolar + const ValueType var_sodium_calcium_exchange_current__K_mNa = 87500; // micromolar + const ValueType var_sodium_calcium_exchange_current__eta = CHASTE_CONST(0.34999999999999998); // dimensionless + const ValueType var_sodium_calcium_exchange_current__k_sat = CHASTE_CONST(0.10000000000000001); // dimensionless + const ValueType var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * CHASTE_MATH::Log((mParameters[6] + CHASTE_CONST(0.1111111111111111) * mParameters[5]) / (var_chaste_interface__sodium_concentration__Nai + CHASTE_CONST(0.1111111111111111) * var_chaste_interface__potassium_concentration__Ki)) / var_membrane__F; // millivolt + const ValueType 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 ValueType var_rapid_delayed_rectifier_potassium_current__i_Kr = (-var_membrane__R * var_membrane__T * CHASTE_MATH::Log((mParameters[5] + CHASTE_CONST(0.020408163265306124) * mParameters[6]) / (var_chaste_interface__potassium_concentration__Ki + CHASTE_CONST(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 ValueType 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 ValueType var_sodium_calcium_exchange_current__i_NaCa = (CHASTE_MATH::Pow(var_chaste_interface__sodium_concentration__Nai, 3) * mParameters[4] * CHASTE_MATH::Exp(var_membrane__F * var_chaste_interface__membrane__V * var_sodium_calcium_exchange_current__eta / (var_membrane__R * var_membrane__T)) - CHASTE_MATH::Pow(mParameters[6], 3) * var_calcium_concentration__Cai * CHASTE_MATH::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 * CHASTE_MATH::Exp((-1 + var_sodium_calcium_exchange_current__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (CHASTE_MATH::Pow(mParameters[6], 3) + CHASTE_MATH::Pow(var_sodium_calcium_exchange_current__K_mNa, 3)) * (mParameters[4] + var_sodium_calcium_exchange_current__K_mCa)); // picoA_per_picoF + const ValueType var_sodium_potassium_pump_current__Km_Ko = 1500; // micromolar + const ValueType var_sodium_potassium_pump_current__Km_Nai = 21000; // micromolar + const ValueType var_sodium_potassium_pump_current__i_NaK_max = CHASTE_CONST(0.88); // picoA_per_picoF + const ValueType var_sodium_potassium_pump_current__sigma = -CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * CHASTE_MATH::Exp(CHASTE_CONST(1.4858841010401188e-5) * mParameters[6]); // dimensionless + const ValueType var_sodium_potassium_pump_current__f_NaK = 1 / (1 + CHASTE_CONST(0.1245) * CHASTE_MATH::Exp(-CHASTE_CONST(0.10000000000000001) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) + CHASTE_CONST(0.036499999999999998) * var_sodium_potassium_pump_current__sigma * CHASTE_MATH::Exp(-var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))); // dimensionless + const ValueType var_sodium_potassium_pump_current__i_NaK = mParameters[5] * var_sodium_potassium_pump_current__f_NaK * var_sodium_potassium_pump_current__i_NaK_max / ((1 + CHASTE_MATH::Pow((var_sodium_potassium_pump_current__Km_Nai / var_chaste_interface__sodium_concentration__Nai), CHASTE_CONST(1.5))) * (mParameters[5] + var_sodium_potassium_pump_current__Km_Ko)); // picoA_per_picoF + const ValueType 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 + CHASTE_MATH::Exp(CHASTE_CONST(0.089599999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.089599999999999999) * var_fast_transient_outward_potassium_current__E_K)) * (210 + mParameters[5])); // picoA_per_picoF + const ValueType var_ultra_rapidly_activating_delayed_rectifier_potassium_current__g_Kur = CHASTE_CONST(0.16); // milliS_per_microF + const ValueType 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 ValueType 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; +} + +#include "ChasteCpuMacros.hpp" +#endif // CELLBONDARENKO_SZIGETI_BETT_KIM_RASMUSSON_2004_APICALFROMCELLMLBACKWARDEULERKERNELS_HPP_ \ No newline at end of file diff --git a/chaste_codegen/data/tests/chaste_reference_models/BE/dynamic_courtemanche_ramirez_nattel_1998.cpp b/chaste_codegen/data/tests/chaste_reference_models/BE/dynamic_courtemanche_ramirez_nattel_1998.cpp index 169812214..5afae7b17 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/BE/dynamic_courtemanche_ramirez_nattel_1998.cpp +++ b/chaste_codegen/data/tests/chaste_reference_models/BE/dynamic_courtemanche_ramirez_nattel_1998.cpp @@ -22,6 +22,8 @@ #include "HeartConfig.hpp" #include "IsNan.hpp" #include "MathsCustomFunctions.hpp" +#include "ChasteMathDeviceNamespaces.hpp" +#include "ChasteCpuMacros.hpp" #include "ModelFactory.hpp" @@ -36,8 +38,8 @@ bool Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler::registered 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_membrane__Cm_converted = CHASTE_CONST(9.9999999999999995e-7) * mParameters[9]; // uF + const double var_chaste_interface__membrane__stim_amplitude_converted = -CHASTE_CONST(0.002) * CHASTE_CAP() / 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 @@ -70,22 +72,22 @@ bool Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler::registered 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[2] = CHASTE_CONST(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[4] = CHASTE_CONST(1.8); // (var_standard_ionic_concentrations__Ca_o) [millimolar] + this->mParameters[5] = CHASTE_CONST(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[7] = CHASTE_CONST(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[10] = CHASTE_CONST(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[13] = CHASTE_CONST(0.089999999999999997); // (var_time_independent_potassium_current__g_K1) [nanoS_per_picoF] + this->mParameters[14] = CHASTE_CONST(0.029411764999999999); // (var_rapid_delayed_rectifier_K_current__g_Kr) [nanoS_per_picoF] + this->mParameters[15] = CHASTE_CONST(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] + this->mParameters[17] = CHASTE_CONST(0.16520000000000001); // (var_transient_outward_K_current__g_to) [nanoS_per_picoF] } Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler::~Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler() @@ -132,7 +134,7 @@ bool Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler::registered // 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -165,46 +167,46 @@ bool Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler::registered 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_Na_Ca_exchanger_current__K_mCa = CHASTE_CONST(1.3799999999999999); // millimolar + const double var_Na_Ca_exchanger_current__K_mNa = CHASTE_CONST(87.5); // millimolar + const double var_Na_Ca_exchanger_current__K_sat = CHASTE_CONST(0.10000000000000001); // dimensionless + const double var_Na_Ca_exchanger_current__gamma = CHASTE_CONST(0.34999999999999998); // dimensionless + const double var_background_currents__g_B_Ca = CHASTE_CONST(0.0011310000000000001); // nanoS_per_picoF + const double var_background_currents__g_B_Na = CHASTE_CONST(0.00067443750000000002); // nanoS_per_picoF + const double var_membrane__Cm_converted = CHASTE_CONST(9.9999999999999995e-7) * mParameters[9]; // uF + const double var_membrane__F = CHASTE_CONST(96.486699999999999); // coulomb_per_millimole + const double var_membrane__R = CHASTE_CONST(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_L_type_Ca_channel__i_Ca_L_converted = CHASTE_CONST(9.9999999999999995e-7) * CHASTE_CAP() * 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 = CHASTE_CONST(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 / (CHASTE_CONST(0.00050000000000000001) + var_chaste_interface__intracellular_ion_concentrations__Ca_i); // picoA + const double var_sodium_potassium_pump__Km_K_o = CHASTE_CONST(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_sodium_potassium_pump__i_NaK_max = CHASTE_CONST(0.59933873999999998); // picoA_per_picoF + const double var_background_currents__E_Ca = CHASTE_CONST(0.5) * var_membrane__R * var_membrane__T * CHASTE_MATH::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_Na_Ca_exchanger_current__i_NaCa = (CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[4] * CHASTE_MATH::Exp(var_Na_Ca_exchanger_current__gamma * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - CHASTE_MATH::Pow(mParameters[6], 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i * CHASTE_MATH::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 * CHASTE_MATH::Exp((-1 + var_Na_Ca_exchanger_current__gamma) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (CHASTE_MATH::Pow(var_Na_Ca_exchanger_current__K_mNa, 3) + CHASTE_MATH::Pow(mParameters[6], 3)) * (var_Na_Ca_exchanger_current__K_mCa + mParameters[4])); // picoA + const double var_Na_Ca_exchanger_current__i_NaCa_converted = CHASTE_CONST(9.9999999999999995e-7) * CHASTE_CAP() * 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 * CHASTE_MATH::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 var_fast_sodium_current__i_Na = CHASTE_MATH::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 = CHASTE_CONST(9.9999999999999995e-7) * CHASTE_CAP() * var_fast_sodium_current__i_Na / var_membrane__Cm_converted; // uA_per_cm2 + const double var_sodium_potassium_pump__sigma = -CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * CHASTE_MATH::Exp(CHASTE_CONST(0.01485884101040119) * mParameters[6]); // dimensionless + const double var_sodium_potassium_pump__f_NaK = 1 / (1 + CHASTE_CONST(0.1245) * CHASTE_MATH::Exp(-CHASTE_CONST(0.10000000000000001) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) + CHASTE_CONST(0.036499999999999998) * var_sodium_potassium_pump__sigma * CHASTE_MATH::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 + CHASTE_MATH::Pow((var_sodium_potassium_pump__Km_Na_i / var_chaste_interface__intracellular_ion_concentrations__Na_i), CHASTE_CONST(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 * CHASTE_MATH::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 + CHASTE_MATH::Exp(CHASTE_CONST(0.66964285714285721) + CHASTE_CONST(0.044642857142857144) * var_chaste_interface__membrane__V)); // picoA + const double var_rapid_delayed_rectifier_K_current__i_Kr_converted = CHASTE_CONST(9.9999999999999995e-7) * CHASTE_CAP() * 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 = CHASTE_MATH::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 = CHASTE_CONST(9.9999999999999995e-7) * CHASTE_CAP() * 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 + CHASTE_MATH::Exp(CHASTE_CONST(5.6000000000000005) + CHASTE_CONST(0.070000000000000007) * var_chaste_interface__membrane__V)); // picoA + const double var_time_independent_potassium_current__i_K1_converted = CHASTE_CONST(9.9999999999999995e-7) * CHASTE_CAP() * var_time_independent_potassium_current__i_K1 / var_membrane__Cm_converted; // uA_per_cm2 + const double var_transient_outward_K_current__i_to = CHASTE_MATH::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 = CHASTE_CONST(9.9999999999999995e-7) * CHASTE_CAP() * var_transient_outward_K_current__i_to / var_membrane__Cm_converted; // uA_per_cm2 + const double var_ultrarapid_delayed_rectifier_K_current__g_Kur = CHASTE_CONST(0.0050000000000000001) + CHASTE_CONST(0.050000000000000003) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(1.1538461538461537) - CHASTE_CONST(0.076923076923076927) * var_chaste_interface__membrane__V)); // nanoS_per_picoF + const double var_ultrarapid_delayed_rectifier_K_current__i_Kur = CHASTE_MATH::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 + CHASTE_CONST(9.9999999999999995e-7) * CHASTE_CAP() * var_background_currents__i_B_Ca + CHASTE_CONST(9.9999999999999995e-7) * CHASTE_CAP() * var_background_currents__i_B_Na + CHASTE_CONST(9.9999999999999995e-7) * CHASTE_CAP() * var_sarcolemmal_calcium_pump_current__i_CaP + CHASTE_CONST(9.9999999999999995e-7) * CHASTE_CAP() * var_sodium_potassium_pump__i_NaK + CHASTE_CONST(9.9999999999999995e-7) * CHASTE_CAP() * 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)); @@ -214,7 +216,7 @@ bool Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler::registered 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -252,71 +254,71 @@ bool Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler::registered 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__CMDN_max = CHASTE_CONST(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_buffers__Km_CMDN = CHASTE_CONST(0.0023800000000000002); // millimolar + const double var_Ca_buffers__Km_CSQN = CHASTE_CONST(0.80000000000000004); // millimolar + const double var_Ca_buffers__Km_TRPN = CHASTE_CONST(0.00050000000000000001); // millimolar + const double var_Ca_buffers__TRPN_max = CHASTE_CONST(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_Ca_uptake_current_by_the_NSR__K_up = CHASTE_CONST(0.00092000000000000003); // millimolar + const double var_Na_Ca_exchanger_current__K_mCa = CHASTE_CONST(1.3799999999999999); // millimolar + const double var_Na_Ca_exchanger_current__K_mNa = CHASTE_CONST(87.5); // millimolar + const double var_Na_Ca_exchanger_current__K_sat = CHASTE_CONST(0.10000000000000001); // dimensionless + const double var_Na_Ca_exchanger_current__gamma = CHASTE_CONST(0.34999999999999998); // dimensionless + const double var_background_currents__g_B_Ca = CHASTE_CONST(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_background_currents__g_B_Na = CHASTE_CONST(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 var_L_type_Ca_channel_f_Ca_gate__f_Ca_infinity = 1 / (1 + CHASTE_CONST(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_intracellular_ion_concentrations__B2 = 1 + var_Ca_buffers__CMDN_max * var_Ca_buffers__Km_CMDN / CHASTE_MATH::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 / CHASTE_MATH::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 = CHASTE_MATH::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_intracellular_ion_concentrations__V_i = CHASTE_CONST(0.68000000000000005) * var_intracellular_ion_concentrations__V_cell; // micrometre_3 + const double var_intracellular_ion_concentrations__V_rel = CHASTE_CONST(0.0047999999999999996) * var_intracellular_ion_concentrations__V_cell; // micrometre_3 + const double var_intracellular_ion_concentrations__V_up = CHASTE_CONST(0.055199999999999999) * var_intracellular_ion_concentrations__V_cell; // micrometre_3 + const double var_membrane__F = CHASTE_CONST(96.486699999999999); // coulomb_per_millimole + const double var_membrane__R = CHASTE_CONST(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_sarcolemmal_calcium_pump_current__i_CaP_max = CHASTE_CONST(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 / (CHASTE_CONST(0.00050000000000000001) + var_chaste_interface__intracellular_ion_concentrations__Ca_i); // picoA + const double var_sodium_potassium_pump__Km_K_o = CHASTE_CONST(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_sodium_potassium_pump__i_NaK_max = CHASTE_CONST(0.59933873999999998); // picoA_per_picoF + const double var_background_currents__E_Ca = CHASTE_CONST(0.5) * var_membrane__R * var_membrane__T * CHASTE_MATH::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 var_Na_Ca_exchanger_current__i_NaCa = (CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[4] * CHASTE_MATH::Exp(var_Na_Ca_exchanger_current__gamma * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - CHASTE_MATH::Pow(mParameters[6], 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i * CHASTE_MATH::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 * CHASTE_MATH::Exp((-1 + var_Na_Ca_exchanger_current__gamma) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (CHASTE_MATH::Pow(var_Na_Ca_exchanger_current__K_mNa, 3) + CHASTE_MATH::Pow(mParameters[6], 3)) * (var_Na_Ca_exchanger_current__K_mCa + mParameters[4])); // picoA + const double var_Ca_release_current_from_JSR__Fn = CHASTE_CONST(9.9999999999999998e-13) * var_Ca_release_current_from_JSR__i_rel * var_intracellular_ion_concentrations__V_rel - CHASTE_CONST(4.9999999999999999e-13) * (CHASTE_CONST(0.5) * var_L_type_Ca_channel__i_Ca_L - CHASTE_CONST(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 + CHASTE_MATH::Exp(250 - CHASTE_CONST(731528895391368.0) * var_Ca_release_current_from_JSR__Fn)); // dimensionless + const double var_Ca_release_current_from_JSR_v_gate__tau_v = CHASTE_CONST(1.9099999999999999) + CHASTE_CONST(2.0899999999999999) / (1 + CHASTE_MATH::Exp(250 - CHASTE_CONST(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 + CHASTE_MATH::Exp(50 - CHASTE_CONST(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_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * CHASTE_MATH::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 var_fast_sodium_current__i_Na = CHASTE_MATH::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 + CHASTE_CONST(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 var_sodium_potassium_pump__sigma = -CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * CHASTE_MATH::Exp(CHASTE_CONST(0.01485884101040119) * mParameters[6]); // dimensionless + const double var_sodium_potassium_pump__f_NaK = 1 / (1 + CHASTE_CONST(0.1245) * CHASTE_MATH::Exp(-CHASTE_CONST(0.10000000000000001) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) + CHASTE_CONST(0.036499999999999998) * var_sodium_potassium_pump__sigma * CHASTE_MATH::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 + CHASTE_MATH::Pow((var_sodium_potassium_pump__Km_Na_i / var_chaste_interface__intracellular_ion_concentrations__Na_i), CHASTE_CONST(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_time_independent_potassium_current__E_K = var_membrane__R * var_membrane__T * CHASTE_MATH::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_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 + CHASTE_MATH::Exp(CHASTE_CONST(0.66964285714285721) + CHASTE_CONST(0.044642857142857144) * var_chaste_interface__membrane__V)); // picoA + const double var_slow_delayed_rectifier_K_current__i_Ks = CHASTE_MATH::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 + CHASTE_MATH::Exp(CHASTE_CONST(5.6000000000000005) + CHASTE_CONST(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_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 / CHASTE_MATH::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 var_transient_outward_K_current__i_to = CHASTE_MATH::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 = CHASTE_CONST(0.0050000000000000001) + CHASTE_CONST(0.050000000000000003) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(1.1538461538461537) - CHASTE_CONST(0.076923076923076927) * var_chaste_interface__membrane__V)); // nanoS_per_picoF + const double var_ultrarapid_delayed_rectifier_K_current__i_Kur = CHASTE_MATH::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; @@ -332,7 +334,7 @@ bool Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler::registered 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -369,117 +371,117 @@ bool Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler::registered 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_x1 = CHASTE_MATH::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_x4 = CHASTE_CONST(70577.907827359188) * var_x3; + const double var_x5 = CHASTE_MATH::Exp(-CHASTE_CONST(0.024332874996168673) * var_chaste_interface__membrane__V); + const double var_x6 = CHASTE_MATH::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_x8 = CHASTE_MATH::Exp(CHASTE_CONST(0.013102317305629283) * var_chaste_interface__membrane__V); + const double var_x9 = -var_x7 * var_chaste_interface__intracellular_ion_concentrations__Ca_i + var_x8 * CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[4]; + const double var_x10 = 1 / (1 + CHASTE_CONST(0.10000000000000001) * var_x5); + const double var_x11 = 1 / (CHASTE_CONST(669921.875) + var_x6); + const double var_x12 = 1 / (CHASTE_CONST(1.3799999999999999) + mParameters[4]); const double var_x13 = var_x10 * var_x11 * var_x12 * mParameters[16]; const double var_x14 = var_x13 * mParameters[9]; const double var_x15 = -65 + var_chaste_interface__membrane__V; - const double var_x16 = var_x0 * var_x4 + 0.75816552477322585 * var_x14 * var_x9 - 1.8954138119330646 * var_x15 * 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_x17 = exp(250 - var_x16); + const double var_x16 = var_x0 * var_x4 + CHASTE_CONST(0.75816552477322585) * var_x14 * var_x9 - CHASTE_CONST(1.8954138119330646) * var_x15 * 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_x17 = CHASTE_MATH::Exp(250 - var_x16); const double var_x18 = 1 + var_x17; - const double var_x19 = var_x17 / pow(var_x18, 2); + const double var_x19 = var_x17 / CHASTE_MATH::Pow(var_x18, 2); const double var_x20 = 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_x21 = var_x19 * var_x20; const double var_x22 = var_x0 * var_x2; - const double var_x23 = 8822.2384784198985 * var_x19; + const double var_x23 = CHASTE_CONST(8822.2384784198985) * var_x19; const double var_x24 = 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_x25 = var_x24 * mParameters[9]; - const double var_x26 = var_x25 * (-123.20189777564919 + 1.8954138119330646 * var_chaste_interface__membrane__V); + const double var_x26 = var_x25 * (-CHASTE_CONST(123.20189777564919) + CHASTE_CONST(1.8954138119330646) * var_chaste_interface__membrane__V); const double var_x27 = var_x19 * var_x26; const double var_x28 = var_x14 * var_x7; - const double var_x29 = var_x4 + 0.75816552477322585 * var_x28; + const double var_x29 = var_x4 + CHASTE_CONST(0.75816552477322585) * var_x28; const double var_x30 = var_x19 * var_x29; - const double var_x31 = var_x8 * pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 2) * mParameters[4]; + const double var_x31 = var_x8 * CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 2) * mParameters[4]; const double var_x32 = var_x14 * var_x31; const double var_x33 = 1 / var_x18; - const double var_x34 = 1 / (1.9099999999999999 + 2.0899999999999999 * var_x33); - const double var_x35 = exp(50 - var_x16); + const double var_x34 = 1 / (CHASTE_CONST(1.9099999999999999) + CHASTE_CONST(2.0899999999999999) * var_x33); + const double var_x35 = CHASTE_MATH::Exp(50 - var_x16); const double var_x36 = 1 + var_x35; - const double var_x37 = var_x35 / pow(var_x36, 2); + const double var_x37 = var_x35 / CHASTE_MATH::Pow(var_x36, 2); const double var_x38 = var_x34 * var_x37; - const double var_x39 = (1 - 1 / var_x36 - var_chaste_interface__Ca_release_current_from_JSR_v_gate__v) / pow((0.9138755980861244 + var_x33), 2); + const double var_x39 = (1 - 1 / var_x36 - var_chaste_interface__Ca_release_current_from_JSR_v_gate__v) / CHASTE_MATH::Pow((CHASTE_CONST(0.9138755980861244) + var_x33), 2); const double var_x40 = var_x19 * var_x39; - const double var_x41 = 33769.333888688605 * var_x40; - const double var_x42 = 0.47846889952153115 * var_x39; + const double var_x41 = CHASTE_CONST(33769.333888688605) * var_x40; + const double var_x42 = CHASTE_CONST(0.47846889952153115) * var_x39; const double var_x43 = 1 / mParameters[8]; - const double var_x44 = 0.0023800000000000002 + var_chaste_interface__intracellular_ion_concentrations__Ca_i; - const double var_x45 = 0.00050000000000000001 + var_chaste_interface__intracellular_ion_concentrations__Ca_i; - const double var_x46 = pow(var_x45, (-2)); - const double var_x47 = 1 + 0.00011900000000000002 / pow(var_x44, 2) + 3.5000000000000004e-5 * var_x46; + const double var_x44 = CHASTE_CONST(0.0023800000000000002) + var_chaste_interface__intracellular_ion_concentrations__Ca_i; + const double var_x45 = CHASTE_CONST(0.00050000000000000001) + var_chaste_interface__intracellular_ion_concentrations__Ca_i; + const double var_x46 = CHASTE_MATH::Pow(var_x45, (-2)); + const double var_x47 = 1 + CHASTE_CONST(0.00011900000000000002) / CHASTE_MATH::Pow(var_x44, 2) + CHASTE_CONST(3.5000000000000004e-5) * var_x46; const double var_x48 = 1 / var_x47; const double var_x49 = var_x48 * mParameters[9]; const double var_x50 = 1 / var_chaste_interface__intracellular_ion_concentrations__Ca_i; - const double var_x51 = 1.0426301393780176e-7 * mParameters[9] / var_x45; - const double var_x52 = 1 + 0.00092000000000000003 * var_x50; - const double var_x53 = mParameters[2] / (pow(var_x52, 2) * pow(var_chaste_interface__intracellular_ion_concentrations__Ca_i, 2)); - const double var_x54 = 0.0070588235294117632 * var_x3; + const double var_x51 = CHASTE_CONST(1.0426301393780176e-7) * mParameters[9] / var_x45; + const double var_x52 = 1 + CHASTE_CONST(0.00092000000000000003) * var_x50; + const double var_x53 = mParameters[2] / (CHASTE_MATH::Pow(var_x52, 2) * CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Ca_i, 2)); + const double var_x54 = CHASTE_CONST(0.0070588235294117632) * var_x3; const double var_x55 = mParameters[0] * mParameters[2]; - const double var_x56 = 0.80000000000000004 + var_chaste_interface__intracellular_ion_concentrations__Ca_rel; - const double var_x57 = pow(var_x56, (-2)); + const double var_x56 = CHASTE_CONST(0.80000000000000004) + var_chaste_interface__intracellular_ion_concentrations__Ca_rel; + const double var_x57 = CHASTE_MATH::Pow(var_x56, (-2)); const double var_x58 = 1 / (1 + 8 * var_x57); - const double var_x59 = 2.0255711761517402e-5 * mParameters[9] / var_chaste_interface__intracellular_ion_concentrations__K_i; + const double var_x59 = CHASTE_CONST(2.0255711761517402e-5) * mParameters[9] / var_chaste_interface__intracellular_ion_concentrations__K_i; const double var_x60 = 1 / var_chaste_interface__intracellular_ion_concentrations__Na_i; - const double var_x61 = pow(var_x60, 1.5); + const double var_x61 = CHASTE_MATH::Pow(var_x60, CHASTE_CONST(1.5)); const double var_x62 = var_x60 * mParameters[9]; - const double var_x63 = var_x61 * var_x62 * mParameters[5] / ((1.5 + mParameters[5]) * pow((0.031622776601683791 + var_x61), 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))); + const double var_x63 = var_x61 * var_x62 * mParameters[5] / ((CHASTE_CONST(1.5) + mParameters[5]) * CHASTE_MATH::Pow((CHASTE_CONST(0.031622776601683791) + var_x61), 2) * (1 + CHASTE_CONST(0.1245) * CHASTE_MATH::Exp(-CHASTE_CONST(0.0037435192301797956) * var_chaste_interface__membrane__V) + CHASTE_CONST(0.036499999999999998) * (-CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * CHASTE_MATH::Exp(CHASTE_CONST(0.01485884101040119) * mParameters[6])) * CHASTE_MATH::Exp(-CHASTE_CONST(0.037435192301797954) * var_chaste_interface__membrane__V))); - rJacobian[0][0] = 1.0 - (mDt * (-0.125 + 17644.476956839797 * var_x21)); + rJacobian[0][0] = 1.0 - (mDt * (-CHASTE_CONST(0.125) + CHASTE_CONST(17644.476956839797) * var_x21)); rJacobian[0][1] = -(mDt * (var_x22 * var_x23)); - rJacobian[0][2] = -(mDt * (-0.125 * var_x27)); - rJacobian[0][3] = -(mDt * (-0.125 * var_x30)); + rJacobian[0][2] = -(mDt * (-CHASTE_CONST(0.125) * var_x27)); + rJacobian[0][3] = -(mDt * (-CHASTE_CONST(0.125) * var_x30)); rJacobian[0][4] = -(mDt * (var_x23 * var_x3)); rJacobian[0][5] = 0.0; rJacobian[0][6] = 0.0; - rJacobian[0][7] = -(mDt * (0.28431207178995971 * var_x19 * var_x32)); - rJacobian[1][0] = -(mDt * (-141155.81565471838 * var_x20 * var_x38 - 67538.66777737721 * var_x21 * var_x39)); - rJacobian[1][1] = 1.0 - (mDt * (var_x34 * (-1 - 70577.907827359188 * var_x22 * var_x37) - var_x22 * var_x41)); + rJacobian[0][7] = -(mDt * (CHASTE_CONST(0.28431207178995971) * var_x19 * var_x32)); + rJacobian[1][0] = -(mDt * (-CHASTE_CONST(141155.81565471838) * var_x20 * var_x38 - CHASTE_CONST(67538.66777737721) * var_x21 * var_x39)); + rJacobian[1][1] = 1.0 - (mDt * (var_x34 * (-1 - CHASTE_CONST(70577.907827359188) * var_x22 * var_x37) - var_x22 * var_x41)); rJacobian[1][2] = -(mDt * (var_x26 * var_x38 + var_x27 * var_x42)); rJacobian[1][3] = -(mDt * (var_x29 * var_x38 + var_x30 * var_x42)); rJacobian[1][4] = -(mDt * (-var_x3 * var_x41 - var_x38 * var_x4)); rJacobian[1][5] = 0.0; rJacobian[1][6] = 0.0; - rJacobian[1][7] = -(mDt * (-1.0882758728802286 * var_x32 * var_x40 - 2.2744965743196777 * var_x32 * var_x38)); + rJacobian[1][7] = -(mDt * (-CHASTE_CONST(1.0882758728802286) * var_x32 * var_x40 - CHASTE_CONST(2.2744965743196777) * var_x32 * var_x38)); rJacobian[2][0] = 0.0; rJacobian[2][1] = 0.0; rJacobian[2][2] = 1.0 - (mDt * (-var_x43)); - rJacobian[2][3] = -(mDt * (-0.00035 * var_x43 / pow((0.00035 + var_chaste_interface__intracellular_ion_concentrations__Ca_i), 2))); + rJacobian[2][3] = -(mDt * (-CHASTE_CONST(0.00035) * var_x43 / CHASTE_MATH::Pow((CHASTE_CONST(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_x20 * var_x48)); - rJacobian[3][1] = -(mDt * (0.0070588235294117632 * var_x22 * var_x48)); - rJacobian[3][2] = -(mDt * (var_x24 * var_x49 * (2.4643985112571321e-5 - 3.7913823250109726e-7 * var_chaste_interface__membrane__V))); - rJacobian[3][3] = 1.0 - (mDt * (var_x48 * (-var_x51 - var_x54 - 7.4682352941176462e-5 * var_x53 - 7.5827646500219453e-7 * var_x28 - 5.7273025005690459e-9 * var_x50 * mParameters[9] + 1.0426301393780176e-7 * var_x46 * var_chaste_interface__intracellular_ion_concentrations__Ca_i * mParameters[9]) + (0.00023800000000000004 / pow(var_x44, 3) + 7.0000000000000007e-5 / pow(var_x45, 3)) * (-var_x51 * var_chaste_interface__intracellular_ion_concentrations__Ca_i - 0.081176470588235281 * mParameters[2] / var_x52 - 4.2880534095874102e-10 * (-13.356415961992688 * log(var_x50 * mParameters[4]) + var_chaste_interface__membrane__V) * mParameters[9] + 0.0054117647058823529 * mParameters[0] * mParameters[2] * var_chaste_interface__intracellular_ion_concentrations__Ca_up - 3.7913823250109726e-7 * var_x15 * var_x25 * var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca + 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_x47, 2))); + rJacobian[3][0] = -(mDt * (CHASTE_CONST(0.014117647058823526) * var_x20 * var_x48)); + rJacobian[3][1] = -(mDt * (CHASTE_CONST(0.0070588235294117632) * var_x22 * var_x48)); + rJacobian[3][2] = -(mDt * (var_x24 * var_x49 * (CHASTE_CONST(2.4643985112571321e-5) - CHASTE_CONST(3.7913823250109726e-7) * var_chaste_interface__membrane__V))); + rJacobian[3][3] = 1.0 - (mDt * (var_x48 * (-var_x51 - var_x54 - CHASTE_CONST(7.4682352941176462e-5) * var_x53 - CHASTE_CONST(7.5827646500219453e-7) * var_x28 - CHASTE_CONST(5.7273025005690459e-9) * var_x50 * mParameters[9] + CHASTE_CONST(1.0426301393780176e-7) * var_x46 * var_chaste_interface__intracellular_ion_concentrations__Ca_i * mParameters[9]) + (CHASTE_CONST(0.00023800000000000004) / CHASTE_MATH::Pow(var_x44, 3) + CHASTE_CONST(7.0000000000000007e-5) / CHASTE_MATH::Pow(var_x45, 3)) * (-var_x51 * var_chaste_interface__intracellular_ion_concentrations__Ca_i - CHASTE_CONST(0.081176470588235281) * mParameters[2] / var_x52 - CHASTE_CONST(4.2880534095874102e-10) * (-CHASTE_CONST(13.356415961992688) * CHASTE_MATH::Log(var_x50 * mParameters[4]) + var_chaste_interface__membrane__V) * mParameters[9] + CHASTE_CONST(0.0054117647058823529) * mParameters[0] * mParameters[2] * var_chaste_interface__intracellular_ion_concentrations__Ca_up - CHASTE_CONST(3.7913823250109726e-7) * var_x15 * var_x25 * var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca + CHASTE_CONST(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 + CHASTE_CONST(7.5827646500219453e-7) * var_x10 * var_x11 * var_x12 * var_x9 * mParameters[16] * mParameters[9]) / CHASTE_MATH::Pow(var_x47, 2))); rJacobian[3][4] = -(mDt * (var_x48 * var_x54)); - rJacobian[3][5] = -(mDt * (0.0054117647058823529 * var_x48 * var_x55)); + rJacobian[3][5] = -(mDt * (CHASTE_CONST(0.0054117647058823529) * var_x48 * var_x55)); rJacobian[3][6] = 0.0; - rJacobian[3][7] = -(mDt * (2.2748293950065834e-6 * var_x13 * var_x31 * var_x49)); + rJacobian[3][7] = -(mDt * (CHASTE_CONST(2.2748293950065834e-6) * var_x13 * var_x31 * var_x49)); rJacobian[4][0] = -(mDt * (-2 * var_x20 * var_x58)); rJacobian[4][1] = -(mDt * (-var_x22 * var_x58)); rJacobian[4][2] = 0.0; rJacobian[4][3] = -(mDt * (var_x3 * var_x58)); - rJacobian[4][4] = 1.0 - (mDt * (var_x58 * (-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_x56, 3) * pow((0.125 + var_x57), 2)))); - rJacobian[4][5] = -(mDt * (0.0055555555555555558 * var_x58)); + rJacobian[4][4] = 1.0 - (mDt * (var_x58 * (-CHASTE_CONST(0.0055555555555555558) - var_x3) + CHASTE_CONST(0.25) * (CHASTE_CONST(0.0055555555555555558) * var_chaste_interface__intracellular_ion_concentrations__Ca_up - CHASTE_CONST(0.0055555555555555558) * var_chaste_interface__intracellular_ion_concentrations__Ca_rel - var_x0 * var_x3) / (CHASTE_MATH::Pow(var_x56, 3) * CHASTE_MATH::Pow((CHASTE_CONST(0.125) + var_x57), 2)))); + rJacobian[4][5] = -(mDt * (CHASTE_CONST(0.0055555555555555558) * var_x58)); 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_x53)); - rJacobian[5][4] = -(mDt * (0.00048309178743961351)); - rJacobian[5][5] = 1.0 - (mDt * (-0.00048309178743961351 - 0.066666666666666666 * var_x55)); + rJacobian[5][3] = -(mDt * (CHASTE_CONST(0.00092000000000000003) * var_x53)); + rJacobian[5][4] = -(mDt * (CHASTE_CONST(0.00048309178743961351))); + rJacobian[5][5] = 1.0 - (mDt * (-CHASTE_CONST(0.00048309178743961351) - CHASTE_CONST(0.066666666666666666) * var_x55)); rJacobian[5][6] = 0.0; rJacobian[5][7] = 0.0; rJacobian[6][0] = 0.0; @@ -488,23 +490,23 @@ bool Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler::registered rJacobian[6][3] = 0.0; rJacobian[6][4] = 0.0; rJacobian[6][5] = 0.0; - rJacobian[6][6] = 1.0 - (mDt * ((-var_x59 * mParameters[13] / (1 + exp(5.6000000000000005 + 0.070000000000000007 * var_chaste_interface__membrane__V)) - var_x59 * pow(var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs, 2) * mParameters[15] - var_x59 * 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_x59 * 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_x59 * 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_x63 * mParameters[3])); + rJacobian[6][6] = 1.0 - (mDt * ((-var_x59 * mParameters[13] / (1 + CHASTE_MATH::Exp(CHASTE_CONST(5.6000000000000005) + CHASTE_CONST(0.070000000000000007) * var_chaste_interface__membrane__V)) - var_x59 * CHASTE_MATH::Pow(var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs, 2) * mParameters[15] - var_x59 * mParameters[14] * var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr / (1 + CHASTE_MATH::Exp(CHASTE_CONST(0.66964285714285721) + CHASTE_CONST(0.044642857142857144) * var_chaste_interface__membrane__V)) - var_x59 * CHASTE_MATH::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_x59 * CHASTE_MATH::Pow(var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ua_gate__ua, 3) * (CHASTE_CONST(0.0050000000000000001) + CHASTE_CONST(0.050000000000000003) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(1.1538461538461537) - CHASTE_CONST(0.076923076923076927) * var_chaste_interface__membrane__V))) * var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ui_gate__ui) * mParameters[3])); + rJacobian[6][7] = -(mDt * (CHASTE_CONST(4.3114284380885533e-8) * var_x63 * 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_x28 * mParameters[3])); + rJacobian[7][3] = -(mDt * (CHASTE_CONST(2.2748293950065834e-6) * var_x28 * 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_x63 - 6.8244881850197506e-6 * var_x32 - 1.3661211601158392e-8 * var_x62 - 2.0255711761517402e-5 * var_x62 * 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])); + rJacobian[7][7] = 1.0 - (mDt * ((-CHASTE_CONST(6.4671426571328296e-8) * var_x63 - CHASTE_CONST(6.8244881850197506e-6) * var_x32 - CHASTE_CONST(1.3661211601158392e-8) * var_x62 - CHASTE_CONST(2.0255711761517402e-5) * var_x62 * CHASTE_MATH::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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -537,40 +539,40 @@ bool Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler::registered 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_Na_Ca_exchanger_current__K_mCa = CHASTE_CONST(1.3799999999999999); // millimolar + const double var_Na_Ca_exchanger_current__K_mNa = CHASTE_CONST(87.5); // millimolar + const double var_Na_Ca_exchanger_current__K_sat = CHASTE_CONST(0.10000000000000001); // dimensionless + const double var_Na_Ca_exchanger_current__gamma = CHASTE_CONST(0.34999999999999998); // dimensionless + const double var_background_currents__g_B_Ca = CHASTE_CONST(0.0011310000000000001); // nanoS_per_picoF + const double var_background_currents__g_B_Na = CHASTE_CONST(0.00067443750000000002); // nanoS_per_picoF + const double var_membrane__Cm_converted = CHASTE_CONST(9.9999999999999995e-7) * mParameters[9]; // uF + const double var_membrane__F = CHASTE_CONST(96.486699999999999); // coulomb_per_millimole + const double var_membrane__R = CHASTE_CONST(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_membrane__i_st_converted = CHASTE_STIM(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_membrane__i_st = 1000000 * var_membrane__Cm_converted * var_membrane__i_st_converted / CHASTE_CAP(); // picoA + const double var_sarcolemmal_calcium_pump_current__i_CaP_max = CHASTE_CONST(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 / (CHASTE_CONST(0.00050000000000000001) + var_chaste_interface__intracellular_ion_concentrations__Ca_i); // picoA + const double var_sodium_potassium_pump__Km_K_o = CHASTE_CONST(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_sodium_potassium_pump__i_NaK_max = CHASTE_CONST(0.59933873999999998); // picoA_per_picoF + const double var_background_currents__E_Ca = CHASTE_CONST(0.5) * var_membrane__R * var_membrane__T * CHASTE_MATH::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_Na_Ca_exchanger_current__i_NaCa = (CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[4] * CHASTE_MATH::Exp(var_Na_Ca_exchanger_current__gamma * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - CHASTE_MATH::Pow(mParameters[6], 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i * CHASTE_MATH::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 * CHASTE_MATH::Exp((-1 + var_Na_Ca_exchanger_current__gamma) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (CHASTE_MATH::Pow(var_Na_Ca_exchanger_current__K_mNa, 3) + CHASTE_MATH::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 * CHASTE_MATH::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 var_fast_sodium_current__i_Na = CHASTE_MATH::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 = -CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * CHASTE_MATH::Exp(CHASTE_CONST(0.01485884101040119) * mParameters[6]); // dimensionless + const double var_sodium_potassium_pump__f_NaK = 1 / (1 + CHASTE_CONST(0.1245) * CHASTE_MATH::Exp(-CHASTE_CONST(0.10000000000000001) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) + CHASTE_CONST(0.036499999999999998) * var_sodium_potassium_pump__sigma * CHASTE_MATH::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 + CHASTE_MATH::Pow((var_sodium_potassium_pump__Km_Na_i / var_chaste_interface__intracellular_ion_concentrations__Na_i), CHASTE_CONST(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 * CHASTE_MATH::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 + CHASTE_MATH::Exp(CHASTE_CONST(0.66964285714285721) + CHASTE_CONST(0.044642857142857144) * var_chaste_interface__membrane__V)); // picoA + const double var_slow_delayed_rectifier_K_current__i_Ks = CHASTE_MATH::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 + CHASTE_MATH::Exp(CHASTE_CONST(5.6000000000000005) + CHASTE_CONST(0.070000000000000007) * var_chaste_interface__membrane__V)); // picoA + const double var_transient_outward_K_current__i_to = CHASTE_MATH::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 = CHASTE_CONST(0.0050000000000000001) + CHASTE_CONST(0.050000000000000003) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(1.1538461538461537) - CHASTE_CONST(0.076923076923076927) * var_chaste_interface__membrane__V)); // nanoS_per_picoF + const double var_ultrarapid_delayed_rectifier_K_current__i_Kur = CHASTE_MATH::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; @@ -580,7 +582,7 @@ bool Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler::registered { // Time units: millisecond std::vector& rY = rGetStateVariables(); - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -607,49 +609,49 @@ bool Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler::registered 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_Ca_release_current_from_JSR_w_gate__tau_w = ((CHASTE_MATH::Abs(-CHASTE_CONST(7.9000000000000004) + var_chaste_interface__membrane__V) < CHASTE_CONST(1.0e-10)) ? (CHASTE_CONST(0.92307692307692313)) : (6 * (1 - CHASTE_MATH::Exp(CHASTE_CONST(1.5800000000000001) - CHASTE_CONST(0.20000000000000001) * var_chaste_interface__membrane__V)) / ((1 + CHASTE_CONST(0.29999999999999999) * CHASTE_MATH::Exp(CHASTE_CONST(1.5800000000000001) - CHASTE_CONST(0.20000000000000001) * var_chaste_interface__membrane__V)) * (-CHASTE_CONST(7.9000000000000004) + var_chaste_interface__membrane__V)))); + const double var_Ca_release_current_from_JSR_w_gate__w_infinity = 1 - 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(2.3529411764705883) - CHASTE_CONST(0.058823529411764705) * var_chaste_interface__membrane__V)); + const double var_L_type_Ca_channel_d_gate__d_infinity = 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(1.25) - CHASTE_CONST(0.125) * var_chaste_interface__membrane__V)); + const double var_L_type_Ca_channel_d_gate__tau_d = ((CHASTE_MATH::Abs(10 + var_chaste_interface__membrane__V) < CHASTE_CONST(1.0e-10)) ? (CHASTE_CONST(4.5789999999999997) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(1.6025641025641024) - CHASTE_CONST(0.16025641025641024) * var_chaste_interface__membrane__V))) : (CHASTE_CONST(28.571428571428569) * (1 - CHASTE_MATH::Exp(-CHASTE_CONST(1.6025641025641024) - CHASTE_CONST(0.16025641025641024) * var_chaste_interface__membrane__V)) / ((1 + CHASTE_MATH::Exp(-CHASTE_CONST(1.6025641025641024) - CHASTE_CONST(0.16025641025641024) * var_chaste_interface__membrane__V)) * (10 + var_chaste_interface__membrane__V)))); + const double var_L_type_Ca_channel_f_gate__f_infinity = CHASTE_MATH::Exp(-CHASTE_CONST(4.057971014492753) - CHASTE_CONST(0.14492753623188406) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(4.057971014492753) - CHASTE_CONST(0.14492753623188406) * var_chaste_interface__membrane__V)); + const double var_L_type_Ca_channel_f_gate__tau_f = 9 / (CHASTE_CONST(0.02) + CHASTE_CONST(0.019699999999999999) * CHASTE_MATH::Exp(-CHASTE_CONST(0.113569) * CHASTE_MATH::Pow((1 + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V), 2))); + const double var_fast_sodium_current_h_gate__alpha_h = ((var_chaste_interface__membrane__V < -40) ? (CHASTE_CONST(0.13500000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(11.764705882352942) + CHASTE_CONST(0.14705882352941177) * mParameters[12] - CHASTE_CONST(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 * CHASTE_MATH::Exp(CHASTE_CONST(0.34999999999999998) * var_chaste_interface__membrane__V - CHASTE_CONST(0.34999999999999998) * mParameters[12]) + CHASTE_CONST(3.5600000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.079000000000000001) * var_chaste_interface__membrane__V - CHASTE_CONST(0.079000000000000001) * mParameters[12])) : (CHASTE_CONST(7.6923076923076916) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.96036036036036043) + CHASTE_CONST(0.0900900900900901) * mParameters[12] - CHASTE_CONST(0.0900900900900901) * var_chaste_interface__membrane__V)))); + const double var_fast_sodium_current_h_gate__h_inf = CHASTE_CONST(0.01) * mParameters[11] + (1 - CHASTE_CONST(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__alpha_j = ((var_chaste_interface__membrane__V < -40) ? ((CHASTE_CONST(37.780000000000001) + var_chaste_interface__membrane__V) * (-127140 * CHASTE_MATH::Exp(CHASTE_CONST(0.24440000000000001) * var_chaste_interface__membrane__V - CHASTE_CONST(0.24440000000000001) * mParameters[12]) - CHASTE_CONST(3.4740000000000003e-5) * CHASTE_MATH::Exp(CHASTE_CONST(0.043909999999999998) * mParameters[12] - CHASTE_CONST(0.043909999999999998) * var_chaste_interface__membrane__V)) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(24.640530000000002) + CHASTE_CONST(0.311) * var_chaste_interface__membrane__V - CHASTE_CONST(0.311) * mParameters[12]))) : (0)); + const double var_fast_sodium_current_j_gate__beta_j = ((var_chaste_interface__membrane__V < -40) ? (CHASTE_CONST(0.1212) * CHASTE_MATH::Exp(CHASTE_CONST(0.01052) * mParameters[12] - CHASTE_CONST(0.01052) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(5.5312920000000005) + CHASTE_CONST(0.13780000000000001) * mParameters[12] - CHASTE_CONST(0.13780000000000001) * var_chaste_interface__membrane__V))) : (CHASTE_CONST(0.29999999999999999) * CHASTE_MATH::Exp(CHASTE_CONST(2.5349999999999999e-7) * mParameters[12] - CHASTE_CONST(2.5349999999999999e-7) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(3.2000000000000002) + CHASTE_CONST(0.10000000000000001) * mParameters[12] - CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V)))); + const double var_fast_sodium_current_j_gate__j_inf = CHASTE_CONST(0.01) * mParameters[11] + (1 - CHASTE_CONST(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__alpha_m = ((var_chaste_interface__membrane__V == (-CHASTE_CONST(47.130000000000003))) ? (CHASTE_CONST(3.2000000000000002)) : (CHASTE_CONST(0.32000000000000001) * (CHASTE_CONST(47.130000000000003) + var_chaste_interface__membrane__V) / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(4.7130000000000001) - CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V)))); + const double var_fast_sodium_current_m_gate__beta_m = CHASTE_CONST(0.080000000000000002) * CHASTE_MATH::Exp(-CHASTE_CONST(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__alpha_xr = ((CHASTE_MATH::Abs(CHASTE_CONST(14.1) + var_chaste_interface__membrane__V) < CHASTE_CONST(1.0e-10)) ? (CHASTE_CONST(0.0015)) : (CHASTE_CONST(0.00029999999999999997) * (CHASTE_CONST(14.1) + var_chaste_interface__membrane__V) / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(2.8199999999999998) - CHASTE_CONST(0.20000000000000001) * var_chaste_interface__membrane__V)))); + const double var_rapid_delayed_rectifier_K_current_xr_gate__beta_xr = ((CHASTE_MATH::Abs(-CHASTE_CONST(3.3328000000000002) + var_chaste_interface__membrane__V) < CHASTE_CONST(1.0e-10)) ? (CHASTE_CONST(0.00037836118)) : (CHASTE_CONST(7.3898000000000003e-5) * (-CHASTE_CONST(3.3328000000000002) + var_chaste_interface__membrane__V) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.65046743564221166) + CHASTE_CONST(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_rapid_delayed_rectifier_K_current_xr_gate__xr_infinity = 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.1692307692307691) - CHASTE_CONST(0.15384615384615385) * var_chaste_interface__membrane__V)); + const double var_slow_delayed_rectifier_K_current_xs_gate__alpha_xs = ((CHASTE_MATH::Abs(-CHASTE_CONST(19.899999999999999) + var_chaste_interface__membrane__V) < CHASTE_CONST(1.0e-10)) ? (CHASTE_CONST(0.00068000000000000005)) : (CHASTE_CONST(4.0000000000000003e-5) * (-CHASTE_CONST(19.899999999999999) + var_chaste_interface__membrane__V) / (1 - CHASTE_MATH::Exp(CHASTE_CONST(1.1705882352941175) - CHASTE_CONST(0.058823529411764705) * var_chaste_interface__membrane__V)))); + const double var_slow_delayed_rectifier_K_current_xs_gate__beta_xs = ((CHASTE_MATH::Abs(-CHASTE_CONST(19.899999999999999) + var_chaste_interface__membrane__V) < CHASTE_CONST(1.0e-10)) ? (CHASTE_CONST(0.00031500000000000001)) : (CHASTE_CONST(3.4999999999999997e-5) * (-CHASTE_CONST(19.899999999999999) + var_chaste_interface__membrane__V) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.2111111111111108) + CHASTE_CONST(0.1111111111111111) * var_chaste_interface__membrane__V)))); + const double var_slow_delayed_rectifier_K_current_xs_gate__tau_xs = CHASTE_CONST(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 = CHASTE_MATH::Pow((1 + CHASTE_MATH::Exp(CHASTE_CONST(1.5669291338582676) - CHASTE_CONST(0.07874015748031496) * var_chaste_interface__membrane__V)), (-CHASTE_CONST(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__alpha_oa = CHASTE_CONST(0.65000000000000002) / (CHASTE_MATH::Exp(CHASTE_CONST(0.50847457627118642) - CHASTE_CONST(0.016949152542372881) * var_chaste_interface__membrane__V) + CHASTE_MATH::Exp(-CHASTE_CONST(1.1764705882352942) - CHASTE_CONST(0.11764705882352941) * var_chaste_interface__membrane__V)); + const double var_transient_outward_K_current_oa_gate__beta_oa = CHASTE_CONST(0.65000000000000002) / (CHASTE_CONST(2.5) + CHASTE_MATH::Exp(CHASTE_CONST(4.8235294117647056) + CHASTE_CONST(0.058823529411764705) * var_chaste_interface__membrane__V)); + const double var_transient_outward_K_current_oa_gate__oa_infinity = 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(1.1670467502850628) - CHASTE_CONST(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__alpha_oi = 1 / (CHASTE_CONST(18.530000000000001) + CHASTE_MATH::Exp(CHASTE_CONST(10.383561643835618) + CHASTE_CONST(0.091324200913242018) * var_chaste_interface__membrane__V)); + const double var_transient_outward_K_current_oi_gate__beta_oi = 1 / (CHASTE_CONST(35.560000000000002) + CHASTE_MATH::Exp(-CHASTE_CONST(0.16935483870967738) - CHASTE_CONST(0.13440860215053763) * var_chaste_interface__membrane__V)); + const double var_transient_outward_K_current_oi_gate__oi_infinity = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(8.1320754716981138) + CHASTE_CONST(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__alpha_ua = CHASTE_CONST(0.65000000000000002) / (CHASTE_MATH::Exp(CHASTE_CONST(0.50847457627118642) - CHASTE_CONST(0.016949152542372881) * var_chaste_interface__membrane__V) + CHASTE_MATH::Exp(-CHASTE_CONST(1.1764705882352942) - CHASTE_CONST(0.11764705882352941) * var_chaste_interface__membrane__V)); + const double var_ultrarapid_delayed_rectifier_K_current_ua_gate__beta_ua = CHASTE_CONST(0.65000000000000002) / (CHASTE_CONST(2.5) + CHASTE_MATH::Exp(CHASTE_CONST(4.8235294117647056) + CHASTE_CONST(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_ua_gate__ua_infinity = 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(3.15625) - CHASTE_CONST(0.10416666666666667) * var_chaste_interface__membrane__V)); + const double var_ultrarapid_delayed_rectifier_K_current_ui_gate__alpha_ui = 1 / (21 + CHASTE_MATH::Exp(CHASTE_CONST(6.6071428571428568) - CHASTE_CONST(0.035714285714285712) * var_chaste_interface__membrane__V)); + const double var_ultrarapid_delayed_rectifier_K_current_ui_gate__beta_ui = 1 / CHASTE_MATH::Exp(CHASTE_CONST(9.875) - CHASTE_CONST(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)); + const double var_ultrarapid_delayed_rectifier_K_current_ui_gate__ui_infinity = 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(3.6189956331877728) + CHASTE_CONST(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)); @@ -682,7 +684,7 @@ bool Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler::registered { // Inputs: // Time units: millisecond - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -720,39 +722,39 @@ bool Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler::registered // 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_Na_Ca_exchanger_current__K_mCa = CHASTE_CONST(1.3799999999999999); // millimolar + const double var_Na_Ca_exchanger_current__K_mNa = CHASTE_CONST(87.5); // millimolar + const double var_Na_Ca_exchanger_current__K_sat = CHASTE_CONST(0.10000000000000001); // dimensionless + const double var_Na_Ca_exchanger_current__gamma = CHASTE_CONST(0.34999999999999998); // dimensionless + const double var_Ca_release_current_from_JSR__i_rel = CHASTE_MATH::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 = CHASTE_CONST(9.9999999999999995e-7) * mParameters[9]; // uF + const double var_membrane__F = CHASTE_CONST(96.486699999999999); // coulomb_per_millimole + const double var_membrane__R = CHASTE_CONST(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_L_type_Ca_channel__i_Ca_L_converted = CHASTE_CONST(9.9999999999999995e-7) * CHASTE_CAP() * 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 / (CHASTE_CONST(0.02) + CHASTE_CONST(0.019699999999999999) * CHASTE_MATH::Exp(-CHASTE_CONST(0.113569) * CHASTE_MATH::Pow((1 + CHASTE_CONST(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) ? (CHASTE_CONST(0.13500000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(11.764705882352942) + CHASTE_CONST(0.14705882352941177) * mParameters[12] - CHASTE_CONST(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 * CHASTE_MATH::Exp(CHASTE_CONST(0.34999999999999998) * var_chaste_interface__membrane__V - CHASTE_CONST(0.34999999999999998) * mParameters[12]) + CHASTE_CONST(3.5600000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.079000000000000001) * var_chaste_interface__membrane__V - CHASTE_CONST(0.079000000000000001) * mParameters[12])) : (CHASTE_CONST(7.6923076923076916) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.96036036036036043) + CHASTE_CONST(0.0900900900900901) * mParameters[12] - CHASTE_CONST(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__alpha_j = ((var_chaste_interface__membrane__V < -40) ? ((CHASTE_CONST(37.780000000000001) + var_chaste_interface__membrane__V) * (-127140 * CHASTE_MATH::Exp(CHASTE_CONST(0.24440000000000001) * var_chaste_interface__membrane__V - CHASTE_CONST(0.24440000000000001) * mParameters[12]) - CHASTE_CONST(3.4740000000000003e-5) * CHASTE_MATH::Exp(CHASTE_CONST(0.043909999999999998) * mParameters[12] - CHASTE_CONST(0.043909999999999998) * var_chaste_interface__membrane__V)) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(24.640530000000002) + CHASTE_CONST(0.311) * var_chaste_interface__membrane__V - CHASTE_CONST(0.311) * mParameters[12]))) : (0)); // per_millisecond + const double var_fast_sodium_current_j_gate__beta_j = ((var_chaste_interface__membrane__V < -40) ? (CHASTE_CONST(0.1212) * CHASTE_MATH::Exp(CHASTE_CONST(0.01052) * mParameters[12] - CHASTE_CONST(0.01052) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(5.5312920000000005) + CHASTE_CONST(0.13780000000000001) * mParameters[12] - CHASTE_CONST(0.13780000000000001) * var_chaste_interface__membrane__V))) : (CHASTE_CONST(0.29999999999999999) * CHASTE_MATH::Exp(CHASTE_CONST(2.5349999999999999e-7) * mParameters[12] - CHASTE_CONST(2.5349999999999999e-7) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(3.2000000000000002) + CHASTE_CONST(0.10000000000000001) * mParameters[12] - CHASTE_CONST(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 + const double var_membrane__i_st_converted = CHASTE_STIM(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_Na_Ca_exchanger_current__i_NaCa = (CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[4] * CHASTE_MATH::Exp(var_Na_Ca_exchanger_current__gamma * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - CHASTE_MATH::Pow(mParameters[6], 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i * CHASTE_MATH::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 * CHASTE_MATH::Exp((-1 + var_Na_Ca_exchanger_current__gamma) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (CHASTE_MATH::Pow(var_Na_Ca_exchanger_current__K_mNa, 3) + CHASTE_MATH::Pow(mParameters[6], 3)) * (var_Na_Ca_exchanger_current__K_mCa + mParameters[4])); // picoA + const double var_Na_Ca_exchanger_current__i_NaCa_converted = CHASTE_CONST(9.9999999999999995e-7) * CHASTE_CAP() * 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 * CHASTE_MATH::Log(mParameters[6] / var_chaste_interface__intracellular_ion_concentrations__Na_i) / var_membrane__F; // millivolt + const double var_fast_sodium_current__i_Na = CHASTE_MATH::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 = CHASTE_CONST(9.9999999999999995e-7) * CHASTE_CAP() * 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 * CHASTE_MATH::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 + CHASTE_MATH::Exp(CHASTE_CONST(0.66964285714285721) + CHASTE_CONST(0.044642857142857144) * var_chaste_interface__membrane__V)); // picoA + const double var_rapid_delayed_rectifier_K_current__i_Kr_converted = CHASTE_CONST(9.9999999999999995e-7) * CHASTE_CAP() * 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 = CHASTE_MATH::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 = CHASTE_CONST(9.9999999999999995e-7) * CHASTE_CAP() * 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 + CHASTE_MATH::Exp(CHASTE_CONST(5.6000000000000005) + CHASTE_CONST(0.070000000000000007) * var_chaste_interface__membrane__V)); // picoA + const double var_time_independent_potassium_current__i_K1_converted = CHASTE_CONST(9.9999999999999995e-7) * CHASTE_CAP() * var_time_independent_potassium_current__i_K1 / var_membrane__Cm_converted; // uA_per_cm2 + const double var_transient_outward_K_current__i_to = CHASTE_MATH::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 = CHASTE_CONST(9.9999999999999995e-7) * CHASTE_CAP() * 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; diff --git a/chaste_codegen/data/tests/chaste_reference_models/BE/dynamic_courtemanche_ramirez_nattel_1998.hpp b/chaste_codegen/data/tests/chaste_reference_models/BE/dynamic_courtemanche_ramirez_nattel_1998.hpp index 40e71e175..dab68f8af 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/BE/dynamic_courtemanche_ramirez_nattel_1998.hpp +++ b/chaste_codegen/data/tests/chaste_reference_models/BE/dynamic_courtemanche_ramirez_nattel_1998.hpp @@ -17,8 +17,16 @@ #include #include "AbstractDynamicallyLoadableEntity.hpp" #include "AbstractStimulusFunction.hpp" +#if USING_DEVICE_COMPILER +#include "StimulusEvaluatorCuda.hpp" +#endif #include "AbstractBackwardEulerCardiacCell.hpp" +#if USING_DEVICE_COMPILER +template +class BackwardEulerKernelLauncher; // Forward declare to hide CUDA-specifics from standard C++ compiler +#endif + class Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler : public AbstractBackwardEulerCardiacCell<8>, public AbstractDynamicallyLoadableEntity { friend class boost::serialization::access; @@ -40,19 +48,50 @@ class Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler : public Ab const bool is_concentration[21] = {false, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true, true, false}; const bool is_probability[21] = {false, false, true, true, true, false, false, false, false, false, false, true, true, true, false, false, false, false, false, false, false}; public: +#if USING_DEVICE_COMPILER + template using SolverKernelLauncher = BackwardEulerKernelLauncher; + static constexpr unsigned TOTAL_SIZE = 21u; + static constexpr unsigned NONLINEAR_SIZE = 8u; +#endif boost::shared_ptr UseCellMLDefaultStimulus(); double GetIntracellularCalciumConcentration(); - Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler(boost::shared_ptr /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus); + Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler(boost::shared_ptr /* unused */, boost::shared_ptr pIntracellularStimulus); ~Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler(); void VerifyStateVariables(); - double GetIIonic(const std::vector* pStateVariables=NULL);void ComputeResidual(double var_chaste_interface__environment__time, const double rCurrentGuess[8], double rResidual[8]); - void ComputeJacobian(double var_chaste_interface__environment__time, const double rCurrentGuess[8], double rJacobian[8][8]);protected: + double GetIIonic(const std::vector* pStateVariables=NULL); + void ComputeResidual(double var_chaste_interface__environment__time, const double rCurrentGuess[8], double rResidual[8]); + void ComputeJacobian(double var_chaste_interface__environment__time, const double rCurrentGuess[8], double rJacobian[8][8]); + +#if USING_DEVICE_COMPILER + template + DEVICE + static void ComputeResidualDevice(ValueType var_chaste_interface__environment__time, const ValueType rCurrentGuess[NONLINEAR_SIZE], const ValueType rY[], ValueType rResidual[NONLINEAR_SIZE], ValueType mDt, const ValueType mParameters[], bool mSetVoltageDerivativeToZero, ValueType mFixedVoltage, ValueType capacitance, const DeviceStimulusFunctor stim); + + template + DEVICE + static void ComputeJacobianDevice(ValueType var_chaste_interface__environment__time, const ValueType rCurrentGuess[NONLINEAR_SIZE], const ValueType rY[], ValueType rJacobian[NONLINEAR_SIZE][NONLINEAR_SIZE], ValueType mDt, const ValueType mParameters[], bool mSetVoltageDerivativeToZero, ValueType mFixedVoltage, ValueType capacitance, const DeviceStimulusFunctor stim); + template + DEVICE + static void UpdateTransmembranePotentialDevice(ValueType var_chaste_interface__environment__time, ValueType rY[], ValueType mDt, const ValueType mParameters[], bool mSetVoltageDerivativeToZero, ValueType mFixedVoltage, DeviceStimulusFunctor stim, ValueType capacitance); + + template + DEVICE + static void SolveClosedFormVarsDevice(ValueType rY[TOTAL_SIZE], ValueType mDt, const ValueType mParameters[], bool mSetVoltageDerivativeToZero, ValueType mFixedVoltage, ValueType capacitance); + + template + DEVICE + static void FillInitialGuessDevice(ValueType _guess[NONLINEAR_SIZE], const ValueType rY[TOTAL_SIZE]); + + template + DEVICE + static void ScatterSolutionDevice(const ValueType _guess[NONLINEAR_SIZE], ValueType rY[TOTAL_SIZE]); +#endif +protected: void UpdateTransmembranePotential(double var_chaste_interface__environment__time); void ComputeOneStepExceptVoltage(double var_chaste_interface__environment__time); - std::vector ComputeDerivedQuantities(double var_chaste_interface__environment__time, const std::vector & rY); -}; + std::vector ComputeDerivedQuantities(double var_chaste_interface__environment__time, const std::vector & rY);}; // Needs to be included last #include "SerializationExportWrapper.hpp" @@ -87,4 +126,9 @@ namespace boost } -#endif // DYNAMICCOURTEMANCHE_RAMIREZ_NATTEL_1998FROMCELLMLBACKWARDEULER_HPP_ \ No newline at end of file +#endif // DYNAMICCOURTEMANCHE_RAMIREZ_NATTEL_1998FROMCELLMLBACKWARDEULER_HPP_ + +#if USING_DEVICE_COMPILER + #include "dynamic_courtemanche_ramirez_nattel_1998Kernels.hpp" + #include "BackwardEulerKernels.hpp" +#endif \ No newline at end of file diff --git a/chaste_codegen/data/tests/chaste_reference_models/BE/grandi_pasqualini_bers_2010_ssBackwardEuler.cpp b/chaste_codegen/data/tests/chaste_reference_models/BE/grandi_pasqualini_bers_2010_ssBackwardEuler.cpp index 8bc5a2974..63f1f76bd 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/BE/grandi_pasqualini_bers_2010_ssBackwardEuler.cpp +++ b/chaste_codegen/data/tests/chaste_reference_models/BE/grandi_pasqualini_bers_2010_ssBackwardEuler.cpp @@ -22,6 +22,8 @@ #include "HeartConfig.hpp" #include "IsNan.hpp" #include "MathsCustomFunctions.hpp" +#include "ChasteMathDeviceNamespaces.hpp" +#include "ChasteCpuMacros.hpp" #include "ModelFactory.hpp" @@ -36,7 +38,7 @@ bool Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::registered = Mod 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_amplitude_converted = -CHASTE_CONST(9.5) * CHASTE_CAP(); // 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 @@ -67,29 +69,29 @@ bool Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::registered = Mod // 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[0] = CHASTE_CONST(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[2] = CHASTE_CONST(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[5] = CHASTE_CONST(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[7] = CHASTE_CONST(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[11] = CHASTE_CONST(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[16] = CHASTE_CONST(0.34999999999999998); // (var_I_Ki__g_ki_factor) [mS_per_uF] + this->mParameters[17] = CHASTE_CONST(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[20] = CHASTE_CONST(4.5); // (var_parameters__IbarNCX) [uA_per_uF] + this->mParameters[21] = CHASTE_CONST(1.8); // (var_parameters__IbarNaK) [uA_per_uF] + this->mParameters[22] = CHASTE_CONST(1.3809999999999999e-10); // (var_parameters__Cmem) [farad] this->mParameters[23] = 310; // (var_parameters__Temp) [kelvin] } @@ -137,7 +139,7 @@ bool Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::registered = Mod // 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]); + double var_chaste_interface__membrane_potential__V_m = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -180,112 +182,112 @@ bool Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::registered = Mod 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_I_Ks__gks_junc = CHASTE_CONST(0.0035000000000000001); // mS_per_uF + const double var_I_Ks__gks_sl = CHASTE_CONST(0.0035000000000000001); // mS_per_uF + const double var_I_Kp__kp_kp = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(7.4880000000000004) - CHASTE_CONST(0.16722408026755853) * var_chaste_interface__membrane_potential__V_m)); // dimensionless + const double var_I_Kr__rkr = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(3.0833333333333335) + CHASTE_CONST(0.041666666666666664) * var_chaste_interface__membrane_potential__V_m)); // dimensionless + const double var_parameters__Fjunc = CHASTE_CONST(0.11); // dimensionless + const double var_parameters__Fjunc_CaL = CHASTE_CONST(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__GCaB = CHASTE_CONST(0.00055130000000000001); // mS_per_uF + const double var_parameters__GClB = CHASTE_CONST(0.0089999999999999993); // mS_per_uF + const double var_parameters__GClCa = CHASTE_CONST(0.0548125); // mS_per_uF + const double var_parameters__GNaB = CHASTE_CONST(0.00059699999999999998); // mS_per_uF + const double var_parameters__IbarSLCaP = CHASTE_CONST(0.067299999999999999); // uA_per_uF + const double var_parameters__KdClCa = CHASTE_CONST(0.10000000000000001); // mM + const double var_parameters__Kdact = CHASTE_CONST(0.00014999999999999999); // mM + const double var_I_NCX__Ka_junc = 1 / (1 + CHASTE_MATH::Pow(var_parameters__Kdact, 2) / CHASTE_MATH::Pow(var_chaste_interface__Ca_Concentrations__Ca_j, 2)); // dimensionless + const double var_I_NCX__Ka_sl = 1 / (1 + CHASTE_MATH::Pow(var_parameters__Kdact, 2) / CHASTE_MATH::Pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 2)); // dimensionless + const double var_parameters__KmCai = CHASTE_CONST(0.0035899999999999999); // mM + const double var_parameters__KmCao = CHASTE_CONST(1.3); // mM + const double var_parameters__KmKo = CHASTE_CONST(1.5); // mM + const double var_parameters__KmNai = CHASTE_CONST(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__KmNao = CHASTE_CONST(87.5); // mM + const double var_parameters__KmPCa = CHASTE_CONST(0.00050000000000000001); // mM + const double var_I_Ki__g_K1 = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::Sqrt(mParameters[7]) * mParameters[16]; // mS_per_uF + const double var_I_Kr__gkr = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::Sqrt(mParameters[7]) * mParameters[17]; // mS_per_uF + const double var_I_NCX__s3_junc = CHASTE_MATH::Pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * mParameters[5] + CHASTE_MATH::Pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * var_parameters__KmCao + CHASTE_MATH::Pow(mParameters[8], 3) * var_chaste_interface__Ca_Concentrations__Ca_j + CHASTE_MATH::Pow(var_parameters__KmNao, 3) * (1 + var_chaste_interface__Ca_Concentrations__Ca_j / var_parameters__KmCai) * var_chaste_interface__Ca_Concentrations__Ca_j + CHASTE_MATH::Pow(mParameters[8], 3) * (1 + CHASTE_MATH::Pow(var_chaste_interface__Na_Concentrations__Na_j, 3) / CHASTE_MATH::Pow(var_parameters__KmNai, 3)) * var_parameters__KmCai; // mM4 + const double var_I_NCX__s3_sl = CHASTE_MATH::Pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * mParameters[5] + CHASTE_MATH::Pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * var_parameters__KmCao + CHASTE_MATH::Pow(mParameters[8], 3) * var_chaste_interface__Ca_Concentrations__Ca_sl + CHASTE_MATH::Pow(var_parameters__KmNao, 3) * (1 + var_chaste_interface__Ca_Concentrations__Ca_sl / var_parameters__KmCai) * var_chaste_interface__Ca_Concentrations__Ca_sl + CHASTE_MATH::Pow(mParameters[8], 3) * (1 + CHASTE_MATH::Pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) / CHASTE_MATH::Pow(var_parameters__KmNai, 3)) * var_parameters__KmCai; // mM4 + const double var_I_NaK__sigma = -CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * CHASTE_MATH::Exp(CHASTE_CONST(0.01485884101040119) * mParameters[8]); // dimensionless + const double var_parameters__Q10CaL = CHASTE_CONST(1.8); // dimensionless + const double var_parameters__Q10NCX = CHASTE_CONST(1.5700000000000001); // dimensionless + const double var_parameters__Q10SLCaP = CHASTE_CONST(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__fnak = 1 / (1 + CHASTE_CONST(0.1245) * CHASTE_MATH::Exp(-CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT) + CHASTE_CONST(0.036499999999999998) * var_I_NaK__sigma * CHASTE_MATH::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 + CHASTE_MATH::Pow(var_parameters__KmNaip, 4) / CHASTE_MATH::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 + CHASTE_MATH::Pow(var_parameters__KmNaip, 4) / CHASTE_MATH::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_parameters__Qpow = -31 + CHASTE_CONST(0.10000000000000001) * mParameters[23]; // dimensionless + const double var_I_PCa__I_pca_junc = CHASTE_MATH::Pow(var_chaste_interface__Ca_Concentrations__Ca_j, CHASTE_CONST(1.6000000000000001)) * CHASTE_MATH::Pow(var_parameters__Q10SLCaP, var_parameters__Qpow) * var_parameters__Fjunc * var_parameters__IbarSLCaP / (CHASTE_MATH::Pow(var_chaste_interface__Ca_Concentrations__Ca_j, CHASTE_CONST(1.6000000000000001)) + CHASTE_MATH::Pow(var_parameters__KmPCa, CHASTE_CONST(1.6000000000000001))); // uA_per_uF + const double var_I_PCa__I_pca_sl = CHASTE_MATH::Pow(var_chaste_interface__Ca_Concentrations__Ca_sl, CHASTE_CONST(1.6000000000000001)) * CHASTE_MATH::Pow(var_parameters__Q10SLCaP, var_parameters__Qpow) * var_parameters__Fsl * var_parameters__IbarSLCaP / (CHASTE_MATH::Pow(var_chaste_interface__Ca_Concentrations__Ca_sl, CHASTE_CONST(1.6000000000000001)) + CHASTE_MATH::Pow(var_parameters__KmPCa, CHASTE_CONST(1.6000000000000001))); // uA_per_uF + const double var_parameters__eca_junc = CHASTE_CONST(0.5) * CHASTE_MATH::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_parameters__eca_sl = CHASTE_CONST(0.5) * CHASTE_MATH::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_parameters__ecl = CHASTE_MATH::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_parameters__ek = CHASTE_MATH::Log(mParameters[7] / var_chaste_interface__K_Concentration__K_i) / var_parameters__FoRT; // mV + const double var_I_Ki__aki = CHASTE_CONST(1.02) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__membrane_potential__V_m - CHASTE_CONST(0.23849999999999999) * var_parameters__ek)); // dimensionless + const double var_I_Ki__bki = (CHASTE_CONST(0.49124000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.43983232) + CHASTE_CONST(0.080320000000000003) * var_chaste_interface__membrane_potential__V_m - CHASTE_CONST(0.080320000000000003) * var_parameters__ek) + CHASTE_MATH::Exp(-CHASTE_CONST(36.698642499999998) + CHASTE_CONST(0.061749999999999999) * var_chaste_interface__membrane_potential__V_m - CHASTE_CONST(0.061749999999999999) * var_parameters__ek)) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.4444678999999998) + CHASTE_CONST(0.51429999999999998) * var_parameters__ek - CHASTE_CONST(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_parameters__ena_junc = CHASTE_MATH::Log(mParameters[8] / var_chaste_interface__Na_Concentrations__Na_j) / var_parameters__FoRT; // mV + const double var_I_Na__I_Na_junc = CHASTE_MATH::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_parameters__ena_sl = CHASTE_MATH::Log(mParameters[8] / var_chaste_interface__Na_Concentrations__Na_sl) / var_parameters__FoRT; // mV + const double var_I_Na__I_Na_sl = CHASTE_MATH::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__GtoFast = ((var_parameters__epi == 1) ? (CHASTE_CONST(0.1144) * mParameters[15]) : (CHASTE_CONST(0.0014039999999999999) * mParameters[15])); // mS_per_uF + const double var_I_to__GtoSlow = ((var_parameters__epi == 1) ? (CHASTE_CONST(0.015599999999999999) * mParameters[19]) : (CHASTE_CONST(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_parameters__gkp = CHASTE_CONST(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_parameters__ksat = CHASTE_CONST(0.32000000000000001); // dimensionless + const double var_parameters__nu = CHASTE_CONST(0.27000000000000002); // dimensionless + const double var_I_NCX__s1_junc = CHASTE_MATH::Pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * mParameters[5] * CHASTE_MATH::Exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * var_parameters__nu); // mM4 + const double var_I_NCX__s1_sl = CHASTE_MATH::Pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * mParameters[5] * CHASTE_MATH::Exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * var_parameters__nu); // mM4 + const double var_I_NCX__s2_junc = CHASTE_MATH::Pow(mParameters[8], 3) * var_chaste_interface__Ca_Concentrations__Ca_j * CHASTE_MATH::Exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT); // mM4 + const double var_I_NCX__I_ncx_junc = CHASTE_MATH::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 * CHASTE_MATH::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 = CHASTE_MATH::Pow(mParameters[8], 3) * var_chaste_interface__Ca_Concentrations__Ca_sl * CHASTE_MATH::Exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT); // mM4 + const double var_I_NCX__I_ncx_sl = CHASTE_MATH::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 * CHASTE_MATH::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 = CHASTE_CONST(0.00054000000000000001) * mParameters[11]; // cm_per_sec + const double var_I_Ca__ibarca_j = 4 * (-CHASTE_CONST(0.34100000000000003) * mParameters[5] + CHASTE_CONST(0.34100000000000003) * var_chaste_interface__Ca_Concentrations__Ca_j * CHASTE_MATH::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 + CHASTE_MATH::Exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_Ca_junc = CHASTE_CONST(0.45000000000000001) * CHASTE_MATH::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_I_Ca__ibarca_sl = 4 * (-CHASTE_CONST(0.34100000000000003) * mParameters[5] + CHASTE_CONST(0.34100000000000003) * var_chaste_interface__Ca_Concentrations__Ca_sl * CHASTE_MATH::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 + CHASTE_MATH::Exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_Ca_sl = CHASTE_CONST(0.45000000000000001) * CHASTE_MATH::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_parameters__pK = CHASTE_CONST(1.35e-7); // cm_per_sec + const double var_I_Ca__ibark = (-CHASTE_CONST(0.75) * mParameters[7] + CHASTE_CONST(0.75) * var_chaste_interface__K_Concentration__K_i * CHASTE_MATH::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 + CHASTE_MATH::Exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_CaK = CHASTE_CONST(0.45000000000000001) * CHASTE_MATH::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 = CHASTE_CONST(7.4999999999999993e-9); // cm_per_sec + const double var_I_Ca__ibarna_j = (-CHASTE_CONST(0.75) * mParameters[8] + CHASTE_CONST(0.75) * var_chaste_interface__Na_Concentrations__Na_j * CHASTE_MATH::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 + CHASTE_MATH::Exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_CaNa_junc = CHASTE_CONST(0.45000000000000001) * CHASTE_MATH::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 = (-CHASTE_CONST(0.75) * mParameters[8] + CHASTE_CONST(0.75) * var_chaste_interface__Na_Concentrations__Na_sl * CHASTE_MATH::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 + CHASTE_MATH::Exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_CaNa_sl = CHASTE_CONST(0.45000000000000001) * CHASTE_MATH::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_parameters__pNaK = CHASTE_CONST(0.018329999999999999); // dimensionless + const double var_I_Ks__eks = CHASTE_MATH::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 = CHASTE_MATH::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 var_chaste_interface__i_ionic = CHASTE_CAP() * var_membrane_potential__I_tot; // uA_per_cm2 const double i_ionic = var_chaste_interface__i_ionic; EXCEPT_IF_NOT(!std::isnan(i_ionic)); @@ -295,7 +297,7 @@ bool Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::registered = Mod 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]); + double var_chaste_interface__membrane_potential__V_m = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -338,115 +340,115 @@ bool Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::registered = Mod //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 d_dt_chaste_interface_var_I_Ca__f_Ca_Bj = -CHASTE_CONST(0.011900000000000001) * var_chaste_interface__I_Ca__f_Ca_Bj + CHASTE_CONST(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 = -CHASTE_CONST(0.011900000000000001) * var_chaste_interface__I_Ca__f_Ca_Bsl + CHASTE_CONST(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__Bmax_CaM = CHASTE_CONST(0.024); // mM + const double var_parameters__Bmax_Naj = CHASTE_CONST(7.5609999999999999); // mM + const double var_parameters__Bmax_Nasl = CHASTE_CONST(1.6499999999999999); // mM + const double var_parameters__Bmax_SR = CHASTE_CONST(0.017100000000000001); // mM + const double var_parameters__Bmax_TnChigh = CHASTE_CONST(0.14000000000000001); // mM + const double var_parameters__Bmax_TnClow = CHASTE_CONST(0.070000000000000007); // mM + const double var_parameters__Bmax_myosin = CHASTE_CONST(0.14000000000000001); // mM + const double var_parameters__Fjunc = CHASTE_CONST(0.11); // dimensionless + const double var_parameters__Fjunc_CaL = CHASTE_CONST(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__GCaB = CHASTE_CONST(0.00055130000000000001); // mS_per_uF + const double var_parameters__GNaB = CHASTE_CONST(0.00059699999999999998); // mS_per_uF + const double var_parameters__IbarSLCaP = CHASTE_CONST(0.067299999999999999); // uA_per_uF + const double var_parameters__J_ca_juncsl = CHASTE_CONST(8.2413000000000004e-13); // liters_per_msec + const double var_parameters__J_ca_slmyo = CHASTE_CONST(3.2742999999999999e-12); // liters_per_msec + const double var_parameters__J_na_juncsl = CHASTE_CONST(1.8312999999999999e-14); // liters_per_msec + const double var_parameters__J_na_slmyo = CHASTE_CONST(1.6385999999999999e-12); // liters_per_msec + const double var_parameters__Kdact = CHASTE_CONST(0.00014999999999999999); // mM + const double var_I_NCX__Ka_junc = 1 / (1 + CHASTE_MATH::Pow(var_parameters__Kdact, 2) / CHASTE_MATH::Pow(var_chaste_interface__Ca_Concentrations__Ca_j, 2)); // dimensionless + const double var_I_NCX__Ka_sl = 1 / (1 + CHASTE_MATH::Pow(var_parameters__Kdact, 2) / CHASTE_MATH::Pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 2)); // dimensionless + const double var_parameters__KmCai = CHASTE_CONST(0.0035899999999999999); // mM + const double var_parameters__KmCao = CHASTE_CONST(1.3); // mM + const double var_parameters__KmKo = CHASTE_CONST(1.5); // mM + const double var_parameters__KmNai = CHASTE_CONST(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__KmNao = CHASTE_CONST(87.5); // mM + const double var_parameters__KmPCa = CHASTE_CONST(0.00050000000000000001); // mM + const double var_parameters__Kmf = CHASTE_CONST(0.00024600000000000002); // mM + const double var_parameters__Kmr = CHASTE_CONST(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_I_NCX__s3_junc = CHASTE_MATH::Pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * mParameters[5] + CHASTE_MATH::Pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * var_parameters__KmCao + CHASTE_MATH::Pow(mParameters[8], 3) * var_chaste_interface__Ca_Concentrations__Ca_j + CHASTE_MATH::Pow(var_parameters__KmNao, 3) * (1 + var_chaste_interface__Ca_Concentrations__Ca_j / var_parameters__KmCai) * var_chaste_interface__Ca_Concentrations__Ca_j + CHASTE_MATH::Pow(mParameters[8], 3) * (1 + CHASTE_MATH::Pow(var_chaste_interface__Na_Concentrations__Na_j, 3) / CHASTE_MATH::Pow(var_parameters__KmNai, 3)) * var_parameters__KmCai; // mM4 + const double var_I_NCX__s3_sl = CHASTE_MATH::Pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * mParameters[5] + CHASTE_MATH::Pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * var_parameters__KmCao + CHASTE_MATH::Pow(mParameters[8], 3) * var_chaste_interface__Ca_Concentrations__Ca_sl + CHASTE_MATH::Pow(var_parameters__KmNao, 3) * (1 + var_chaste_interface__Ca_Concentrations__Ca_sl / var_parameters__KmCai) * var_chaste_interface__Ca_Concentrations__Ca_sl + CHASTE_MATH::Pow(mParameters[8], 3) * (1 + CHASTE_MATH::Pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) / CHASTE_MATH::Pow(var_parameters__KmNai, 3)) * var_parameters__KmCai; // mM4 + const double var_I_NaK__sigma = -CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * CHASTE_MATH::Exp(CHASTE_CONST(0.01485884101040119) * mParameters[8]); // dimensionless + const double var_parameters__Q10CaL = CHASTE_CONST(1.8); // dimensionless + const double var_parameters__Q10NCX = CHASTE_CONST(1.5700000000000001); // dimensionless + const double var_parameters__Q10SLCaP = CHASTE_CONST(2.3500000000000001); // dimensionless + const double var_parameters__Q10SRCaP = CHASTE_CONST(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_I_NaK__fnak = 1 / (1 + CHASTE_CONST(0.1245) * CHASTE_MATH::Exp(-CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT) + CHASTE_CONST(0.036499999999999998) * var_I_NaK__sigma * CHASTE_MATH::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 + CHASTE_MATH::Pow(var_parameters__KmNaip, 4) / CHASTE_MATH::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 + CHASTE_MATH::Pow(var_parameters__KmNaip, 4) / CHASTE_MATH::Pow(var_chaste_interface__Na_Concentrations__Na_sl, 4)) * (var_parameters__KmKo + mParameters[7])); // uA_per_uF + const double var_parameters__Qpow = -31 + CHASTE_CONST(0.10000000000000001) * mParameters[23]; // dimensionless + const double var_I_PCa__I_pca_junc = CHASTE_MATH::Pow(var_chaste_interface__Ca_Concentrations__Ca_j, CHASTE_CONST(1.6000000000000001)) * CHASTE_MATH::Pow(var_parameters__Q10SLCaP, var_parameters__Qpow) * var_parameters__Fjunc * var_parameters__IbarSLCaP / (CHASTE_MATH::Pow(var_chaste_interface__Ca_Concentrations__Ca_j, CHASTE_CONST(1.6000000000000001)) + CHASTE_MATH::Pow(var_parameters__KmPCa, CHASTE_CONST(1.6000000000000001))); // uA_per_uF + const double var_I_PCa__I_pca_sl = CHASTE_MATH::Pow(var_chaste_interface__Ca_Concentrations__Ca_sl, CHASTE_CONST(1.6000000000000001)) * CHASTE_MATH::Pow(var_parameters__Q10SLCaP, var_parameters__Qpow) * var_parameters__Fsl * var_parameters__IbarSLCaP / (CHASTE_MATH::Pow(var_chaste_interface__Ca_Concentrations__Ca_sl, CHASTE_CONST(1.6000000000000001)) + CHASTE_MATH::Pow(var_parameters__KmPCa, CHASTE_CONST(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 var_parameters__cellRadius = CHASTE_CONST(10.25); // um + const double var_parameters__Vcell = CHASTE_CONST(1.0000000000000001e-15) * CHASTE_CONST(CHASTE_MATH::Pi) * CHASTE_MATH::Pow(var_parameters__cellRadius, 2) * var_parameters__cellLength; // liter + const double var_parameters__Vjunc = CHASTE_CONST(0.00053900000000000009) * var_parameters__Vcell; // liter + const double var_parameters__Vmyo = CHASTE_CONST(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_parameters__Bmax_SLhighj = CHASTE_CONST(0.000165) * var_parameters__Vmyo / var_parameters__Vjunc; // mM + const double var_parameters__Bmax_SLlowj = CHASTE_CONST(0.00046000000000000001) * var_parameters__Vmyo / var_parameters__Vjunc; // mM + const double var_parameters__Vsl = CHASTE_CONST(0.02) * var_parameters__Vcell; // liter + const double var_parameters__Bmax_SLhighsl = CHASTE_CONST(0.0134) * var_parameters__Vmyo / var_parameters__Vsl; // mM + const double var_parameters__Bmax_SLlowsl = CHASTE_CONST(0.037400000000000003) * var_parameters__Vmyo / var_parameters__Vsl; // mM + const double var_parameters__Vsr = CHASTE_CONST(0.035000000000000003) * var_parameters__Vcell; // liter + const double var_parameters__Bmax_Csqn = CHASTE_CONST(0.14000000000000001) * var_parameters__Vmyo / var_parameters__Vsr; // mM + const double var_parameters__ec50SR = CHASTE_CONST(0.45000000000000001); // mM + const double var_SR_Fluxes__kCaSR = -(-var_SR_Fluxes__MinSR + var_SR_Fluxes__MaxSR) / (1 + CHASTE_MATH::Pow((var_parameters__ec50SR / var_chaste_interface__SR_Ca_Concentrations__Ca_sr), CHASTE_CONST(2.5))) + var_SR_Fluxes__MaxSR; // dimensionless + const double var_parameters__eca_junc = CHASTE_CONST(0.5) * CHASTE_MATH::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_parameters__eca_sl = CHASTE_CONST(0.5) * CHASTE_MATH::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_parameters__ena_junc = CHASTE_MATH::Log(mParameters[8] / var_chaste_interface__Na_Concentrations__Na_j) / var_parameters__FoRT; // mV + const double var_I_Na__I_Na_junc = CHASTE_MATH::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_parameters__ena_sl = CHASTE_MATH::Log(mParameters[8] / var_chaste_interface__Na_Concentrations__Na_sl) / var_parameters__FoRT; // mV + const double var_I_Na__I_Na_sl = CHASTE_MATH::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_parameters__hillSRCaP = CHASTE_CONST(1.7869999999999999); // dimensionless + const double var_SR_Fluxes__J_serca = CHASTE_MATH::Pow(var_parameters__Q10SRCaP, var_parameters__Qpow) * (CHASTE_MATH::Pow((var_chaste_interface__Ca_Concentrations__Ca_i / var_parameters__Kmf), var_parameters__hillSRCaP) - CHASTE_MATH::Pow((var_chaste_interface__SR_Ca_Concentrations__Ca_sr / var_parameters__Kmr), var_parameters__hillSRCaP)) * mParameters[2] / (1 + CHASTE_MATH::Pow((var_chaste_interface__Ca_Concentrations__Ca_i / var_parameters__Kmf), var_parameters__hillSRCaP) + CHASTE_MATH::Pow((var_chaste_interface__SR_Ca_Concentrations__Ca_sr / var_parameters__Kmr), var_parameters__hillSRCaP)); // mM_per_msec + const double var_parameters__kiCa = CHASTE_CONST(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__kim = CHASTE_CONST(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_cam = CHASTE_CONST(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__koff_myoca = CHASTE_CONST(0.00046000000000000001); // per_msec + const double var_parameters__koff_myomg = CHASTE_CONST(5.7000000000000003e-5); // per_msec + const double var_parameters__koff_na = CHASTE_CONST(0.001); // per_msec + const double var_parameters__koff_slh = CHASTE_CONST(0.029999999999999999); // per_msec + const double var_parameters__koff_sll = CHASTE_CONST(1.3); // per_msec + const double var_parameters__koff_sr = CHASTE_CONST(0.059999999999999998); // per_msec + const double var_parameters__koff_tnchca = CHASTE_CONST(3.1999999999999999e-5); // per_msec + const double var_parameters__koff_tnchmg = CHASTE_CONST(0.0033300000000000001); // per_msec + const double var_parameters__koff_tncl = CHASTE_CONST(0.019599999999999999); // per_msec + const double var_parameters__kom = CHASTE_CONST(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 + CHASTE_MATH::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 + CHASTE_MATH::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 - CHASTE_MATH::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 var_parameters__kon_myoca = CHASTE_CONST(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 var_parameters__kon_myomg = CHASTE_CONST(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_parameters__kon_na = CHASTE_CONST(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 @@ -461,38 +463,38 @@ bool Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::registered = Mod 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 var_parameters__kon_tnchca = CHASTE_CONST(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 var_parameters__kon_tnchmg = CHASTE_CONST(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_parameters__kon_tncl = CHASTE_CONST(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_parameters__ksat = CHASTE_CONST(0.32000000000000001); // dimensionless + const double var_parameters__nu = CHASTE_CONST(0.27000000000000002); // dimensionless + const double var_I_NCX__s1_junc = CHASTE_MATH::Pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * mParameters[5] * CHASTE_MATH::Exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * var_parameters__nu); // mM4 + const double var_I_NCX__s1_sl = CHASTE_MATH::Pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * mParameters[5] * CHASTE_MATH::Exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * var_parameters__nu); // mM4 + const double var_I_NCX__s2_junc = CHASTE_MATH::Pow(mParameters[8], 3) * var_chaste_interface__Ca_Concentrations__Ca_j * CHASTE_MATH::Exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT); // mM4 + const double var_I_NCX__I_ncx_junc = CHASTE_MATH::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 * CHASTE_MATH::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 = CHASTE_MATH::Pow(mParameters[8], 3) * var_chaste_interface__Ca_Concentrations__Ca_sl * CHASTE_MATH::Exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT); // mM4 + const double var_I_NCX__I_ncx_sl = CHASTE_MATH::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 * CHASTE_MATH::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 = CHASTE_CONST(0.00054000000000000001) * mParameters[11]; // cm_per_sec + const double var_I_Ca__ibarca_j = 4 * (-CHASTE_CONST(0.34100000000000003) * mParameters[5] + CHASTE_CONST(0.34100000000000003) * var_chaste_interface__Ca_Concentrations__Ca_j * CHASTE_MATH::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 + CHASTE_MATH::Exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_Ca_junc = CHASTE_CONST(0.45000000000000001) * CHASTE_MATH::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 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 - CHASTE_CONST(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 * (-CHASTE_CONST(0.34100000000000003) * mParameters[5] + CHASTE_CONST(0.34100000000000003) * var_chaste_interface__Ca_Concentrations__Ca_sl * CHASTE_MATH::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 + CHASTE_MATH::Exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_Ca_sl = CHASTE_CONST(0.45000000000000001) * CHASTE_MATH::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 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 - CHASTE_CONST(0.5) * var_Ca_Concentrations__I_Ca_tot_sl * mParameters[22] / (mParameters[9] * var_parameters__Vsl); // mM / msec + const double var_parameters__pNa = CHASTE_CONST(7.4999999999999993e-9); // cm_per_sec + const double var_I_Ca__ibarna_j = (-CHASTE_CONST(0.75) * mParameters[8] + CHASTE_CONST(0.75) * var_chaste_interface__Na_Concentrations__Na_j * CHASTE_MATH::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 + CHASTE_MATH::Exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_CaNa_junc = CHASTE_CONST(0.45000000000000001) * CHASTE_MATH::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 = (-CHASTE_CONST(0.75) * mParameters[8] + CHASTE_CONST(0.75) * var_chaste_interface__Na_Concentrations__Na_sl * CHASTE_MATH::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 + CHASTE_MATH::Exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_CaNa_sl = CHASTE_CONST(0.45000000000000001) * CHASTE_MATH::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 @@ -530,7 +532,7 @@ bool Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::registered = Mod 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]); + double var_chaste_interface__membrane_potential__V_m = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -571,164 +573,164 @@ bool Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::registered = Mod 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_x2 = CHASTE_CONST(32.700000000000003) * var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CL; + const double var_x3 = 1 / CHASTE_CONST(CHASTE_MATH::Pi); + const double var_x4 = CHASTE_CONST(0.4794655196082917) * var_x3; + const double var_x5 = CHASTE_MATH::Pow(var_chaste_interface__Ca_Concentrations__Ca_i, CHASTE_CONST(0.78699999999999992)); + const double var_x6 = CHASTE_MATH::Pow(var_chaste_interface__SR_Ca_Concentrations__Ca_sr, CHASTE_CONST(1.7869999999999999)); + const double var_x7 = CHASTE_CONST(0.38742512113256738) * var_x6; + const double var_x8 = CHASTE_MATH::Pow(var_chaste_interface__Ca_Concentrations__Ca_i, CHASTE_CONST(1.7869999999999999)); + const double var_x9 = CHASTE_CONST(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_x11 = -31 + CHASTE_CONST(0.10000000000000001) * mParameters[23]; + const double var_x12 = CHASTE_MATH::Pow(CHASTE_CONST(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_x15 = var_x13 * (var_x9 - var_x7) / CHASTE_MATH::Pow((CHASTE_CONST(3.5530476870814998e-7) + var_x8 + CHASTE_CONST(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_x17 = CHASTE_CONST(13.800000000000001) * var_chaste_interface__Cytosolic_Ca_Buffers__Myo_c + CHASTE_CONST(13.800000000000001) * var_chaste_interface__Cytosolic_Ca_Buffers__Myo_m; + const double var_x18 = CHASTE_CONST(2.3700000000000001) * var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHc + CHASTE_CONST(2.3700000000000001) * var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHm; + const double var_x19 = CHASTE_CONST(0.23799999999999999) + 34 * var_chaste_interface__Ca_Concentrations__Ca_i; + const double var_x20 = CHASTE_CONST(13.800000000000001) * var_chaste_interface__Ca_Concentrations__Ca_i; + const double var_x21 = CHASTE_CONST(0.059999999999999998) + 100 * var_chaste_interface__Ca_Concentrations__Ca_i; + const double var_x22 = CHASTE_CONST(2.3700000000000001) * var_chaste_interface__Ca_Concentrations__Ca_i; + const double var_x23 = CHASTE_CONST(0.019599999999999999) + CHASTE_CONST(32.700000000000003) * var_chaste_interface__Ca_Concentrations__Ca_i; + const double var_x24 = CHASTE_MATH::Pow(var_chaste_interface__SR_Ca_Concentrations__Ca_sr, CHASTE_CONST(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_x27 = CHASTE_CONST(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_x30 = CHASTE_CONST(5.2281977629563632e-6) + CHASTE_MATH::Pow(var_chaste_interface__Ca_Concentrations__Ca_j, CHASTE_CONST(1.6000000000000001)); + const double var_x31 = CHASTE_MATH::Pow(CHASTE_CONST(2.3500000000000001), var_x11); + const double var_x32 = CHASTE_CONST(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_x37 = CHASTE_MATH::Exp(-CHASTE_CONST(0.72999999999999998) * var_x36); + const double var_x38 = CHASTE_MATH::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_x40 = CHASTE_MATH::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_x43 = (1 + CHASTE_CONST(278.55153203342621) * var_chaste_interface__Ca_Concentrations__Ca_j) * var_chaste_interface__Ca_Concentrations__Ca_j; + const double var_x44 = var_x38 * (1 + CHASTE_CONST(0.00053869674493876331) * var_x40); + const double var_x45 = 1 / (var_x41 + var_x42 + CHASTE_CONST(669921.875) * var_x43 + CHASTE_CONST(1.3) * var_x40 + CHASTE_CONST(0.0035899999999999999) * var_x44); + const double var_x46 = CHASTE_MATH::Pow(var_chaste_interface__Ca_Concentrations__Ca_j, 2); + const double var_x47 = 1 + CHASTE_CONST(2.2499999999999996e-8) / var_x46; + const double var_x48 = CHASTE_MATH::Pow(CHASTE_CONST(1.5700000000000001), var_x11) * mParameters[20] / (1 + CHASTE_CONST(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_x52 = CHASTE_CONST(669921.875) + var_x38; + const double var_x53 = -var_x52 - CHASTE_CONST(373215529.24791086) * var_chaste_interface__Ca_Concentrations__Ca_j; + const double var_x54 = CHASTE_MATH::Exp(CHASTE_CONST(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_x56 = var_x49 * var_x55 / CHASTE_MATH::Pow((var_x43 + CHASTE_CONST(1.9405247813411081e-6) * var_x40 + CHASTE_CONST(5.3588338192419823e-9) * var_x44 + CHASTE_CONST(1.4927113702623908e-6) * var_x41 + CHASTE_CONST(1.4927113702623908e-6) * var_x42), 2); + const double var_x57 = CHASTE_CONST(4.9020119168033731e-13) * var_x56; + const double var_x58 = var_x45 * var_x48 * var_x55 / (CHASTE_MATH::Pow(var_x47, 2) * CHASTE_MATH::Pow(var_chaste_interface__Ca_Concentrations__Ca_j, 3)); + const double var_x59 = var_x35 * CHASTE_MATH::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_x61 = CHASTE_MATH::Exp(2 * var_x36); + const double var_x62 = CHASTE_MATH::Pow(CHASTE_CONST(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_x67 = CHASTE_CONST(88294470889864.781) * var_x66; const double var_x68 = var_chaste_interface__SR_Fluxes__Ry_Ro * mParameters[1]; - const double var_x69 = 64.935064935064929 * var_x68 + 1205.9369202226344 * mParameters[0]; - const double var_x70 = -0.34100000000000003 * mParameters[5]; - const double var_x71 = 0.34100000000000003 * var_x61; + const double var_x69 = CHASTE_CONST(64.935064935064929) * var_x68 + CHASTE_CONST(1205.9369202226344) * mParameters[0]; + const double var_x70 = -CHASTE_CONST(0.34100000000000003) * mParameters[5]; + const double var_x71 = CHASTE_CONST(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_x75 = CHASTE_CONST(0.029999999999999999) + var_x74; + const double var_x76 = CHASTE_CONST(1.3) + var_x74; + const double var_x77 = CHASTE_MATH::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_x79 = CHASTE_CONST(5.8017639429904805e-6) * var_x38; + const double var_x80 = -CHASTE_CONST(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 = 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_x31; - const double var_x87 = pow(var_chaste_interface__Na_Concentrations__Na_sl, 3); + const double var_x85 = CHASTE_CONST(5.2281977629563632e-6) + CHASTE_MATH::Pow(var_chaste_interface__Ca_Concentrations__Ca_sl, CHASTE_CONST(1.6000000000000001)); + const double var_x86 = CHASTE_CONST(0.095835200000000009) * var_x31; + const double var_x87 = CHASTE_MATH::Pow(var_chaste_interface__Na_Concentrations__Na_sl, 3); const double var_x88 = var_x87 * mParameters[5]; const double var_x89 = var_x38 * 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_x38 * (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_x90 = (1 + CHASTE_CONST(278.55153203342621) * var_chaste_interface__Ca_Concentrations__Ca_sl) * var_chaste_interface__Ca_Concentrations__Ca_sl; + const double var_x91 = var_x38 * (1 + CHASTE_CONST(0.00053869674493876331) * var_x87); + const double var_x92 = 1 / (var_x88 + var_x89 + CHASTE_CONST(669921.875) * var_x90 + CHASTE_CONST(1.3) * var_x87 + CHASTE_CONST(0.0035899999999999999) * var_x91); + const double var_x93 = 1 + CHASTE_CONST(2.2499999999999996e-8) / CHASTE_MATH::Pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 2); const double var_x94 = var_x48 / var_x93; const double var_x95 = var_x92 * var_x94; const double var_x96 = var_x39 * var_x95; - const double var_x97 = -var_x52 - 373215529.24791086 * var_chaste_interface__Ca_Concentrations__Ca_sl; + const double var_x97 = -var_x52 - CHASTE_CONST(373215529.24791086) * var_chaste_interface__Ca_Concentrations__Ca_sl; const double var_x98 = -var_x37 * var_x89 + var_x54 * var_x87 * mParameters[5]; - 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_x48 * var_x92 * var_x98 / (pow(var_x93, 2) * pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 3)); + const double var_x99 = var_x94 * var_x98 / CHASTE_MATH::Pow((var_x90 + CHASTE_CONST(1.9405247813411081e-6) * var_x87 + CHASTE_CONST(5.3588338192419823e-9) * var_x91 + CHASTE_CONST(1.4927113702623908e-6) * var_x88 + CHASTE_CONST(1.4927113702623908e-6) * var_x89), 2); + const double var_x100 = CHASTE_CONST(3.9661732781409103e-12) * var_x99; + const double var_x101 = var_x48 * var_x92 * var_x98 / (CHASTE_MATH::Pow(var_x93, 2) * CHASTE_MATH::Pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 3)); const double var_x102 = var_x59 * (1 - var_chaste_interface__I_Ca__f_Ca_Bsl); - const double var_x103 = 2379535990481.856 * var_x66; + const double var_x103 = CHASTE_CONST(2379535990481.856) * var_x66; const double var_x104 = 100 * var_chaste_interface__Ca_Concentrations__Ca_sl; - const double var_x105 = 0.029999999999999999 + var_x104; - const double var_x106 = 1.3 + var_x104; - const double var_x107 = pow(var_chaste_interface__Na_Concentrations__Na_sl, 2); - const double var_x108 = -3.9000000000000004 * var_x107 - var_x107 * var_x78 - var_x107 * var_x79; + const double var_x105 = CHASTE_CONST(0.029999999999999999) + var_x104; + const double var_x106 = CHASTE_CONST(1.3) + var_x104; + const double var_x107 = CHASTE_MATH::Pow(var_chaste_interface__Na_Concentrations__Na_sl, 2); + const double var_x108 = -CHASTE_CONST(3.9000000000000004) * var_x107 - var_x107 * var_x78 - var_x107 * var_x79; const double var_x109 = var_x107 * var_x81 * var_x95; - const double var_x110 = 0.001 + 0.0001 * var_chaste_interface__Na_Concentrations__Na_j; - const double var_x111 = 0.0001 * var_chaste_interface__Na_Buffers__Na_Bj; - const double var_x112 = 0.001 + 0.0001 * var_chaste_interface__Na_Concentrations__Na_sl; - const double var_x113 = 0.0001 * var_chaste_interface__Na_Buffers__Na_Bsl; + const double var_x110 = CHASTE_CONST(0.001) + CHASTE_CONST(0.0001) * var_chaste_interface__Na_Concentrations__Na_j; + const double var_x111 = CHASTE_CONST(0.0001) * var_chaste_interface__Na_Buffers__Na_Bj; + const double var_x112 = CHASTE_CONST(0.001) + CHASTE_CONST(0.0001) * var_chaste_interface__Na_Concentrations__Na_sl; + const double var_x113 = CHASTE_CONST(0.0001) * var_chaste_interface__Na_Buffers__Na_Bsl; const double var_x114 = var_x3 * mParameters[3]; - const double var_x115 = 0.23994508763098885 * var_x114; - const double var_x116 = 7.3530178752050587e-13 * var_x56; + const double var_x115 = CHASTE_CONST(0.23994508763098885) * var_x114; + const double var_x116 = CHASTE_CONST(7.3530178752050587e-13) * var_x56; const double var_x117 = var_x114 * var_x65; - const double var_x118 = -0.75 * mParameters[8]; - const double var_x119 = exp(var_x36); - const double var_x120 = 0.75 * var_x119; + const double var_x118 = -CHASTE_CONST(0.75) * mParameters[8]; + const double var_x119 = CHASTE_MATH::Exp(var_x36); + const double var_x120 = CHASTE_CONST(0.75) * var_x119; const double var_x121 = var_x62 / (-1 + var_x119); const double var_x122 = var_x114 * var_x121 * var_x72; - const double var_x123 = 3.2338732908121872 * var_x3; + const double var_x123 = CHASTE_CONST(3.2338732908121872) * var_x3; const double var_x124 = var_x34 / var_chaste_interface__Na_Concentrations__Na_j; - const double var_x125 = 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_x126 = 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 = mParameters[21] * mParameters[7] / ((CHASTE_CONST(1.5) + mParameters[7]) * (1 + CHASTE_CONST(0.1245) * CHASTE_MATH::Exp(-CHASTE_CONST(0.10000000000000001) * var_x36) + CHASTE_CONST(0.036499999999999998) * (-CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * CHASTE_MATH::Exp(CHASTE_CONST(0.01485884101040119) * mParameters[8])) * CHASTE_MATH::Exp(-var_x36))); + const double var_x126 = CHASTE_MATH::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_x127 = var_x119 * var_x121; - const double var_x128 = 5.9492599172113663e-12 * var_x99; + const double var_x128 = CHASTE_CONST(5.9492599172113663e-12) * var_x99; const double var_x129 = var_x34 / var_chaste_interface__Na_Concentrations__Na_sl; - const double var_x130 = var_x68 + 18.571428571428569 * mParameters[0]; + const double var_x130 = var_x68 + CHASTE_CONST(18.571428571428569) * mParameters[0]; 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_x134 = CHASTE_MATH::Pow(var_x133, CHASTE_CONST(2.5)); + const double var_x135 = 1 + CHASTE_CONST(0.13584112963311223) * var_x134; const double var_x136 = 1 / var_x135; - const double var_x137 = 7.5 - 7 * var_x136; + const double var_x137 = CHASTE_CONST(7.5) - 7 * var_x136; const double var_x138 = 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_x139 = 1 / (15 - 14 * var_x136); const double var_x140 = 20 * var_x139 * var_chaste_interface__Ca_Concentrations__Ca_j; - const double var_x141 = pow(var_x135, (-2)); + const double var_x141 = CHASTE_MATH::Pow(var_x135, (-2)); const double var_x142 = var_x133 * var_x134 * var_x141; - const double var_x143 = 2.3772197685794643 * var_x142 * var_chaste_interface__Ca_Concentrations__Ca_j * var_chaste_interface__SR_Fluxes__Ry_Ro; - const double var_x144 = 0.21130842387373014 * var_x142 * var_x46 / pow((1 - 0.93333333333333335 * var_x136), 2); + const double var_x143 = CHASTE_CONST(2.3772197685794643) * var_x142 * var_chaste_interface__Ca_Concentrations__Ca_j * var_chaste_interface__SR_Fluxes__Ry_Ro; + const double var_x144 = CHASTE_CONST(0.21130842387373014) * var_x142 * var_x46 / CHASTE_MATH::Pow((1 - CHASTE_CONST(0.93333333333333335) * var_x136), 2); const double var_x145 = 10 * var_x139 * var_x46; const double var_x146 = -var_x137; const double var_x147 = var_x140 * var_chaste_interface__SR_Fluxes__Ry_Rr; const double var_x148 = var_x144 * 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][0] = 1.0 - (mDt * (-CHASTE_CONST(7.0788000000000011) + var_x0 + var_x1 + var_x17 + var_x18 + var_x2 - var_x4 + CHASTE_CONST(3.4188518090540365e-8) * var_x16 - CHASTE_CONST(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][4] = -(mDt * (CHASTE_CONST(0.016159999999999997) + var_x20)); + rJacobian[0][5] = -(mDt * (CHASTE_CONST(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][7] = -(mDt * (CHASTE_CONST(0.003032) + var_x22)); + rJacobian[0][8] = -(mDt * (CHASTE_CONST(0.0063300000000000006) + var_x22)); rJacobian[0][9] = -(mDt * (var_x23)); rJacobian[0][10] = 0.0; rJacobian[0][11] = 0.0; @@ -742,13 +744,13 @@ bool Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::registered = Mod 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][22] = -(mDt * (CHASTE_CONST(0.037279237232671424) * var_x25 + CHASTE_CONST(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][1] = 1.0 - (mDt * (-CHASTE_CONST(75.37105751391465) + var_x28 + var_x29 - var_x27 - var_x69 - var_x67 * (CHASTE_CONST(0.22) * var_x51 - CHASTE_CONST(9.8999999999999977e-9) * var_x58 - var_x53 * var_x57 + CHASTE_CONST(3.0321500000000001e-5) * var_x34 / var_chaste_interface__Ca_Concentrations__Ca_j + CHASTE_CONST(0.00029830680000000003) * var_x60 * var_x64 + var_x32 * CHASTE_MATH::Pow(var_chaste_interface__Ca_Concentrations__Ca_j, CHASTE_CONST(0.60000000000000009)) / var_x30 - var_x32 * CHASTE_MATH::Pow(var_chaste_interface__Ca_Concentrations__Ca_j, CHASTE_CONST(2.2000000000000002)) / CHASTE_MATH::Pow(var_x30, 2)))); rJacobian[1][2] = -(mDt * (var_x27)); rJacobian[1][3] = 0.0; rJacobian[1][4] = 0.0; @@ -757,7 +759,7 @@ bool Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::registered = Mod 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][10] = -(mDt * (CHASTE_CONST(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; @@ -767,16 +769,16 @@ bool Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::registered = Mod 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][20] = -(mDt * (-var_x67 * (-CHASTE_CONST(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 * ((64.935064935064929 * var_chaste_interface__SR_Ca_Concentrations__Ca_sr - 64.935064935064929 * var_chaste_interface__Ca_Concentrations__Ca_j) * mParameters[1])); + rJacobian[1][25] = -(mDt * ((CHASTE_CONST(64.935064935064929) * var_chaste_interface__SR_Ca_Concentrations__Ca_sr - CHASTE_CONST(64.935064935064929) * var_chaste_interface__Ca_Concentrations__Ca_j) * mParameters[1])); 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_x83 + var_x84 - 19.504723378941105 * var_x3 - var_x103 * (1.78 * var_x96 - 8.0099999999999983e-8 * var_x101 - var_x100 * var_x97 + 0.00024532850000000001 * var_x34 / var_chaste_interface__Ca_Concentrations__Ca_sl + 3.3145199999999996e-5 * var_x102 * var_x64 + 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][0] = -(mDt * (CHASTE_CONST(15.582629387269481) * var_x3)); + rJacobian[2][1] = -(mDt * (CHASTE_CONST(3.9220939916716238) * var_x3)); + rJacobian[2][2] = 1.0 - (mDt * (-CHASTE_CONST(165.10000000000002) + var_x83 + var_x84 - CHASTE_CONST(19.504723378941105) * var_x3 - var_x103 * (CHASTE_CONST(1.78) * var_x96 - CHASTE_CONST(8.0099999999999983e-8) * var_x101 - var_x100 * var_x97 + CHASTE_CONST(0.00024532850000000001) * var_x34 / var_chaste_interface__Ca_Concentrations__Ca_sl + CHASTE_CONST(3.3145199999999996e-5) * var_x102 * var_x64 + var_x86 * CHASTE_MATH::Pow(var_chaste_interface__Ca_Concentrations__Ca_sl, CHASTE_CONST(0.60000000000000009)) / var_x85 - var_x86 * CHASTE_MATH::Pow(var_chaste_interface__Ca_Concentrations__Ca_sl, CHASTE_CONST(2.2000000000000002)) / CHASTE_MATH::Pow(var_x85, 2)))); rJacobian[2][3] = 0.0; rJacobian[2][4] = 0.0; rJacobian[2][5] = 0.0; @@ -785,7 +787,7 @@ bool Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::registered = Mod 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][11] = -(mDt * (CHASTE_CONST(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_x105)); rJacobian[2][14] = 0.0; @@ -795,13 +797,13 @@ bool Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::registered = Mod rJacobian[2][18] = 0.0; rJacobian[2][19] = 0.0; rJacobian[2][20] = 0.0; - rJacobian[2][21] = -(mDt * (-var_x103 * (-5.3399999999999999 * var_x109 - var_x100 * var_x108))); + rJacobian[2][21] = -(mDt * (-var_x103 * (-CHASTE_CONST(5.3399999999999999) * var_x109 - var_x100 * var_x108))); 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][0] = -(mDt * (CHASTE_CONST(0.81600000000000006) - var_x0)); rJacobian[3][1] = 0.0; rJacobian[3][2] = 0.0; rJacobian[3][3] = 1.0 - (mDt * (-var_x19)); @@ -828,11 +830,11 @@ bool Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::registered = Mod 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][0] = -(mDt * (CHASTE_CONST(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][4] = 1.0 - (mDt * (-CHASTE_CONST(0.00046000000000000001) - var_x20)); rJacobian[4][5] = -(mDt * (-var_x20)); rJacobian[4][6] = 0.0; rJacobian[4][7] = 0.0; @@ -859,8 +861,8 @@ bool Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::registered = Mod 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][4] = -(mDt * (-CHASTE_CONST(0.015699999999999999))); + rJacobian[5][5] = 1.0 - (mDt * (-CHASTE_CONST(0.015757))); rJacobian[5][6] = 0.0; rJacobian[5][7] = 0.0; rJacobian[5][8] = 0.0; @@ -882,7 +884,7 @@ bool Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::registered = Mod 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][0] = -(mDt * (CHASTE_CONST(1.71) - var_x1)); rJacobian[6][1] = 0.0; rJacobian[6][2] = 0.0; rJacobian[6][3] = 0.0; @@ -909,14 +911,14 @@ bool Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::registered = Mod 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][0] = -(mDt * (CHASTE_CONST(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][7] = 1.0 - (mDt * (-CHASTE_CONST(3.1999999999999999e-5) - var_x22)); rJacobian[7][8] = -(mDt * (-var_x22)); rJacobian[7][9] = 0.0; rJacobian[7][10] = 0.0; @@ -943,8 +945,8 @@ bool Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::registered = Mod 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][7] = -(mDt * (-CHASTE_CONST(0.0030000000000000001))); + rJacobian[8][8] = 1.0 - (mDt * (-CHASTE_CONST(0.0063300000000000006))); rJacobian[8][9] = 0.0; rJacobian[8][10] = 0.0; rJacobian[8][11] = 0.0; @@ -963,7 +965,7 @@ bool Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::registered = Mod 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][0] = -(mDt * (CHASTE_CONST(2.2890000000000006) - var_x2)); rJacobian[9][1] = 0.0; rJacobian[9][2] = 0.0; rJacobian[9][3] = 0.0; @@ -991,7 +993,7 @@ bool Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::registered = Mod 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][1] = -(mDt * (CHASTE_CONST(1.7) - CHASTE_CONST(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; @@ -1000,7 +1002,7 @@ bool Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::registered = Mod 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][10] = 1.0 - (mDt * (-CHASTE_CONST(0.011900000000000001) - CHASTE_CONST(1.7) * var_chaste_interface__Ca_Concentrations__Ca_j)); rJacobian[10][11] = 0.0; rJacobian[10][12] = 0.0; rJacobian[10][13] = 0.0; @@ -1019,7 +1021,7 @@ bool Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::registered = Mod 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][2] = -(mDt * (CHASTE_CONST(1.7) - CHASTE_CONST(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; @@ -1028,7 +1030,7 @@ bool Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::registered = Mod 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][11] = 1.0 - (mDt * (-CHASTE_CONST(0.011900000000000001) - CHASTE_CONST(1.7) * var_chaste_interface__Ca_Concentrations__Ca_sl)); rJacobian[11][12] = 0.0; rJacobian[11][13] = 0.0; rJacobian[11][14] = 0.0; @@ -1045,7 +1047,7 @@ bool Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::registered = Mod 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][1] = -(mDt * (CHASTE_CONST(19.897959183673468) - var_x28)); rJacobian[12][2] = 0.0; rJacobian[12][3] = 0.0; rJacobian[12][4] = 0.0; @@ -1073,7 +1075,7 @@ bool Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::registered = Mod 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][2] = -(mDt * (CHASTE_CONST(43.550000000000004) - var_x83)); rJacobian[13][3] = 0.0; rJacobian[13][4] = 0.0; rJacobian[13][5] = 0.0; @@ -1099,7 +1101,7 @@ bool Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::registered = Mod 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][1] = -(mDt * (CHASTE_CONST(55.473098330241186) - var_x29)); rJacobian[14][2] = 0.0; rJacobian[14][3] = 0.0; rJacobian[14][4] = 0.0; @@ -1127,7 +1129,7 @@ bool Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::registered = Mod 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][2] = -(mDt * (CHASTE_CONST(121.55000000000001) - var_x84)); rJacobian[15][3] = 0.0; rJacobian[15][4] = 0.0; rJacobian[15][5] = 0.0; @@ -1199,7 +1201,7 @@ bool Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::registered = Mod rJacobian[17][17] = 1.0 - (mDt * (-var_x110)); rJacobian[17][18] = 0.0; rJacobian[17][19] = 0.0; - rJacobian[17][20] = -(mDt * (0.0007561 - var_x111)); + rJacobian[17][20] = -(mDt * (CHASTE_CONST(0.0007561) - var_x111)); rJacobian[17][21] = 0.0; rJacobian[17][22] = 0.0; rJacobian[17][23] = 0.0; @@ -1227,7 +1229,7 @@ bool Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::registered = Mod rJacobian[18][18] = 1.0 - (mDt * (-var_x112)); rJacobian[18][19] = 0.0; rJacobian[18][20] = 0.0; - rJacobian[18][21] = -(mDt * (0.000165 - var_x113)); + rJacobian[18][21] = -(mDt * (CHASTE_CONST(0.000165) - var_x113)); rJacobian[18][22] = 0.0; rJacobian[18][23] = 0.0; rJacobian[18][24] = 0.0; @@ -1261,7 +1263,7 @@ bool Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::registered = Mod rJacobian[19][25] = 0.0; rJacobian[19][26] = 0.0; rJacobian[20][0] = 0.0; - rJacobian[20][1] = -(mDt * (-176588941779729.56 * var_x117 * (1.4849999999999997e-8 * var_x58 - 0.33000000000000002 * var_x51 + var_x116 * var_x53))); + rJacobian[20][1] = -(mDt * (-CHASTE_CONST(176588941779729.56) * var_x117 * (CHASTE_CONST(1.4849999999999997e-8) * var_x58 - CHASTE_CONST(0.33000000000000002) * var_x51 + var_x116 * var_x53))); rJacobian[20][2] = 0.0; rJacobian[20][3] = 0.0; rJacobian[20][4] = 0.0; @@ -1270,7 +1272,7 @@ bool Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::registered = Mod rJacobian[20][7] = 0.0; rJacobian[20][8] = 0.0; rJacobian[20][9] = 0.0; - rJacobian[20][10] = -(mDt * (536388.91065592843 * var_x122 * (var_x118 + var_x120 * var_chaste_interface__Na_Concentrations__Na_j))); + rJacobian[20][10] = -(mDt * (CHASTE_CONST(536388.91065592843) * var_x122 * (var_x118 + var_x120 * var_chaste_interface__Na_Concentrations__Na_j))); rJacobian[20][11] = 0.0; rJacobian[20][12] = 0.0; rJacobian[20][13] = 0.0; @@ -1280,7 +1282,7 @@ bool Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::registered = Mod rJacobian[20][17] = -(mDt * (var_x110 * mParameters[3])); rJacobian[20][18] = 0.0; rJacobian[20][19] = 0.0; - rJacobian[20][20] = 1.0 - (mDt * ((-0.0007561 + var_x111 - var_x123 - 176588941779729.56 * var_x66 * (0.98999999999999999 * var_x82 + 6.567e-5 * var_x124 + var_x116 * var_x80 + 0.11 * var_x124 * var_x126 + 2.2781249999999999e-9 * var_x127 * var_x60 + 9.0157776108189337e-5 * var_x125 / (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][20] = 1.0 - (mDt * ((-CHASTE_CONST(0.0007561) + var_x111 - var_x123 - CHASTE_CONST(176588941779729.56) * var_x66 * (CHASTE_CONST(0.98999999999999999) * var_x82 + CHASTE_CONST(6.567e-5) * var_x124 + var_x116 * var_x80 + CHASTE_CONST(0.11) * var_x124 * var_x126 + CHASTE_CONST(2.2781249999999999e-9) * var_x127 * var_x60 + CHASTE_CONST(9.0157776108189337e-5) * var_x125 / (CHASTE_MATH::Pow((CHASTE_CONST(6.8301345536507063e-5) + CHASTE_MATH::Pow(var_chaste_interface__Na_Concentrations__Na_j, (-4))), 2) * CHASTE_MATH::Pow(var_chaste_interface__Na_Concentrations__Na_j, 5)))) * mParameters[3])); rJacobian[20][21] = -(mDt * (var_x123 * mParameters[3])); rJacobian[20][22] = 0.0; rJacobian[20][23] = 0.0; @@ -1289,7 +1291,7 @@ bool Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::registered = Mod rJacobian[20][26] = 0.0; rJacobian[21][0] = 0.0; rJacobian[21][1] = 0.0; - rJacobian[21][2] = -(mDt * (-4759071980963.7119 * var_x117 * (1.2014999999999997e-7 * var_x101 - 2.6699999999999999 * var_x96 + var_x128 * var_x97))); + rJacobian[21][2] = -(mDt * (-CHASTE_CONST(4759071980963.7119) * var_x117 * (CHASTE_CONST(1.2014999999999997e-7) * var_x101 - CHASTE_CONST(2.6699999999999999) * var_x96 + var_x128 * var_x97))); rJacobian[21][3] = 0.0; rJacobian[21][4] = 0.0; rJacobian[21][5] = 0.0; @@ -1298,7 +1300,7 @@ bool Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::registered = Mod rJacobian[21][8] = 0.0; rJacobian[21][9] = 0.0; rJacobian[21][10] = 0.0; - rJacobian[21][11] = -(mDt * (1606.1867935752523 * var_x122 * (var_x118 + var_x120 * var_chaste_interface__Na_Concentrations__Na_sl))); + rJacobian[21][11] = -(mDt * (CHASTE_CONST(1606.1867935752523) * var_x122 * (var_x118 + var_x120 * var_chaste_interface__Na_Concentrations__Na_sl))); rJacobian[21][12] = 0.0; rJacobian[21][13] = 0.0; rJacobian[21][14] = 0.0; @@ -1306,15 +1308,15 @@ bool Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::registered = Mod rJacobian[21][16] = 0.0; rJacobian[21][17] = 0.0; rJacobian[21][18] = -(mDt * (var_x112 * mParameters[3])); - rJacobian[21][19] = -(mDt * (7.7982153480071377 * var_x114)); - rJacobian[21][20] = -(mDt * (0.087152885187388451 * var_x114)); - rJacobian[21][21] = 1.0 - (mDt * ((-0.000165 + var_x113 - 7.8853682331945256 * var_x3 - 4759071980963.7119 * var_x66 * (0.00053133 * var_x129 + 8.0099999999999998 * var_x109 + var_x108 * var_x128 + 2.5312499999999994e-10 * var_x102 * var_x127 + 0.89000000000000001 * var_x126 * var_x129 + 0.00072945837032989554 * var_x125 / (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][19] = -(mDt * (CHASTE_CONST(7.7982153480071377) * var_x114)); + rJacobian[21][20] = -(mDt * (CHASTE_CONST(0.087152885187388451) * var_x114)); + rJacobian[21][21] = 1.0 - (mDt * ((-CHASTE_CONST(0.000165) + var_x113 - CHASTE_CONST(7.8853682331945256) * var_x3 - CHASTE_CONST(4759071980963.7119) * var_x66 * (CHASTE_CONST(0.00053133) * var_x129 + CHASTE_CONST(8.0099999999999998) * var_x109 + var_x108 * var_x128 + CHASTE_CONST(2.5312499999999994e-10) * var_x102 * var_x127 + CHASTE_CONST(0.89000000000000001) * var_x126 * var_x129 + CHASTE_CONST(0.00072945837032989554) * var_x125 / (CHASTE_MATH::Pow((CHASTE_CONST(6.8301345536507063e-5) + CHASTE_MATH::Pow(var_chaste_interface__Na_Concentrations__Na_sl, (-4))), 2) * CHASTE_MATH::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][0] = -(mDt * (-CHASTE_CONST(6.3492962168146398e-7) * var_x16 + CHASTE_CONST(5029484.9869235931) * var_x10 * var_x12 * var_x5 * mParameters[2])); rJacobian[22][1] = -(mDt * (var_x130)); rJacobian[22][2] = 0.0; rJacobian[22][3] = 0.0; @@ -1336,7 +1338,7 @@ bool Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::registered = Mod 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_x25 - 8.7400597733819945e-14 * var_x26)); + rJacobian[22][22] = 1.0 - (mDt * (-260 + var_x131 - var_x130 - CHASTE_CONST(0.69232869146389786) * var_x25 - CHASTE_CONST(8.7400597733819945e-14) * var_x26)); rJacobian[22][23] = -(mDt * (var_x132)); 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])); @@ -1392,7 +1394,7 @@ bool Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::registered = Mod rJacobian[24][21] = 0.0; rJacobian[24][22] = -(mDt * (-var_x143 + var_x138 * var_x144)); rJacobian[24][23] = 0.0; - rJacobian[24][24] = 1.0 - (mDt * (-0.065000000000000002 - var_x145)); + rJacobian[24][24] = 1.0 - (mDt * (-CHASTE_CONST(0.065000000000000002) - var_x145)); rJacobian[24][25] = -(mDt * (-var_x145 + var_x137 * var_chaste_interface__Ca_Concentrations__Ca_j)); rJacobian[24][26] = -(mDt * (-var_x145)); rJacobian[25][0] = 0.0; @@ -1419,8 +1421,8 @@ bool Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::registered = Mod rJacobian[25][21] = 0.0; rJacobian[25][22] = -(mDt * (var_x143 + var_x148)); rJacobian[25][23] = 0.0; - rJacobian[25][24] = -(mDt * (0.0050000000000000001)); - rJacobian[25][25] = 1.0 - (mDt * (-0.059999999999999998 + var_x146 * var_chaste_interface__Ca_Concentrations__Ca_j)); + rJacobian[25][24] = -(mDt * (CHASTE_CONST(0.0050000000000000001))); + rJacobian[25][25] = 1.0 - (mDt * (-CHASTE_CONST(0.059999999999999998) + var_x146 * var_chaste_interface__Ca_Concentrations__Ca_j)); rJacobian[25][26] = -(mDt * (var_x145)); rJacobian[26][0] = 0.0; rJacobian[26][1] = -(mDt * (-var_x147 + var_x146 * var_chaste_interface__SR_Fluxes__Ry_Rr)); @@ -1444,18 +1446,18 @@ bool Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::registered = Mod rJacobian[26][19] = 0.0; rJacobian[26][20] = 0.0; rJacobian[26][21] = 0.0; - rJacobian[26][22] = -(mDt * (-var_x148 + 2.3772197685794643 * var_x133 * var_x134 * var_x141 * var_chaste_interface__Ca_Concentrations__Ca_j * var_chaste_interface__SR_Fluxes__Ry_Rr)); + rJacobian[26][22] = -(mDt * (-var_x148 + CHASTE_CONST(2.3772197685794643) * var_x133 * var_x134 * var_x141 * 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_x145 + var_x146 * var_chaste_interface__Ca_Concentrations__Ca_j)); + rJacobian[26][24] = -(mDt * (-CHASTE_CONST(0.0050000000000000001))); + rJacobian[26][25] = -(mDt * (CHASTE_CONST(0.055))); + rJacobian[26][26] = 1.0 - (mDt * (-CHASTE_CONST(0.0050000000000000001) - var_x145 + var_x146 * var_chaste_interface__Ca_Concentrations__Ca_j)); } 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]); + double var_chaste_interface__membrane_potential__V_m = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -1498,111 +1500,111 @@ bool Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::registered = Mod 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_I_Ks__gks_junc = CHASTE_CONST(0.0035000000000000001); // mS_per_uF + const double var_I_Ks__gks_sl = CHASTE_CONST(0.0035000000000000001); // mS_per_uF + const double var_I_Kp__kp_kp = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(7.4880000000000004) - CHASTE_CONST(0.16722408026755853) * var_chaste_interface__membrane_potential__V_m)); // dimensionless + const double var_I_Kr__rkr = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(3.0833333333333335) + CHASTE_CONST(0.041666666666666664) * var_chaste_interface__membrane_potential__V_m)); // dimensionless + const double var_membrane_potential__i_Stim_converted = CHASTE_STIM(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_membrane_potential__i_Stim = var_membrane_potential__i_Stim_converted / CHASTE_CAP(); // uA_per_uF + const double var_parameters__Fjunc = CHASTE_CONST(0.11); // dimensionless + const double var_parameters__Fjunc_CaL = CHASTE_CONST(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__GCaB = CHASTE_CONST(0.00055130000000000001); // mS_per_uF + const double var_parameters__GClB = CHASTE_CONST(0.0089999999999999993); // mS_per_uF + const double var_parameters__GClCa = CHASTE_CONST(0.0548125); // mS_per_uF + const double var_parameters__GNaB = CHASTE_CONST(0.00059699999999999998); // mS_per_uF + const double var_parameters__IbarSLCaP = CHASTE_CONST(0.067299999999999999); // uA_per_uF + const double var_parameters__KdClCa = CHASTE_CONST(0.10000000000000001); // mM + const double var_parameters__Kdact = CHASTE_CONST(0.00014999999999999999); // mM + const double var_I_NCX__Ka_junc = 1 / (1 + CHASTE_MATH::Pow(var_parameters__Kdact, 2) / CHASTE_MATH::Pow(var_chaste_interface__Ca_Concentrations__Ca_j, 2)); // dimensionless + const double var_I_NCX__Ka_sl = 1 / (1 + CHASTE_MATH::Pow(var_parameters__Kdact, 2) / CHASTE_MATH::Pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 2)); // dimensionless + const double var_parameters__KmCai = CHASTE_CONST(0.0035899999999999999); // mM + const double var_parameters__KmCao = CHASTE_CONST(1.3); // mM + const double var_parameters__KmKo = CHASTE_CONST(1.5); // mM + const double var_parameters__KmNai = CHASTE_CONST(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__KmNao = CHASTE_CONST(87.5); // mM + const double var_parameters__KmPCa = CHASTE_CONST(0.00050000000000000001); // mM + const double var_I_Ki__g_K1 = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::Sqrt(mParameters[7]) * mParameters[16]; // mS_per_uF + const double var_I_Kr__gkr = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::Sqrt(mParameters[7]) * mParameters[17]; // mS_per_uF + const double var_I_NCX__s3_junc = CHASTE_MATH::Pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * mParameters[5] + CHASTE_MATH::Pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * var_parameters__KmCao + CHASTE_MATH::Pow(mParameters[8], 3) * var_chaste_interface__Ca_Concentrations__Ca_j + CHASTE_MATH::Pow(var_parameters__KmNao, 3) * (1 + var_chaste_interface__Ca_Concentrations__Ca_j / var_parameters__KmCai) * var_chaste_interface__Ca_Concentrations__Ca_j + CHASTE_MATH::Pow(mParameters[8], 3) * (1 + CHASTE_MATH::Pow(var_chaste_interface__Na_Concentrations__Na_j, 3) / CHASTE_MATH::Pow(var_parameters__KmNai, 3)) * var_parameters__KmCai; // mM4 + const double var_I_NCX__s3_sl = CHASTE_MATH::Pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * mParameters[5] + CHASTE_MATH::Pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * var_parameters__KmCao + CHASTE_MATH::Pow(mParameters[8], 3) * var_chaste_interface__Ca_Concentrations__Ca_sl + CHASTE_MATH::Pow(var_parameters__KmNao, 3) * (1 + var_chaste_interface__Ca_Concentrations__Ca_sl / var_parameters__KmCai) * var_chaste_interface__Ca_Concentrations__Ca_sl + CHASTE_MATH::Pow(mParameters[8], 3) * (1 + CHASTE_MATH::Pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) / CHASTE_MATH::Pow(var_parameters__KmNai, 3)) * var_parameters__KmCai; // mM4 + const double var_I_NaK__sigma = -CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * CHASTE_MATH::Exp(CHASTE_CONST(0.01485884101040119) * mParameters[8]); // dimensionless + const double var_parameters__Q10CaL = CHASTE_CONST(1.8); // dimensionless + const double var_parameters__Q10NCX = CHASTE_CONST(1.5700000000000001); // dimensionless + const double var_parameters__Q10SLCaP = CHASTE_CONST(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__fnak = 1 / (1 + CHASTE_CONST(0.1245) * CHASTE_MATH::Exp(-CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT) + CHASTE_CONST(0.036499999999999998) * var_I_NaK__sigma * CHASTE_MATH::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 + CHASTE_MATH::Pow(var_parameters__KmNaip, 4) / CHASTE_MATH::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 + CHASTE_MATH::Pow(var_parameters__KmNaip, 4) / CHASTE_MATH::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_parameters__Qpow = -31 + CHASTE_CONST(0.10000000000000001) * mParameters[23]; // dimensionless + const double var_I_PCa__I_pca_junc = CHASTE_MATH::Pow(var_chaste_interface__Ca_Concentrations__Ca_j, CHASTE_CONST(1.6000000000000001)) * CHASTE_MATH::Pow(var_parameters__Q10SLCaP, var_parameters__Qpow) * var_parameters__Fjunc * var_parameters__IbarSLCaP / (CHASTE_MATH::Pow(var_chaste_interface__Ca_Concentrations__Ca_j, CHASTE_CONST(1.6000000000000001)) + CHASTE_MATH::Pow(var_parameters__KmPCa, CHASTE_CONST(1.6000000000000001))); // uA_per_uF + const double var_I_PCa__I_pca_sl = CHASTE_MATH::Pow(var_chaste_interface__Ca_Concentrations__Ca_sl, CHASTE_CONST(1.6000000000000001)) * CHASTE_MATH::Pow(var_parameters__Q10SLCaP, var_parameters__Qpow) * var_parameters__Fsl * var_parameters__IbarSLCaP / (CHASTE_MATH::Pow(var_chaste_interface__Ca_Concentrations__Ca_sl, CHASTE_CONST(1.6000000000000001)) + CHASTE_MATH::Pow(var_parameters__KmPCa, CHASTE_CONST(1.6000000000000001))); // uA_per_uF + const double var_parameters__eca_junc = CHASTE_CONST(0.5) * CHASTE_MATH::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_parameters__eca_sl = CHASTE_CONST(0.5) * CHASTE_MATH::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_parameters__ecl = CHASTE_MATH::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_parameters__ek = CHASTE_MATH::Log(mParameters[7] / var_chaste_interface__K_Concentration__K_i) / var_parameters__FoRT; // mV + const double var_I_Ki__aki = CHASTE_CONST(1.02) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__membrane_potential__V_m - CHASTE_CONST(0.23849999999999999) * var_parameters__ek)); // dimensionless + const double var_I_Ki__bki = (CHASTE_CONST(0.49124000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.43983232) + CHASTE_CONST(0.080320000000000003) * var_chaste_interface__membrane_potential__V_m - CHASTE_CONST(0.080320000000000003) * var_parameters__ek) + CHASTE_MATH::Exp(-CHASTE_CONST(36.698642499999998) + CHASTE_CONST(0.061749999999999999) * var_chaste_interface__membrane_potential__V_m - CHASTE_CONST(0.061749999999999999) * var_parameters__ek)) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.4444678999999998) + CHASTE_CONST(0.51429999999999998) * var_parameters__ek - CHASTE_CONST(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_parameters__ena_junc = CHASTE_MATH::Log(mParameters[8] / var_chaste_interface__Na_Concentrations__Na_j) / var_parameters__FoRT; // mV + const double var_I_Na__I_Na_junc = CHASTE_MATH::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_parameters__ena_sl = CHASTE_MATH::Log(mParameters[8] / var_chaste_interface__Na_Concentrations__Na_sl) / var_parameters__FoRT; // mV + const double var_I_Na__I_Na_sl = CHASTE_MATH::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__GtoFast = ((var_parameters__epi == 1) ? (CHASTE_CONST(0.1144) * mParameters[15]) : (CHASTE_CONST(0.0014039999999999999) * mParameters[15])); // mS_per_uF + const double var_I_to__GtoSlow = ((var_parameters__epi == 1) ? (CHASTE_CONST(0.015599999999999999) * mParameters[19]) : (CHASTE_CONST(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_parameters__gkp = CHASTE_CONST(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_parameters__ksat = CHASTE_CONST(0.32000000000000001); // dimensionless + const double var_parameters__nu = CHASTE_CONST(0.27000000000000002); // dimensionless + const double var_I_NCX__s1_junc = CHASTE_MATH::Pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * mParameters[5] * CHASTE_MATH::Exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * var_parameters__nu); // mM4 + const double var_I_NCX__s1_sl = CHASTE_MATH::Pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * mParameters[5] * CHASTE_MATH::Exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * var_parameters__nu); // mM4 + const double var_I_NCX__s2_junc = CHASTE_MATH::Pow(mParameters[8], 3) * var_chaste_interface__Ca_Concentrations__Ca_j * CHASTE_MATH::Exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT); // mM4 + const double var_I_NCX__I_ncx_junc = CHASTE_MATH::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 * CHASTE_MATH::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 = CHASTE_MATH::Pow(mParameters[8], 3) * var_chaste_interface__Ca_Concentrations__Ca_sl * CHASTE_MATH::Exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT); // mM4 + const double var_I_NCX__I_ncx_sl = CHASTE_MATH::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 * CHASTE_MATH::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 = CHASTE_CONST(0.00054000000000000001) * mParameters[11]; // cm_per_sec + const double var_I_Ca__ibarca_j = 4 * (-CHASTE_CONST(0.34100000000000003) * mParameters[5] + CHASTE_CONST(0.34100000000000003) * var_chaste_interface__Ca_Concentrations__Ca_j * CHASTE_MATH::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 + CHASTE_MATH::Exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_Ca_junc = CHASTE_CONST(0.45000000000000001) * CHASTE_MATH::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_I_Ca__ibarca_sl = 4 * (-CHASTE_CONST(0.34100000000000003) * mParameters[5] + CHASTE_CONST(0.34100000000000003) * var_chaste_interface__Ca_Concentrations__Ca_sl * CHASTE_MATH::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 + CHASTE_MATH::Exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_Ca_sl = CHASTE_CONST(0.45000000000000001) * CHASTE_MATH::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_parameters__pK = CHASTE_CONST(1.35e-7); // cm_per_sec + const double var_I_Ca__ibark = (-CHASTE_CONST(0.75) * mParameters[7] + CHASTE_CONST(0.75) * var_chaste_interface__K_Concentration__K_i * CHASTE_MATH::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 + CHASTE_MATH::Exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_CaK = CHASTE_CONST(0.45000000000000001) * CHASTE_MATH::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 = CHASTE_CONST(7.4999999999999993e-9); // cm_per_sec + const double var_I_Ca__ibarna_j = (-CHASTE_CONST(0.75) * mParameters[8] + CHASTE_CONST(0.75) * var_chaste_interface__Na_Concentrations__Na_j * CHASTE_MATH::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 + CHASTE_MATH::Exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_CaNa_junc = CHASTE_CONST(0.45000000000000001) * CHASTE_MATH::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 = (-CHASTE_CONST(0.75) * mParameters[8] + CHASTE_CONST(0.75) * var_chaste_interface__Na_Concentrations__Na_sl * CHASTE_MATH::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 + CHASTE_MATH::Exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_CaNa_sl = CHASTE_CONST(0.45000000000000001) * CHASTE_MATH::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_parameters__pNaK = CHASTE_CONST(0.018329999999999999); // dimensionless + const double var_I_Ks__eks = CHASTE_MATH::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 = CHASTE_MATH::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 @@ -1614,7 +1616,7 @@ bool Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::registered = Mod { // Time units: millisecond std::vector& rY = rGetStateVariables(); - double var_chaste_interface__membrane_potential__V_m = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane_potential__V_m = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -1639,30 +1641,30 @@ bool Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::registered = Mod 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_Ca__dss = 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.83333333333333337) - CHASTE_CONST(0.16666666666666666) * var_chaste_interface__membrane_potential__V_m)); + const double var_I_Ca__fss = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(3.8888888888888888) + CHASTE_CONST(0.1111111111111111) * var_chaste_interface__membrane_potential__V_m)) + CHASTE_CONST(0.59999999999999998) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(2.5) - CHASTE_CONST(0.050000000000000003) * var_chaste_interface__membrane_potential__V_m)); + const double var_I_Ca__taud = CHASTE_CONST(28.571428571428569) * (1 - CHASTE_MATH::Exp(-CHASTE_CONST(0.83333333333333337) - CHASTE_CONST(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 / (CHASTE_CONST(0.02) + CHASTE_CONST(0.019699999999999999) * CHASTE_MATH::Exp(-CHASTE_CONST(0.23877882250000002) * CHASTE_MATH::Pow((1 + CHASTE_CONST(0.068965517241379309) * var_chaste_interface__membrane_potential__V_m), 2))); + const double var_I_Kr__tauxr = 230 / (1 + CHASTE_MATH::Exp(2 + CHASTE_CONST(0.050000000000000003) * var_chaste_interface__membrane_potential__V_m)) + 3300 / ((1 + CHASTE_MATH::Exp(CHASTE_CONST(1.2222222222222223) + CHASTE_CONST(0.1111111111111111) * var_chaste_interface__membrane_potential__V_m)) * (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.4444444444444446) - CHASTE_CONST(0.1111111111111111) * var_chaste_interface__membrane_potential__V_m))); + const double var_I_Kr__xrss = 1 / (1 + CHASTE_MATH::Exp(-2 - CHASTE_CONST(0.20000000000000001) * var_chaste_interface__membrane_potential__V_m)); + const double var_I_Ks__tauxs = CHASTE_CONST(990.10000000000002) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.17252124645892353) - CHASTE_CONST(0.070821529745042494) * var_chaste_interface__membrane_potential__V_m)); + const double var_I_Ks__xsss = 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.26666666666666666) - CHASTE_CONST(0.070175438596491224) * var_chaste_interface__membrane_potential__V_m)); + const double var_I_Na__ah = ((var_chaste_interface__membrane_potential__V_m >= -40) ? (0) : (CHASTE_CONST(0.057000000000000002) * CHASTE_MATH::Exp(-CHASTE_CONST(11.764705882352942) + CHASTE_CONST(0.14705882352941177) * mParameters[14] - CHASTE_CONST(0.14705882352941177) * var_chaste_interface__membrane_potential__V_m))); + const double var_I_Na__aj = ((var_chaste_interface__membrane_potential__V_m >= -40) ? (0) : ((CHASTE_CONST(37.780000000000001) + var_chaste_interface__membrane_potential__V_m) * (-25428 * CHASTE_MATH::Exp(CHASTE_CONST(0.24440000000000001) * var_chaste_interface__membrane_potential__V_m - CHASTE_CONST(0.24440000000000001) * mParameters[14]) - CHASTE_CONST(6.9480000000000002e-6) * CHASTE_MATH::Exp(CHASTE_CONST(0.043909999999999998) * mParameters[14] - CHASTE_CONST(0.043909999999999998) * var_chaste_interface__membrane_potential__V_m)) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(24.640530000000002) + CHASTE_CONST(0.311) * var_chaste_interface__membrane_potential__V_m - CHASTE_CONST(0.311) * mParameters[14])))); + const double var_I_Na__bh = ((var_chaste_interface__membrane_potential__V_m >= -40) ? (CHASTE_CONST(5.9230769230769234) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.96036036036036043) + CHASTE_CONST(0.0900900900900901) * mParameters[14] - CHASTE_CONST(0.0900900900900901) * var_chaste_interface__membrane_potential__V_m))) : (310000 * CHASTE_MATH::Exp(CHASTE_CONST(0.34849999999999998) * var_chaste_interface__membrane_potential__V_m - CHASTE_CONST(0.34849999999999998) * mParameters[14]) + CHASTE_CONST(2.7000000000000002) * CHASTE_MATH::Exp(CHASTE_CONST(0.079000000000000001) * var_chaste_interface__membrane_potential__V_m - CHASTE_CONST(0.079000000000000001) * mParameters[14]))); + const double var_I_Na__bj = ((var_chaste_interface__membrane_potential__V_m >= -40) ? (CHASTE_CONST(0.59999999999999998) * CHASTE_MATH::Exp(CHASTE_CONST(0.057000000000000002) * var_chaste_interface__membrane_potential__V_m - CHASTE_CONST(0.057000000000000002) * mParameters[14]) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(3.2000000000000002) + CHASTE_CONST(0.10000000000000001) * mParameters[14] - CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane_potential__V_m))) : (CHASTE_CONST(0.024240000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.01052) * mParameters[14] - CHASTE_CONST(0.01052) * var_chaste_interface__membrane_potential__V_m) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(5.5312920000000005) + CHASTE_CONST(0.13780000000000001) * mParameters[14] - CHASTE_CONST(0.13780000000000001) * var_chaste_interface__membrane_potential__V_m)))); + const double var_I_Na__hss = CHASTE_CONST(0.01) * mParameters[13] + (1 - CHASTE_CONST(0.01) * mParameters[13]) / CHASTE_MATH::Pow((1 + CHASTE_MATH::Exp(CHASTE_CONST(9.6298788694481825) + CHASTE_CONST(0.13458950201884254) * var_chaste_interface__membrane_potential__V_m - CHASTE_CONST(0.13458950201884254) * mParameters[14])), 2); + const double var_I_Na__jss = CHASTE_CONST(0.01) * mParameters[13] + (1 - CHASTE_CONST(0.01) * mParameters[13]) / CHASTE_MATH::Pow((1 + CHASTE_MATH::Exp(CHASTE_CONST(9.6298788694481825) + CHASTE_CONST(0.13458950201884254) * var_chaste_interface__membrane_potential__V_m - CHASTE_CONST(0.13458950201884254) * mParameters[14])), 2); + const double var_I_Na__mss = 1 / CHASTE_MATH::Pow((1 + CHASTE_MATH::Exp(-CHASTE_CONST(6.2967884828349945) - CHASTE_CONST(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)); + const double var_I_Na__taum = CHASTE_CONST(0.12920000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(8.682389366752302) * CHASTE_MATH::Pow((1 + CHASTE_CONST(0.021838829438742085) * var_chaste_interface__membrane_potential__V_m), 2)) + CHASTE_CONST(0.064869999999999997) * CHASTE_MATH::Exp(-CHASTE_CONST(0.0089012876052174655) * CHASTE_MATH::Pow((-1 + CHASTE_CONST(0.2073398299813394) * var_chaste_interface__membrane_potential__V_m), 2)); + const double var_I_to__tauxtof = CHASTE_CONST(0.5) + CHASTE_CONST(8.5) * CHASTE_MATH::Exp(-CHASTE_CONST(0.81000000000000005) * CHASTE_MATH::Pow((1 + CHASTE_CONST(0.022222222222222223) * var_chaste_interface__membrane_potential__V_m), 2)); + const double var_I_to__tauxtos = CHASTE_CONST(0.5) + 9 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(0.20000000000000001) + CHASTE_CONST(0.066666666666666666) * var_chaste_interface__membrane_potential__V_m)); + const double var_I_to__tauytof = 7 + 85 * CHASTE_MATH::Exp(-CHASTE_CONST(7.2727272727272725) * CHASTE_MATH::Pow((1 + CHASTE_CONST(0.025000000000000001) * var_chaste_interface__membrane_potential__V_m), 2)); + const double var_I_to__tauytos = 30 + 800 / (1 + CHASTE_MATH::Exp(6 + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane_potential__V_m)); + const double var_I_to__xtoss = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(1.4615384615384615) - CHASTE_CONST(0.076923076923076927) * var_chaste_interface__membrane_potential__V_m)); + const double var_I_to__ytoss = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(3.8999999999999999) + CHASTE_CONST(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)); @@ -1713,7 +1715,7 @@ bool Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::registered = Mod { // Inputs: // Time units: millisecond - double var_chaste_interface__membrane_potential__V_m = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane_potential__V_m = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -1763,105 +1765,105 @@ bool Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::registered = Mod // 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_I_Ks__gks_junc = CHASTE_CONST(0.0035000000000000001); // mS_per_uF + const double var_I_Ks__gks_sl = CHASTE_CONST(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_Ca__tauf = 1 / (CHASTE_CONST(0.02) + CHASTE_CONST(0.019699999999999999) * CHASTE_MATH::Exp(-CHASTE_CONST(0.23877882250000002) * CHASTE_MATH::Pow((1 + CHASTE_CONST(0.068965517241379309) * var_chaste_interface__membrane_potential__V_m), 2))); // msec + const double var_I_Kr__rkr = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(3.0833333333333335) + CHASTE_CONST(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) : (CHASTE_CONST(0.057000000000000002) * CHASTE_MATH::Exp(-CHASTE_CONST(11.764705882352942) + CHASTE_CONST(0.14705882352941177) * mParameters[14] - CHASTE_CONST(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) : ((CHASTE_CONST(37.780000000000001) + var_chaste_interface__membrane_potential__V_m) * (-25428 * CHASTE_MATH::Exp(CHASTE_CONST(0.24440000000000001) * var_chaste_interface__membrane_potential__V_m - CHASTE_CONST(0.24440000000000001) * mParameters[14]) - CHASTE_CONST(6.9480000000000002e-6) * CHASTE_MATH::Exp(CHASTE_CONST(0.043909999999999998) * mParameters[14] - CHASTE_CONST(0.043909999999999998) * var_chaste_interface__membrane_potential__V_m)) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(24.640530000000002) + CHASTE_CONST(0.311) * var_chaste_interface__membrane_potential__V_m - CHASTE_CONST(0.311) * mParameters[14])))); // dimensionless + const double var_I_Na__bh = ((var_chaste_interface__membrane_potential__V_m >= -40) ? (CHASTE_CONST(5.9230769230769234) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.96036036036036043) + CHASTE_CONST(0.0900900900900901) * mParameters[14] - CHASTE_CONST(0.0900900900900901) * var_chaste_interface__membrane_potential__V_m))) : (310000 * CHASTE_MATH::Exp(CHASTE_CONST(0.34849999999999998) * var_chaste_interface__membrane_potential__V_m - CHASTE_CONST(0.34849999999999998) * mParameters[14]) + CHASTE_CONST(2.7000000000000002) * CHASTE_MATH::Exp(CHASTE_CONST(0.079000000000000001) * var_chaste_interface__membrane_potential__V_m - CHASTE_CONST(0.079000000000000001) * mParameters[14]))); // dimensionless + const double var_I_Na__bj = ((var_chaste_interface__membrane_potential__V_m >= -40) ? (CHASTE_CONST(0.59999999999999998) * CHASTE_MATH::Exp(CHASTE_CONST(0.057000000000000002) * var_chaste_interface__membrane_potential__V_m - CHASTE_CONST(0.057000000000000002) * mParameters[14]) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(3.2000000000000002) + CHASTE_CONST(0.10000000000000001) * mParameters[14] - CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane_potential__V_m))) : (CHASTE_CONST(0.024240000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.01052) * mParameters[14] - CHASTE_CONST(0.01052) * var_chaste_interface__membrane_potential__V_m) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(5.5312920000000005) + CHASTE_CONST(0.13780000000000001) * mParameters[14] - CHASTE_CONST(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_membrane_potential__i_Stim_converted = CHASTE_STIM(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__Fjunc = CHASTE_CONST(0.11); // dimensionless + const double var_parameters__Fjunc_CaL = CHASTE_CONST(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__IbarSLCaP = CHASTE_CONST(0.067299999999999999); // uA_per_uF + const double var_parameters__Kdact = CHASTE_CONST(0.00014999999999999999); // mM + const double var_I_NCX__Ka_junc = 1 / (1 + CHASTE_MATH::Pow(var_parameters__Kdact, 2) / CHASTE_MATH::Pow(var_chaste_interface__Ca_Concentrations__Ca_j, 2)); // dimensionless + const double var_I_NCX__Ka_sl = 1 / (1 + CHASTE_MATH::Pow(var_parameters__Kdact, 2) / CHASTE_MATH::Pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 2)); // dimensionless + const double var_parameters__KmCai = CHASTE_CONST(0.0035899999999999999); // mM + const double var_parameters__KmCao = CHASTE_CONST(1.3); // mM + const double var_parameters__KmKo = CHASTE_CONST(1.5); // mM + const double var_parameters__KmNai = CHASTE_CONST(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__KmNao = CHASTE_CONST(87.5); // mM + const double var_parameters__KmPCa = CHASTE_CONST(0.00050000000000000001); // mM + const double var_parameters__Kmf = CHASTE_CONST(0.00024600000000000002); // mM + const double var_parameters__Kmr = CHASTE_CONST(1.7); // mM + const double var_I_Ki__g_K1 = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::Sqrt(mParameters[7]) * mParameters[16]; // mS_per_uF + const double var_I_Kr__gkr = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::Sqrt(mParameters[7]) * mParameters[17]; // mS_per_uF + const double var_I_NCX__s3_junc = CHASTE_MATH::Pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * mParameters[5] + CHASTE_MATH::Pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * var_parameters__KmCao + CHASTE_MATH::Pow(mParameters[8], 3) * var_chaste_interface__Ca_Concentrations__Ca_j + CHASTE_MATH::Pow(var_parameters__KmNao, 3) * (1 + var_chaste_interface__Ca_Concentrations__Ca_j / var_parameters__KmCai) * var_chaste_interface__Ca_Concentrations__Ca_j + CHASTE_MATH::Pow(mParameters[8], 3) * (1 + CHASTE_MATH::Pow(var_chaste_interface__Na_Concentrations__Na_j, 3) / CHASTE_MATH::Pow(var_parameters__KmNai, 3)) * var_parameters__KmCai; // mM4 + const double var_I_NCX__s3_sl = CHASTE_MATH::Pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * mParameters[5] + CHASTE_MATH::Pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * var_parameters__KmCao + CHASTE_MATH::Pow(mParameters[8], 3) * var_chaste_interface__Ca_Concentrations__Ca_sl + CHASTE_MATH::Pow(var_parameters__KmNao, 3) * (1 + var_chaste_interface__Ca_Concentrations__Ca_sl / var_parameters__KmCai) * var_chaste_interface__Ca_Concentrations__Ca_sl + CHASTE_MATH::Pow(mParameters[8], 3) * (1 + CHASTE_MATH::Pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) / CHASTE_MATH::Pow(var_parameters__KmNai, 3)) * var_parameters__KmCai; // mM4 + const double var_I_NaK__sigma = -CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * CHASTE_MATH::Exp(CHASTE_CONST(0.01485884101040119) * mParameters[8]); // dimensionless + const double var_parameters__Q10CaL = CHASTE_CONST(1.8); // dimensionless + const double var_parameters__Q10NCX = CHASTE_CONST(1.5700000000000001); // dimensionless + const double var_parameters__Q10SLCaP = CHASTE_CONST(2.3500000000000001); // dimensionless + const double var_parameters__Q10SRCaP = CHASTE_CONST(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__fnak = 1 / (1 + CHASTE_CONST(0.1245) * CHASTE_MATH::Exp(-CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT) + CHASTE_CONST(0.036499999999999998) * var_I_NaK__sigma * CHASTE_MATH::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 + CHASTE_MATH::Pow(var_parameters__KmNaip, 4) / CHASTE_MATH::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 + CHASTE_MATH::Pow(var_parameters__KmNaip, 4) / CHASTE_MATH::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_NaK__I_nak_converted = CHASTE_CAP() * var_I_NaK__I_nak; // uA_per_cm2 + const double var_parameters__Qpow = -31 + CHASTE_CONST(0.10000000000000001) * mParameters[23]; // dimensionless + const double var_I_PCa__I_pca_junc = CHASTE_MATH::Pow(var_chaste_interface__Ca_Concentrations__Ca_j, CHASTE_CONST(1.6000000000000001)) * CHASTE_MATH::Pow(var_parameters__Q10SLCaP, var_parameters__Qpow) * var_parameters__Fjunc * var_parameters__IbarSLCaP / (CHASTE_MATH::Pow(var_chaste_interface__Ca_Concentrations__Ca_j, CHASTE_CONST(1.6000000000000001)) + CHASTE_MATH::Pow(var_parameters__KmPCa, CHASTE_CONST(1.6000000000000001))); // uA_per_uF + const double var_I_PCa__I_pca_sl = CHASTE_MATH::Pow(var_chaste_interface__Ca_Concentrations__Ca_sl, CHASTE_CONST(1.6000000000000001)) * CHASTE_MATH::Pow(var_parameters__Q10SLCaP, var_parameters__Qpow) * var_parameters__Fsl * var_parameters__IbarSLCaP / (CHASTE_MATH::Pow(var_chaste_interface__Ca_Concentrations__Ca_sl, CHASTE_CONST(1.6000000000000001)) + CHASTE_MATH::Pow(var_parameters__KmPCa, CHASTE_CONST(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_PCa__I_pca_converted = CHASTE_CAP() * var_I_PCa__I_pca; // uA_per_cm2 + const double var_parameters__ecl = CHASTE_MATH::Log(mParameters[4] / mParameters[6]) / var_parameters__FoRT; // mV + const double var_parameters__ek = CHASTE_MATH::Log(mParameters[7] / var_chaste_interface__K_Concentration__K_i) / var_parameters__FoRT; // mV + const double var_I_Ki__aki = CHASTE_CONST(1.02) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__membrane_potential__V_m - CHASTE_CONST(0.23849999999999999) * var_parameters__ek)); // dimensionless + const double var_I_Ki__bki = (CHASTE_CONST(0.49124000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.43983232) + CHASTE_CONST(0.080320000000000003) * var_chaste_interface__membrane_potential__V_m - CHASTE_CONST(0.080320000000000003) * var_parameters__ek) + CHASTE_MATH::Exp(-CHASTE_CONST(36.698642499999998) + CHASTE_CONST(0.061749999999999999) * var_chaste_interface__membrane_potential__V_m - CHASTE_CONST(0.061749999999999999) * var_parameters__ek)) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.4444678999999998) + CHASTE_CONST(0.51429999999999998) * var_parameters__ek - CHASTE_CONST(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_Ki__I_ki_converted = CHASTE_CAP() * 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_Kr__I_kr_converted = CHASTE_CAP() * var_I_Kr__I_kr; // uA_per_cm2 + const double var_parameters__ena_junc = CHASTE_MATH::Log(mParameters[8] / var_chaste_interface__Na_Concentrations__Na_j) / var_parameters__FoRT; // mV + const double var_I_Na__I_Na_junc = CHASTE_MATH::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 = CHASTE_MATH::Log(mParameters[8] / var_chaste_interface__Na_Concentrations__Na_sl) / var_parameters__FoRT; // mV + const double var_I_Na__I_Na_sl = CHASTE_MATH::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_I_Na__I_Na_converted = CHASTE_CAP() * 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__GtoFast = ((var_parameters__epi == 1) ? (CHASTE_CONST(0.1144) * mParameters[15]) : (CHASTE_CONST(0.0014039999999999999) * mParameters[15])); // mS_per_uF + const double var_I_to__GtoSlow = ((var_parameters__epi == 1) ? (CHASTE_CONST(0.015599999999999999) * mParameters[19]) : (CHASTE_CONST(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_tof_converted = CHASTE_CAP() * 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_I_to__I_to_converted = CHASTE_CAP() * var_I_to__I_to; // uA_per_cm2 + const double var_I_to__I_tos_converted = CHASTE_CAP() * var_I_to__I_tos; // uA_per_cm2 + const double var_parameters__hillSRCaP = CHASTE_CONST(1.7869999999999999); // dimensionless + const double var_SR_Fluxes__J_serca = CHASTE_MATH::Pow(var_parameters__Q10SRCaP, var_parameters__Qpow) * (CHASTE_MATH::Pow((var_chaste_interface__Ca_Concentrations__Ca_i / var_parameters__Kmf), var_parameters__hillSRCaP) - CHASTE_MATH::Pow((var_chaste_interface__SR_Ca_Concentrations__Ca_sr / var_parameters__Kmr), var_parameters__hillSRCaP)) * mParameters[2] / (1 + CHASTE_MATH::Pow((var_chaste_interface__Ca_Concentrations__Ca_i / var_parameters__Kmf), var_parameters__hillSRCaP) + CHASTE_MATH::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_parameters__ksat = CHASTE_CONST(0.32000000000000001); // dimensionless + const double var_parameters__nu = CHASTE_CONST(0.27000000000000002); // dimensionless + const double var_I_NCX__s1_junc = CHASTE_MATH::Pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * mParameters[5] * CHASTE_MATH::Exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * var_parameters__nu); // mM4 + const double var_I_NCX__s1_sl = CHASTE_MATH::Pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * mParameters[5] * CHASTE_MATH::Exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * var_parameters__nu); // mM4 + const double var_I_NCX__s2_junc = CHASTE_MATH::Pow(mParameters[8], 3) * var_chaste_interface__Ca_Concentrations__Ca_j * CHASTE_MATH::Exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT); // mM4 + const double var_I_NCX__I_ncx_junc = CHASTE_MATH::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 * CHASTE_MATH::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 = CHASTE_MATH::Pow(mParameters[8], 3) * var_chaste_interface__Ca_Concentrations__Ca_sl * CHASTE_MATH::Exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT); // mM4 + const double var_I_NCX__I_ncx_sl = CHASTE_MATH::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 * CHASTE_MATH::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_NCX__I_ncx_converted = CHASTE_CAP() * var_I_NCX__I_ncx; // uA_per_cm2 + const double var_parameters__pCa = CHASTE_CONST(0.00054000000000000001) * mParameters[11]; // cm_per_sec + const double var_I_Ca__ibarca_j = 4 * (-CHASTE_CONST(0.34100000000000003) * mParameters[5] + CHASTE_CONST(0.34100000000000003) * var_chaste_interface__Ca_Concentrations__Ca_j * CHASTE_MATH::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 + CHASTE_MATH::Exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_Ca_junc = CHASTE_CONST(0.45000000000000001) * CHASTE_MATH::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 * (-CHASTE_CONST(0.34100000000000003) * mParameters[5] + CHASTE_CONST(0.34100000000000003) * var_chaste_interface__Ca_Concentrations__Ca_sl * CHASTE_MATH::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 + CHASTE_MATH::Exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_Ca_sl = CHASTE_CONST(0.45000000000000001) * CHASTE_MATH::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 + const double var_I_Ca__I_Ca_converted = CHASTE_CAP() * var_I_Ca__I_Ca; // uA_per_cm2 + const double var_parameters__pNaK = CHASTE_CONST(0.018329999999999999); // dimensionless + const double var_I_Ks__eks = CHASTE_MATH::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 = CHASTE_MATH::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 = CHASTE_CAP() * var_I_Ks__I_ks; // uA_per_cm2 std::vector dqs(26); dqs[0] = var_SR_Fluxes__J_SRleak; diff --git a/chaste_codegen/data/tests/chaste_reference_models/BE/grandi_pasqualini_bers_2010_ssBackwardEuler.hpp b/chaste_codegen/data/tests/chaste_reference_models/BE/grandi_pasqualini_bers_2010_ssBackwardEuler.hpp index ac5acca84..56d674649 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/BE/grandi_pasqualini_bers_2010_ssBackwardEuler.hpp +++ b/chaste_codegen/data/tests/chaste_reference_models/BE/grandi_pasqualini_bers_2010_ssBackwardEuler.hpp @@ -16,8 +16,16 @@ #include "ChasteSerialization.hpp" #include #include "AbstractStimulusFunction.hpp" +#if USING_DEVICE_COMPILER +#include "StimulusEvaluatorCuda.hpp" +#endif #include "AbstractBackwardEulerCardiacCell.hpp" +#if USING_DEVICE_COMPILER +template +class BackwardEulerKernelLauncher; // Forward declare to hide CUDA-specifics from standard C++ compiler +#endif + class Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler : public AbstractBackwardEulerCardiacCell<27> { friend class boost::serialization::access; @@ -39,19 +47,50 @@ class Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler : public Abstrac const bool is_concentration[39] = {false, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true, true, true, true, true, true}; const bool is_probability[39] = {false, false, true, true, true, false, false, false, false, false, false, true, true, false, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false}; public: +#if USING_DEVICE_COMPILER + template using SolverKernelLauncher = BackwardEulerKernelLauncher; + static constexpr unsigned TOTAL_SIZE = 39u; + static constexpr unsigned NONLINEAR_SIZE = 27u; +#endif boost::shared_ptr UseCellMLDefaultStimulus(); double GetIntracellularCalciumConcentration(); - Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler(boost::shared_ptr /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus); + Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler(boost::shared_ptr /* unused */, boost::shared_ptr pIntracellularStimulus); ~Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler(); void VerifyStateVariables(); - double GetIIonic(const std::vector* pStateVariables=NULL);void ComputeResidual(double var_chaste_interface__environment__time, const double rCurrentGuess[27], double rResidual[27]); - void ComputeJacobian(double var_chaste_interface__environment__time, const double rCurrentGuess[27], double rJacobian[27][27]);protected: + double GetIIonic(const std::vector* pStateVariables=NULL); + void ComputeResidual(double var_chaste_interface__environment__time, const double rCurrentGuess[27], double rResidual[27]); + void ComputeJacobian(double var_chaste_interface__environment__time, const double rCurrentGuess[27], double rJacobian[27][27]); + +#if USING_DEVICE_COMPILER + template + DEVICE + static void ComputeResidualDevice(ValueType var_chaste_interface__environment__time, const ValueType rCurrentGuess[NONLINEAR_SIZE], const ValueType rY[], ValueType rResidual[NONLINEAR_SIZE], ValueType mDt, const ValueType mParameters[], bool mSetVoltageDerivativeToZero, ValueType mFixedVoltage, ValueType capacitance, const DeviceStimulusFunctor stim); + + template + DEVICE + static void ComputeJacobianDevice(ValueType var_chaste_interface__environment__time, const ValueType rCurrentGuess[NONLINEAR_SIZE], const ValueType rY[], ValueType rJacobian[NONLINEAR_SIZE][NONLINEAR_SIZE], ValueType mDt, const ValueType mParameters[], bool mSetVoltageDerivativeToZero, ValueType mFixedVoltage, ValueType capacitance, const DeviceStimulusFunctor stim); + template + DEVICE + static void UpdateTransmembranePotentialDevice(ValueType var_chaste_interface__environment__time, ValueType rY[], ValueType mDt, const ValueType mParameters[], bool mSetVoltageDerivativeToZero, ValueType mFixedVoltage, DeviceStimulusFunctor stim, ValueType capacitance); + + template + DEVICE + static void SolveClosedFormVarsDevice(ValueType rY[TOTAL_SIZE], ValueType mDt, const ValueType mParameters[], bool mSetVoltageDerivativeToZero, ValueType mFixedVoltage, ValueType capacitance); + + template + DEVICE + static void FillInitialGuessDevice(ValueType _guess[NONLINEAR_SIZE], const ValueType rY[TOTAL_SIZE]); + + template + DEVICE + static void ScatterSolutionDevice(const ValueType _guess[NONLINEAR_SIZE], ValueType rY[TOTAL_SIZE]); +#endif +protected: void UpdateTransmembranePotential(double var_chaste_interface__environment__time); void ComputeOneStepExceptVoltage(double var_chaste_interface__environment__time); - std::vector ComputeDerivedQuantities(double var_chaste_interface__environment__time, const std::vector & rY); -}; + std::vector ComputeDerivedQuantities(double var_chaste_interface__environment__time, const std::vector & rY);}; // Needs to be included last #include "SerializationExportWrapper.hpp" @@ -86,4 +125,9 @@ namespace boost } -#endif // CELLGRANDI_PASQUALINI_BERS_2010_SSFROMCELLMLBACKWARDEULER_HPP_ \ No newline at end of file +#endif // CELLGRANDI_PASQUALINI_BERS_2010_SSFROMCELLMLBACKWARDEULER_HPP_ + +#if USING_DEVICE_COMPILER + #include "grandi_pasqualini_bers_2010_ssBackwardEulerKernels.hpp" + #include "BackwardEulerKernels.hpp" +#endif \ No newline at end of file diff --git a/chaste_codegen/data/tests/chaste_reference_models/BE/li_mouse_2010.cpp b/chaste_codegen/data/tests/chaste_reference_models/BE/li_mouse_2010.cpp index 6ac6a31a9..7582a681d 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/BE/li_mouse_2010.cpp +++ b/chaste_codegen/data/tests/chaste_reference_models/BE/li_mouse_2010.cpp @@ -22,6 +22,8 @@ #include "HeartConfig.hpp" #include "IsNan.hpp" #include "MathsCustomFunctions.hpp" +#include "ChasteMathDeviceNamespaces.hpp" +#include "ChasteCpuMacros.hpp" @@ -30,10 +32,10 @@ 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_amplitude_converted = -15 * CHASTE_CAP(); // 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 + const double var_chaste_interface__cell__stim_period = CHASTE_CONST(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, @@ -61,18 +63,18 @@ // 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[0] = CHASTE_CONST(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[4] = CHASTE_CONST(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] + this->mParameters[7] = CHASTE_CONST(0.34999999999999998); // (var_time_independent_K_I__g_K1) [milliS_per_microF] + this->mParameters[8] = CHASTE_CONST(0.059499999999999997); // (var_non_inactivating_steady_state_K_I__g_Kss) [milliS_per_microF] + this->mParameters[9] = CHASTE_CONST(0.016500000000000001); // (var_rapid_delayed_rectifier_K_I__g_Kr) [milliS_per_microF] + this->mParameters[10] = CHASTE_CONST(0.0057499999999999999); // (var_slow_delayed_rectifier_K_I__g_Ks) [milliS_per_microF] + this->mParameters[11] = CHASTE_CONST(3.9390000000000001); // (var_sodium_calcium_exchange_current__V_max_NCX) [picoA_per_picoF] } Cellli_mouse_2010FromCellMLBackwardEuler::~Cellli_mouse_2010FromCellMLBackwardEuler() @@ -119,7 +121,7 @@ // 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]); + double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -159,60 +161,60 @@ 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_background_current__g_Cab = CHASTE_CONST(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_calcium_pump_current__Km_pCa = CHASTE_CONST(0.28849999999999998); // micromolar + const double var_calcium_pump_current__i_pCa_max = CHASTE_CONST(0.095500000000000002); // picoA_per_picoF + const double var_calcium_pump_current__i_pCa = CHASTE_MATH::Pow(var_calcium_concentration__Cai, 2) * var_calcium_pump_current__i_pCa_max / (CHASTE_MATH::Pow(var_calcium_concentration__Cai, 2) + CHASTE_MATH::Pow(var_calcium_pump_current__Km_pCa, 2)); // picoA_per_picoF + const double var_cell__Acap = CHASTE_CONST(0.00013866); // cm2 + const double var_cell__F = CHASTE_CONST(96.5); // coulomb_per_millimole + const double var_cell__R = CHASTE_CONST(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_calcium_background_current__E_CaN = CHASTE_CONST(0.5) * var_cell__R * var_cell__T * CHASTE_MATH::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__O_ClCa = CHASTE_CONST(0.20000000000000001) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(5.9871794871794881) - CHASTE_CONST(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_cell__Vss = CHASTE_CONST(2.1999999999999998e-8); // microlitre + const double var_L_type_calcium_current__i_CaL = ((CHASTE_MATH::Abs(var_L_type_calcium_current__FVRT_Ca) > CHASTE_CONST(1.0000000000000001e-5)) ? (-2 * (-var_chaste_interface__calcium_concentration__Cass + mParameters[1] * CHASTE_MATH::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 - CHASTE_MATH::Exp(-var_L_type_calcium_current__FVRT_Ca)) * var_cell__Acap * mParameters[5])) : (-CHASTE_CONST(2.0000000000000002e-5) * (-var_chaste_interface__calcium_concentration__Cass + mParameters[1] * CHASTE_MATH::Exp(-CHASTE_CONST(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 - CHASTE_MATH::Exp(-CHASTE_CONST(1.0000000000000001e-5))) * var_cell__Acap * mParameters[5]))); // picoA_per_picoF + const double var_L_type_calcium_current__i_CaL_converted = CHASTE_CAP() * var_L_type_calcium_current__i_CaL; // uA_per_cm2 + const double var_fast_transient_outward_K_I__g_Kto_f = CHASTE_CONST(0.53469999999999995); // milliS_per_microF + const double var_fast_transient_outward_K_I__E_K = var_cell__R * var_cell__T * CHASTE_MATH::Log(mParameters[2] / var_chaste_interface__potassium_concentration__Ki) / var_cell__F; // millivolt + const double var_fast_transient_outward_K_I__i_Kto_f = CHASTE_MATH::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_non_inactivating_steady_state_K_I__i_Kss_converted = CHASTE_CAP() * var_non_inactivating_steady_state_K_I__i_Kss; // uA_per_cm2 + const double var_slow_delayed_rectifier_K_I__i_Ks = CHASTE_MATH::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 = CHASTE_CAP() * 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_background_current__g_Nab = CHASTE_CONST(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_mCai = CHASTE_CONST(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((mParameters[3] + 0.1111111111111111 * mParameters[2]) / (var_chaste_interface__sodium_concentration__Nai + 0.1111111111111111 * var_chaste_interface__potassium_concentration__Ki)) / var_cell__F; // millivolt + const double var_sodium_calcium_exchange_current__eta = CHASTE_CONST(0.34999999999999998); // dimensionless + const double var_sodium_calcium_exchange_current__k_sat = CHASTE_CONST(0.27000000000000002); // dimensionless + const double var_fast_sodium_current__E_Na = var_cell__R * var_cell__T * CHASTE_MATH::Log((mParameters[3] + CHASTE_CONST(0.1111111111111111) * mParameters[2]) / (var_chaste_interface__sodium_concentration__Nai + CHASTE_CONST(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((mParameters[2] + 0.020408163265306124 * mParameters[3]) / (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_fast_sodium_current__i_Na_converted = CHASTE_CAP() * 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 * CHASTE_MATH::Log((mParameters[2] + CHASTE_CONST(0.020408163265306124) * mParameters[3]) / (var_chaste_interface__potassium_concentration__Ki + CHASTE_CONST(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 = CHASTE_CAP() * 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_calcium_exchange_current__i_NCX = (CHASTE_MATH::Pow(var_chaste_interface__sodium_concentration__Nai, 3) * mParameters[1] * CHASTE_MATH::Exp(var_cell__F * var_chaste_interface__cell__V * var_sodium_calcium_exchange_current__eta / (var_cell__R * var_cell__T)) - CHASTE_MATH::Pow(mParameters[3], 3) * var_calcium_concentration__Cai * CHASTE_MATH::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 + CHASTE_MATH::Pow(var_sodium_calcium_exchange_current__K_mAllo, 2) / CHASTE_MATH::Pow(var_calcium_concentration__Cai, 2)) * (1 + var_sodium_calcium_exchange_current__k_sat * CHASTE_MATH::Exp((-1 + var_sodium_calcium_exchange_current__eta) * var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T))) * (CHASTE_MATH::Pow(mParameters[3], 3) * var_calcium_concentration__Cai + CHASTE_MATH::Pow(var_sodium_calcium_exchange_current__K_mNao, 3) * var_calcium_concentration__Cai + CHASTE_MATH::Pow(var_chaste_interface__sodium_concentration__Nai, 3) * mParameters[1] + CHASTE_MATH::Pow(var_chaste_interface__sodium_concentration__Nai, 3) * var_sodium_calcium_exchange_current__K_mCao + CHASTE_MATH::Pow(mParameters[3], 3) * (1 + CHASTE_MATH::Pow(var_chaste_interface__sodium_concentration__Nai, 3) / CHASTE_MATH::Pow(var_sodium_calcium_exchange_current__K_mNai, 3)) * var_sodium_calcium_exchange_current__K_mCai + CHASTE_MATH::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 = CHASTE_CAP() * 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 = 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_sodium_potassium_pump_current__i_NaK_max = CHASTE_CONST(2.4860000000000002); // picoA_per_picoF + const double var_sodium_potassium_pump_current__sigma = -CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * CHASTE_MATH::Exp(CHASTE_CONST(1.4858841010401188e-5) * mParameters[3]); // dimensionless + const double var_sodium_potassium_pump_current__f_NaK = 1 / (1 + CHASTE_CONST(0.1245) * CHASTE_MATH::Exp(-CHASTE_CONST(0.10000000000000001) * var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T)) + CHASTE_CONST(0.036499999999999998) * var_sodium_potassium_pump_current__sigma * CHASTE_MATH::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 = mParameters[2] * var_sodium_potassium_pump_current__f_NaK * var_sodium_potassium_pump_current__i_NaK_max / ((1 + CHASTE_MATH::Pow((var_sodium_potassium_pump_current__Km_Nai / var_chaste_interface__sodium_concentration__Nai), CHASTE_CONST(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 + CHASTE_MATH::Exp(CHASTE_CONST(0.089599999999999999) * var_chaste_interface__cell__V - CHASTE_CONST(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 = CHASTE_CAP() * var_time_independent_K_I__i_K1; // uA_per_cm2 + const double var_ultra_rapidly_activating_delayed_rectifier_K_I__g_Kur = CHASTE_CONST(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 var_chaste_interface__i_ionic = CHASTE_CAP() * var_calcium_activated_chloride_current__i_ClCa + CHASTE_CAP() * var_calcium_background_current__i_Cab + CHASTE_CAP() * var_calcium_pump_current__i_pCa + CHASTE_CAP() * var_fast_transient_outward_K_I__i_Kto_f + CHASTE_CAP() * var_slow_transient_outward_K_I__i_Kto_s + CHASTE_CAP() * var_sodium_background_current__i_Nab + CHASTE_CAP() * var_sodium_potassium_pump_current__i_NaK + CHASTE_CAP() * 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)); @@ -222,7 +224,7 @@ 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]); + double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -273,85 +275,85 @@ //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__K_L = CHASTE_CONST(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__a = CHASTE_CONST(0.0625); // dimensionless + const double var_L_type_calcium_current__b = CHASTE_CONST(0.40000000000000002); // dimensionless + const double var_L_type_calcium_current__delta_V_L = CHASTE_CONST(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__phi_L = CHASTE_CONST(1.798); // dimensionless + const double var_L_type_calcium_current__t_L = CHASTE_CONST(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_background_current__g_Cab = CHASTE_CONST(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__Kd = CHASTE_CONST(0.59999999999999998); // micromolar + const double var_calcium_concentration__Bi = 1 / (1 + var_calcium_concentration__Bmax * var_calcium_concentration__Kd / CHASTE_MATH::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 / CHASTE_MATH::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_concentration__BJSR = 1 / (1 + var_calcium_concentration__CSQN_tot * var_calcium_concentration__Km_CSQN / CHASTE_MATH::Pow((var_chaste_interface__calcium_concentration__CaJSR + var_calcium_concentration__Km_CSQN), 2)); // dimensionless + const double var_calcium_fluxes__CaMKb = CHASTE_CONST(0.050000000000000003) * (1 - var_chaste_interface__calcium_fluxes__CaMKt) / (1 + CHASTE_CONST(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__Km_up = CHASTE_CONST(0.41199999999999998); // micromolar + const double var_calcium_fluxes__P_ryr_const1 = -CHASTE_CONST(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 var_calcium_fluxes__off_rate = CHASTE_CONST(0.00020000000000000001); // per_millisecond + const double var_calcium_fluxes__on_rate = CHASTE_CONST(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_calcium_fluxes__v2 = CHASTE_CONST(3.0000000000000001e-5); // per_millisecond + const double var_calcium_fluxes__v2_caff = CHASTE_CONST(0.10000000000000001); // per_millisecond + const double var_calcium_fluxes__vmup_init = CHASTE_CONST(0.50590000000000002); // micromolar_per_millisecond + const double var_calcium_fluxes__vmup = (1 + CHASTE_CONST(2.9982000000000002) * CHASTE_MATH::Pow(var_calcium_fluxes__CaMKa, CHASTE_CONST(2.5830000000000002)) / (CHASTE_CONST(1.7590641847756086) + CHASTE_MATH::Pow(var_calcium_fluxes__CaMKa, CHASTE_CONST(2.5830000000000002)))) * var_calcium_fluxes__vmup_init; // micromolar_per_millisecond + const double var_calcium_fluxes__J_serca = CHASTE_MATH::Pow(var_calcium_concentration__Cai, 2) * var_calcium_fluxes__vmup / (CHASTE_MATH::Pow(var_calcium_concentration__Cai, 2) + CHASTE_MATH::Pow(var_calcium_fluxes__Km_up, 2)); // micromolar_per_millisecond + const double var_calcium_pump_current__Km_pCa = CHASTE_CONST(0.28849999999999998); // micromolar + const double var_calcium_pump_current__i_pCa_max = CHASTE_CONST(0.095500000000000002); // picoA_per_picoF + const double var_calcium_pump_current__i_pCa = CHASTE_MATH::Pow(var_calcium_concentration__Cai, 2) * var_calcium_pump_current__i_pCa_max / (CHASTE_MATH::Pow(var_calcium_concentration__Cai, 2) + CHASTE_MATH::Pow(var_calcium_pump_current__Km_pCa, 2)); // picoA_per_picoF + const double var_cell__Acap = CHASTE_CONST(0.00013866); // cm2 + const double var_cell__F = CHASTE_CONST(96.5); // coulomb_per_millimole + const double var_cell__R = CHASTE_CONST(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_calcium_background_current__E_CaN = CHASTE_CONST(0.5) * var_cell__R * var_cell__T * CHASTE_MATH::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__expVL = CHASTE_MATH::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_cell__VJSR = CHASTE_CONST(7.7000000000000001e-8); // microlitre + const double var_cell__VNSR = CHASTE_CONST(2.3099999999999999e-7); // microlitre + const double var_cell__Vmyo = CHASTE_CONST(2.1999999999999999e-5); // microlitre + const double var_cell__Vss = CHASTE_CONST(2.1999999999999998e-8); // microlitre + const double var_L_type_calcium_current__i_CaL = ((CHASTE_MATH::Abs(var_L_type_calcium_current__FVRT_Ca) > CHASTE_CONST(1.0000000000000001e-5)) ? (-2 * (-var_chaste_interface__calcium_concentration__Cass + mParameters[1] * CHASTE_MATH::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 - CHASTE_MATH::Exp(-var_L_type_calcium_current__FVRT_Ca)) * var_cell__Acap * mParameters[5])) : (-CHASTE_CONST(2.0000000000000002e-5) * (-var_chaste_interface__calcium_concentration__Cass + mParameters[1] * CHASTE_MATH::Exp(-CHASTE_CONST(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 - CHASTE_MATH::Exp(-CHASTE_CONST(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 * CHASTE_MATH::Exp(-CHASTE_CONST(0.038580246913580245) * CHASTE_MATH::Pow((-1 + CHASTE_CONST(0.20000000000000001) * var_chaste_interface__cell__V), 2)) / var_L_type_calcium_current__i_CaL_max; // 1 / millisecond + const double var_cell__prepulses_number = CHASTE_CONST(10000000000.0); // dimensionless + const double var_chaste_interface__cell__stim_period = CHASTE_CONST(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_cell__i_Stim_converted = CHASTE_STIM(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_cell__i_Stim = var_cell__i_Stim_converted / CHASTE_CAP(); // 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 var_fast_sodium_current__alpha_Na11 = CHASTE_CONST(3.802) / (CHASTE_CONST(0.20000000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(0.016666666666666666) - CHASTE_CONST(0.0066666666666666671) * var_chaste_interface__cell__V) + CHASTE_CONST(0.1027) * CHASTE_MATH::Exp(-CHASTE_CONST(0.14705882352941177) - CHASTE_CONST(0.058823529411764705) * var_chaste_interface__cell__V)); // per_millisecond + const double var_fast_sodium_current__alpha_Na12 = CHASTE_CONST(3.802) / (CHASTE_CONST(0.1027) * CHASTE_MATH::Exp(-CHASTE_CONST(0.16666666666666666) - CHASTE_CONST(0.066666666666666666) * var_chaste_interface__cell__V) + CHASTE_CONST(0.23000000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(0.016666666666666666) - CHASTE_CONST(0.0066666666666666671) * var_chaste_interface__cell__V)); // per_millisecond + const double var_fast_sodium_current__alpha_Na13 = CHASTE_CONST(3.802) / (CHASTE_CONST(0.25) * CHASTE_MATH::Exp(-CHASTE_CONST(0.016666666666666666) - CHASTE_CONST(0.0066666666666666671) * var_chaste_interface__cell__V) + CHASTE_CONST(0.1027) * CHASTE_MATH::Exp(-CHASTE_CONST(0.20833333333333334) - CHASTE_CONST(0.083333333333333329) * var_chaste_interface__cell__V)); // per_millisecond + const double var_fast_sodium_current__alpha_Na2 = 1 / (CHASTE_CONST(0.39395599999999997) + CHASTE_CONST(0.188495) * CHASTE_MATH::Exp(-CHASTE_CONST(0.42168674698795178) - CHASTE_CONST(0.060240963855421679) * var_chaste_interface__cell__V)); // per_millisecond + const double var_fast_sodium_current__alpha_Na3 = CHASTE_CONST(6.9999999999999997e-7) * CHASTE_MATH::Exp(-CHASTE_CONST(0.90909090909090906) - CHASTE_CONST(0.12987012987012986) * var_chaste_interface__cell__V); // per_millisecond + const double var_fast_sodium_current__alpha_Na4 = CHASTE_CONST(0.001) * var_fast_sodium_current__alpha_Na2; // per_millisecond + const double var_fast_sodium_current__alpha_Na5 = CHASTE_CONST(1.0526315789473684e-5) * var_fast_sodium_current__alpha_Na2; // per_millisecond + const double var_fast_sodium_current__beta_Na11 = CHASTE_CONST(0.19170000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(0.12315270935960591) - CHASTE_CONST(0.04926108374384236) * var_chaste_interface__cell__V); // per_millisecond + const double var_fast_sodium_current__beta_Na12 = CHASTE_CONST(0.20000000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.12315270935960591) - CHASTE_CONST(0.04926108374384236) * var_chaste_interface__cell__V); // per_millisecond + const double var_fast_sodium_current__beta_Na13 = CHASTE_CONST(0.22) * CHASTE_MATH::Exp(CHASTE_CONST(0.36945812807881773) - CHASTE_CONST(0.04926108374384236) * var_chaste_interface__cell__V); // per_millisecond + const double var_fast_sodium_current__beta_Na3 = CHASTE_CONST(0.008539999999999999) + CHASTE_CONST(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 @@ -360,68 +362,68 @@ 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 var_fast_sodium_current__beta_Na5 = CHASTE_CONST(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_fast_transient_outward_K_I__g_Kto_f = CHASTE_CONST(0.53469999999999995); // milliS_per_microF + const double var_fast_transient_outward_K_I__E_K = var_cell__R * var_cell__T * CHASTE_MATH::Log(mParameters[2] / var_chaste_interface__potassium_concentration__Ki) / var_cell__F; // millivolt + const double var_fast_transient_outward_K_I__i_Kto_f = CHASTE_MATH::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 var_rapid_delayed_rectifier_K_I__alpha_a0 = CHASTE_CONST(0.022348) * CHASTE_MATH::Exp(CHASTE_CONST(0.01176) * var_chaste_interface__cell__V); // per_millisecond + const double var_rapid_delayed_rectifier_K_I__alpha_a1 = CHASTE_CONST(0.033500000000000002) * CHASTE_MATH::Exp(CHASTE_CONST(0.0109) * var_chaste_interface__cell__V); // per_millisecond + const double var_rapid_delayed_rectifier_K_I__alpha_i = CHASTE_CONST(0.070300000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.14349999999999999) + CHASTE_CONST(0.0287) * var_chaste_interface__cell__V); // per_millisecond + const double var_rapid_delayed_rectifier_K_I__beta_a0 = CHASTE_CONST(0.047002000000000002) * CHASTE_MATH::Exp(-CHASTE_CONST(0.063100000000000003) * var_chaste_interface__cell__V); // per_millisecond + const double var_rapid_delayed_rectifier_K_I__beta_a1 = CHASTE_CONST(6.8899999999999994e-5) * CHASTE_MATH::Exp(-CHASTE_CONST(0.041779999999999998) * var_chaste_interface__cell__V); // per_millisecond + const double var_rapid_delayed_rectifier_K_I__beta_i = CHASTE_CONST(0.0064970000000000002) * CHASTE_MATH::Exp(-CHASTE_CONST(0.16339999999999999) - CHASTE_CONST(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 var_rapid_delayed_rectifier_K_I__kb = CHASTE_CONST(0.036777999999999998); // per_millisecond + const double var_rapid_delayed_rectifier_K_I__kf = CHASTE_CONST(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 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 - CHASTE_CONST(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 var_ryanodine_receptors__k_minus_a = CHASTE_CONST(0.071249999999999994); // per_millisecond + const double var_ryanodine_receptors__k_minus_b = CHASTE_CONST(0.96499999999999997); // per_millisecond + const double var_ryanodine_receptors__k_minus_c = CHASTE_CONST(0.00080000000000000004); // per_millisecond + const double var_ryanodine_receptors__k_plus_a = CHASTE_CONST(0.0060749999999999997); // micromolar4_per_millisecond + const double var_ryanodine_receptors__k_plus_b = CHASTE_CONST(0.0040499999999999998); // micromolar3_per_millisecond + const double var_ryanodine_receptors__k_plus_c = CHASTE_CONST(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 d_dt_chaste_interface_var_ryanodine_receptors__P_O2 = -var_chaste_interface__ryanodine_receptors__P_O2 * var_ryanodine_receptors__k_minus_b + CHASTE_MATH::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 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 + CHASTE_MATH::Pow(var_chaste_interface__calcium_concentration__Cass, var_ryanodine_receptors__n) * var_ryanodine_receptors__P_C1 * var_ryanodine_receptors__k_plus_a - CHASTE_MATH::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 = CHASTE_MATH::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_background_current__g_Nab = CHASTE_CONST(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_mCai = CHASTE_CONST(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((mParameters[3] + 0.1111111111111111 * mParameters[2]) / (var_chaste_interface__sodium_concentration__Nai + 0.1111111111111111 * var_chaste_interface__potassium_concentration__Ki)) / var_cell__F; // millivolt + const double var_sodium_calcium_exchange_current__eta = CHASTE_CONST(0.34999999999999998); // dimensionless + const double var_sodium_calcium_exchange_current__k_sat = CHASTE_CONST(0.27000000000000002); // dimensionless + const double var_fast_sodium_current__E_Na = var_cell__R * var_cell__T * CHASTE_MATH::Log((mParameters[3] + CHASTE_CONST(0.1111111111111111) * mParameters[2]) / (var_chaste_interface__sodium_concentration__Nai + CHASTE_CONST(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((mParameters[2] + 0.020408163265306124 * mParameters[3]) / (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 = (-var_cell__R * var_cell__T * CHASTE_MATH::Log((mParameters[2] + CHASTE_CONST(0.020408163265306124) * mParameters[3]) / (var_chaste_interface__potassium_concentration__Ki + CHASTE_CONST(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_calcium_exchange_current__i_NCX = (CHASTE_MATH::Pow(var_chaste_interface__sodium_concentration__Nai, 3) * mParameters[1] * CHASTE_MATH::Exp(var_cell__F * var_chaste_interface__cell__V * var_sodium_calcium_exchange_current__eta / (var_cell__R * var_cell__T)) - CHASTE_MATH::Pow(mParameters[3], 3) * var_calcium_concentration__Cai * CHASTE_MATH::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 + CHASTE_MATH::Pow(var_sodium_calcium_exchange_current__K_mAllo, 2) / CHASTE_MATH::Pow(var_calcium_concentration__Cai, 2)) * (1 + var_sodium_calcium_exchange_current__k_sat * CHASTE_MATH::Exp((-1 + var_sodium_calcium_exchange_current__eta) * var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T))) * (CHASTE_MATH::Pow(mParameters[3], 3) * var_calcium_concentration__Cai + CHASTE_MATH::Pow(var_sodium_calcium_exchange_current__K_mNao, 3) * var_calcium_concentration__Cai + CHASTE_MATH::Pow(var_chaste_interface__sodium_concentration__Nai, 3) * mParameters[1] + CHASTE_MATH::Pow(var_chaste_interface__sodium_concentration__Nai, 3) * var_sodium_calcium_exchange_current__K_mCao + CHASTE_MATH::Pow(mParameters[3], 3) * (1 + CHASTE_MATH::Pow(var_chaste_interface__sodium_concentration__Nai, 3) / CHASTE_MATH::Pow(var_sodium_calcium_exchange_current__K_mNai, 3)) * var_sodium_calcium_exchange_current__K_mCai + CHASTE_MATH::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 - CHASTE_CONST(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 = CHASTE_CONST(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 = 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_sodium_potassium_pump_current__i_NaK_max = CHASTE_CONST(2.4860000000000002); // picoA_per_picoF + const double var_sodium_potassium_pump_current__sigma = -CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * CHASTE_MATH::Exp(CHASTE_CONST(1.4858841010401188e-5) * mParameters[3]); // dimensionless + const double var_sodium_potassium_pump_current__f_NaK = 1 / (1 + CHASTE_CONST(0.1245) * CHASTE_MATH::Exp(-CHASTE_CONST(0.10000000000000001) * var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T)) + CHASTE_CONST(0.036499999999999998) * var_sodium_potassium_pump_current__sigma * CHASTE_MATH::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 = mParameters[2] * var_sodium_potassium_pump_current__f_NaK * var_sodium_potassium_pump_current__i_NaK_max / ((1 + CHASTE_MATH::Pow((var_sodium_potassium_pump_current__Km_Nai / var_chaste_interface__sodium_concentration__Nai), CHASTE_CONST(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_time_independent_K_I__i_K1 = (-var_fast_transient_outward_K_I__E_K + var_chaste_interface__cell__V) * mParameters[2] * mParameters[7] / ((1 + CHASTE_MATH::Exp(CHASTE_CONST(0.089599999999999999) * var_chaste_interface__cell__V - CHASTE_CONST(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 = CHASTE_CONST(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 @@ -456,7 +458,7 @@ 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]); + double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -490,19 +492,19 @@ 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_x0 = CHASTE_MATH::Exp(CHASTE_CONST(0.15506520491866829) * var_chaste_interface__cell__V); + const double var_x1 = CHASTE_CONST(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_x3 = CHASTE_CONST(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_x5 = CHASTE_CONST(0.66666666666666663) * var_x0 * var_x2; + const double var_x6 = 1 + CHASTE_CONST(0.0015873015873015873) * var_chaste_interface__calcium_concentration__CaJSR; + const double var_x7 = CHASTE_MATH::Pow(var_x6, (-2)); + const double var_x8 = 1 / (1 + CHASTE_CONST(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_x12 = var_chaste_interface__environment__time < 3333330000000.0005; + const double var_x12 = var_chaste_interface__environment__time < CHASTE_CONST(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)); @@ -510,131 +512,131 @@ const double var_x17 = ((var_x12) ? (var_x14 * var_x9 * mParameters[0]) : (0)); const double var_x18 = ((var_x12) ? (var_x10 * var_x14) : (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_x20 = ((var_x12) ? (CHASTE_CONST(3.0000000000000001e-5)) : (CHASTE_CONST(0.10000000000000001))); + const double var_x21 = ((var_x12) ? (-CHASTE_CONST(0.029999999999999999)) : (-100)); + const double var_x22 = CHASTE_MATH::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_x24 = 1 + CHASTE_CONST(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_x26 = CHASTE_CONST(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 = var_x22 * var_x31 / pow((1.6974399999999999e-7 + var_x32), 2); + const double var_x28 = CHASTE_MATH::Pow(var_x27, CHASTE_CONST(2.5830000000000002)); + const double var_x29 = 1 / (CHASTE_CONST(1.7590641847756086) + var_x28); + const double var_x30 = CHASTE_CONST(1.5167893800000001) * var_x29; + const double var_x31 = CHASTE_CONST(0.50590000000000002) + var_x28 * var_x30; + const double var_x32 = CHASTE_MATH::Pow(var_chaste_interface__calcium_concentration__Cai_converted, 2); + const double var_x33 = var_x22 * var_x31 / CHASTE_MATH::Pow((CHASTE_CONST(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_x35 = 1 / (CHASTE_CONST(0.16974399999999998) + var_x34); + const double var_x36 = CHASTE_MATH::Pow(var_x27, CHASTE_CONST(1.5830000000000002)); + const double var_x37 = CHASTE_MATH::Pow(var_chaste_interface__calcium_concentration__Cass, (-2)); + const double var_x38 = var_x23 * var_x37 / CHASTE_MATH::Pow(var_x24, 2); + const double var_x39 = CHASTE_MATH::Pow(var_x27, CHASTE_CONST(4.1660000000000004)) / CHASTE_MATH::Pow((1 + CHASTE_CONST(0.56848408867329814) * var_x28), 2); + const double var_x40 = var_x35 * (-CHASTE_CONST(0.044315367702357472) * var_x38 * var_x39 + CHASTE_CONST(0.13712534389890002) * var_x29 * var_x36 * var_x38); + const double var_x41 = CHASTE_CONST(95238095.238095239) * var_x32; + const double var_x42 = CHASTE_CONST(2.5830000000000002) - CHASTE_CONST(0.12915000000000001) * var_x25; + const double var_x43 = var_x35 * (-CHASTE_CONST(0.49018713237495126) * var_x39 * var_x42 + var_x30 * var_x36 * var_x42); + const double var_x44 = CHASTE_CONST(0.00059999999999999995) + var_chaste_interface__calcium_concentration__Cai_converted; + const double var_x45 = 1 + CHASTE_CONST(6.5400000000000004e-5) / CHASTE_MATH::Pow(var_x44, 2); const double var_x46 = 1 / var_x45; - const double var_x47 = 0.001 * var_x46; + const double var_x47 = CHASTE_CONST(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_x49 = 1 / (CHASTE_CONST(0.083232249999999994) + var_x34); + const double var_x50 = CHASTE_MATH::Exp(-CHASTE_CONST(0.024495140414072337) * var_chaste_interface__cell__V); + const double var_x51 = CHASTE_MATH::Pow(mParameters[3], 3); + const double var_x52 = 1 / (1 + CHASTE_CONST(0.27000000000000002) * var_x50); + const double var_x53 = CHASTE_MATH::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_x55 = (1 + CHASTE_CONST(277.77777777777777) * var_chaste_interface__calcium_concentration__Cai_converted) * mParameters[1]; + const double var_x56 = var_x51 * (1 + CHASTE_CONST(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 = 1 / (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_x59 = 1 / (var_x54 + var_x58 + 1400 * var_x53 + CHASTE_CONST(1728000000000.0) * var_x55 + CHASTE_CONST(3.6000000000000001) * var_x56 + CHASTE_CONST(6.81472e+17) * var_chaste_interface__calcium_concentration__Cai_converted); const double var_x60 = var_x52 * var_x59 * mParameters[11]; const double var_x61 = var_x50 * var_x51 * var_x60; - const double var_x62 = 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_x63 = exp(0.013189690992192795 * var_chaste_interface__cell__V); + const double var_x62 = CHASTE_MATH::Pow((CHASTE_CONST(2.0543764087152516e-15) * var_x53 + CHASTE_CONST(5.282682193839219e-18) * var_x56 + CHASTE_CONST(2.535687453042825e-6) * var_x55 + CHASTE_CONST(1.4674117205108941e-18) * var_x54 + CHASTE_CONST(1.4674117205108941e-15) * var_x51 * var_chaste_interface__calcium_concentration__Cai_converted + var_chaste_interface__calcium_concentration__Cai_converted), (-2)); + const double var_x63 = CHASTE_MATH::Exp(CHASTE_CONST(0.013189690992192795) * var_chaste_interface__cell__V); const double var_x64 = -var_x50 * var_x58 + var_x53 * var_x63 * mParameters[1]; - const double var_x65 = -6.81472e+17 - var_x57 - 480000000000000.0 * mParameters[1]; + const double var_x65 = -CHASTE_CONST(6.81472e+17) - var_x57 - CHASTE_CONST(480000000000000.0) * mParameters[1]; const double var_x66 = var_x31 * var_x35; const double var_x67 = var_x52 * var_x64 * mParameters[11]; - const double var_x68 = pow(var_chaste_interface__sodium_concentration__Nai, 2); + const double var_x68 = CHASTE_MATH::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_x70 = -3 * var_x69 - 4200 * var_x68 - CHASTE_CONST(6.2500000000000002e-12) * var_x51 * var_x68; const double var_x71 = var_x62 * var_x67; const double var_x72 = var_x60 * var_x63 * var_x69; - const double var_x73 = 0.59999999999999998 + var_chaste_interface__calcium_concentration__Cass; - const double var_x74 = pow(var_x73, (-2)); - const double var_x75 = 1 / (1 + 65.399999999999991 * var_x74); - const double var_x76 = 0.075369662812530269 * var_chaste_interface__cell__V; - const double var_x77 = exp(-var_x76); + const double var_x73 = CHASTE_CONST(0.59999999999999998) + var_chaste_interface__calcium_concentration__Cass; + const double var_x74 = CHASTE_MATH::Pow(var_x73, (-2)); + const double var_x75 = 1 / (1 + CHASTE_CONST(65.399999999999991) * var_x74); + const double var_x76 = CHASTE_CONST(0.075369662812530269) * var_chaste_interface__cell__V; + const double var_x77 = CHASTE_MATH::Exp(-var_x76); const double var_x78 = mParameters[4] * var_chaste_interface__L_type_calcium_current__y_gate / mParameters[5]; - const double var_x79 = 0.0023079445283571576 * var_x78 * var_chaste_interface__cell__V / (1 - var_x77); + const double var_x79 = CHASTE_CONST(0.0023079445283571576) * var_x78 * var_chaste_interface__cell__V / (1 - var_x77); const double var_x80 = var_x79 * (-var_chaste_interface__calcium_concentration__Cass + var_x77 * mParameters[1]); - const double var_x81 = fabs(var_x76) > 1.0000000000000001e-5; - const double var_x82 = exp(-1.0000000000000001e-5); - const double var_x83 = 3.062166450310111e-7 * var_x78 / (1 - var_x82); + const double var_x81 = CHASTE_MATH::Abs(var_x76) > CHASTE_CONST(1.0000000000000001e-5); + const double var_x82 = CHASTE_MATH::Exp(-CHASTE_CONST(1.0000000000000001e-5)); + const double var_x83 = CHASTE_CONST(3.062166450310111e-7) * var_x78 / (1 - var_x82); const double var_x84 = var_x83 * (-var_chaste_interface__calcium_concentration__Cass + var_x82 * mParameters[1]); const double var_x85 = ((var_x81) ? (-var_x80) : (-var_x84)); - const double var_x86 = 32.656617993405561 * mParameters[5]; - const double var_x87 = 3.5000000000000004 * var_x75; + const double var_x86 = CHASTE_CONST(32.656617993405561) * mParameters[5]; + const double var_x87 = CHASTE_CONST(3.5000000000000004) * var_x75; const double var_x88 = ((var_x81) ? (var_x79 * var_chaste_interface__L_type_calcium_current__O) : (var_x83 * var_chaste_interface__L_type_calcium_current__O)); const double var_x89 = var_x18 * var_x87; - const double var_x90 = 0.2857142857142857 * exp(-0.038580246913580245 * pow((-1 + 0.20000000000000001 * var_chaste_interface__cell__V), 2)); - const double var_x91 = 0.04926108374384236 * var_chaste_interface__cell__V; - const double var_x92 = 0.20000000000000001 * exp(0.12315270935960591 - var_x91); - const double var_x93 = exp(-0.016666666666666666 - 0.0066666666666666671 * var_chaste_interface__cell__V); - const double var_x94 = 1 / (0.25 * var_x93 + 0.1027 * exp(-0.20833333333333334 - 0.083333333333333329 * var_chaste_interface__cell__V)); - const double var_x95 = 3.802 * var_x94; - const double var_x96 = 0.008539999999999999 + 2.0000000000000002e-5 * var_chaste_interface__cell__V; - const double var_x97 = 3.802 / (0.1027 * exp(-0.16666666666666666 - 0.066666666666666666 * var_chaste_interface__cell__V) + 0.23000000000000001 * var_x93); - const double var_x98 = exp(-0.90909090909090906 - 0.12987012987012986 * var_chaste_interface__cell__V); - const double var_x99 = 6.9999999999999997e-7 * var_x98; - const double var_x100 = exp(0.36945812807881773 - var_x91); - const double var_x101 = 0.22 * var_x100; - const double var_x102 = 3.802 / (0.20000000000000001 * var_x93 + 0.1027 * exp(-0.14705882352941177 - 0.058823529411764705 * var_chaste_interface__cell__V)); + const double var_x90 = CHASTE_CONST(0.2857142857142857) * CHASTE_MATH::Exp(-CHASTE_CONST(0.038580246913580245) * CHASTE_MATH::Pow((-1 + CHASTE_CONST(0.20000000000000001) * var_chaste_interface__cell__V), 2)); + const double var_x91 = CHASTE_CONST(0.04926108374384236) * var_chaste_interface__cell__V; + const double var_x92 = CHASTE_CONST(0.20000000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.12315270935960591) - var_x91); + const double var_x93 = CHASTE_MATH::Exp(-CHASTE_CONST(0.016666666666666666) - CHASTE_CONST(0.0066666666666666671) * var_chaste_interface__cell__V); + const double var_x94 = 1 / (CHASTE_CONST(0.25) * var_x93 + CHASTE_CONST(0.1027) * CHASTE_MATH::Exp(-CHASTE_CONST(0.20833333333333334) - CHASTE_CONST(0.083333333333333329) * var_chaste_interface__cell__V)); + const double var_x95 = CHASTE_CONST(3.802) * var_x94; + const double var_x96 = CHASTE_CONST(0.008539999999999999) + CHASTE_CONST(2.0000000000000002e-5) * var_chaste_interface__cell__V; + const double var_x97 = CHASTE_CONST(3.802) / (CHASTE_CONST(0.1027) * CHASTE_MATH::Exp(-CHASTE_CONST(0.16666666666666666) - CHASTE_CONST(0.066666666666666666) * var_chaste_interface__cell__V) + CHASTE_CONST(0.23000000000000001) * var_x93); + const double var_x98 = CHASTE_MATH::Exp(-CHASTE_CONST(0.90909090909090906) - CHASTE_CONST(0.12987012987012986) * var_chaste_interface__cell__V); + const double var_x99 = CHASTE_CONST(6.9999999999999997e-7) * var_x98; + const double var_x100 = CHASTE_MATH::Exp(CHASTE_CONST(0.36945812807881773) - var_x91); + const double var_x101 = CHASTE_CONST(0.22) * var_x100; + const double var_x102 = CHASTE_CONST(3.802) / (CHASTE_CONST(0.20000000000000001) * var_x93 + CHASTE_CONST(0.1027) * CHASTE_MATH::Exp(-CHASTE_CONST(0.14705882352941177) - CHASTE_CONST(0.058823529411764705) * var_chaste_interface__cell__V)); const double var_x103 = -var_x102; - const double var_x104 = 0.19170000000000001 * exp(-0.12315270935960591 - var_x91); + const double var_x104 = CHASTE_CONST(0.19170000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(0.12315270935960591) - var_x91); const double var_x105 = var_x104 + var_x97; const double var_x106 = var_x102 + var_x96; - const double var_x107 = 1 / (0.39395599999999997 + 0.188495 * exp(-0.42168674698795178 - 0.060240963855421679 * var_chaste_interface__cell__V)); - const double var_x108 = 1.0526315789473684e-5 * var_x107; - const double var_x109 = 1.4e-8 * var_x98; - const double var_x110 = 0.001 * var_x107; + const double var_x107 = 1 / (CHASTE_CONST(0.39395599999999997) + CHASTE_CONST(0.188495) * CHASTE_MATH::Exp(-CHASTE_CONST(0.42168674698795178) - CHASTE_CONST(0.060240963855421679) * var_chaste_interface__cell__V)); + const double var_x108 = CHASTE_CONST(1.0526315789473684e-5) * var_x107; + const double var_x109 = CHASTE_CONST(1.4e-8) * var_x98; + const double var_x110 = CHASTE_CONST(0.001) * var_x107; const double var_x111 = -var_x96; - const double var_x112 = 1.2097272727272726e-5 * var_x107 * var_x94 * var_x98 / (var_x100 * var_x96); + const double var_x112 = CHASTE_CONST(1.2097272727272726e-5) * var_x107 * var_x94 * var_x98 / (var_x100 * var_x96); const double var_x113 = var_x107; const double var_x114 = 1 / var_chaste_interface__potassium_concentration__Ki; const double var_x115 = var_x114 * mParameters[2]; - const double var_x116 = log(var_x115); - const double var_x117 = -26.535875647668394 * var_x116 + var_chaste_interface__cell__V; - const double var_x118 = 0.065313235986811116 * mParameters[5]; + const double var_x116 = CHASTE_MATH::Log(var_x115); + const double var_x117 = -CHASTE_CONST(26.535875647668394) * var_x116 + var_chaste_interface__cell__V; + const double var_x118 = CHASTE_CONST(0.065313235986811116) * mParameters[5]; const double var_x119 = var_chaste_interface__non_inactivating_steady_state_K_I__aKss * mParameters[8]; - const double var_x120 = 1 / (var_chaste_interface__potassium_concentration__Ki + 0.020408163265306124 * var_chaste_interface__sodium_concentration__Nai); + const double var_x120 = 1 / (var_chaste_interface__potassium_concentration__Ki + CHASTE_CONST(0.020408163265306124) * var_chaste_interface__sodium_concentration__Nai); const double var_x121 = var_x120 * var_chaste_interface__rapid_delayed_rectifier_K_I__O_K * mParameters[9]; - const double var_x122 = 1.7331439082928402 * var_x114; - const double var_x123 = exp(0.089599999999999999 * var_chaste_interface__cell__V - 2.3776144580310881 * var_x116); + const double var_x122 = CHASTE_CONST(1.7331439082928402) * var_x114; + const double var_x123 = CHASTE_MATH::Exp(CHASTE_CONST(0.089599999999999999) * var_chaste_interface__cell__V - CHASTE_CONST(2.3776144580310881) * var_x116); const double var_x124 = 1 + var_x123; const double var_x125 = 1 / (210 + mParameters[2]); const double var_x126 = 1 / var_chaste_interface__sodium_concentration__Nai; - const double var_x127 = pow(var_x126, 2.3999999999999999); - const double var_x128 = var_x126 * var_x127 * mParameters[2] / ((1500 + mParameters[2]) * pow((7.44287265976699e-11 + var_x127), 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_x129 = 0.022348 * exp(0.01176 * var_chaste_interface__cell__V); + const double var_x127 = CHASTE_MATH::Pow(var_x126, CHASTE_CONST(2.3999999999999999)); + const double var_x128 = var_x126 * var_x127 * mParameters[2] / ((1500 + mParameters[2]) * CHASTE_MATH::Pow((CHASTE_CONST(7.44287265976699e-11) + var_x127), 2) * (1 + CHASTE_CONST(0.1245) * CHASTE_MATH::Exp(-CHASTE_CONST(0.0037684831406265135) * var_chaste_interface__cell__V) + CHASTE_CONST(0.036499999999999998) * (-CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * CHASTE_MATH::Exp(CHASTE_CONST(1.4858841010401188e-5) * mParameters[3])) * CHASTE_MATH::Exp(-CHASTE_CONST(0.037684831406265135) * var_chaste_interface__cell__V))); + const double var_x129 = CHASTE_CONST(0.022348) * CHASTE_MATH::Exp(CHASTE_CONST(0.01176) * var_chaste_interface__cell__V); const double var_x130 = -var_x129; - const double var_x131 = 0.033500000000000002 * exp(0.0109 * var_chaste_interface__cell__V); - const double var_x132 = 6.8899999999999994e-5 * exp(-0.041779999999999998 * var_chaste_interface__cell__V); - const double var_x133 = 0.0064970000000000002 * exp(-0.16339999999999999 - 0.032680000000000001 * var_chaste_interface__cell__V); - const double var_x134 = 0.070300000000000001 * exp(0.14349999999999999 + 0.0287 * var_chaste_interface__cell__V); - const double var_x135 = 0.012149999999999999 * pow(var_chaste_interface__calcium_concentration__Cass, 2) * var_chaste_interface__ryanodine_receptors__P_O1; - const double var_x136 = pow(var_chaste_interface__calcium_concentration__Cass, 3); - const double var_x137 = 0.0060749999999999997 * pow(var_chaste_interface__calcium_concentration__Cass, 4); - const double var_x138 = 0.0040499999999999998 * var_x136; - const double var_x139 = 4.2191641619115923e-37 * var_x71; - const double var_x140 = 1 / (var_chaste_interface__sodium_concentration__Nai + 0.1111111111111111 * var_chaste_interface__potassium_concentration__Ki); + const double var_x131 = CHASTE_CONST(0.033500000000000002) * CHASTE_MATH::Exp(CHASTE_CONST(0.0109) * var_chaste_interface__cell__V); + const double var_x132 = CHASTE_CONST(6.8899999999999994e-5) * CHASTE_MATH::Exp(-CHASTE_CONST(0.041779999999999998) * var_chaste_interface__cell__V); + const double var_x133 = CHASTE_CONST(0.0064970000000000002) * CHASTE_MATH::Exp(-CHASTE_CONST(0.16339999999999999) - CHASTE_CONST(0.032680000000000001) * var_chaste_interface__cell__V); + const double var_x134 = CHASTE_CONST(0.070300000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.14349999999999999) + CHASTE_CONST(0.0287) * var_chaste_interface__cell__V); + const double var_x135 = CHASTE_CONST(0.012149999999999999) * CHASTE_MATH::Pow(var_chaste_interface__calcium_concentration__Cass, 2) * var_chaste_interface__ryanodine_receptors__P_O1; + const double var_x136 = CHASTE_MATH::Pow(var_chaste_interface__calcium_concentration__Cass, 3); + const double var_x137 = CHASTE_CONST(0.0060749999999999997) * CHASTE_MATH::Pow(var_chaste_interface__calcium_concentration__Cass, 4); + const double var_x138 = CHASTE_CONST(0.0040499999999999998) * var_x136; + const double var_x139 = CHASTE_CONST(4.2191641619115923e-37) * var_x71; + const double var_x140 = 1 / (var_chaste_interface__sodium_concentration__Nai + CHASTE_CONST(0.1111111111111111) * var_chaste_interface__potassium_concentration__Ki); const double var_x141 = var_x140 * 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][0] = 1.0 - (mDt * (-var_x4 - CHASTE_CONST(0.00034782608695652176) * var_x1 / (CHASTE_CONST(0.0625) + CHASTE_CONST(0.40000000000000002) * var_x0))); rJacobian[0][1] = -(mDt * (-var_x4)); rJacobian[0][2] = 0.0; rJacobian[0][3] = 0.0; @@ -661,7 +663,7 @@ 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][1] = 1.0 - (mDt * (-CHASTE_CONST(1.1986666666666668) - var_x5)); rJacobian[1][2] = 0.0; rJacobian[1][3] = 0.0; rJacobian[1][4] = 0.0; @@ -688,8 +690,8 @@ 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][2] = 1.0 - (mDt * (var_x8 * (-CHASTE_CONST(0.050000000000000003) - var_x13) + CHASTE_CONST(4.0000000000000003e-5) * (-var_x15 + CHASTE_CONST(0.050000000000000003) * var_chaste_interface__calcium_concentration__CaNSR - CHASTE_CONST(0.050000000000000003) * var_chaste_interface__calcium_concentration__CaJSR) / (CHASTE_MATH::Pow(var_x6, 3) * CHASTE_MATH::Pow((CHASTE_CONST(0.0126) + var_x7), 2)))); + rJacobian[2][3] = -(mDt * (CHASTE_CONST(0.050000000000000003) * var_x8)); rJacobian[2][4] = 0.0; rJacobian[2][5] = -(mDt * (-var_x16 * var_x8)); rJacobian[2][6] = 0.0; @@ -714,9 +716,9 @@ 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 - 190.47619047619048 * var_x33 + 190476190.47619048 * var_x31 * var_x35 * var_chaste_interface__calcium_concentration__Cai_converted)); + rJacobian[3][2] = -(mDt * (CHASTE_CONST(0.016666666666666666))); + rJacobian[3][3] = 1.0 - (mDt * (-CHASTE_CONST(0.016666666666666666) - CHASTE_CONST(95.238095238095241) * var_x20)); + rJacobian[3][4] = -(mDt * (-CHASTE_CONST(95.238095238095241) * var_x21 - CHASTE_CONST(190.47619047619048) * var_x33 + CHASTE_CONST(190476190.47619048) * var_x31 * var_x35 * var_chaste_interface__calcium_concentration__Cai_converted)); rJacobian[3][5] = -(mDt * (var_x40 * var_x41)); rJacobian[3][6] = -(mDt * (var_x41 * var_x43)); rJacobian[3][7] = 0.0; @@ -742,8 +744,8 @@ 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 + 2 * var_x33 + (-65.313235986811122 * var_x61 - 0.00030330018395124703 * var_x48 + 0.0062374140367404624 * var_x22 / pow((8.3232249999999994e-8 + var_x32), 2) - 6237.4140367404616 * var_x49 * var_chaste_interface__calcium_concentration__Cai_converted + 1.4063880539705308e-37 * var_x52 * var_x62 * var_x64 * var_x65 * mParameters[11]) * mParameters[5] - 2000000 * var_x66 * var_chaste_interface__calcium_concentration__Cai_converted) + 1.3080000000000001e-7 * (0.125 * var_chaste_interface__calcium_concentration__Cass - 125 * var_chaste_interface__calcium_concentration__Cai_converted - var_x34 * var_x66 - 0.032656617993405558 * (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_x67) * 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_x44, 3) * pow(var_x45, 2)))); - rJacobian[4][5] = -(mDt * (var_x47 * (0.125 - var_x34 * var_x40))); + rJacobian[4][4] = 1.0 - (mDt * (var_x47 * (-125 + var_x21 + 2 * var_x33 + (-CHASTE_CONST(65.313235986811122) * var_x61 - CHASTE_CONST(0.00030330018395124703) * var_x48 + CHASTE_CONST(0.0062374140367404624) * var_x22 / CHASTE_MATH::Pow((CHASTE_CONST(8.3232249999999994e-8) + var_x32), 2) - CHASTE_CONST(6237.4140367404616) * var_x49 * var_chaste_interface__calcium_concentration__Cai_converted + CHASTE_CONST(1.4063880539705308e-37) * var_x52 * var_x62 * var_x64 * var_x65 * mParameters[11]) * mParameters[5] - 2000000 * var_x66 * var_chaste_interface__calcium_concentration__Cai_converted) + CHASTE_CONST(1.3080000000000001e-7) * (CHASTE_CONST(0.125) * var_chaste_interface__calcium_concentration__Cass - 125 * var_chaste_interface__calcium_concentration__Cai_converted - var_x34 * var_x66 - CHASTE_CONST(0.032656617993405558) * (CHASTE_CONST(0.00069999999999999999) * var_chaste_interface__cell__V - CHASTE_CONST(0.0092875564766839377) * CHASTE_MATH::Log(CHASTE_CONST(0.001) * var_x48 * mParameters[1]) + 95500 * var_x32 * var_x49 - 2 * var_x59 * var_x67) * mParameters[5] + ((var_x12) ? (CHASTE_CONST(3.0000000000000001e-5) * var_chaste_interface__calcium_concentration__CaNSR - CHASTE_CONST(0.029999999999999999) * var_chaste_interface__calcium_concentration__Cai_converted) : (CHASTE_CONST(0.10000000000000001) * var_chaste_interface__calcium_concentration__CaNSR - 100 * var_chaste_interface__calcium_concentration__Cai_converted))) / (CHASTE_MATH::Pow(var_x44, 3) * CHASTE_MATH::Pow(var_x45, 2)))); + rJacobian[4][5] = -(mDt * (var_x47 * (CHASTE_CONST(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; @@ -763,13 +765,13 @@ rJacobian[4][22] = 0.0; rJacobian[4][23] = 0.0; rJacobian[4][24] = 0.0; - rJacobian[4][25] = -(mDt * (var_x47 * (0.19593970796043336 * var_x72 + 1.4063880539705308e-37 * var_x70 * var_x71) * mParameters[5])); + rJacobian[4][25] = -(mDt * (var_x47 * (CHASTE_CONST(0.19593970796043336) * var_x72 + CHASTE_CONST(1.4063880539705308e-37) * var_x70 * var_x71) * mParameters[5])); rJacobian[5][0] = 0.0; rJacobian[5][1] = -(mDt * (-var_x75 * var_x85 * var_x86)); rJacobian[5][2] = -(mDt * (var_x13 * var_x87)); rJacobian[5][3] = 0.0; rJacobian[5][4] = -(mDt * (125000 * var_x75)); - rJacobian[5][5] = 1.0 - (mDt * (var_x75 * (-125 + 3.5000000000000004 * var_x16 - var_x86 * var_x88) + 0.030581039755351685 * (125000 * var_chaste_interface__calcium_concentration__Cai_converted + 3.5000000000000004 * var_x15 - 125 * var_chaste_interface__calcium_concentration__Cass - var_x86 * ((var_x81) ? (-var_x80 * var_chaste_interface__L_type_calcium_current__O) : (-var_x84 * var_chaste_interface__L_type_calcium_current__O))) / (pow(var_x73, 3) * pow((0.015290519877675841 + var_x74), 2)))); + rJacobian[5][5] = 1.0 - (mDt * (var_x75 * (-125 + CHASTE_CONST(3.5000000000000004) * var_x16 - var_x86 * var_x88) + CHASTE_CONST(0.030581039755351685) * (125000 * var_chaste_interface__calcium_concentration__Cai_converted + CHASTE_CONST(3.5000000000000004) * var_x15 - 125 * var_chaste_interface__calcium_concentration__Cass - var_x86 * ((var_x81) ? (-var_x80 * var_chaste_interface__L_type_calcium_current__O) : (-var_x84 * var_chaste_interface__L_type_calcium_current__O))) / (CHASTE_MATH::Pow(var_x73, 3) * CHASTE_MATH::Pow((CHASTE_CONST(0.015290519877675841) + var_x74), 2)))); rJacobian[5][6] = 0.0; rJacobian[5][7] = -(mDt * (var_x17 * var_x87)); rJacobian[5][8] = 0.0; @@ -795,8 +797,8 @@ 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][5] = -(mDt * (CHASTE_CONST(0.00175) * var_x27 * var_x38 + CHASTE_CONST(8.7500000000000013e-5) * var_x37 * CHASTE_MATH::Pow(var_x23, 2) / CHASTE_MATH::Pow(var_x24, 3))); + rJacobian[6][6] = 1.0 - (mDt * (-CHASTE_CONST(0.00020000000000000001) - CHASTE_CONST(0.0025000000000000005) * var_x25 * var_x27 + CHASTE_CONST(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,7 +825,7 @@ rJacobian[7][4] = 0.0; rJacobian[7][5] = -(mDt * (-var_x88 * var_x90)); rJacobian[7][6] = 0.0; - rJacobian[7][7] = 1.0 - (mDt * (-0.01)); + rJacobian[7][7] = 1.0 - (mDt * (-CHASTE_CONST(0.01))); rJacobian[7][8] = 0.0; rJacobian[7][9] = 0.0; rJacobian[7][10] = 0.0; @@ -1093,15 +1095,15 @@ rJacobian[17][14] = 0.0; rJacobian[17][15] = 0.0; rJacobian[17][16] = -(mDt * (-var_x117 * var_x118 * var_x119)); - rJacobian[17][17] = 1.0 - (mDt * ((-1.7331439082928402 * var_x121 - var_x119 * var_x122 * var_chaste_interface__non_inactivating_steady_state_K_I__iKss - var_x122 * pow(var_chaste_interface__slow_delayed_rectifier_K_I__nKs, 2) * mParameters[10] - 0.43328597707321004 * var_x114 * 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_x114 * pow(var_chaste_interface__fast_transient_outward_K_I__ato_f, 3) * var_chaste_interface__fast_transient_outward_K_I__ito_f - 1.7331439082928402 * var_x115 * var_x125 * mParameters[7] / var_x124 + 0.15528969418303848 * var_x114 * var_x117 * var_x123 * var_x125 * mParameters[2] * mParameters[7] / pow(var_x124, 2)) * mParameters[5])); + rJacobian[17][17] = 1.0 - (mDt * ((-CHASTE_CONST(1.7331439082928402) * var_x121 - var_x119 * var_x122 * var_chaste_interface__non_inactivating_steady_state_K_I__iKss - var_x122 * CHASTE_MATH::Pow(var_chaste_interface__slow_delayed_rectifier_K_I__nKs, 2) * mParameters[10] - CHASTE_CONST(0.43328597707321004) * var_x114 * var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_K_I__aur * var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_K_I__iur - CHASTE_CONST(0.92671204776418159) * var_x114 * CHASTE_MATH::Pow(var_chaste_interface__fast_transient_outward_K_I__ato_f, 3) * var_chaste_interface__fast_transient_outward_K_I__ito_f - CHASTE_CONST(1.7331439082928402) * var_x115 * var_x125 * mParameters[7] / var_x124 + CHASTE_CONST(0.15528969418303848) * var_x114 * var_x117 * var_x123 * var_x125 * mParameters[2] * mParameters[7] / CHASTE_MATH::Pow(var_x124, 2)) * mParameters[5])); rJacobian[17][18] = 0.0; rJacobian[17][19] = 0.0; rJacobian[17][20] = 0.0; - rJacobian[17][21] = -(mDt * (var_x118 * (-var_chaste_interface__cell__V + 26.535875647668394 * log(var_x120 * (mParameters[2] + 0.020408163265306124 * mParameters[3]))) * mParameters[9])); + rJacobian[17][21] = -(mDt * (var_x118 * (-var_chaste_interface__cell__V + CHASTE_CONST(26.535875647668394) * CHASTE_MATH::Log(var_x120 * (mParameters[2] + CHASTE_CONST(0.020408163265306124) * mParameters[3]))) * 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_x128 - 0.035370283842711021 * var_x121) * mParameters[5])); + rJacobian[17][25] = -(mDt * ((CHASTE_CONST(5.8007500451501034e-11) * var_x128 - CHASTE_CONST(0.035370283842711021) * var_x121) * mParameters[5])); rJacobian[18][0] = 0.0; rJacobian[18][1] = 0.0; rJacobian[18][2] = 0.0; @@ -1120,8 +1122,8 @@ rJacobian[18][15] = 0.0; rJacobian[18][16] = 0.0; rJacobian[18][17] = 0.0; - rJacobian[18][18] = 1.0 - (mDt * (-0.023761000000000001 - var_x129 - 0.047002000000000002 * exp(-0.063100000000000003 * var_chaste_interface__cell__V))); - rJacobian[18][19] = -(mDt * (0.036777999999999998 - var_x129)); + rJacobian[18][18] = 1.0 - (mDt * (-CHASTE_CONST(0.023761000000000001) - var_x129 - CHASTE_CONST(0.047002000000000002) * CHASTE_MATH::Exp(-CHASTE_CONST(0.063100000000000003) * var_chaste_interface__cell__V))); + rJacobian[18][19] = -(mDt * (CHASTE_CONST(0.036777999999999998) - var_x129)); rJacobian[18][20] = -(mDt * (var_x130)); rJacobian[18][21] = -(mDt * (var_x130)); rJacobian[18][22] = 0.0; @@ -1146,8 +1148,8 @@ 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_x131)); + rJacobian[19][18] = -(mDt * (CHASTE_CONST(0.023761000000000001))); + rJacobian[19][19] = 1.0 - (mDt * (-CHASTE_CONST(0.036777999999999998) - var_x131)); rJacobian[19][20] = 0.0; rJacobian[19][21] = -(mDt * (var_x132)); rJacobian[19][22] = 0.0; @@ -1228,8 +1230,8 @@ 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][22] = 1.0 - (mDt * (-CHASTE_CONST(0.00080000000000000004))); + rJacobian[22][23] = -(mDt * (CHASTE_CONST(0.0089999999999999993))); rJacobian[22][24] = 0.0; rJacobian[22][25] = 0.0; rJacobian[23][0] = 0.0; @@ -1237,7 +1239,7 @@ rJacobian[23][2] = 0.0; rJacobian[23][3] = 0.0; rJacobian[23][4] = 0.0; - rJacobian[23][5] = -(mDt * (-var_x135 + 0.024299999999999999 * var_x136 * (1 - var_x9 - var_chaste_interface__ryanodine_receptors__P_C2))); + rJacobian[23][5] = -(mDt * (-var_x135 + CHASTE_CONST(0.024299999999999999) * var_x136 * (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; @@ -1254,9 +1256,9 @@ rJacobian[23][19] = 0.0; rJacobian[23][20] = 0.0; rJacobian[23][21] = 0.0; - rJacobian[23][22] = -(mDt * (0.00080000000000000004 - var_x137)); - rJacobian[23][23] = 1.0 - (mDt * (-0.080249999999999988 - var_x137 - var_x138)); - rJacobian[23][24] = -(mDt * (0.96499999999999997 - var_x137)); + rJacobian[23][22] = -(mDt * (CHASTE_CONST(0.00080000000000000004) - var_x137)); + rJacobian[23][23] = 1.0 - (mDt * (-CHASTE_CONST(0.080249999999999988) - var_x137 - var_x138)); + rJacobian[23][24] = -(mDt * (CHASTE_CONST(0.96499999999999997) - var_x137)); rJacobian[23][25] = 0.0; rJacobian[24][0] = 0.0; rJacobian[24][1] = 0.0; @@ -1282,13 +1284,13 @@ rJacobian[24][21] = 0.0; rJacobian[24][22] = 0.0; rJacobian[24][23] = -(mDt * (var_x138)); - rJacobian[24][24] = 1.0 - (mDt * (-0.96499999999999997)); + rJacobian[24][24] = 1.0 - (mDt * (-CHASTE_CONST(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_x61 - var_x139 * var_x65) * mParameters[5])); + rJacobian[25][4] = -(mDt * ((CHASTE_CONST(195.93970796043337) * var_x61 - var_x139 * var_x65) * mParameters[5])); rJacobian[25][5] = 0.0; rJacobian[25][6] = 0.0; rJacobian[25][7] = 0.0; @@ -1299,9 +1301,9 @@ rJacobian[25][12] = 0.0; rJacobian[25][13] = 0.0; rJacobian[25][14] = 0.0; - rJacobian[25][15] = -(mDt * (var_x118 * (-var_chaste_interface__cell__V + 26.535875647668394 * log(var_x140 * (mParameters[3] + 0.1111111111111111 * mParameters[2]))) * mParameters[6])); + rJacobian[25][15] = -(mDt * (var_x118 * (-var_chaste_interface__cell__V + CHASTE_CONST(26.535875647668394) * CHASTE_MATH::Log(var_x140 * (mParameters[3] + CHASTE_CONST(0.1111111111111111) * mParameters[2]))) * mParameters[6])); rJacobian[25][16] = 0.0; - rJacobian[25][17] = -(mDt * ((-0.0005006860179512649 * var_x140 - 0.19257154536587112 * var_x141) * mParameters[5])); + rJacobian[25][17] = -(mDt * ((-CHASTE_CONST(0.0005006860179512649) * var_x140 - CHASTE_CONST(0.19257154536587112) * var_x141) * mParameters[5])); rJacobian[25][18] = 0.0; rJacobian[25][19] = 0.0; rJacobian[25][20] = 0.0; @@ -1309,14 +1311,14 @@ rJacobian[25][22] = 0.0; rJacobian[25][23] = 0.0; rJacobian[25][24] = 0.0; - rJacobian[25][25] = 1.0 - (mDt * ((-1.7331439082928402 * var_x141 - 0.004506174161561384 * var_x140 - 0.58781912388130009 * var_x72 - 8.7011250677251544e-11 * var_x128 - var_x139 * var_x70) * mParameters[5])); + rJacobian[25][25] = 1.0 - (mDt * ((-CHASTE_CONST(1.7331439082928402) * var_x141 - CHASTE_CONST(0.004506174161561384) * var_x140 - CHASTE_CONST(0.58781912388130009) * var_x72 - CHASTE_CONST(8.7011250677251544e-11) * var_x128 - var_x139 * var_x70) * mParameters[5])); } 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]); + double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -1356,53 +1358,53 @@ 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_background_current__g_Cab = CHASTE_CONST(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_calcium_pump_current__Km_pCa = CHASTE_CONST(0.28849999999999998); // micromolar + const double var_calcium_pump_current__i_pCa_max = CHASTE_CONST(0.095500000000000002); // picoA_per_picoF + const double var_calcium_pump_current__i_pCa = CHASTE_MATH::Pow(var_calcium_concentration__Cai, 2) * var_calcium_pump_current__i_pCa_max / (CHASTE_MATH::Pow(var_calcium_concentration__Cai, 2) + CHASTE_MATH::Pow(var_calcium_pump_current__Km_pCa, 2)); // picoA_per_picoF + const double var_cell__Acap = CHASTE_CONST(0.00013866); // cm2 + const double var_cell__F = CHASTE_CONST(96.5); // coulomb_per_millimole + const double var_cell__R = CHASTE_CONST(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_calcium_background_current__E_CaN = CHASTE_CONST(0.5) * var_cell__R * var_cell__T * CHASTE_MATH::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__O_ClCa = CHASTE_CONST(0.20000000000000001) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(5.9871794871794881) - CHASTE_CONST(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_cell__Vss = CHASTE_CONST(2.1999999999999998e-8); // microlitre + const double var_L_type_calcium_current__i_CaL = ((CHASTE_MATH::Abs(var_L_type_calcium_current__FVRT_Ca) > CHASTE_CONST(1.0000000000000001e-5)) ? (-2 * (-var_chaste_interface__calcium_concentration__Cass + mParameters[1] * CHASTE_MATH::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 - CHASTE_MATH::Exp(-var_L_type_calcium_current__FVRT_Ca)) * var_cell__Acap * mParameters[5])) : (-CHASTE_CONST(2.0000000000000002e-5) * (-var_chaste_interface__calcium_concentration__Cass + mParameters[1] * CHASTE_MATH::Exp(-CHASTE_CONST(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 - CHASTE_MATH::Exp(-CHASTE_CONST(1.0000000000000001e-5))) * var_cell__Acap * mParameters[5]))); // picoA_per_picoF + const double var_cell__i_Stim_converted = CHASTE_STIM(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_cell__i_Stim = var_cell__i_Stim_converted / CHASTE_CAP(); // picoA_per_picoF + const double var_fast_transient_outward_K_I__g_Kto_f = CHASTE_CONST(0.53469999999999995); // milliS_per_microF + const double var_fast_transient_outward_K_I__E_K = var_cell__R * var_cell__T * CHASTE_MATH::Log(mParameters[2] / var_chaste_interface__potassium_concentration__Ki) / var_cell__F; // millivolt + const double var_fast_transient_outward_K_I__i_Kto_f = CHASTE_MATH::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_delayed_rectifier_K_I__i_Ks = CHASTE_MATH::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_background_current__g_Nab = CHASTE_CONST(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_mCai = CHASTE_CONST(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((mParameters[3] + 0.1111111111111111 * mParameters[2]) / (var_chaste_interface__sodium_concentration__Nai + 0.1111111111111111 * var_chaste_interface__potassium_concentration__Ki)) / var_cell__F; // millivolt + const double var_sodium_calcium_exchange_current__eta = CHASTE_CONST(0.34999999999999998); // dimensionless + const double var_sodium_calcium_exchange_current__k_sat = CHASTE_CONST(0.27000000000000002); // dimensionless + const double var_fast_sodium_current__E_Na = var_cell__R * var_cell__T * CHASTE_MATH::Log((mParameters[3] + CHASTE_CONST(0.1111111111111111) * mParameters[2]) / (var_chaste_interface__sodium_concentration__Nai + CHASTE_CONST(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((mParameters[2] + 0.020408163265306124 * mParameters[3]) / (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 = (-var_cell__R * var_cell__T * CHASTE_MATH::Log((mParameters[2] + CHASTE_CONST(0.020408163265306124) * mParameters[3]) / (var_chaste_interface__potassium_concentration__Ki + CHASTE_CONST(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_calcium_exchange_current__i_NCX = (CHASTE_MATH::Pow(var_chaste_interface__sodium_concentration__Nai, 3) * mParameters[1] * CHASTE_MATH::Exp(var_cell__F * var_chaste_interface__cell__V * var_sodium_calcium_exchange_current__eta / (var_cell__R * var_cell__T)) - CHASTE_MATH::Pow(mParameters[3], 3) * var_calcium_concentration__Cai * CHASTE_MATH::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 + CHASTE_MATH::Pow(var_sodium_calcium_exchange_current__K_mAllo, 2) / CHASTE_MATH::Pow(var_calcium_concentration__Cai, 2)) * (1 + var_sodium_calcium_exchange_current__k_sat * CHASTE_MATH::Exp((-1 + var_sodium_calcium_exchange_current__eta) * var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T))) * (CHASTE_MATH::Pow(mParameters[3], 3) * var_calcium_concentration__Cai + CHASTE_MATH::Pow(var_sodium_calcium_exchange_current__K_mNao, 3) * var_calcium_concentration__Cai + CHASTE_MATH::Pow(var_chaste_interface__sodium_concentration__Nai, 3) * mParameters[1] + CHASTE_MATH::Pow(var_chaste_interface__sodium_concentration__Nai, 3) * var_sodium_calcium_exchange_current__K_mCao + CHASTE_MATH::Pow(mParameters[3], 3) * (1 + CHASTE_MATH::Pow(var_chaste_interface__sodium_concentration__Nai, 3) / CHASTE_MATH::Pow(var_sodium_calcium_exchange_current__K_mNai, 3)) * var_sodium_calcium_exchange_current__K_mCai + CHASTE_MATH::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 = 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_sodium_potassium_pump_current__i_NaK_max = CHASTE_CONST(2.4860000000000002); // picoA_per_picoF + const double var_sodium_potassium_pump_current__sigma = -CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * CHASTE_MATH::Exp(CHASTE_CONST(1.4858841010401188e-5) * mParameters[3]); // dimensionless + const double var_sodium_potassium_pump_current__f_NaK = 1 / (1 + CHASTE_CONST(0.1245) * CHASTE_MATH::Exp(-CHASTE_CONST(0.10000000000000001) * var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T)) + CHASTE_CONST(0.036499999999999998) * var_sodium_potassium_pump_current__sigma * CHASTE_MATH::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 = mParameters[2] * var_sodium_potassium_pump_current__f_NaK * var_sodium_potassium_pump_current__i_NaK_max / ((1 + CHASTE_MATH::Pow((var_sodium_potassium_pump_current__Km_Nai / var_chaste_interface__sodium_concentration__Nai), CHASTE_CONST(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 + CHASTE_MATH::Exp(CHASTE_CONST(0.089599999999999999) * var_chaste_interface__cell__V - CHASTE_CONST(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 = CHASTE_CONST(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 @@ -1413,7 +1415,7 @@ { // Time units: millisecond std::vector& rY = rGetStateVariables(); - double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -1434,25 +1436,25 @@ 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__const5 = CHASTE_CONST(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_L_type_calcium_current__y_gate_inf = 1 / (1 + CHASTE_MATH::Exp((33 + var_chaste_interface__cell__V) / var_L_type_calcium_current__const5)) + CHASTE_CONST(0.10000000000000001) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(6.666666666666667) - CHASTE_CONST(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 + CHASTE_MATH::Exp(CHASTE_CONST(7.5) + CHASTE_CONST(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 = CHASTE_CONST(0.18064) * CHASTE_MATH::Exp(CHASTE_CONST(1.6096500000000002) + CHASTE_CONST(0.035770000000000003) * var_chaste_interface__cell__V); + const double var_fast_transient_outward_K_I__beta_a = CHASTE_CONST(0.39560000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(2.8066499999999999) - CHASTE_CONST(0.062370000000000002) * var_chaste_interface__cell__V); + const double var_fast_transient_outward_K_I__itof_iss = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(10.279999999999999) + CHASTE_CONST(0.20000000000000001) * var_chaste_interface__cell__V)); + const double var_fast_transient_outward_K_I__tau_ito_f = CHASTE_CONST(9.6645000000000003) + CHASTE_CONST(10.936199999999999) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(10.279999999999999) + CHASTE_CONST(0.20000000000000001) * var_chaste_interface__cell__V)); + const double var_non_inactivating_steady_state_K_I__tau_Kss = CHASTE_CONST(13.17) + CHASTE_CONST(39.299999999999997) * CHASTE_MATH::Exp(-CHASTE_CONST(0.050000000000000003) * var_chaste_interface__cell__V); + const double var_slow_delayed_rectifier_K_I__alpha_n = (((var_chaste_interface__cell__V >= -CHASTE_CONST(26.500000781250002)) && (var_chaste_interface__cell__V <= -CHASTE_CONST(26.499999218749998))) ? (-CHASTE_CONST(3.7604140624912359e-12) / (1 - CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999766942e-8))) + CHASTE_CONST(640000.00000149151) * (CHASTE_CONST(26.500000781250002) + var_chaste_interface__cell__V) * (CHASTE_CONST(3.7604140624912359e-12) / (1 - CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999766942e-8))) + CHASTE_CONST(3.7604140624912359e-12) / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999766942e-8))))) : (CHASTE_CONST(4.8133299999999997e-6) * (CHASTE_CONST(26.5) + var_chaste_interface__cell__V) / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(3.3919999999999999) - CHASTE_CONST(0.128) * var_chaste_interface__cell__V)))); + const double var_slow_delayed_rectifier_K_I__beta_n = CHASTE_CONST(9.5333299999999997e-5) * CHASTE_MATH::Exp(-CHASTE_CONST(1.0069999999999999) - CHASTE_CONST(0.037999999999999999) * var_chaste_interface__cell__V); + const double var_slow_transient_outward_K_I__tau_ta_s = CHASTE_CONST(2.0579999999999998) + CHASTE_CONST(0.49299999999999999) * CHASTE_MATH::Exp(-CHASTE_CONST(0.062899999999999998) * var_chaste_interface__cell__V); + const double var_slow_transient_outward_K_I__tau_ti_s = 270 + 1050 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(7.9298245614035094) + CHASTE_CONST(0.17543859649122806) * var_chaste_interface__cell__V)); + const double var_ultra_rapidly_activating_delayed_rectifier_K_I__ass = 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.64479166666666676) - CHASTE_CONST(0.10416666666666667) * var_chaste_interface__cell__V)); + const double var_ultra_rapidly_activating_delayed_rectifier_K_I__iss = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(7.7962962962962958) + CHASTE_CONST(0.18518518518518517) * var_chaste_interface__cell__V)); + const double var_ultra_rapidly_activating_delayed_rectifier_K_I__tau_aur = CHASTE_CONST(2.0579999999999998) + CHASTE_CONST(0.49299999999999999) * CHASTE_MATH::Exp(-CHASTE_CONST(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; + const double var_ultra_rapidly_activating_delayed_rectifier_K_I__tau_iur = 1000 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(7.7962962962962958) + CHASTE_CONST(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)); @@ -1500,7 +1502,7 @@ { // Inputs: // Time units: millisecond - double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -1536,40 +1538,40 @@ // 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__Acap = CHASTE_CONST(0.00013866); // cm2 + const double var_cell__F = CHASTE_CONST(96.5); // coulomb_per_millimole + const double var_cell__R = CHASTE_CONST(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_cell__Vss = CHASTE_CONST(2.1999999999999998e-8); // microlitre + const double var_L_type_calcium_current__i_CaL = ((CHASTE_MATH::Abs(var_L_type_calcium_current__FVRT_Ca) > CHASTE_CONST(1.0000000000000001e-5)) ? (-2 * (-var_chaste_interface__calcium_concentration__Cass + mParameters[1] * CHASTE_MATH::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 - CHASTE_MATH::Exp(-var_L_type_calcium_current__FVRT_Ca)) * var_cell__Acap * mParameters[5])) : (-CHASTE_CONST(2.0000000000000002e-5) * (-var_chaste_interface__calcium_concentration__Cass + mParameters[1] * CHASTE_MATH::Exp(-CHASTE_CONST(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 - CHASTE_MATH::Exp(-CHASTE_CONST(1.0000000000000001e-5))) * var_cell__Acap * mParameters[5]))); // picoA_per_picoF + const double var_L_type_calcium_current__i_CaL_converted = CHASTE_CAP() * var_L_type_calcium_current__i_CaL; // uA_per_cm2 + const double var_cell__prepulses_number = CHASTE_CONST(10000000000.0); // dimensionless + const double var_chaste_interface__cell__stim_period = CHASTE_CONST(333.33300000000003); // millisecond + const double var_cell__i_Stim_converted = CHASTE_STIM(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_fast_transient_outward_K_I__E_K = var_cell__R * var_cell__T * CHASTE_MATH::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_non_inactivating_steady_state_K_I__i_Kss_converted = CHASTE_CAP() * 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_slow_delayed_rectifier_K_I__i_Ks = CHASTE_MATH::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 = CHASTE_CAP() * 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_mCai = CHASTE_CONST(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((mParameters[3] + 0.1111111111111111 * mParameters[2]) / (var_chaste_interface__sodium_concentration__Nai + 0.1111111111111111 * var_chaste_interface__potassium_concentration__Ki)) / var_cell__F; // millivolt + const double var_sodium_calcium_exchange_current__eta = CHASTE_CONST(0.34999999999999998); // dimensionless + const double var_sodium_calcium_exchange_current__k_sat = CHASTE_CONST(0.27000000000000002); // dimensionless + const double var_fast_sodium_current__E_Na = var_cell__R * var_cell__T * CHASTE_MATH::Log((mParameters[3] + CHASTE_CONST(0.1111111111111111) * mParameters[2]) / (var_chaste_interface__sodium_concentration__Nai + CHASTE_CONST(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((mParameters[2] + 0.020408163265306124 * mParameters[3]) / (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 + const double var_fast_sodium_current__i_Na_converted = CHASTE_CAP() * 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 * CHASTE_MATH::Log((mParameters[2] + CHASTE_CONST(0.020408163265306124) * mParameters[3]) / (var_chaste_interface__potassium_concentration__Ki + CHASTE_CONST(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 = CHASTE_CAP() * var_rapid_delayed_rectifier_K_I__i_Kr; // uA_per_cm2 + const double var_sodium_calcium_exchange_current__i_NCX = (CHASTE_MATH::Pow(var_chaste_interface__sodium_concentration__Nai, 3) * mParameters[1] * CHASTE_MATH::Exp(var_cell__F * var_chaste_interface__cell__V * var_sodium_calcium_exchange_current__eta / (var_cell__R * var_cell__T)) - CHASTE_MATH::Pow(mParameters[3], 3) * var_calcium_concentration__Cai * CHASTE_MATH::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 + CHASTE_MATH::Pow(var_sodium_calcium_exchange_current__K_mAllo, 2) / CHASTE_MATH::Pow(var_calcium_concentration__Cai, 2)) * (1 + var_sodium_calcium_exchange_current__k_sat * CHASTE_MATH::Exp((-1 + var_sodium_calcium_exchange_current__eta) * var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T))) * (CHASTE_MATH::Pow(mParameters[3], 3) * var_calcium_concentration__Cai + CHASTE_MATH::Pow(var_sodium_calcium_exchange_current__K_mNao, 3) * var_calcium_concentration__Cai + CHASTE_MATH::Pow(var_chaste_interface__sodium_concentration__Nai, 3) * mParameters[1] + CHASTE_MATH::Pow(var_chaste_interface__sodium_concentration__Nai, 3) * var_sodium_calcium_exchange_current__K_mCao + CHASTE_MATH::Pow(mParameters[3], 3) * (1 + CHASTE_MATH::Pow(var_chaste_interface__sodium_concentration__Nai, 3) / CHASTE_MATH::Pow(var_sodium_calcium_exchange_current__K_mNai, 3)) * var_sodium_calcium_exchange_current__K_mCai + CHASTE_MATH::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 = CHASTE_CAP() * 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 + CHASTE_MATH::Exp(CHASTE_CONST(0.089599999999999999) * var_chaste_interface__cell__V - CHASTE_CONST(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 = CHASTE_CAP() * var_time_independent_K_I__i_K1; // uA_per_cm2 std::vector dqs(11); dqs[0] = var_calcium_fluxes__J_rel; diff --git a/chaste_codegen/data/tests/chaste_reference_models/BE/li_mouse_2010.hpp b/chaste_codegen/data/tests/chaste_reference_models/BE/li_mouse_2010.hpp index 4f517cf73..758a9f9da 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/BE/li_mouse_2010.hpp +++ b/chaste_codegen/data/tests/chaste_reference_models/BE/li_mouse_2010.hpp @@ -16,8 +16,16 @@ #include "ChasteSerialization.hpp" #include #include "AbstractStimulusFunction.hpp" +#if USING_DEVICE_COMPILER +#include "StimulusEvaluatorCuda.hpp" +#endif #include "AbstractBackwardEulerCardiacCell.hpp" +#if USING_DEVICE_COMPILER +template +class BackwardEulerKernelLauncher; // Forward declare to hide CUDA-specifics from standard C++ compiler +#endif + class Cellli_mouse_2010FromCellMLBackwardEuler : public AbstractBackwardEulerCardiacCell<26> { friend class boost::serialization::access; @@ -37,19 +45,50 @@ class Cellli_mouse_2010FromCellMLBackwardEuler : public AbstractBackwardEulerCar const bool is_concentration[36] = {false, true, true, true, false, false, false, false, false, false, false, false, false, true, false, false, false, false, false, false, false, false, true, false, false, false, false, false, false, false, false, false, false, false, false, false}; const bool is_probability[36] = {false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false}; public: +#if USING_DEVICE_COMPILER + template using SolverKernelLauncher = BackwardEulerKernelLauncher; + static constexpr unsigned TOTAL_SIZE = 36u; + static constexpr unsigned NONLINEAR_SIZE = 26u; +#endif boost::shared_ptr UseCellMLDefaultStimulus(); double GetIntracellularCalciumConcentration(); - Cellli_mouse_2010FromCellMLBackwardEuler(boost::shared_ptr /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus); + Cellli_mouse_2010FromCellMLBackwardEuler(boost::shared_ptr /* unused */, boost::shared_ptr pIntracellularStimulus); ~Cellli_mouse_2010FromCellMLBackwardEuler(); void VerifyStateVariables(); - double GetIIonic(const std::vector* pStateVariables=NULL);void ComputeResidual(double var_chaste_interface__environment__time, const double rCurrentGuess[26], double rResidual[26]); - void ComputeJacobian(double var_chaste_interface__environment__time, const double rCurrentGuess[26], double rJacobian[26][26]);protected: + double GetIIonic(const std::vector* pStateVariables=NULL); + void ComputeResidual(double var_chaste_interface__environment__time, const double rCurrentGuess[26], double rResidual[26]); + void ComputeJacobian(double var_chaste_interface__environment__time, const double rCurrentGuess[26], double rJacobian[26][26]); + +#if USING_DEVICE_COMPILER + template + DEVICE + static void ComputeResidualDevice(ValueType var_chaste_interface__environment__time, const ValueType rCurrentGuess[NONLINEAR_SIZE], const ValueType rY[], ValueType rResidual[NONLINEAR_SIZE], ValueType mDt, const ValueType mParameters[], bool mSetVoltageDerivativeToZero, ValueType mFixedVoltage, ValueType capacitance, const DeviceStimulusFunctor stim); + + template + DEVICE + static void ComputeJacobianDevice(ValueType var_chaste_interface__environment__time, const ValueType rCurrentGuess[NONLINEAR_SIZE], const ValueType rY[], ValueType rJacobian[NONLINEAR_SIZE][NONLINEAR_SIZE], ValueType mDt, const ValueType mParameters[], bool mSetVoltageDerivativeToZero, ValueType mFixedVoltage, ValueType capacitance, const DeviceStimulusFunctor stim); + template + DEVICE + static void UpdateTransmembranePotentialDevice(ValueType var_chaste_interface__environment__time, ValueType rY[], ValueType mDt, const ValueType mParameters[], bool mSetVoltageDerivativeToZero, ValueType mFixedVoltage, DeviceStimulusFunctor stim, ValueType capacitance); + + template + DEVICE + static void SolveClosedFormVarsDevice(ValueType rY[TOTAL_SIZE], ValueType mDt, const ValueType mParameters[], bool mSetVoltageDerivativeToZero, ValueType mFixedVoltage, ValueType capacitance); + + template + DEVICE + static void FillInitialGuessDevice(ValueType _guess[NONLINEAR_SIZE], const ValueType rY[TOTAL_SIZE]); + + template + DEVICE + static void ScatterSolutionDevice(const ValueType _guess[NONLINEAR_SIZE], ValueType rY[TOTAL_SIZE]); +#endif +protected: void UpdateTransmembranePotential(double var_chaste_interface__environment__time); void ComputeOneStepExceptVoltage(double var_chaste_interface__environment__time); - std::vector ComputeDerivedQuantities(double var_chaste_interface__environment__time, const std::vector & rY); -}; + std::vector ComputeDerivedQuantities(double var_chaste_interface__environment__time, const std::vector & rY);}; // Needs to be included last #include "SerializationExportWrapper.hpp" @@ -84,4 +123,9 @@ namespace boost } -#endif // CELLLI_MOUSE_2010FROMCELLMLBACKWARDEULER_HPP_ \ No newline at end of file +#endif // CELLLI_MOUSE_2010FROMCELLMLBACKWARDEULER_HPP_ + +#if USING_DEVICE_COMPILER + #include "li_mouse_2010Kernels.hpp" + #include "BackwardEulerKernels.hpp" +#endif \ No newline at end of file diff --git a/chaste_codegen/data/tests/chaste_reference_models/BE/li_mouse_2010Kernels.hpp b/chaste_codegen/data/tests/chaste_reference_models/BE/li_mouse_2010Kernels.hpp new file mode 100644 index 000000000..119d123a7 --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/BE/li_mouse_2010Kernels.hpp @@ -0,0 +1,567 @@ +#ifndef CELLLI_MOUSE_2010FROMCELLMLBACKWARDEULERKERNELS_HPP_ +#define CELLLI_MOUSE_2010FROMCELLMLBACKWARDEULERKERNELS_HPP_ + +//! @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 "MathsCustomFunctions.hpp" +#include "ChasteDeviceMacros.hpp" + + +template +DEVICE +void Cellli_mouse_2010FromCellMLBackwardEuler::SolveClosedFormVarsDevice(ValueType rY[Cellli_mouse_2010FromCellMLBackwardEuler::TOTAL_SIZE], + ValueType mDt, + const ValueType mParameters[], + bool mSetVoltageDerivativeToZero, + ValueType mFixedVoltage, + ValueType capacitance) +{ + ValueType var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); + // Units: millivolt; Initial value: -78.9452115785979 + ValueType var_chaste_interface__L_type_calcium_current__y_gate = rY[12]; + // Units: dimensionless; Initial value: 0.845044436980163 + ValueType var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_K_I__aur = rY[23]; + // Units: dimensionless; Initial value: 0.00346258606821817 + ValueType var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_K_I__iur = rY[24]; + // Units: dimensionless; Initial value: 0.955684946168062 + ValueType var_chaste_interface__non_inactivating_steady_state_K_I__aKss = rY[25]; + // Units: dimensionless; Initial value: 0.287585636847048 + ValueType var_chaste_interface__slow_delayed_rectifier_K_I__nKs = rY[31]; + // Units: dimensionless; Initial value: 0.00336735013094628 + ValueType var_chaste_interface__fast_transient_outward_K_I__ato_f = rY[32]; + // Units: dimensionless; Initial value: 0.0142335908879204 + ValueType var_chaste_interface__fast_transient_outward_K_I__ito_f = rY[33]; + // Units: dimensionless; Initial value: 0.996989882138174 + ValueType var_chaste_interface__slow_transient_outward_K_I__ato_s = rY[34]; + // Units: dimensionless; Initial value: 0.0443263407760382 + ValueType var_chaste_interface__slow_transient_outward_K_I__ito_s = rY[35]; + // Units: dimensionless; Initial value: 0.887568880831388 + + const ValueType var_L_type_calcium_current__const5 = CHASTE_CONST(8.1999999999999993);const ValueType var_L_type_calcium_current__y_gate_tau_const1 = 8;const ValueType var_L_type_calcium_current__y_gate_tau_const2 = 315;const ValueType var_L_type_calcium_current__y_gate_inf = 1 / (1 + CHASTE_MATH::Exp((33 + var_chaste_interface__cell__V) / var_L_type_calcium_current__const5)) + CHASTE_CONST(0.10000000000000001) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(6.666666666666667) - CHASTE_CONST(0.16666666666666666) * var_chaste_interface__cell__V));const ValueType var_L_type_calcium_current__y_gate_tau = var_L_type_calcium_current__y_gate_tau_const2 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(7.5) + CHASTE_CONST(0.25) * var_chaste_interface__cell__V)) + var_L_type_calcium_current__y_gate_tau_const1;const ValueType var_fast_transient_outward_K_I__alpha_a = CHASTE_CONST(0.18064) * CHASTE_MATH::Exp(CHASTE_CONST(1.6096500000000002) + CHASTE_CONST(0.035770000000000003) * var_chaste_interface__cell__V);const ValueType var_fast_transient_outward_K_I__beta_a = CHASTE_CONST(0.39560000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(2.8066499999999999) - CHASTE_CONST(0.062370000000000002) * var_chaste_interface__cell__V);const ValueType var_fast_transient_outward_K_I__itof_iss = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(10.279999999999999) + CHASTE_CONST(0.20000000000000001) * var_chaste_interface__cell__V));const ValueType var_fast_transient_outward_K_I__tau_ito_f = CHASTE_CONST(9.6645000000000003) + CHASTE_CONST(10.936199999999999) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(10.279999999999999) + CHASTE_CONST(0.20000000000000001) * var_chaste_interface__cell__V));const ValueType var_non_inactivating_steady_state_K_I__tau_Kss = CHASTE_CONST(13.17) + CHASTE_CONST(39.299999999999997) * CHASTE_MATH::Exp(-CHASTE_CONST(0.050000000000000003) * var_chaste_interface__cell__V);const ValueType var_slow_delayed_rectifier_K_I__alpha_n = (((var_chaste_interface__cell__V >= -CHASTE_CONST(26.500000781250002)) && (var_chaste_interface__cell__V <= -CHASTE_CONST(26.499999218749998))) ? (-CHASTE_CONST(3.7604140624912359e-12) / (1 - CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999766942e-8))) + CHASTE_CONST(640000.00000149151) * (CHASTE_CONST(26.500000781250002) + var_chaste_interface__cell__V) * (CHASTE_CONST(3.7604140624912359e-12) / (1 - CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999766942e-8))) + CHASTE_CONST(3.7604140624912359e-12) / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999766942e-8))))) : (CHASTE_CONST(4.8133299999999997e-6) * (CHASTE_CONST(26.5) + var_chaste_interface__cell__V) / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(3.3919999999999999) - CHASTE_CONST(0.128) * var_chaste_interface__cell__V))));const ValueType var_slow_delayed_rectifier_K_I__beta_n = CHASTE_CONST(9.5333299999999997e-5) * CHASTE_MATH::Exp(-CHASTE_CONST(1.0069999999999999) - CHASTE_CONST(0.037999999999999999) * var_chaste_interface__cell__V);const ValueType var_slow_transient_outward_K_I__tau_ta_s = CHASTE_CONST(2.0579999999999998) + CHASTE_CONST(0.49299999999999999) * CHASTE_MATH::Exp(-CHASTE_CONST(0.062899999999999998) * var_chaste_interface__cell__V);const ValueType var_slow_transient_outward_K_I__tau_ti_s = 270 + 1050 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(7.9298245614035094) + CHASTE_CONST(0.17543859649122806) * var_chaste_interface__cell__V));const ValueType var_ultra_rapidly_activating_delayed_rectifier_K_I__ass = 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.64479166666666676) - CHASTE_CONST(0.10416666666666667) * var_chaste_interface__cell__V));const ValueType var_ultra_rapidly_activating_delayed_rectifier_K_I__iss = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(7.7962962962962958) + CHASTE_CONST(0.18518518518518517) * var_chaste_interface__cell__V));const ValueType var_ultra_rapidly_activating_delayed_rectifier_K_I__tau_aur = CHASTE_CONST(2.0579999999999998) + CHASTE_CONST(0.49299999999999999) * CHASTE_MATH::Exp(-CHASTE_CONST(0.062899999999999998) * var_chaste_interface__cell__V);const ValueType var_ultra_rapidly_activating_delayed_rectifier_K_I__tau_i_const = 643;const ValueType var_ultra_rapidly_activating_delayed_rectifier_K_I__tau_iur = 1000 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(7.7962962962962958) + CHASTE_CONST(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 + ((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 + ((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)); +} + +template +DEVICE +void Cellli_mouse_2010FromCellMLBackwardEuler::FillInitialGuessDevice(ValueType _guess[Cellli_mouse_2010FromCellMLBackwardEuler::NONLINEAR_SIZE], + const ValueType rY[Cellli_mouse_2010FromCellMLBackwardEuler::TOTAL_SIZE]) +{ + _guess[0] = rY[11];_guess[1] = rY[10];_guess[2] = rY[3];_guess[3] = rY[4];_guess[4] = rY[1];_guess[5] = rY[2];_guess[6] = rY[6];_guess[7] = rY[5];_guess[8] = rY[15];_guess[9] = rY[16];_guess[10] = rY[17];_guess[11] = rY[18];_guess[12] = rY[20];_guess[13] = rY[21];_guess[14] = rY[19];_guess[15] = rY[14];_guess[16] = rY[26];_guess[17] = rY[22];_guess[18] = rY[28];_guess[19] = rY[29];_guess[20] = rY[30];_guess[21] = rY[27];_guess[22] = rY[9];_guess[23] = rY[7];_guess[24] = rY[8];_guess[25] = rY[13]; +} + +template +DEVICE +void Cellli_mouse_2010FromCellMLBackwardEuler::ScatterSolutionDevice(const ValueType _guess[Cellli_mouse_2010FromCellMLBackwardEuler::NONLINEAR_SIZE], + ValueType rY[Cellli_mouse_2010FromCellMLBackwardEuler::TOTAL_SIZE]) +{ + 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]; +} + +template +DEVICE +void Cellli_mouse_2010FromCellMLBackwardEuler::ComputeResidualDevice(ValueType var_chaste_interface__environment__time, + const ValueType rCurrentGuess[Cellli_mouse_2010FromCellMLBackwardEuler::NONLINEAR_SIZE], + const ValueType rY[], + ValueType rResidual[Cellli_mouse_2010FromCellMLBackwardEuler::NONLINEAR_SIZE], + ValueType mDt, + const ValueType mParameters[], + bool mSetVoltageDerivativeToZero, + ValueType mFixedVoltage, + ValueType capacitance, + const DeviceStimulusFunctor stim) +{ + ValueType var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt + ValueType var_chaste_interface__L_type_calcium_current__y_gate = rY[12]; // Units: dimensionless + ValueType var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_K_I__aur = rY[23]; // Units: dimensionless + ValueType var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_K_I__iur = rY[24]; // Units: dimensionless + ValueType var_chaste_interface__non_inactivating_steady_state_K_I__aKss = rY[25]; // Units: dimensionless + ValueType var_chaste_interface__slow_delayed_rectifier_K_I__nKs = rY[31]; // Units: dimensionless + ValueType var_chaste_interface__fast_transient_outward_K_I__ato_f = rY[32]; // Units: dimensionless + ValueType var_chaste_interface__fast_transient_outward_K_I__ito_f = rY[33]; // Units: dimensionless + ValueType var_chaste_interface__slow_transient_outward_K_I__ato_s = rY[34]; // Units: dimensionless + ValueType var_chaste_interface__slow_transient_outward_K_I__ito_s = rY[35]; // Units: dimensionless + + ValueType var_chaste_interface__L_type_calcium_current__I = rCurrentGuess[0]; + ValueType var_chaste_interface__L_type_calcium_current__O = rCurrentGuess[1]; + ValueType var_chaste_interface__calcium_concentration__CaJSR = rCurrentGuess[2]; + ValueType var_chaste_interface__calcium_concentration__CaNSR = rCurrentGuess[3]; + ValueType var_chaste_interface__calcium_concentration__Cai_converted = rCurrentGuess[4]; + ValueType var_chaste_interface__calcium_concentration__Cass = rCurrentGuess[5]; + ValueType var_chaste_interface__calcium_fluxes__CaMKt = rCurrentGuess[6]; + ValueType var_chaste_interface__calcium_fluxes__P_RyR = rCurrentGuess[7]; + ValueType var_chaste_interface__fast_sodium_current__C_Na1 = rCurrentGuess[8]; + ValueType var_chaste_interface__fast_sodium_current__C_Na2 = rCurrentGuess[9]; + ValueType var_chaste_interface__fast_sodium_current__I1_Na = rCurrentGuess[10]; + ValueType var_chaste_interface__fast_sodium_current__I2_Na = rCurrentGuess[11]; + ValueType var_chaste_interface__fast_sodium_current__IC_Na2 = rCurrentGuess[12]; + ValueType var_chaste_interface__fast_sodium_current__IC_Na3 = rCurrentGuess[13]; + ValueType var_chaste_interface__fast_sodium_current__IF_Na = rCurrentGuess[14]; + ValueType var_chaste_interface__fast_sodium_current__O_Na = rCurrentGuess[15]; + ValueType var_chaste_interface__non_inactivating_steady_state_K_I__iKss = rCurrentGuess[16]; + ValueType var_chaste_interface__potassium_concentration__Ki = rCurrentGuess[17]; + ValueType var_chaste_interface__rapid_delayed_rectifier_K_I__C_K1 = rCurrentGuess[18]; + ValueType var_chaste_interface__rapid_delayed_rectifier_K_I__C_K2 = rCurrentGuess[19]; + ValueType var_chaste_interface__rapid_delayed_rectifier_K_I__I_K = rCurrentGuess[20]; + ValueType var_chaste_interface__rapid_delayed_rectifier_K_I__O_K = rCurrentGuess[21]; + ValueType var_chaste_interface__ryanodine_receptors__P_C2 = rCurrentGuess[22]; + ValueType var_chaste_interface__ryanodine_receptors__P_O1 = rCurrentGuess[23]; + ValueType var_chaste_interface__ryanodine_receptors__P_O2 = rCurrentGuess[24]; + ValueType var_chaste_interface__sodium_concentration__Nai = rCurrentGuess[25]; + + const ValueType d_dt_chaste_interface_var_non_inactivating_steady_state_K_I__iKss = 0; // 1 / millisecond + const ValueType var_L_type_calcium_current__K_L = CHASTE_CONST(0.29999999999999999); // micromolar + const ValueType 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 ValueType var_L_type_calcium_current__V_L = 0; // millivolt + const ValueType var_L_type_calcium_current__a = CHASTE_CONST(0.0625); // dimensionless + const ValueType var_L_type_calcium_current__b = CHASTE_CONST(0.40000000000000002); // dimensionless + const ValueType var_L_type_calcium_current__delta_V_L = CHASTE_CONST(6.4489000000000001); // millivolt + const ValueType var_L_type_calcium_current__i_CaL_max = 7; // picoA_per_picoF + const ValueType var_L_type_calcium_current__phi_L = CHASTE_CONST(1.798); // dimensionless + const ValueType var_L_type_calcium_current__t_L = CHASTE_CONST(1.5); // millisecond + const ValueType var_L_type_calcium_current__alpha_m = var_L_type_calcium_current__phi_L / var_L_type_calcium_current__t_L; // per_millisecond + const ValueType var_L_type_calcium_current__tau_L = 1150; // millisecond + const ValueType var_calcium_background_current__g_Cab = CHASTE_CONST(0.00069999999999999999); // milliS_per_microF + const ValueType var_calcium_concentration__Bmax = 109; // micromolar + const ValueType var_calcium_concentration__CSQN_tot = 50000; // micromolar + const ValueType var_calcium_concentration__Cai = 1000 * var_chaste_interface__calcium_concentration__Cai_converted; // micromolar + const ValueType var_calcium_concentration__Kd = CHASTE_CONST(0.59999999999999998); // micromolar + const ValueType var_calcium_concentration__Bi = 1 / (1 + var_calcium_concentration__Bmax * var_calcium_concentration__Kd / CHASTE_MATH::Pow((var_calcium_concentration__Cai + var_calcium_concentration__Kd), 2)); // dimensionless + const ValueType var_calcium_concentration__Bss = 1 / (1 + var_calcium_concentration__Bmax * var_calcium_concentration__Kd / CHASTE_MATH::Pow((var_chaste_interface__calcium_concentration__Cass + var_calcium_concentration__Kd), 2)); // dimensionless + const ValueType var_calcium_concentration__Km_CSQN = 630; // micromolar + const ValueType var_calcium_concentration__BJSR = 1 / (1 + var_calcium_concentration__CSQN_tot * var_calcium_concentration__Km_CSQN / CHASTE_MATH::Pow((var_chaste_interface__calcium_concentration__CaJSR + var_calcium_concentration__Km_CSQN), 2)); // dimensionless + const ValueType var_calcium_fluxes__CaMKb = CHASTE_CONST(0.050000000000000003) * (1 - var_chaste_interface__calcium_fluxes__CaMKt) / (1 + CHASTE_CONST(0.69999999999999996) / var_chaste_interface__calcium_concentration__Cass); // dimensionless + const ValueType var_calcium_fluxes__CaMKa = var_calcium_fluxes__CaMKb + var_chaste_interface__calcium_fluxes__CaMKt; // dimensionless + const ValueType var_calcium_fluxes__Km_up = CHASTE_CONST(0.41199999999999998); // micromolar + const ValueType var_calcium_fluxes__P_ryr_const1 = -CHASTE_CONST(0.01); // per_millisecond + const ValueType var_calcium_fluxes__P_ryr_const2 = -2; // per_millisecond + const ValueType var_calcium_fluxes__off_rate = CHASTE_CONST(0.00020000000000000001); // per_millisecond + const ValueType var_calcium_fluxes__on_rate = CHASTE_CONST(0.050000000000000003); // per_millisecond + const ValueType 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 ValueType var_calcium_fluxes__tau_tr = 20; // millisecond + const ValueType 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 ValueType var_calcium_fluxes__tau_xfer = 8; // millisecond + const ValueType var_calcium_fluxes__J_xfer = (-var_calcium_concentration__Cai + var_chaste_interface__calcium_concentration__Cass) / var_calcium_fluxes__tau_xfer; // micromolar_per_millisecond + const ValueType var_calcium_fluxes__v1_caff = 10; // per_millisecond + const ValueType var_calcium_fluxes__v2 = CHASTE_CONST(3.0000000000000001e-5); // per_millisecond + const ValueType var_calcium_fluxes__v2_caff = CHASTE_CONST(0.10000000000000001); // per_millisecond + const ValueType var_calcium_fluxes__vmup_init = CHASTE_CONST(0.50590000000000002); // micromolar_per_millisecond + const ValueType var_calcium_fluxes__vmup = (1 + CHASTE_CONST(2.9982000000000002) * CHASTE_MATH::Pow(var_calcium_fluxes__CaMKa, CHASTE_CONST(2.5830000000000002)) / (CHASTE_CONST(1.7590641847756086) + CHASTE_MATH::Pow(var_calcium_fluxes__CaMKa, CHASTE_CONST(2.5830000000000002)))) * var_calcium_fluxes__vmup_init; // micromolar_per_millisecond + const ValueType var_calcium_fluxes__J_serca = CHASTE_MATH::Pow(var_calcium_concentration__Cai, 2) * var_calcium_fluxes__vmup / (CHASTE_MATH::Pow(var_calcium_concentration__Cai, 2) + CHASTE_MATH::Pow(var_calcium_fluxes__Km_up, 2)); // micromolar_per_millisecond + const ValueType var_calcium_pump_current__Km_pCa = CHASTE_CONST(0.28849999999999998); // micromolar + const ValueType var_calcium_pump_current__i_pCa_max = CHASTE_CONST(0.095500000000000002); // picoA_per_picoF + const ValueType var_calcium_pump_current__i_pCa = CHASTE_MATH::Pow(var_calcium_concentration__Cai, 2) * var_calcium_pump_current__i_pCa_max / (CHASTE_MATH::Pow(var_calcium_concentration__Cai, 2) + CHASTE_MATH::Pow(var_calcium_pump_current__Km_pCa, 2)); // picoA_per_picoF + const ValueType var_cell__Acap = CHASTE_CONST(0.00013866); // cm2 + const ValueType var_cell__F = CHASTE_CONST(96.5); // coulomb_per_millimole + const ValueType var_cell__R = CHASTE_CONST(8.3140000000000001); // joule_per_mole_kelvin + const ValueType var_cell__T = 308; // kelvin + const ValueType var_calcium_background_current__E_CaN = CHASTE_CONST(0.5) * var_cell__R * var_cell__T * CHASTE_MATH::Log(mParameters[1] / var_calcium_concentration__Cai) / var_cell__F; // millivolt + const ValueType var_L_type_calcium_current__FVRT = var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T); // dimensionless + const ValueType var_L_type_calcium_current__FVRT_Ca = 2 * var_L_type_calcium_current__FVRT; // dimensionless + const ValueType var_L_type_calcium_current__expVL = CHASTE_MATH::Exp((-var_L_type_calcium_current__V_L + var_chaste_interface__cell__V) / var_L_type_calcium_current__delta_V_L); // dimensionless + const ValueType 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 ValueType 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 ValueType 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 ValueType 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 ValueType 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 ValueType 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 ValueType var_cell__VJSR = CHASTE_CONST(7.7000000000000001e-8); // microlitre + const ValueType var_cell__VNSR = CHASTE_CONST(2.3099999999999999e-7); // microlitre + const ValueType var_cell__Vmyo = CHASTE_CONST(2.1999999999999999e-5); // microlitre + const ValueType var_cell__Vss = CHASTE_CONST(2.1999999999999998e-8); // microlitre + const ValueType var_L_type_calcium_current__i_CaL = ((CHASTE_MATH::Abs(var_L_type_calcium_current__FVRT_Ca) > CHASTE_CONST(1.0000000000000001e-5)) ? (-2 * (-var_chaste_interface__calcium_concentration__Cass + mParameters[1] * CHASTE_MATH::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 - CHASTE_MATH::Exp(-var_L_type_calcium_current__FVRT_Ca)) * var_cell__Acap * mParameters[5])) : (-CHASTE_CONST(2.0000000000000002e-5) * (-var_chaste_interface__calcium_concentration__Cass + mParameters[1] * CHASTE_MATH::Exp(-CHASTE_CONST(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 - CHASTE_MATH::Exp(-CHASTE_CONST(1.0000000000000001e-5))) * var_cell__Acap * mParameters[5]))); // picoA_per_picoF + const ValueType 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 * CHASTE_MATH::Exp(-CHASTE_CONST(0.038580246913580245) * CHASTE_MATH::Pow((-1 + CHASTE_CONST(0.20000000000000001) * var_chaste_interface__cell__V), 2)) / var_L_type_calcium_current__i_CaL_max; // 1 / millisecond + const ValueType var_cell__prepulses_number = CHASTE_CONST(10000000000.0); // dimensionless + const ValueType var_chaste_interface__cell__stim_period = CHASTE_CONST(333.33300000000003); // millisecond + const ValueType 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 ValueType 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 ValueType var_cell__i_Stim_converted = CHASTE_STIM(var_chaste_interface__environment__time); // uA_per_cm2 + const ValueType var_cell__i_Stim = var_cell__i_Stim_converted / CHASTE_CAP(); // picoA_per_picoF + const ValueType 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 ValueType var_fast_sodium_current__alpha_Na11 = CHASTE_CONST(3.802) / (CHASTE_CONST(0.20000000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(0.016666666666666666) - CHASTE_CONST(0.0066666666666666671) * var_chaste_interface__cell__V) + CHASTE_CONST(0.1027) * CHASTE_MATH::Exp(-CHASTE_CONST(0.14705882352941177) - CHASTE_CONST(0.058823529411764705) * var_chaste_interface__cell__V)); // per_millisecond + const ValueType var_fast_sodium_current__alpha_Na12 = CHASTE_CONST(3.802) / (CHASTE_CONST(0.1027) * CHASTE_MATH::Exp(-CHASTE_CONST(0.16666666666666666) - CHASTE_CONST(0.066666666666666666) * var_chaste_interface__cell__V) + CHASTE_CONST(0.23000000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(0.016666666666666666) - CHASTE_CONST(0.0066666666666666671) * var_chaste_interface__cell__V)); // per_millisecond + const ValueType var_fast_sodium_current__alpha_Na13 = CHASTE_CONST(3.802) / (CHASTE_CONST(0.25) * CHASTE_MATH::Exp(-CHASTE_CONST(0.016666666666666666) - CHASTE_CONST(0.0066666666666666671) * var_chaste_interface__cell__V) + CHASTE_CONST(0.1027) * CHASTE_MATH::Exp(-CHASTE_CONST(0.20833333333333334) - CHASTE_CONST(0.083333333333333329) * var_chaste_interface__cell__V)); // per_millisecond + const ValueType var_fast_sodium_current__alpha_Na2 = 1 / (CHASTE_CONST(0.39395599999999997) + CHASTE_CONST(0.188495) * CHASTE_MATH::Exp(-CHASTE_CONST(0.42168674698795178) - CHASTE_CONST(0.060240963855421679) * var_chaste_interface__cell__V)); // per_millisecond + const ValueType var_fast_sodium_current__alpha_Na3 = CHASTE_CONST(6.9999999999999997e-7) * CHASTE_MATH::Exp(-CHASTE_CONST(0.90909090909090906) - CHASTE_CONST(0.12987012987012986) * var_chaste_interface__cell__V); // per_millisecond + const ValueType var_fast_sodium_current__alpha_Na4 = CHASTE_CONST(0.001) * var_fast_sodium_current__alpha_Na2; // per_millisecond + const ValueType var_fast_sodium_current__alpha_Na5 = CHASTE_CONST(1.0526315789473684e-5) * var_fast_sodium_current__alpha_Na2; // per_millisecond + const ValueType var_fast_sodium_current__beta_Na11 = CHASTE_CONST(0.19170000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(0.12315270935960591) - CHASTE_CONST(0.04926108374384236) * var_chaste_interface__cell__V); // per_millisecond + const ValueType var_fast_sodium_current__beta_Na12 = CHASTE_CONST(0.20000000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.12315270935960591) - CHASTE_CONST(0.04926108374384236) * var_chaste_interface__cell__V); // per_millisecond + const ValueType var_fast_sodium_current__beta_Na13 = CHASTE_CONST(0.22) * CHASTE_MATH::Exp(CHASTE_CONST(0.36945812807881773) - CHASTE_CONST(0.04926108374384236) * var_chaste_interface__cell__V); // per_millisecond + const ValueType var_fast_sodium_current__beta_Na3 = CHASTE_CONST(0.008539999999999999) + CHASTE_CONST(2.0000000000000002e-5) * var_chaste_interface__cell__V; // per_millisecond + const ValueType 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 ValueType 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 ValueType 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 ValueType 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 ValueType 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 ValueType 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 ValueType var_fast_sodium_current__beta_Na4 = var_fast_sodium_current__alpha_Na3; // per_millisecond + const ValueType 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 ValueType var_fast_sodium_current__beta_Na5 = CHASTE_CONST(0.02) * var_fast_sodium_current__alpha_Na3; // per_millisecond + const ValueType 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 ValueType 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 ValueType var_fast_transient_outward_K_I__g_Kto_f = CHASTE_CONST(0.53469999999999995); // milliS_per_microF + const ValueType var_fast_transient_outward_K_I__E_K = var_cell__R * var_cell__T * CHASTE_MATH::Log(mParameters[2] / var_chaste_interface__potassium_concentration__Ki) / var_cell__F; // millivolt + const ValueType var_fast_transient_outward_K_I__i_Kto_f = CHASTE_MATH::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 ValueType 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 ValueType 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 ValueType var_rapid_delayed_rectifier_K_I__alpha_a0 = CHASTE_CONST(0.022348) * CHASTE_MATH::Exp(CHASTE_CONST(0.01176) * var_chaste_interface__cell__V); // per_millisecond + const ValueType var_rapid_delayed_rectifier_K_I__alpha_a1 = CHASTE_CONST(0.033500000000000002) * CHASTE_MATH::Exp(CHASTE_CONST(0.0109) * var_chaste_interface__cell__V); // per_millisecond + const ValueType var_rapid_delayed_rectifier_K_I__alpha_i = CHASTE_CONST(0.070300000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.14349999999999999) + CHASTE_CONST(0.0287) * var_chaste_interface__cell__V); // per_millisecond + const ValueType var_rapid_delayed_rectifier_K_I__beta_a0 = CHASTE_CONST(0.047002000000000002) * CHASTE_MATH::Exp(-CHASTE_CONST(0.063100000000000003) * var_chaste_interface__cell__V); // per_millisecond + const ValueType var_rapid_delayed_rectifier_K_I__beta_a1 = CHASTE_CONST(6.8899999999999994e-5) * CHASTE_MATH::Exp(-CHASTE_CONST(0.041779999999999998) * var_chaste_interface__cell__V); // per_millisecond + const ValueType var_rapid_delayed_rectifier_K_I__beta_i = CHASTE_CONST(0.0064970000000000002) * CHASTE_MATH::Exp(-CHASTE_CONST(0.16339999999999999) - CHASTE_CONST(0.032680000000000001) * var_chaste_interface__cell__V); // per_millisecond + const ValueType 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 ValueType 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 ValueType var_rapid_delayed_rectifier_K_I__kb = CHASTE_CONST(0.036777999999999998); // per_millisecond + const ValueType var_rapid_delayed_rectifier_K_I__kf = CHASTE_CONST(0.023761000000000001); // per_millisecond + const ValueType 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 ValueType 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 ValueType 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 ValueType 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 ValueType 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 - CHASTE_CONST(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 ValueType 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 ValueType var_ryanodine_receptors__k_minus_a = CHASTE_CONST(0.071249999999999994); // per_millisecond + const ValueType var_ryanodine_receptors__k_minus_b = CHASTE_CONST(0.96499999999999997); // per_millisecond + const ValueType var_ryanodine_receptors__k_minus_c = CHASTE_CONST(0.00080000000000000004); // per_millisecond + const ValueType var_ryanodine_receptors__k_plus_a = CHASTE_CONST(0.0060749999999999997); // micromolar4_per_millisecond + const ValueType var_ryanodine_receptors__k_plus_b = CHASTE_CONST(0.0040499999999999998); // micromolar3_per_millisecond + const ValueType var_ryanodine_receptors__k_plus_c = CHASTE_CONST(0.0089999999999999993); // per_millisecond + const ValueType 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 ValueType var_ryanodine_receptors__m = 3; // dimensionless + const ValueType d_dt_chaste_interface_var_ryanodine_receptors__P_O2 = -var_chaste_interface__ryanodine_receptors__P_O2 * var_ryanodine_receptors__k_minus_b + CHASTE_MATH::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 ValueType var_ryanodine_receptors__n = 4; // dimensionless + const ValueType 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 + CHASTE_MATH::Pow(var_chaste_interface__calcium_concentration__Cass, var_ryanodine_receptors__n) * var_ryanodine_receptors__P_C1 * var_ryanodine_receptors__k_plus_a - CHASTE_MATH::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 ValueType var_slow_delayed_rectifier_K_I__i_Ks = CHASTE_MATH::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 ValueType var_slow_transient_outward_K_I__g_Kto_s = 0; // milliS_per_microF + const ValueType 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 ValueType var_sodium_background_current__g_Nab = CHASTE_CONST(0.0025999999999999999); // milliS_per_microF + const ValueType var_sodium_calcium_exchange_current__K_mAllo = 0; // micromolar + const ValueType var_sodium_calcium_exchange_current__K_mCai = CHASTE_CONST(3.6000000000000001); // micromolar + const ValueType var_sodium_calcium_exchange_current__K_mCao = 1400; // micromolar + const ValueType var_sodium_calcium_exchange_current__K_mNai = 12000; // micromolar + const ValueType var_sodium_calcium_exchange_current__K_mNao = 88000; // micromolar + const ValueType var_sodium_calcium_exchange_current__eta = CHASTE_CONST(0.34999999999999998); // dimensionless + const ValueType var_sodium_calcium_exchange_current__k_sat = CHASTE_CONST(0.27000000000000002); // dimensionless + const ValueType var_fast_sodium_current__E_Na = var_cell__R * var_cell__T * CHASTE_MATH::Log((mParameters[3] + CHASTE_CONST(0.1111111111111111) * mParameters[2]) / (var_chaste_interface__sodium_concentration__Nai + CHASTE_CONST(0.1111111111111111) * var_chaste_interface__potassium_concentration__Ki)) / var_cell__F; // millivolt + const ValueType 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 ValueType var_rapid_delayed_rectifier_K_I__i_Kr = (-var_cell__R * var_cell__T * CHASTE_MATH::Log((mParameters[2] + CHASTE_CONST(0.020408163265306124) * mParameters[3]) / (var_chaste_interface__potassium_concentration__Ki + CHASTE_CONST(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 ValueType 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 ValueType var_sodium_calcium_exchange_current__i_NCX = (CHASTE_MATH::Pow(var_chaste_interface__sodium_concentration__Nai, 3) * mParameters[1] * CHASTE_MATH::Exp(var_cell__F * var_chaste_interface__cell__V * var_sodium_calcium_exchange_current__eta / (var_cell__R * var_cell__T)) - CHASTE_MATH::Pow(mParameters[3], 3) * var_calcium_concentration__Cai * CHASTE_MATH::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 + CHASTE_MATH::Pow(var_sodium_calcium_exchange_current__K_mAllo, 2) / CHASTE_MATH::Pow(var_calcium_concentration__Cai, 2)) * (1 + var_sodium_calcium_exchange_current__k_sat * CHASTE_MATH::Exp((-1 + var_sodium_calcium_exchange_current__eta) * var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T))) * (CHASTE_MATH::Pow(mParameters[3], 3) * var_calcium_concentration__Cai + CHASTE_MATH::Pow(var_sodium_calcium_exchange_current__K_mNao, 3) * var_calcium_concentration__Cai + CHASTE_MATH::Pow(var_chaste_interface__sodium_concentration__Nai, 3) * mParameters[1] + CHASTE_MATH::Pow(var_chaste_interface__sodium_concentration__Nai, 3) * var_sodium_calcium_exchange_current__K_mCao + CHASTE_MATH::Pow(mParameters[3], 3) * (1 + CHASTE_MATH::Pow(var_chaste_interface__sodium_concentration__Nai, 3) / CHASTE_MATH::Pow(var_sodium_calcium_exchange_current__K_mNai, 3)) * var_sodium_calcium_exchange_current__K_mCai + CHASTE_MATH::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 ValueType var_calcium_concentration__Cai_orig_deriv = (-var_calcium_fluxes__J_serca - CHASTE_CONST(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 ValueType d_dt_chaste_interface_var_calcium_concentration__Cai_converted = CHASTE_CONST(0.001) * var_calcium_concentration__Cai_orig_deriv; // millimolar / millisecond + const ValueType var_sodium_potassium_pump_current__Km_Ko = 1500; // micromolar + const ValueType var_sodium_potassium_pump_current__Km_Nai = 16600; // micromolar + const ValueType var_sodium_potassium_pump_current__i_NaK_max = CHASTE_CONST(2.4860000000000002); // picoA_per_picoF + const ValueType var_sodium_potassium_pump_current__sigma = -CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * CHASTE_MATH::Exp(CHASTE_CONST(1.4858841010401188e-5) * mParameters[3]); // dimensionless + const ValueType var_sodium_potassium_pump_current__f_NaK = 1 / (1 + CHASTE_CONST(0.1245) * CHASTE_MATH::Exp(-CHASTE_CONST(0.10000000000000001) * var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T)) + CHASTE_CONST(0.036499999999999998) * var_sodium_potassium_pump_current__sigma * CHASTE_MATH::Exp(-var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T))); // dimensionless + const ValueType var_sodium_potassium_pump_current__i_NaK = mParameters[2] * var_sodium_potassium_pump_current__f_NaK * var_sodium_potassium_pump_current__i_NaK_max / ((1 + CHASTE_MATH::Pow((var_sodium_potassium_pump_current__Km_Nai / var_chaste_interface__sodium_concentration__Nai), CHASTE_CONST(2.3999999999999999))) * (mParameters[2] + var_sodium_potassium_pump_current__Km_Ko)); // picoA_per_picoF + const ValueType 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 ValueType 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 + CHASTE_MATH::Exp(CHASTE_CONST(0.089599999999999999) * var_chaste_interface__cell__V - CHASTE_CONST(0.089599999999999999) * var_fast_transient_outward_K_I__E_K)) * (210 + mParameters[2])); // picoA_per_picoF + const ValueType var_ultra_rapidly_activating_delayed_rectifier_K_I__g_Kur = CHASTE_CONST(0.25); // milliS_per_microF + const ValueType 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 ValueType 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; +} + +template +DEVICE +void Cellli_mouse_2010FromCellMLBackwardEuler::ComputeJacobianDevice(ValueType var_chaste_interface__environment__time, + const ValueType rCurrentGuess[Cellli_mouse_2010FromCellMLBackwardEuler::NONLINEAR_SIZE], + const ValueType rY[], + ValueType rJacobian[Cellli_mouse_2010FromCellMLBackwardEuler::NONLINEAR_SIZE][Cellli_mouse_2010FromCellMLBackwardEuler::NONLINEAR_SIZE], + ValueType mDt, + const ValueType mParameters[], + bool mSetVoltageDerivativeToZero, + ValueType mFixedVoltage, + ValueType capacitance, + const DeviceStimulusFunctor stim) +{ + ValueType var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt + ValueType var_chaste_interface__L_type_calcium_current__y_gate = rY[12]; // Units: dimensionless + ValueType var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_K_I__aur = rY[23]; // Units: dimensionless + ValueType var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_K_I__iur = rY[24]; // Units: dimensionless + ValueType var_chaste_interface__non_inactivating_steady_state_K_I__aKss = rY[25]; // Units: dimensionless + ValueType var_chaste_interface__slow_delayed_rectifier_K_I__nKs = rY[31]; // Units: dimensionless + ValueType var_chaste_interface__fast_transient_outward_K_I__ato_f = rY[32]; // Units: dimensionless + ValueType var_chaste_interface__fast_transient_outward_K_I__ito_f = rY[33]; // Units: dimensionless + + ValueType var_chaste_interface__L_type_calcium_current__I = rCurrentGuess[0]; + ValueType var_chaste_interface__L_type_calcium_current__O = rCurrentGuess[1]; + ValueType var_chaste_interface__calcium_concentration__CaJSR = rCurrentGuess[2]; + ValueType var_chaste_interface__calcium_concentration__CaNSR = rCurrentGuess[3]; + ValueType var_chaste_interface__calcium_concentration__Cai_converted = rCurrentGuess[4]; + ValueType var_chaste_interface__calcium_concentration__Cass = rCurrentGuess[5]; + ValueType var_chaste_interface__calcium_fluxes__CaMKt = rCurrentGuess[6]; + ValueType var_chaste_interface__calcium_fluxes__P_RyR = rCurrentGuess[7]; + ValueType var_chaste_interface__fast_sodium_current__O_Na = rCurrentGuess[8]; + ValueType var_chaste_interface__non_inactivating_steady_state_K_I__iKss = rCurrentGuess[9]; + ValueType var_chaste_interface__potassium_concentration__Ki = rCurrentGuess[10]; + ValueType var_chaste_interface__rapid_delayed_rectifier_K_I__O_K = rCurrentGuess[11]; + ValueType var_chaste_interface__ryanodine_receptors__P_C2 = rCurrentGuess[12]; + ValueType var_chaste_interface__ryanodine_receptors__P_O1 = rCurrentGuess[13]; + ValueType var_chaste_interface__ryanodine_receptors__P_O2 = rCurrentGuess[14]; + ValueType var_chaste_interface__sodium_concentration__Nai = rCurrentGuess[15]; + + const ValueType var_x0 = CHASTE_MATH::Exp(CHASTE_CONST(0.15506520491866829) * var_chaste_interface__cell__V); + const ValueType var_x1 = CHASTE_CONST(0.0625) + var_x0; + const ValueType var_x2 = 1 / (1 + var_x0); + const ValueType var_x3 = CHASTE_CONST(0.0028985507246376812) * var_x1 * var_x2; + const ValueType var_x4 = var_x3 * var_chaste_interface__calcium_concentration__Cass; + const ValueType var_x5 = CHASTE_CONST(0.66666666666666663) * var_x0 * var_x2; + const ValueType var_x6 = 1 + CHASTE_CONST(0.0015873015873015873) * var_chaste_interface__calcium_concentration__CaJSR; + const ValueType var_x7 = CHASTE_MATH::Pow(var_x6, (-2)); + const ValueType var_x8 = 1 / (1 + CHASTE_CONST(79.365079365079367) * var_x7); + const ValueType var_x9 = var_chaste_interface__ryanodine_receptors__P_O1 + var_chaste_interface__ryanodine_receptors__P_O2; + const ValueType var_x10 = var_chaste_interface__calcium_fluxes__P_RyR * mParameters[0]; + const ValueType var_x11 = var_x10 * var_x9; + const ValueType var_x12 = var_chaste_interface__environment__time < CHASTE_CONST(3333330000000.0005); + const ValueType var_x13 = ((var_x12) ? (var_x11) : (10)); + const ValueType var_x14 = -var_chaste_interface__calcium_concentration__Cass + var_chaste_interface__calcium_concentration__CaJSR; + const ValueType var_x15 = ((var_x12) ? (var_x11 * var_x14) : (10 * var_chaste_interface__calcium_concentration__CaJSR - 10 * var_chaste_interface__calcium_concentration__Cass)); + const ValueType var_x16 = ((var_x12) ? (-var_x10 * var_x9) : (-10)); + const ValueType var_x17 = ((var_x12) ? (var_x14 * var_x9 * mParameters[0]) : (0)); + const ValueType var_x18 = ((var_x12) ? (var_x10 * var_x14) : (0)); + const ValueType var_x19 = -var_x18 * var_x8; + const ValueType var_x20 = ((var_x12) ? (CHASTE_CONST(3.0000000000000001e-5)) : (CHASTE_CONST(0.10000000000000001))); + const ValueType var_x21 = ((var_x12) ? (-CHASTE_CONST(0.029999999999999999)) : (-100)); + const ValueType var_x22 = CHASTE_MATH::Pow(var_chaste_interface__calcium_concentration__Cai_converted, 3); + const ValueType var_x23 = 1 - var_chaste_interface__calcium_fluxes__CaMKt; + const ValueType var_x24 = 1 + CHASTE_CONST(0.69999999999999996) / var_chaste_interface__calcium_concentration__Cass; + const ValueType var_x25 = 1 / var_x24; + const ValueType var_x26 = CHASTE_CONST(0.050000000000000003) * var_x25; + const ValueType var_x27 = var_x23 * var_x26 + var_chaste_interface__calcium_fluxes__CaMKt; + const ValueType var_x28 = CHASTE_MATH::Pow(var_x27, CHASTE_CONST(2.5830000000000002)); + const ValueType var_x29 = 1 / (CHASTE_CONST(1.7590641847756086) + var_x28); + const ValueType var_x30 = CHASTE_CONST(1.5167893800000001) * var_x29; + const ValueType var_x31 = CHASTE_CONST(0.50590000000000002) + var_x28 * var_x30; + const ValueType var_x32 = CHASTE_MATH::Pow(var_chaste_interface__calcium_concentration__Cai_converted, 2); + const ValueType var_x33 = var_x22 * var_x31 / CHASTE_MATH::Pow((CHASTE_CONST(1.6974399999999999e-7) + var_x32), 2); + const ValueType var_x34 = 1000000 * var_x32; + const ValueType var_x35 = 1 / (CHASTE_CONST(0.16974399999999998) + var_x34); + const ValueType var_x36 = CHASTE_MATH::Pow(var_x27, CHASTE_CONST(1.5830000000000002)); + const ValueType var_x37 = CHASTE_MATH::Pow(var_chaste_interface__calcium_concentration__Cass, (-2)); + const ValueType var_x38 = var_x23 * var_x37 / CHASTE_MATH::Pow(var_x24, 2); + const ValueType var_x39 = CHASTE_MATH::Pow(var_x27, CHASTE_CONST(4.1660000000000004)) / CHASTE_MATH::Pow((1 + CHASTE_CONST(0.56848408867329814) * var_x28), 2); + const ValueType var_x40 = var_x35 * (-CHASTE_CONST(0.044315367702357472) * var_x38 * var_x39 + CHASTE_CONST(0.13712534389890002) * var_x29 * var_x36 * var_x38); + const ValueType var_x41 = CHASTE_CONST(95238095.238095239) * var_x32; + const ValueType var_x42 = CHASTE_CONST(2.5830000000000002) - CHASTE_CONST(0.12915000000000001) * var_x25; + const ValueType var_x43 = var_x35 * (-CHASTE_CONST(0.49018713237495126) * var_x39 * var_x42 + var_x30 * var_x36 * var_x42); + const ValueType var_x44 = CHASTE_CONST(0.00059999999999999995) + var_chaste_interface__calcium_concentration__Cai_converted; + const ValueType var_x45 = 1 + CHASTE_CONST(6.5400000000000004e-5) / CHASTE_MATH::Pow(var_x44, 2); + const ValueType var_x46 = 1 / var_x45; + const ValueType var_x47 = CHASTE_CONST(0.001) * var_x46; + const ValueType var_x48 = 1 / var_chaste_interface__calcium_concentration__Cai_converted; + const ValueType var_x49 = 1 / (CHASTE_CONST(0.083232249999999994) + var_x34); + const ValueType var_x50 = CHASTE_MATH::Exp(-CHASTE_CONST(0.024495140414072337) * var_chaste_interface__cell__V); + const ValueType var_x51 = CHASTE_MATH::Pow(mParameters[3], 3); + const ValueType var_x52 = 1 / (1 + CHASTE_CONST(0.27000000000000002) * var_x50); + const ValueType var_x53 = CHASTE_MATH::Pow(var_chaste_interface__sodium_concentration__Nai, 3); + const ValueType var_x54 = var_x53 * mParameters[1]; + const ValueType var_x55 = (1 + CHASTE_CONST(277.77777777777777) * var_chaste_interface__calcium_concentration__Cai_converted) * mParameters[1]; + const ValueType var_x56 = var_x51 * (1 + CHASTE_CONST(5.7870370370370368e-13) * var_x53); + const ValueType var_x57 = 1000 * var_x51; + const ValueType var_x58 = var_x57 * var_chaste_interface__calcium_concentration__Cai_converted; + const ValueType var_x59 = 1 / (var_x54 + var_x58 + 1400 * var_x53 + CHASTE_CONST(1728000000000.0) * var_x55 + CHASTE_CONST(3.6000000000000001) * var_x56 + CHASTE_CONST(6.81472e+17) * var_chaste_interface__calcium_concentration__Cai_converted); + const ValueType var_x60 = var_x52 * var_x59 * mParameters[11]; + const ValueType var_x61 = var_x50 * var_x51 * var_x60; + const ValueType var_x62 = CHASTE_MATH::Pow((CHASTE_CONST(2.0543764087152516e-15) * var_x53 + CHASTE_CONST(5.282682193839219e-18) * var_x56 + CHASTE_CONST(2.535687453042825e-6) * var_x55 + CHASTE_CONST(1.4674117205108941e-18) * var_x54 + CHASTE_CONST(1.4674117205108941e-15) * var_x51 * var_chaste_interface__calcium_concentration__Cai_converted + var_chaste_interface__calcium_concentration__Cai_converted), (-2)); + const ValueType var_x63 = CHASTE_MATH::Exp(CHASTE_CONST(0.013189690992192795) * var_chaste_interface__cell__V); + const ValueType var_x64 = -var_x50 * var_x58 + var_x53 * var_x63 * mParameters[1]; + const ValueType var_x65 = -CHASTE_CONST(6.81472e+17) - var_x57 - CHASTE_CONST(480000000000000.0) * mParameters[1]; + const ValueType var_x66 = var_x31 * var_x35; + const ValueType var_x67 = var_x52 * var_x64 * mParameters[11]; + const ValueType var_x68 = CHASTE_MATH::Pow(var_chaste_interface__sodium_concentration__Nai, 2); + const ValueType var_x69 = var_x68 * mParameters[1]; + const ValueType var_x70 = -3 * var_x69 - 4200 * var_x68 - CHASTE_CONST(6.2500000000000002e-12) * var_x51 * var_x68; + const ValueType var_x71 = var_x62 * var_x67; + const ValueType var_x72 = var_x60 * var_x63 * var_x69; + const ValueType var_x73 = CHASTE_CONST(0.59999999999999998) + var_chaste_interface__calcium_concentration__Cass; + const ValueType var_x74 = CHASTE_MATH::Pow(var_x73, (-2)); + const ValueType var_x75 = 1 / (1 + CHASTE_CONST(65.399999999999991) * var_x74); + const ValueType var_x76 = CHASTE_CONST(0.075369662812530269) * var_chaste_interface__cell__V; + const ValueType var_x77 = CHASTE_MATH::Exp(-var_x76); + const ValueType var_x78 = mParameters[4] * var_chaste_interface__L_type_calcium_current__y_gate / mParameters[5]; + const ValueType var_x79 = CHASTE_CONST(0.0023079445283571576) * var_x78 * var_chaste_interface__cell__V / (1 - var_x77); + const ValueType var_x80 = var_x79 * (-var_chaste_interface__calcium_concentration__Cass + var_x77 * mParameters[1]); + const ValueType var_x81 = CHASTE_MATH::Abs(var_x76) > CHASTE_CONST(1.0000000000000001e-5); + const ValueType var_x82 = CHASTE_MATH::Exp(-CHASTE_CONST(1.0000000000000001e-5)); + const ValueType var_x83 = CHASTE_CONST(3.062166450310111e-7) * var_x78 / (1 - var_x82); + const ValueType var_x84 = var_x83 * (-var_chaste_interface__calcium_concentration__Cass + var_x82 * mParameters[1]); + const ValueType var_x85 = ((var_x81) ? (-var_x80) : (-var_x84)); + const ValueType var_x86 = CHASTE_CONST(32.656617993405561) * mParameters[5]; + const ValueType var_x87 = CHASTE_CONST(3.5000000000000004) * var_x75; + const ValueType var_x88 = ((var_x81) ? (var_x79 * var_chaste_interface__L_type_calcium_current__O) : (var_x83 * var_chaste_interface__L_type_calcium_current__O)); + const ValueType var_x89 = var_x18 * var_x87; + const ValueType var_x90 = CHASTE_CONST(0.2857142857142857) * CHASTE_MATH::Exp(-CHASTE_CONST(0.038580246913580245) * CHASTE_MATH::Pow((-1 + CHASTE_CONST(0.20000000000000001) * var_chaste_interface__cell__V), 2)); + const ValueType var_x91 = CHASTE_CONST(0.04926108374384236) * var_chaste_interface__cell__V; + const ValueType var_x92 = CHASTE_CONST(0.20000000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.12315270935960591) - var_x91); + const ValueType var_x93 = CHASTE_MATH::Exp(-CHASTE_CONST(0.016666666666666666) - CHASTE_CONST(0.0066666666666666671) * var_chaste_interface__cell__V); + const ValueType var_x94 = 1 / (CHASTE_CONST(0.25) * var_x93 + CHASTE_CONST(0.1027) * CHASTE_MATH::Exp(-CHASTE_CONST(0.20833333333333334) - CHASTE_CONST(0.083333333333333329) * var_chaste_interface__cell__V)); + const ValueType var_x95 = CHASTE_CONST(3.802) * var_x94; + const ValueType var_x96 = CHASTE_CONST(0.008539999999999999) + CHASTE_CONST(2.0000000000000002e-5) * var_chaste_interface__cell__V; + const ValueType var_x97 = CHASTE_CONST(3.802) / (CHASTE_CONST(0.1027) * CHASTE_MATH::Exp(-CHASTE_CONST(0.16666666666666666) - CHASTE_CONST(0.066666666666666666) * var_chaste_interface__cell__V) + CHASTE_CONST(0.23000000000000001) * var_x93); + const ValueType var_x98 = CHASTE_MATH::Exp(-CHASTE_CONST(0.90909090909090906) - CHASTE_CONST(0.12987012987012986) * var_chaste_interface__cell__V); + const ValueType var_x99 = CHASTE_CONST(6.9999999999999997e-7) * var_x98; + const ValueType var_x100 = CHASTE_MATH::Exp(CHASTE_CONST(0.36945812807881773) - var_x91); + const ValueType var_x101 = CHASTE_CONST(0.22) * var_x100; + const ValueType var_x102 = CHASTE_CONST(3.802) / (CHASTE_CONST(0.20000000000000001) * var_x93 + CHASTE_CONST(0.1027) * CHASTE_MATH::Exp(-CHASTE_CONST(0.14705882352941177) - CHASTE_CONST(0.058823529411764705) * var_chaste_interface__cell__V)); + const ValueType var_x103 = -var_x102; + const ValueType var_x104 = CHASTE_CONST(0.19170000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(0.12315270935960591) - var_x91); + const ValueType var_x105 = var_x104 + var_x97; + const ValueType var_x106 = var_x102 + var_x96; + const ValueType var_x107 = 1 / (CHASTE_CONST(0.39395599999999997) + CHASTE_CONST(0.188495) * CHASTE_MATH::Exp(-CHASTE_CONST(0.42168674698795178) - CHASTE_CONST(0.060240963855421679) * var_chaste_interface__cell__V)); + const ValueType var_x108 = CHASTE_CONST(1.0526315789473684e-5) * var_x107; + const ValueType var_x109 = CHASTE_CONST(1.4e-8) * var_x98; + const ValueType var_x110 = CHASTE_CONST(0.001) * var_x107; + const ValueType var_x111 = -var_x96; + const ValueType var_x112 = CHASTE_CONST(1.2097272727272726e-5) * var_x107 * var_x94 * var_x98 / (var_x100 * var_x96); + const ValueType var_x113 = var_x107; + const ValueType var_x114 = 1 / var_chaste_interface__potassium_concentration__Ki; + const ValueType var_x115 = var_x114 * mParameters[2]; + const ValueType var_x116 = CHASTE_MATH::Log(var_x115); + const ValueType var_x117 = -CHASTE_CONST(26.535875647668394) * var_x116 + var_chaste_interface__cell__V; + const ValueType var_x118 = CHASTE_CONST(0.065313235986811116) * mParameters[5]; + const ValueType var_x119 = var_chaste_interface__non_inactivating_steady_state_K_I__aKss * mParameters[8]; + const ValueType var_x120 = 1 / (var_chaste_interface__potassium_concentration__Ki + CHASTE_CONST(0.020408163265306124) * var_chaste_interface__sodium_concentration__Nai); + const ValueType var_x121 = var_x120 * var_chaste_interface__rapid_delayed_rectifier_K_I__O_K * mParameters[9]; + const ValueType var_x122 = CHASTE_CONST(1.7331439082928402) * var_x114; + const ValueType var_x123 = CHASTE_MATH::Exp(CHASTE_CONST(0.089599999999999999) * var_chaste_interface__cell__V - CHASTE_CONST(2.3776144580310881) * var_x116); + const ValueType var_x124 = 1 + var_x123; + const ValueType var_x125 = 1 / (210 + mParameters[2]); + const ValueType var_x126 = 1 / var_chaste_interface__sodium_concentration__Nai; + const ValueType var_x127 = CHASTE_MATH::Pow(var_x126, CHASTE_CONST(2.3999999999999999)); + const ValueType var_x128 = var_x126 * var_x127 * mParameters[2] / ((1500 + mParameters[2]) * CHASTE_MATH::Pow((CHASTE_CONST(7.44287265976699e-11) + var_x127), 2) * (1 + CHASTE_CONST(0.1245) * CHASTE_MATH::Exp(-CHASTE_CONST(0.0037684831406265135) * var_chaste_interface__cell__V) + CHASTE_CONST(0.036499999999999998) * (-CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * CHASTE_MATH::Exp(CHASTE_CONST(1.4858841010401188e-5) * mParameters[3])) * CHASTE_MATH::Exp(-CHASTE_CONST(0.037684831406265135) * var_chaste_interface__cell__V))); + const ValueType var_x129 = CHASTE_CONST(0.022348) * CHASTE_MATH::Exp(CHASTE_CONST(0.01176) * var_chaste_interface__cell__V); + const ValueType var_x130 = -var_x129; + const ValueType var_x131 = CHASTE_CONST(0.033500000000000002) * CHASTE_MATH::Exp(CHASTE_CONST(0.0109) * var_chaste_interface__cell__V); + const ValueType var_x132 = CHASTE_CONST(6.8899999999999994e-5) * CHASTE_MATH::Exp(-CHASTE_CONST(0.041779999999999998) * var_chaste_interface__cell__V); + const ValueType var_x133 = CHASTE_CONST(0.0064970000000000002) * CHASTE_MATH::Exp(-CHASTE_CONST(0.16339999999999999) - CHASTE_CONST(0.032680000000000001) * var_chaste_interface__cell__V); + const ValueType var_x134 = CHASTE_CONST(0.070300000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.14349999999999999) + CHASTE_CONST(0.0287) * var_chaste_interface__cell__V); + const ValueType var_x135 = CHASTE_CONST(0.012149999999999999) * CHASTE_MATH::Pow(var_chaste_interface__calcium_concentration__Cass, 2) * var_chaste_interface__ryanodine_receptors__P_O1; + const ValueType var_x136 = CHASTE_MATH::Pow(var_chaste_interface__calcium_concentration__Cass, 3); + const ValueType var_x137 = CHASTE_CONST(0.0060749999999999997) * CHASTE_MATH::Pow(var_chaste_interface__calcium_concentration__Cass, 4); + const ValueType var_x138 = CHASTE_CONST(0.0040499999999999998) * var_x136; + const ValueType var_x139 = CHASTE_CONST(4.2191641619115923e-37) * var_x71; + const ValueType var_x140 = 1 / (var_chaste_interface__sodium_concentration__Nai + CHASTE_CONST(0.1111111111111111) * var_chaste_interface__potassium_concentration__Ki); + const ValueType var_x141 = var_x140 * var_chaste_interface__fast_sodium_current__O_Na * mParameters[6]; + + rJacobian[0][0] = 1.0 - (mDt * (-var_x4 - CHASTE_CONST(0.00034782608695652176) * var_x1 / (CHASTE_CONST(0.0625) + CHASTE_CONST(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 * (-CHASTE_CONST(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 * (-CHASTE_CONST(0.050000000000000003) - var_x13) + CHASTE_CONST(4.0000000000000003e-5) * (-var_x15 + CHASTE_CONST(0.050000000000000003) * var_chaste_interface__calcium_concentration__CaNSR - CHASTE_CONST(0.050000000000000003) * var_chaste_interface__calcium_concentration__CaJSR) / (CHASTE_MATH::Pow(var_x6, 3) * CHASTE_MATH::Pow((CHASTE_CONST(0.0126) + var_x7), 2))));rJacobian[2][3] = -(mDt * (CHASTE_CONST(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 * (CHASTE_CONST(0.016666666666666666)));rJacobian[3][3] = 1.0 - (mDt * (-CHASTE_CONST(0.016666666666666666) - CHASTE_CONST(95.238095238095241) * var_x20));rJacobian[3][4] = -(mDt * (-CHASTE_CONST(95.238095238095241) * var_x21 - CHASTE_CONST(190.47619047619048) * var_x33 + CHASTE_CONST(190476190.47619048) * var_x31 * var_x35 * var_chaste_interface__calcium_concentration__Cai_converted));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 + 2 * var_x33 + (-CHASTE_CONST(65.313235986811122) * var_x61 - CHASTE_CONST(0.00030330018395124703) * var_x48 + CHASTE_CONST(0.0062374140367404624) * var_x22 / CHASTE_MATH::Pow((CHASTE_CONST(8.3232249999999994e-8) + var_x32), 2) - CHASTE_CONST(6237.4140367404616) * var_x49 * var_chaste_interface__calcium_concentration__Cai_converted + CHASTE_CONST(1.4063880539705308e-37) * var_x52 * var_x62 * var_x64 * var_x65 * mParameters[11]) * mParameters[5] - 2000000 * var_x66 * var_chaste_interface__calcium_concentration__Cai_converted) + CHASTE_CONST(1.3080000000000001e-7) * (CHASTE_CONST(0.125) * var_chaste_interface__calcium_concentration__Cass - 125 * var_chaste_interface__calcium_concentration__Cai_converted - var_x34 * var_x66 - CHASTE_CONST(0.032656617993405558) * (CHASTE_CONST(0.00069999999999999999) * var_chaste_interface__cell__V - CHASTE_CONST(0.0092875564766839377) * CHASTE_MATH::Log(CHASTE_CONST(0.001) * var_x48 * mParameters[1]) + 95500 * var_x32 * var_x49 - 2 * var_x59 * var_x67) * mParameters[5] + ((var_x12) ? (CHASTE_CONST(3.0000000000000001e-5) * var_chaste_interface__calcium_concentration__CaNSR - CHASTE_CONST(0.029999999999999999) * var_chaste_interface__calcium_concentration__Cai_converted) : (CHASTE_CONST(0.10000000000000001) * var_chaste_interface__calcium_concentration__CaNSR - 100 * var_chaste_interface__calcium_concentration__Cai_converted))) / (CHASTE_MATH::Pow(var_x44, 3) * CHASTE_MATH::Pow(var_x45, 2))));rJacobian[4][5] = -(mDt * (var_x47 * (CHASTE_CONST(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 * (var_x47 * (CHASTE_CONST(0.19593970796043336) * var_x72 + CHASTE_CONST(1.4063880539705308e-37) * var_x70 * var_x71) * mParameters[5]));rJacobian[5][0] = 0.0;rJacobian[5][1] = -(mDt * (-var_x75 * var_x85 * var_x86));rJacobian[5][2] = -(mDt * (var_x13 * var_x87));rJacobian[5][3] = 0.0;rJacobian[5][4] = -(mDt * (125000 * var_x75));rJacobian[5][5] = 1.0 - (mDt * (var_x75 * (-125 + CHASTE_CONST(3.5000000000000004) * var_x16 - var_x86 * var_x88) + CHASTE_CONST(0.030581039755351685) * (125000 * var_chaste_interface__calcium_concentration__Cai_converted + CHASTE_CONST(3.5000000000000004) * var_x15 - 125 * var_chaste_interface__calcium_concentration__Cass - var_x86 * ((var_x81) ? (-var_x80 * var_chaste_interface__L_type_calcium_current__O) : (-var_x84 * var_chaste_interface__L_type_calcium_current__O))) / (CHASTE_MATH::Pow(var_x73, 3) * CHASTE_MATH::Pow((CHASTE_CONST(0.015290519877675841) + var_x74), 2))));rJacobian[5][6] = 0.0;rJacobian[5][7] = -(mDt * (var_x17 * var_x87));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_x89));rJacobian[5][24] = -(mDt * (var_x89));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 * (CHASTE_CONST(0.00175) * var_x27 * var_x38 + CHASTE_CONST(8.7500000000000013e-5) * var_x37 * CHASTE_MATH::Pow(var_x23, 2) / CHASTE_MATH::Pow(var_x24, 3)));rJacobian[6][6] = 1.0 - (mDt * (-CHASTE_CONST(0.00020000000000000001) - CHASTE_CONST(0.0025000000000000005) * var_x25 * var_x27 + CHASTE_CONST(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_x85 * var_x90));rJacobian[7][2] = 0.0;rJacobian[7][3] = 0.0;rJacobian[7][4] = 0.0;rJacobian[7][5] = -(mDt * (-var_x88 * var_x90));rJacobian[7][6] = 0.0;rJacobian[7][7] = 1.0 - (mDt * (-CHASTE_CONST(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_x92 - var_x95 - var_x96));rJacobian[8][9] = -(mDt * (var_x97));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_x99));rJacobian[8][15] = -(mDt * (var_x101));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_x103 + var_x92));rJacobian[9][9] = 1.0 - (mDt * (-var_x105 - var_x106));rJacobian[9][10] = -(mDt * (var_x103));rJacobian[9][11] = -(mDt * (var_x103));rJacobian[9][12] = -(mDt * (var_x103 + var_x99));rJacobian[9][13] = -(mDt * (var_x103));rJacobian[9][14] = -(mDt * (var_x103));rJacobian[9][15] = -(mDt * (var_x103));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_x108 - var_x99));rJacobian[10][11] = -(mDt * (var_x109));rJacobian[10][12] = 0.0;rJacobian[10][13] = 0.0;rJacobian[10][14] = -(mDt * (var_x110));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_x108));rJacobian[11][11] = 1.0 - (mDt * (-var_x109));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_x96));rJacobian[12][10] = 0.0;rJacobian[12][11] = 0.0;rJacobian[12][12] = 1.0 - (mDt * (-var_x105 - var_x99));rJacobian[12][13] = -(mDt * (var_x102));rJacobian[12][14] = -(mDt * (var_x92));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_x111));rJacobian[13][9] = -(mDt * (var_x111));rJacobian[13][10] = -(mDt * (var_x111));rJacobian[13][11] = -(mDt * (var_x111));rJacobian[13][12] = -(mDt * (var_x104 - var_x96));rJacobian[13][13] = 1.0 - (mDt * (-var_x106 - var_x99));rJacobian[13][14] = -(mDt * (var_x111));rJacobian[13][15] = -(mDt * (var_x111));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_x96));rJacobian[14][9] = 0.0;rJacobian[14][10] = -(mDt * (var_x99));rJacobian[14][11] = 0.0;rJacobian[14][12] = -(mDt * (var_x97));rJacobian[14][13] = 0.0;rJacobian[14][14] = 1.0 - (mDt * (-var_x110 - var_x112 - var_x92 - var_x99));rJacobian[14][15] = -(mDt * (var_x113));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_x95));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_x112));rJacobian[15][15] = 1.0 - (mDt * (-var_x101 - var_x113));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_x117 * var_x118 * var_x119));rJacobian[17][17] = 1.0 - (mDt * ((-CHASTE_CONST(1.7331439082928402) * var_x121 - var_x119 * var_x122 * var_chaste_interface__non_inactivating_steady_state_K_I__iKss - var_x122 * CHASTE_MATH::Pow(var_chaste_interface__slow_delayed_rectifier_K_I__nKs, 2) * mParameters[10] - CHASTE_CONST(0.43328597707321004) * var_x114 * var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_K_I__aur * var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_K_I__iur - CHASTE_CONST(0.92671204776418159) * var_x114 * CHASTE_MATH::Pow(var_chaste_interface__fast_transient_outward_K_I__ato_f, 3) * var_chaste_interface__fast_transient_outward_K_I__ito_f - CHASTE_CONST(1.7331439082928402) * var_x115 * var_x125 * mParameters[7] / var_x124 + CHASTE_CONST(0.15528969418303848) * var_x114 * var_x117 * var_x123 * var_x125 * mParameters[2] * mParameters[7] / CHASTE_MATH::Pow(var_x124, 2)) * mParameters[5]));rJacobian[17][18] = 0.0;rJacobian[17][19] = 0.0;rJacobian[17][20] = 0.0;rJacobian[17][21] = -(mDt * (var_x118 * (-var_chaste_interface__cell__V + CHASTE_CONST(26.535875647668394) * CHASTE_MATH::Log(var_x120 * (mParameters[2] + CHASTE_CONST(0.020408163265306124) * mParameters[3]))) * mParameters[9]));rJacobian[17][22] = 0.0;rJacobian[17][23] = 0.0;rJacobian[17][24] = 0.0;rJacobian[17][25] = -(mDt * ((CHASTE_CONST(5.8007500451501034e-11) * var_x128 - CHASTE_CONST(0.035370283842711021) * var_x121) * mParameters[5]));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 * (-CHASTE_CONST(0.023761000000000001) - var_x129 - CHASTE_CONST(0.047002000000000002) * CHASTE_MATH::Exp(-CHASTE_CONST(0.063100000000000003) * var_chaste_interface__cell__V)));rJacobian[18][19] = -(mDt * (CHASTE_CONST(0.036777999999999998) - var_x129));rJacobian[18][20] = -(mDt * (var_x130));rJacobian[18][21] = -(mDt * (var_x130));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 * (CHASTE_CONST(0.023761000000000001)));rJacobian[19][19] = 1.0 - (mDt * (-CHASTE_CONST(0.036777999999999998) - var_x131));rJacobian[19][20] = 0.0;rJacobian[19][21] = -(mDt * (var_x132));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_x133));rJacobian[20][21] = -(mDt * (var_x134));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_x131));rJacobian[21][20] = -(mDt * (var_x133));rJacobian[21][21] = 1.0 - (mDt * (-var_x132 - var_x134));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 * (-CHASTE_CONST(0.00080000000000000004)));rJacobian[22][23] = -(mDt * (CHASTE_CONST(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_x135 + CHASTE_CONST(0.024299999999999999) * var_x136 * (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 * (CHASTE_CONST(0.00080000000000000004) - var_x137));rJacobian[23][23] = 1.0 - (mDt * (-CHASTE_CONST(0.080249999999999988) - var_x137 - var_x138));rJacobian[23][24] = -(mDt * (CHASTE_CONST(0.96499999999999997) - var_x137));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_x135));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_x138));rJacobian[24][24] = 1.0 - (mDt * (-CHASTE_CONST(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 * ((CHASTE_CONST(195.93970796043337) * var_x61 - var_x139 * var_x65) * mParameters[5]));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_x118 * (-var_chaste_interface__cell__V + CHASTE_CONST(26.535875647668394) * CHASTE_MATH::Log(var_x140 * (mParameters[3] + CHASTE_CONST(0.1111111111111111) * mParameters[2]))) * mParameters[6]));rJacobian[25][16] = 0.0;rJacobian[25][17] = -(mDt * ((-CHASTE_CONST(0.0005006860179512649) * var_x140 - CHASTE_CONST(0.19257154536587112) * var_x141) * mParameters[5]));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 * ((-CHASTE_CONST(1.7331439082928402) * var_x141 - CHASTE_CONST(0.004506174161561384) * var_x140 - CHASTE_CONST(0.58781912388130009) * var_x72 - CHASTE_CONST(8.7011250677251544e-11) * var_x128 - var_x139 * var_x70) * mParameters[5])); +} + +template +DEVICE +void Cellli_mouse_2010FromCellMLBackwardEuler::UpdateTransmembranePotentialDevice(ValueType var_chaste_interface__environment__time, + ValueType rY[], + ValueType mDt, + const ValueType mParameters[], + bool mSetVoltageDerivativeToZero, + ValueType mFixedVoltage, + DeviceStimulusFunctor stim, + ValueType capacitance) +{ + ValueType var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); + // Units: millivolt; Initial value: -78.9452115785979 + ValueType var_chaste_interface__calcium_concentration__Cai_converted = rY[1]; + // Units: millimolar; Initial value: 9.499150681398009e-05 + ValueType var_chaste_interface__calcium_concentration__Cass = rY[2]; + // Units: micromolar; Initial value: 0.0954184301907784 + ValueType var_chaste_interface__L_type_calcium_current__O = rY[10]; + // Units: dimensionless; Initial value: 1.23713515513533e-06 + ValueType var_chaste_interface__L_type_calcium_current__y_gate = rY[12]; + // Units: dimensionless; Initial value: 0.845044436980163 + ValueType var_chaste_interface__sodium_concentration__Nai = rY[13]; + // Units: micromolar; Initial value: 12364.7482121793 + ValueType var_chaste_interface__fast_sodium_current__O_Na = rY[14]; + // Units: dimensionless; Initial value: 1.46826771436314e-06 + ValueType var_chaste_interface__potassium_concentration__Ki = rY[22]; + // Units: micromolar; Initial value: 115599.50642567 + ValueType var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_K_I__aur = rY[23]; + // Units: dimensionless; Initial value: 0.00346258606821817 + ValueType var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_K_I__iur = rY[24]; + // Units: dimensionless; Initial value: 0.955684946168062 + ValueType var_chaste_interface__non_inactivating_steady_state_K_I__aKss = rY[25]; + // Units: dimensionless; Initial value: 0.287585636847048 + ValueType var_chaste_interface__non_inactivating_steady_state_K_I__iKss = rY[26]; + // Units: dimensionless; Initial value: 1.0 + ValueType var_chaste_interface__rapid_delayed_rectifier_K_I__O_K = rY[27]; + // Units: dimensionless; Initial value: 0.0131742086125972 + ValueType var_chaste_interface__slow_delayed_rectifier_K_I__nKs = rY[31]; + // Units: dimensionless; Initial value: 0.00336735013094628 + ValueType var_chaste_interface__fast_transient_outward_K_I__ato_f = rY[32]; + // Units: dimensionless; Initial value: 0.0142335908879204 + ValueType var_chaste_interface__fast_transient_outward_K_I__ito_f = rY[33]; + // Units: dimensionless; Initial value: 0.996989882138174 + ValueType var_chaste_interface__slow_transient_outward_K_I__ato_s = rY[34]; + // Units: dimensionless; Initial value: 0.0443263407760382 + ValueType var_chaste_interface__slow_transient_outward_K_I__ito_s = rY[35]; + // Units: dimensionless; Initial value: 0.887568880831388 + + const ValueType var_calcium_activated_chloride_current__E_Cl = -40; // millivolt + const ValueType var_calcium_activated_chloride_current__Km_Cl = 10; // micromolar + const ValueType var_calcium_activated_chloride_current__g_ClCa = 10; // milliS_per_microF + const ValueType var_calcium_background_current__g_Cab = CHASTE_CONST(0.00069999999999999999); // milliS_per_microF + const ValueType var_calcium_concentration__Cai = 1000 * var_chaste_interface__calcium_concentration__Cai_converted; // micromolar + const ValueType var_calcium_pump_current__Km_pCa = CHASTE_CONST(0.28849999999999998); // micromolar + const ValueType var_calcium_pump_current__i_pCa_max = CHASTE_CONST(0.095500000000000002); // picoA_per_picoF + const ValueType var_calcium_pump_current__i_pCa = CHASTE_MATH::Pow(var_calcium_concentration__Cai, 2) * var_calcium_pump_current__i_pCa_max / (CHASTE_MATH::Pow(var_calcium_concentration__Cai, 2) + CHASTE_MATH::Pow(var_calcium_pump_current__Km_pCa, 2)); // picoA_per_picoF + const ValueType var_cell__Acap = CHASTE_CONST(0.00013866); // cm2 + const ValueType var_cell__F = CHASTE_CONST(96.5); // coulomb_per_millimole + const ValueType var_cell__R = CHASTE_CONST(8.3140000000000001); // joule_per_mole_kelvin + const ValueType var_cell__T = 308; // kelvin + const ValueType var_calcium_background_current__E_CaN = CHASTE_CONST(0.5) * var_cell__R * var_cell__T * CHASTE_MATH::Log(mParameters[1] / var_calcium_concentration__Cai) / var_cell__F; // millivolt + const ValueType var_L_type_calcium_current__FVRT = var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T); // dimensionless + const ValueType var_L_type_calcium_current__FVRT_Ca = 2 * var_L_type_calcium_current__FVRT; // dimensionless + const ValueType var_calcium_activated_chloride_current__O_ClCa = CHASTE_CONST(0.20000000000000001) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(5.9871794871794881) - CHASTE_CONST(0.12820512820512822) * var_chaste_interface__cell__V)); // dimensionless + const ValueType 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 ValueType 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 ValueType var_cell__Vss = CHASTE_CONST(2.1999999999999998e-8); // microlitre + const ValueType var_L_type_calcium_current__i_CaL = ((CHASTE_MATH::Abs(var_L_type_calcium_current__FVRT_Ca) > CHASTE_CONST(1.0000000000000001e-5)) ? (-2 * (-var_chaste_interface__calcium_concentration__Cass + mParameters[1] * CHASTE_MATH::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 - CHASTE_MATH::Exp(-var_L_type_calcium_current__FVRT_Ca)) * var_cell__Acap * mParameters[5])) : (-CHASTE_CONST(2.0000000000000002e-5) * (-var_chaste_interface__calcium_concentration__Cass + mParameters[1] * CHASTE_MATH::Exp(-CHASTE_CONST(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 - CHASTE_MATH::Exp(-CHASTE_CONST(1.0000000000000001e-5))) * var_cell__Acap * mParameters[5]))); // picoA_per_picoF + const ValueType var_cell__i_Stim_converted = CHASTE_STIM(var_chaste_interface__environment__time); // uA_per_cm2 + const ValueType var_cell__i_Stim = var_cell__i_Stim_converted / CHASTE_CAP(); // picoA_per_picoF + const ValueType var_fast_transient_outward_K_I__g_Kto_f = CHASTE_CONST(0.53469999999999995); // milliS_per_microF + const ValueType var_fast_transient_outward_K_I__E_K = var_cell__R * var_cell__T * CHASTE_MATH::Log(mParameters[2] / var_chaste_interface__potassium_concentration__Ki) / var_cell__F; // millivolt + const ValueType var_fast_transient_outward_K_I__i_Kto_f = CHASTE_MATH::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 ValueType 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 ValueType var_slow_delayed_rectifier_K_I__i_Ks = CHASTE_MATH::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 ValueType var_slow_transient_outward_K_I__g_Kto_s = 0; // milliS_per_microF + const ValueType 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 ValueType var_sodium_background_current__g_Nab = CHASTE_CONST(0.0025999999999999999); // milliS_per_microF + const ValueType var_sodium_calcium_exchange_current__K_mAllo = 0; // micromolar + const ValueType var_sodium_calcium_exchange_current__K_mCai = CHASTE_CONST(3.6000000000000001); // micromolar + const ValueType var_sodium_calcium_exchange_current__K_mCao = 1400; // micromolar + const ValueType var_sodium_calcium_exchange_current__K_mNai = 12000; // micromolar + const ValueType var_sodium_calcium_exchange_current__K_mNao = 88000; // micromolar + const ValueType var_sodium_calcium_exchange_current__eta = CHASTE_CONST(0.34999999999999998); // dimensionless + const ValueType var_sodium_calcium_exchange_current__k_sat = CHASTE_CONST(0.27000000000000002); // dimensionless + const ValueType var_fast_sodium_current__E_Na = var_cell__R * var_cell__T * CHASTE_MATH::Log((mParameters[3] + CHASTE_CONST(0.1111111111111111) * mParameters[2]) / (var_chaste_interface__sodium_concentration__Nai + CHASTE_CONST(0.1111111111111111) * var_chaste_interface__potassium_concentration__Ki)) / var_cell__F; // millivolt + const ValueType 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 ValueType var_rapid_delayed_rectifier_K_I__i_Kr = (-var_cell__R * var_cell__T * CHASTE_MATH::Log((mParameters[2] + CHASTE_CONST(0.020408163265306124) * mParameters[3]) / (var_chaste_interface__potassium_concentration__Ki + CHASTE_CONST(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 ValueType 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 ValueType var_sodium_calcium_exchange_current__i_NCX = (CHASTE_MATH::Pow(var_chaste_interface__sodium_concentration__Nai, 3) * mParameters[1] * CHASTE_MATH::Exp(var_cell__F * var_chaste_interface__cell__V * var_sodium_calcium_exchange_current__eta / (var_cell__R * var_cell__T)) - CHASTE_MATH::Pow(mParameters[3], 3) * var_calcium_concentration__Cai * CHASTE_MATH::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 + CHASTE_MATH::Pow(var_sodium_calcium_exchange_current__K_mAllo, 2) / CHASTE_MATH::Pow(var_calcium_concentration__Cai, 2)) * (1 + var_sodium_calcium_exchange_current__k_sat * CHASTE_MATH::Exp((-1 + var_sodium_calcium_exchange_current__eta) * var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T))) * (CHASTE_MATH::Pow(mParameters[3], 3) * var_calcium_concentration__Cai + CHASTE_MATH::Pow(var_sodium_calcium_exchange_current__K_mNao, 3) * var_calcium_concentration__Cai + CHASTE_MATH::Pow(var_chaste_interface__sodium_concentration__Nai, 3) * mParameters[1] + CHASTE_MATH::Pow(var_chaste_interface__sodium_concentration__Nai, 3) * var_sodium_calcium_exchange_current__K_mCao + CHASTE_MATH::Pow(mParameters[3], 3) * (1 + CHASTE_MATH::Pow(var_chaste_interface__sodium_concentration__Nai, 3) / CHASTE_MATH::Pow(var_sodium_calcium_exchange_current__K_mNai, 3)) * var_sodium_calcium_exchange_current__K_mCai + CHASTE_MATH::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 ValueType var_sodium_potassium_pump_current__Km_Ko = 1500; // micromolar + const ValueType var_sodium_potassium_pump_current__Km_Nai = 16600; // micromolar + const ValueType var_sodium_potassium_pump_current__i_NaK_max = CHASTE_CONST(2.4860000000000002); // picoA_per_picoF + const ValueType var_sodium_potassium_pump_current__sigma = -CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * CHASTE_MATH::Exp(CHASTE_CONST(1.4858841010401188e-5) * mParameters[3]); // dimensionless + const ValueType var_sodium_potassium_pump_current__f_NaK = 1 / (1 + CHASTE_CONST(0.1245) * CHASTE_MATH::Exp(-CHASTE_CONST(0.10000000000000001) * var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T)) + CHASTE_CONST(0.036499999999999998) * var_sodium_potassium_pump_current__sigma * CHASTE_MATH::Exp(-var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T))); // dimensionless + const ValueType var_sodium_potassium_pump_current__i_NaK = mParameters[2] * var_sodium_potassium_pump_current__f_NaK * var_sodium_potassium_pump_current__i_NaK_max / ((1 + CHASTE_MATH::Pow((var_sodium_potassium_pump_current__Km_Nai / var_chaste_interface__sodium_concentration__Nai), CHASTE_CONST(2.3999999999999999))) * (mParameters[2] + var_sodium_potassium_pump_current__Km_Ko)); // picoA_per_picoF + const ValueType 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 + CHASTE_MATH::Exp(CHASTE_CONST(0.089599999999999999) * var_chaste_interface__cell__V - CHASTE_CONST(0.089599999999999999) * var_fast_transient_outward_K_I__E_K)) * (210 + mParameters[2])); // picoA_per_picoF + const ValueType var_ultra_rapidly_activating_delayed_rectifier_K_I__g_Kur = CHASTE_CONST(0.25); // milliS_per_microF + const ValueType 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 ValueType 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; +} + +#include "ChasteCpuMacros.hpp" +#endif // CELLLI_MOUSE_2010FROMCELLMLBACKWARDEULERKERNELS_HPP_ \ No newline at end of file diff --git a/chaste_codegen/data/tests/chaste_reference_models/BE/sachse_moreno_abildskov_2008_b.cpp b/chaste_codegen/data/tests/chaste_reference_models/BE/sachse_moreno_abildskov_2008_b.cpp index c975de3ee..4389ba9dc 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/BE/sachse_moreno_abildskov_2008_b.cpp +++ b/chaste_codegen/data/tests/chaste_reference_models/BE/sachse_moreno_abildskov_2008_b.cpp @@ -22,6 +22,8 @@ #include "HeartConfig.hpp" #include "IsNan.hpp" #include "MathsCustomFunctions.hpp" +#include "ChasteMathDeviceNamespaces.hpp" +#include "ChasteCpuMacros.hpp" @@ -33,7 +35,7 @@ const double var_chaste_interface__I_stim__stim_duration_converted = 1; // millisecond const double var_chaste_interface__I_stim__stim_period_converted = 1000; // millisecond const double var_chaste_interface__I_stim__stim_start_converted = 100; // millisecond - const double var_chaste_interface__I_stim__stim_amplitude_converted = 0.0001 * HeartConfig::Instance()->GetCapacitance() / mParameters[2]; // uA_per_cm2 + const double var_chaste_interface__I_stim__stim_amplitude_converted = CHASTE_CONST(0.0001) * CHASTE_CAP() / mParameters[2]; // uA_per_cm2 boost::shared_ptr p_cellml_stim(new RegularStimulus( -fabs(var_chaste_interface__I_stim__stim_amplitude_converted), var_chaste_interface__I_stim__stim_duration_converted, @@ -60,10 +62,10 @@ this->mParameters[0] = 140; // (var_model_parameters__Ki) [millimolar] this->mParameters[1] = 5; // (var_model_parameters__Ko) [millimolar] - this->mParameters[2] = 4.5000000000000001e-6; // (var_membrane__Cm) [microfarad] - this->mParameters[3] = 5.4000000000000004e-9; // (var_I_Shkr__PShkr) [microlitre_per_second] - this->mParameters[4] = 0.001; // (var_I_Kir__GKir) [microsiemens] - this->mParameters[5] = 6.9e-6; // (var_I_b__Gb) [microsiemens] + this->mParameters[2] = CHASTE_CONST(4.5000000000000001e-6); // (var_membrane__Cm) [microfarad] + this->mParameters[3] = CHASTE_CONST(5.4000000000000004e-9); // (var_I_Shkr__PShkr) [microlitre_per_second] + this->mParameters[4] = CHASTE_CONST(0.001); // (var_I_Kir__GKir) [microsiemens] + this->mParameters[5] = CHASTE_CONST(6.9e-6); // (var_I_b__Gb) [microsiemens] this->mParameters[6] = 295; // (var_model_parameters__T) [kelvin] } @@ -111,24 +113,24 @@ // 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]); + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -58.0 double var_chaste_interface__I_Shkr__OShkr = rY[6]; // Units: dimensionless; Initial value: 0.0 - const double var_I_Kir__aKir = 0.93999999999999995; // dimensionless - const double var_I_Kir__bKir = 1.26; // dimensionless + const double var_I_Kir__aKir = CHASTE_CONST(0.93999999999999995); // dimensionless + const double var_I_Kir__bKir = CHASTE_CONST(1.26); // dimensionless const double var_I_b__Eb = 0; // millivolt const double var_I_b__I_b = (-var_I_b__Eb + var_chaste_interface__membrane__Vm) * mParameters[5]; // nanoampere - const double var_I_b__I_b_converted = 0.001 * HeartConfig::Instance()->GetCapacitance() * var_I_b__I_b / mParameters[2]; // uA_per_cm2 + const double var_I_b__I_b_converted = CHASTE_CONST(0.001) * CHASTE_CAP() * var_I_b__I_b / mParameters[2]; // uA_per_cm2 const double var_model_parameters__F = 96500; // coulomb_per_mole const double var_model_parameters__R = 8310; // millijoule_per_kelvin_mole - const double var_I_Kir__EK = var_model_parameters__R * mParameters[6] * log(mParameters[1] / mParameters[0]) / var_model_parameters__F; // millivolt - const double var_I_Kir__OKir = 1 / (var_I_Kir__aKir + exp((-var_I_Kir__EK + var_chaste_interface__membrane__Vm) * var_I_Kir__bKir * var_model_parameters__F / (var_model_parameters__R * mParameters[6]))); // dimensionless - const double var_I_Kir__I_Kir = 0.031622776601683791 * sqrt(mParameters[1]) * (-var_I_Kir__EK + var_chaste_interface__membrane__Vm) * mParameters[4] * var_I_Kir__OKir; // nanoampere - const double var_I_Kir__I_Kir_converted = 0.001 * HeartConfig::Instance()->GetCapacitance() * var_I_Kir__I_Kir / mParameters[2]; // uA_per_cm2 - const double var_I_Shkr__I_Shkr = ((((var_chaste_interface__membrane__Vm >= -8.6113989637305703e-9 * mParameters[6]) && (var_chaste_interface__membrane__Vm <= 8.6113989637305703e-9 * mParameters[6])) || ((var_chaste_interface__membrane__Vm >= 8.6113989637305703e-9 * mParameters[6]) && (var_chaste_interface__membrane__Vm <= -8.6113989637305703e-9 * mParameters[6]))) ? (58062575.210589655 * (8.6113989637305703e-9 * mParameters[6] + var_chaste_interface__membrane__Vm) * (0.0096499999999999989 * (-mParameters[1] * exp(9.9999999999999995e-8) + mParameters[0]) * var_chaste_interface__I_Shkr__OShkr * mParameters[3] / (1 - exp(9.9999999999999995e-8)) + 0.0096499999999999989 * (-mParameters[1] * exp(-9.9999999999999995e-8) + mParameters[0]) * var_chaste_interface__I_Shkr__OShkr * mParameters[3] / (1 - exp(-9.9999999999999995e-8))) / mParameters[6] - 0.0096499999999999989 * (-mParameters[1] * exp(9.9999999999999995e-8) + mParameters[0]) * var_chaste_interface__I_Shkr__OShkr * mParameters[3] / (1 - exp(9.9999999999999995e-8))) : (1120607.7015643802 * (-mParameters[1] * exp(-11.612515042117931 * var_chaste_interface__membrane__Vm / mParameters[6]) + mParameters[0]) * var_chaste_interface__I_Shkr__OShkr * mParameters[3] * var_chaste_interface__membrane__Vm / ((1 - exp(-11.612515042117931 * var_chaste_interface__membrane__Vm / mParameters[6])) * mParameters[6]))); // nanoampere - const double var_I_Shkr__I_Shkr_converted = 0.001 * HeartConfig::Instance()->GetCapacitance() * var_I_Shkr__I_Shkr / mParameters[2]; // uA_per_cm2 + const double var_I_Kir__EK = var_model_parameters__R * mParameters[6] * CHASTE_MATH::Log(mParameters[1] / mParameters[0]) / var_model_parameters__F; // millivolt + const double var_I_Kir__OKir = 1 / (var_I_Kir__aKir + CHASTE_MATH::Exp((-var_I_Kir__EK + var_chaste_interface__membrane__Vm) * var_I_Kir__bKir * var_model_parameters__F / (var_model_parameters__R * mParameters[6]))); // dimensionless + const double var_I_Kir__I_Kir = CHASTE_CONST(0.031622776601683791) * CHASTE_MATH::Sqrt(mParameters[1]) * (-var_I_Kir__EK + var_chaste_interface__membrane__Vm) * mParameters[4] * var_I_Kir__OKir; // nanoampere + const double var_I_Kir__I_Kir_converted = CHASTE_CONST(0.001) * CHASTE_CAP() * var_I_Kir__I_Kir / mParameters[2]; // uA_per_cm2 + const double var_I_Shkr__I_Shkr = ((((var_chaste_interface__membrane__Vm >= -CHASTE_CONST(8.6113989637305703e-9) * mParameters[6]) && (var_chaste_interface__membrane__Vm <= CHASTE_CONST(8.6113989637305703e-9) * mParameters[6])) || ((var_chaste_interface__membrane__Vm >= CHASTE_CONST(8.6113989637305703e-9) * mParameters[6]) && (var_chaste_interface__membrane__Vm <= -CHASTE_CONST(8.6113989637305703e-9) * mParameters[6]))) ? (CHASTE_CONST(58062575.210589655) * (CHASTE_CONST(8.6113989637305703e-9) * mParameters[6] + var_chaste_interface__membrane__Vm) * (CHASTE_CONST(0.0096499999999999989) * (-mParameters[1] * CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8)) + mParameters[0]) * var_chaste_interface__I_Shkr__OShkr * mParameters[3] / (1 - CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) + CHASTE_CONST(0.0096499999999999989) * (-mParameters[1] * CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)) + mParameters[0]) * var_chaste_interface__I_Shkr__OShkr * mParameters[3] / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)))) / mParameters[6] - CHASTE_CONST(0.0096499999999999989) * (-mParameters[1] * CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8)) + mParameters[0]) * var_chaste_interface__I_Shkr__OShkr * mParameters[3] / (1 - CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8)))) : (CHASTE_CONST(1120607.7015643802) * (-mParameters[1] * CHASTE_MATH::Exp(-CHASTE_CONST(11.612515042117931) * var_chaste_interface__membrane__Vm / mParameters[6]) + mParameters[0]) * var_chaste_interface__I_Shkr__OShkr * mParameters[3] * var_chaste_interface__membrane__Vm / ((1 - CHASTE_MATH::Exp(-CHASTE_CONST(11.612515042117931) * var_chaste_interface__membrane__Vm / mParameters[6])) * mParameters[6]))); // nanoampere + const double var_I_Shkr__I_Shkr_converted = CHASTE_CONST(0.001) * CHASTE_CAP() * var_I_Shkr__I_Shkr / mParameters[2]; // uA_per_cm2 const double var_chaste_interface__i_ionic = var_I_Kir__I_Kir_converted + var_I_Shkr__I_Shkr_converted + var_I_b__I_b_converted; // uA_per_cm2 const double i_ionic = var_chaste_interface__i_ionic; @@ -139,7 +141,7 @@ void Cellsachse_moreno_abildskov_2008_bFromCellMLBackwardEuler::ComputeResidual(double var_chaste_interface__environment__time_converted, const double rCurrentGuess[6], double rResidual[6]) { std::vector& rY = rGetStateVariables(); - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -58.0 //output_nonlinear_state_assignments @@ -155,24 +157,24 @@ const double var_I_Shkr__k_v0 = 2; // first_order_rate_constant const double var_I_Shkr__ko = 77; // first_order_rate_constant const double var_I_Shkr__OShkr_orig_deriv = var_chaste_interface__I_Shkr__C4Shkr * var_I_Shkr__ko - var_chaste_interface__I_Shkr__OShkr * var_I_Shkr__k_o; // 1 / second - const double d_dt_chaste_interface_var_I_Shkr__OShkr = 0.001 * var_I_Shkr__OShkr_orig_deriv; // 1 / millisecond + const double d_dt_chaste_interface_var_I_Shkr__OShkr = CHASTE_CONST(0.001) * var_I_Shkr__OShkr_orig_deriv; // 1 / millisecond const double var_I_Shkr__kv0 = 30; // first_order_rate_constant - const double var_I_Shkr__z_v = -1.53; // dimensionless - const double var_I_Shkr__zv = 1.28; // dimensionless + const double var_I_Shkr__z_v = -CHASTE_CONST(1.53); // dimensionless + const double var_I_Shkr__zv = CHASTE_CONST(1.28); // dimensionless const double var_model_parameters__F = 96500; // coulomb_per_mole const double var_model_parameters__R = 8310; // millijoule_per_kelvin_mole - const double var_I_Shkr__k_v = var_I_Shkr__k_v0 * exp(var_I_Shkr__z_v * var_chaste_interface__membrane__Vm * var_model_parameters__F / (var_model_parameters__R * mParameters[6])); // first_order_rate_constant - const double var_I_Shkr__kv = var_I_Shkr__kv0 * exp(var_I_Shkr__zv * var_chaste_interface__membrane__Vm * var_model_parameters__F / (var_model_parameters__R * mParameters[6])); // first_order_rate_constant + const double var_I_Shkr__k_v = var_I_Shkr__k_v0 * CHASTE_MATH::Exp(var_I_Shkr__z_v * var_chaste_interface__membrane__Vm * var_model_parameters__F / (var_model_parameters__R * mParameters[6])); // first_order_rate_constant + const double var_I_Shkr__kv = var_I_Shkr__kv0 * CHASTE_MATH::Exp(var_I_Shkr__zv * var_chaste_interface__membrane__Vm * var_model_parameters__F / (var_model_parameters__R * mParameters[6])); // first_order_rate_constant const double var_I_Shkr__C0Shkr_orig_deriv = var_chaste_interface__I_Shkr__C1Shkr * var_I_Shkr__k_v - 4 * var_chaste_interface__I_Shkr__C0Shkr * var_I_Shkr__kv; // 1 / second - const double d_dt_chaste_interface_var_I_Shkr__C0Shkr = 0.001 * var_I_Shkr__C0Shkr_orig_deriv; // 1 / millisecond + const double d_dt_chaste_interface_var_I_Shkr__C0Shkr = CHASTE_CONST(0.001) * var_I_Shkr__C0Shkr_orig_deriv; // 1 / millisecond const double var_I_Shkr__C1Shkr_orig_deriv = -(3 * var_I_Shkr__kv + var_I_Shkr__k_v) * var_chaste_interface__I_Shkr__C1Shkr + 2 * var_chaste_interface__I_Shkr__C2Shkr * var_I_Shkr__k_v + 4 * var_chaste_interface__I_Shkr__C0Shkr * var_I_Shkr__kv; // 1 / second - const double d_dt_chaste_interface_var_I_Shkr__C1Shkr = 0.001 * var_I_Shkr__C1Shkr_orig_deriv; // 1 / millisecond + const double d_dt_chaste_interface_var_I_Shkr__C1Shkr = CHASTE_CONST(0.001) * var_I_Shkr__C1Shkr_orig_deriv; // 1 / millisecond const double var_I_Shkr__C2Shkr_orig_deriv = -(2 * var_I_Shkr__k_v + 2 * var_I_Shkr__kv) * var_chaste_interface__I_Shkr__C2Shkr + 3 * var_chaste_interface__I_Shkr__C1Shkr * var_I_Shkr__kv + 3 * var_chaste_interface__I_Shkr__C3Shkr * var_I_Shkr__k_v; // 1 / second - const double d_dt_chaste_interface_var_I_Shkr__C2Shkr = 0.001 * var_I_Shkr__C2Shkr_orig_deriv; // 1 / millisecond + const double d_dt_chaste_interface_var_I_Shkr__C2Shkr = CHASTE_CONST(0.001) * var_I_Shkr__C2Shkr_orig_deriv; // 1 / millisecond const double var_I_Shkr__C3Shkr_orig_deriv = -(3 * var_I_Shkr__k_v + var_I_Shkr__kv) * var_chaste_interface__I_Shkr__C3Shkr + 2 * var_chaste_interface__I_Shkr__C2Shkr * var_I_Shkr__kv + 4 * var_chaste_interface__I_Shkr__C4Shkr * var_I_Shkr__k_v; // 1 / second - const double d_dt_chaste_interface_var_I_Shkr__C3Shkr = 0.001 * var_I_Shkr__C3Shkr_orig_deriv; // 1 / millisecond + const double d_dt_chaste_interface_var_I_Shkr__C3Shkr = CHASTE_CONST(0.001) * var_I_Shkr__C3Shkr_orig_deriv; // 1 / millisecond const double var_I_Shkr__C4Shkr_orig_deriv = var_chaste_interface__I_Shkr__C3Shkr * var_I_Shkr__kv + var_chaste_interface__I_Shkr__OShkr * var_I_Shkr__k_o - (4 * var_I_Shkr__k_v + var_I_Shkr__ko) * var_chaste_interface__I_Shkr__C4Shkr; // 1 / second - const double d_dt_chaste_interface_var_I_Shkr__C4Shkr = 0.001 * var_I_Shkr__C4Shkr_orig_deriv; // 1 / millisecond + const double d_dt_chaste_interface_var_I_Shkr__C4Shkr = CHASTE_CONST(0.001) * var_I_Shkr__C4Shkr_orig_deriv; // 1 / millisecond rResidual[0] = rCurrentGuess[0] - rY[1] - mDt*d_dt_chaste_interface_var_I_Shkr__C0Shkr; rResidual[1] = rCurrentGuess[1] - rY[2] - mDt*d_dt_chaste_interface_var_I_Shkr__C1Shkr; @@ -185,21 +187,21 @@ void Cellsachse_moreno_abildskov_2008_bFromCellMLBackwardEuler::ComputeJacobian(double var_chaste_interface__environment__time_converted, const double rCurrentGuess[6], double rJacobian[6][6]) { std::vector& rY = rGetStateVariables(); - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -58.0 const double var_x0 = var_chaste_interface__membrane__Vm / mParameters[6]; - const double var_x1 = exp(14.864019253910952 * var_x0); - const double var_x2 = 0.12 * var_x1; - const double var_x3 = exp(-17.767148014440433 * var_x0); - const double var_x4 = 0.002 * var_x3; - const double var_x5 = 0.089999999999999997 * var_x1; - const double var_x6 = 0.0040000000000000001 * var_x3; - const double var_x7 = 0.059999999999999998 * var_x1; - const double var_x8 = 0.0060000000000000001 * var_x3; - const double var_x9 = 0.029999999999999999 * var_x1; - const double var_x10 = 0.0080000000000000002 * var_x3; + const double var_x1 = CHASTE_MATH::Exp(CHASTE_CONST(14.864019253910952) * var_x0); + const double var_x2 = CHASTE_CONST(0.12) * var_x1; + const double var_x3 = CHASTE_MATH::Exp(-CHASTE_CONST(17.767148014440433) * var_x0); + const double var_x4 = CHASTE_CONST(0.002) * var_x3; + const double var_x5 = CHASTE_CONST(0.089999999999999997) * var_x1; + const double var_x6 = CHASTE_CONST(0.0040000000000000001) * var_x3; + const double var_x7 = CHASTE_CONST(0.059999999999999998) * var_x1; + const double var_x8 = CHASTE_CONST(0.0060000000000000001) * var_x3; + const double var_x9 = CHASTE_CONST(0.029999999999999999) * var_x1; + const double var_x10 = CHASTE_CONST(0.0080000000000000002) * var_x3; rJacobian[0][0] = 1.0 - (mDt * (-var_x2)); @@ -230,39 +232,39 @@ rJacobian[4][1] = 0.0; rJacobian[4][2] = 0.0; rJacobian[4][3] = -(mDt * (var_x9)); - rJacobian[4][4] = 1.0 - (mDt * (-0.076999999999999999 - var_x10)); - rJacobian[4][5] = -(mDt * (0.017999999999999999)); + rJacobian[4][4] = 1.0 - (mDt * (-CHASTE_CONST(0.076999999999999999) - var_x10)); + rJacobian[4][5] = -(mDt * (CHASTE_CONST(0.017999999999999999))); 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.076999999999999999)); - rJacobian[5][5] = 1.0 - (mDt * (-0.017999999999999999)); + rJacobian[5][4] = -(mDt * (CHASTE_CONST(0.076999999999999999))); + rJacobian[5][5] = 1.0 - (mDt * (-CHASTE_CONST(0.017999999999999999))); } void Cellsachse_moreno_abildskov_2008_bFromCellMLBackwardEuler::UpdateTransmembranePotential(double var_chaste_interface__environment__time_converted) { // Time units: millisecond std::vector& rY = rGetStateVariables(); - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -58.0 double var_chaste_interface__I_Shkr__OShkr = rY[6]; // Units: dimensionless; Initial value: 0.0 - const double var_I_Kir__aKir = 0.93999999999999995; // dimensionless - const double var_I_Kir__bKir = 1.26; // dimensionless + const double var_I_Kir__aKir = CHASTE_CONST(0.93999999999999995); // dimensionless + const double var_I_Kir__bKir = CHASTE_CONST(1.26); // dimensionless const double var_I_b__Eb = 0; // millivolt - const double var_I_stim__I_stim_converted = -GetIntracellularAreaStimulus(var_chaste_interface__environment__time_converted); // uA_per_cm2 - const double var_I_stim__I_stim = 1000 * var_I_stim__I_stim_converted * mParameters[2] / HeartConfig::Instance()->GetCapacitance(); // nanoampere + const double var_I_stim__I_stim_converted = -CHASTE_STIM(var_chaste_interface__environment__time_converted); // uA_per_cm2 + const double var_I_stim__I_stim = 1000 * var_I_stim__I_stim_converted * mParameters[2] / CHASTE_CAP(); // nanoampere const double var_I_b__I_b = (-var_I_b__Eb + var_chaste_interface__membrane__Vm) * mParameters[5]; // nanoampere const double var_model_parameters__F = 96500; // coulomb_per_mole const double var_model_parameters__R = 8310; // millijoule_per_kelvin_mole - const double var_I_Kir__EK = var_model_parameters__R * mParameters[6] * log(mParameters[1] / mParameters[0]) / var_model_parameters__F; // millivolt - const double var_I_Kir__OKir = 1 / (var_I_Kir__aKir + exp((-var_I_Kir__EK + var_chaste_interface__membrane__Vm) * var_I_Kir__bKir * var_model_parameters__F / (var_model_parameters__R * mParameters[6]))); // dimensionless - const double var_I_Kir__I_Kir = 0.031622776601683791 * sqrt(mParameters[1]) * (-var_I_Kir__EK + var_chaste_interface__membrane__Vm) * mParameters[4] * var_I_Kir__OKir; // nanoampere - const double var_I_Shkr__I_Shkr = ((((var_chaste_interface__membrane__Vm >= -8.6113989637305703e-9 * mParameters[6]) && (var_chaste_interface__membrane__Vm <= 8.6113989637305703e-9 * mParameters[6])) || ((var_chaste_interface__membrane__Vm >= 8.6113989637305703e-9 * mParameters[6]) && (var_chaste_interface__membrane__Vm <= -8.6113989637305703e-9 * mParameters[6]))) ? (58062575.210589655 * (8.6113989637305703e-9 * mParameters[6] + var_chaste_interface__membrane__Vm) * (0.0096499999999999989 * (-mParameters[1] * exp(9.9999999999999995e-8) + mParameters[0]) * var_chaste_interface__I_Shkr__OShkr * mParameters[3] / (1 - exp(9.9999999999999995e-8)) + 0.0096499999999999989 * (-mParameters[1] * exp(-9.9999999999999995e-8) + mParameters[0]) * var_chaste_interface__I_Shkr__OShkr * mParameters[3] / (1 - exp(-9.9999999999999995e-8))) / mParameters[6] - 0.0096499999999999989 * (-mParameters[1] * exp(9.9999999999999995e-8) + mParameters[0]) * var_chaste_interface__I_Shkr__OShkr * mParameters[3] / (1 - exp(9.9999999999999995e-8))) : (1120607.7015643802 * (-mParameters[1] * exp(-11.612515042117931 * var_chaste_interface__membrane__Vm / mParameters[6]) + mParameters[0]) * var_chaste_interface__I_Shkr__OShkr * mParameters[3] * var_chaste_interface__membrane__Vm / ((1 - exp(-11.612515042117931 * var_chaste_interface__membrane__Vm / mParameters[6])) * mParameters[6]))); // nanoampere + const double var_I_Kir__EK = var_model_parameters__R * mParameters[6] * CHASTE_MATH::Log(mParameters[1] / mParameters[0]) / var_model_parameters__F; // millivolt + const double var_I_Kir__OKir = 1 / (var_I_Kir__aKir + CHASTE_MATH::Exp((-var_I_Kir__EK + var_chaste_interface__membrane__Vm) * var_I_Kir__bKir * var_model_parameters__F / (var_model_parameters__R * mParameters[6]))); // dimensionless + const double var_I_Kir__I_Kir = CHASTE_CONST(0.031622776601683791) * CHASTE_MATH::Sqrt(mParameters[1]) * (-var_I_Kir__EK + var_chaste_interface__membrane__Vm) * mParameters[4] * var_I_Kir__OKir; // nanoampere + const double var_I_Shkr__I_Shkr = ((((var_chaste_interface__membrane__Vm >= -CHASTE_CONST(8.6113989637305703e-9) * mParameters[6]) && (var_chaste_interface__membrane__Vm <= CHASTE_CONST(8.6113989637305703e-9) * mParameters[6])) || ((var_chaste_interface__membrane__Vm >= CHASTE_CONST(8.6113989637305703e-9) * mParameters[6]) && (var_chaste_interface__membrane__Vm <= -CHASTE_CONST(8.6113989637305703e-9) * mParameters[6]))) ? (CHASTE_CONST(58062575.210589655) * (CHASTE_CONST(8.6113989637305703e-9) * mParameters[6] + var_chaste_interface__membrane__Vm) * (CHASTE_CONST(0.0096499999999999989) * (-mParameters[1] * CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8)) + mParameters[0]) * var_chaste_interface__I_Shkr__OShkr * mParameters[3] / (1 - CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) + CHASTE_CONST(0.0096499999999999989) * (-mParameters[1] * CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)) + mParameters[0]) * var_chaste_interface__I_Shkr__OShkr * mParameters[3] / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)))) / mParameters[6] - CHASTE_CONST(0.0096499999999999989) * (-mParameters[1] * CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8)) + mParameters[0]) * var_chaste_interface__I_Shkr__OShkr * mParameters[3] / (1 - CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8)))) : (CHASTE_CONST(1120607.7015643802) * (-mParameters[1] * CHASTE_MATH::Exp(-CHASTE_CONST(11.612515042117931) * var_chaste_interface__membrane__Vm / mParameters[6]) + mParameters[0]) * var_chaste_interface__I_Shkr__OShkr * mParameters[3] * var_chaste_interface__membrane__Vm / ((1 - CHASTE_MATH::Exp(-CHASTE_CONST(11.612515042117931) * var_chaste_interface__membrane__Vm / mParameters[6])) * mParameters[6]))); // nanoampere const double var_membrane__Vm_orig_deriv = (-var_I_Kir__I_Kir - var_I_Shkr__I_Shkr - var_I_b__I_b + var_I_stim__I_stim) / mParameters[2]; // millivolt / second - const double d_dt_chaste_interface_var_membrane__Vm = 0.001 * var_membrane__Vm_orig_deriv; // millivolt / millisecond + const double d_dt_chaste_interface_var_membrane__Vm = CHASTE_CONST(0.001) * var_membrane__Vm_orig_deriv; // millivolt / millisecond rY[0] += mDt*d_dt_chaste_interface_var_membrane__Vm; } @@ -290,26 +292,26 @@ { // Inputs: // Time units: millisecond - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -58.0 double var_chaste_interface__I_Shkr__OShkr = rY[6]; // Units: dimensionless; Initial value: 0.0 // Mathematics - const double var_I_Kir__aKir = 0.93999999999999995; // dimensionless - const double var_I_Kir__bKir = 1.26; // dimensionless + const double var_I_Kir__aKir = CHASTE_CONST(0.93999999999999995); // dimensionless + const double var_I_Kir__bKir = CHASTE_CONST(1.26); // dimensionless const double var_I_b__Eb = 0; // millivolt - const double var_I_stim__I_stim_converted = -GetIntracellularAreaStimulus(var_chaste_interface__environment__time_converted); // uA_per_cm2 + const double var_I_stim__I_stim_converted = -CHASTE_STIM(var_chaste_interface__environment__time_converted); // uA_per_cm2 const double var_I_b__I_b = (-var_I_b__Eb + var_chaste_interface__membrane__Vm) * mParameters[5]; // nanoampere - const double var_I_b__I_b_converted = 0.001 * HeartConfig::Instance()->GetCapacitance() * var_I_b__I_b / mParameters[2]; // uA_per_cm2 + const double var_I_b__I_b_converted = CHASTE_CONST(0.001) * CHASTE_CAP() * var_I_b__I_b / mParameters[2]; // uA_per_cm2 const double var_model_parameters__F = 96500; // coulomb_per_mole const double var_model_parameters__R = 8310; // millijoule_per_kelvin_mole - const double var_I_Kir__EK = var_model_parameters__R * mParameters[6] * log(mParameters[1] / mParameters[0]) / var_model_parameters__F; // millivolt - const double var_I_Kir__OKir = 1 / (var_I_Kir__aKir + exp((-var_I_Kir__EK + var_chaste_interface__membrane__Vm) * var_I_Kir__bKir * var_model_parameters__F / (var_model_parameters__R * mParameters[6]))); // dimensionless - const double var_I_Kir__I_Kir = 0.031622776601683791 * sqrt(mParameters[1]) * (-var_I_Kir__EK + var_chaste_interface__membrane__Vm) * mParameters[4] * var_I_Kir__OKir; // nanoampere - const double var_I_Kir__I_Kir_converted = 0.001 * HeartConfig::Instance()->GetCapacitance() * var_I_Kir__I_Kir / mParameters[2]; // uA_per_cm2 - const double var_I_Shkr__I_Shkr = ((((var_chaste_interface__membrane__Vm >= -8.6113989637305703e-9 * mParameters[6]) && (var_chaste_interface__membrane__Vm <= 8.6113989637305703e-9 * mParameters[6])) || ((var_chaste_interface__membrane__Vm >= 8.6113989637305703e-9 * mParameters[6]) && (var_chaste_interface__membrane__Vm <= -8.6113989637305703e-9 * mParameters[6]))) ? (58062575.210589655 * (8.6113989637305703e-9 * mParameters[6] + var_chaste_interface__membrane__Vm) * (0.0096499999999999989 * (-mParameters[1] * exp(9.9999999999999995e-8) + mParameters[0]) * var_chaste_interface__I_Shkr__OShkr * mParameters[3] / (1 - exp(9.9999999999999995e-8)) + 0.0096499999999999989 * (-mParameters[1] * exp(-9.9999999999999995e-8) + mParameters[0]) * var_chaste_interface__I_Shkr__OShkr * mParameters[3] / (1 - exp(-9.9999999999999995e-8))) / mParameters[6] - 0.0096499999999999989 * (-mParameters[1] * exp(9.9999999999999995e-8) + mParameters[0]) * var_chaste_interface__I_Shkr__OShkr * mParameters[3] / (1 - exp(9.9999999999999995e-8))) : (1120607.7015643802 * (-mParameters[1] * exp(-11.612515042117931 * var_chaste_interface__membrane__Vm / mParameters[6]) + mParameters[0]) * var_chaste_interface__I_Shkr__OShkr * mParameters[3] * var_chaste_interface__membrane__Vm / ((1 - exp(-11.612515042117931 * var_chaste_interface__membrane__Vm / mParameters[6])) * mParameters[6]))); // nanoampere - const double var_I_Shkr__I_Shkr_converted = 0.001 * HeartConfig::Instance()->GetCapacitance() * var_I_Shkr__I_Shkr / mParameters[2]; // uA_per_cm2 + const double var_I_Kir__EK = var_model_parameters__R * mParameters[6] * CHASTE_MATH::Log(mParameters[1] / mParameters[0]) / var_model_parameters__F; // millivolt + const double var_I_Kir__OKir = 1 / (var_I_Kir__aKir + CHASTE_MATH::Exp((-var_I_Kir__EK + var_chaste_interface__membrane__Vm) * var_I_Kir__bKir * var_model_parameters__F / (var_model_parameters__R * mParameters[6]))); // dimensionless + const double var_I_Kir__I_Kir = CHASTE_CONST(0.031622776601683791) * CHASTE_MATH::Sqrt(mParameters[1]) * (-var_I_Kir__EK + var_chaste_interface__membrane__Vm) * mParameters[4] * var_I_Kir__OKir; // nanoampere + const double var_I_Kir__I_Kir_converted = CHASTE_CONST(0.001) * CHASTE_CAP() * var_I_Kir__I_Kir / mParameters[2]; // uA_per_cm2 + const double var_I_Shkr__I_Shkr = ((((var_chaste_interface__membrane__Vm >= -CHASTE_CONST(8.6113989637305703e-9) * mParameters[6]) && (var_chaste_interface__membrane__Vm <= CHASTE_CONST(8.6113989637305703e-9) * mParameters[6])) || ((var_chaste_interface__membrane__Vm >= CHASTE_CONST(8.6113989637305703e-9) * mParameters[6]) && (var_chaste_interface__membrane__Vm <= -CHASTE_CONST(8.6113989637305703e-9) * mParameters[6]))) ? (CHASTE_CONST(58062575.210589655) * (CHASTE_CONST(8.6113989637305703e-9) * mParameters[6] + var_chaste_interface__membrane__Vm) * (CHASTE_CONST(0.0096499999999999989) * (-mParameters[1] * CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8)) + mParameters[0]) * var_chaste_interface__I_Shkr__OShkr * mParameters[3] / (1 - CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) + CHASTE_CONST(0.0096499999999999989) * (-mParameters[1] * CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)) + mParameters[0]) * var_chaste_interface__I_Shkr__OShkr * mParameters[3] / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)))) / mParameters[6] - CHASTE_CONST(0.0096499999999999989) * (-mParameters[1] * CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8)) + mParameters[0]) * var_chaste_interface__I_Shkr__OShkr * mParameters[3] / (1 - CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8)))) : (CHASTE_CONST(1120607.7015643802) * (-mParameters[1] * CHASTE_MATH::Exp(-CHASTE_CONST(11.612515042117931) * var_chaste_interface__membrane__Vm / mParameters[6]) + mParameters[0]) * var_chaste_interface__I_Shkr__OShkr * mParameters[3] * var_chaste_interface__membrane__Vm / ((1 - CHASTE_MATH::Exp(-CHASTE_CONST(11.612515042117931) * var_chaste_interface__membrane__Vm / mParameters[6])) * mParameters[6]))); // nanoampere + const double var_I_Shkr__I_Shkr_converted = CHASTE_CONST(0.001) * CHASTE_CAP() * var_I_Shkr__I_Shkr / mParameters[2]; // uA_per_cm2 std::vector dqs(5); dqs[0] = var_I_Shkr__I_Shkr_converted; diff --git a/chaste_codegen/data/tests/chaste_reference_models/BE/sachse_moreno_abildskov_2008_b.hpp b/chaste_codegen/data/tests/chaste_reference_models/BE/sachse_moreno_abildskov_2008_b.hpp index 6014b3194..398c04d18 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/BE/sachse_moreno_abildskov_2008_b.hpp +++ b/chaste_codegen/data/tests/chaste_reference_models/BE/sachse_moreno_abildskov_2008_b.hpp @@ -16,8 +16,16 @@ #include "ChasteSerialization.hpp" #include #include "AbstractStimulusFunction.hpp" +#if USING_DEVICE_COMPILER +#include "StimulusEvaluatorCuda.hpp" +#endif #include "AbstractBackwardEulerCardiacCell.hpp" +#if USING_DEVICE_COMPILER +template +class BackwardEulerKernelLauncher; // Forward declare to hide CUDA-specifics from standard C++ compiler +#endif + class Cellsachse_moreno_abildskov_2008_bFromCellMLBackwardEuler : public AbstractBackwardEulerCardiacCell<6> { friend class boost::serialization::access; @@ -37,18 +45,49 @@ class Cellsachse_moreno_abildskov_2008_bFromCellMLBackwardEuler : public Abstrac const bool is_concentration[7] = {false, false, false, false, false, false, false}; const bool is_probability[7] = {false, false, false, false, false, false, false}; public: +#if USING_DEVICE_COMPILER + template using SolverKernelLauncher = BackwardEulerKernelLauncher; + static constexpr unsigned TOTAL_SIZE = 7u; + static constexpr unsigned NONLINEAR_SIZE = 6u; +#endif boost::shared_ptr UseCellMLDefaultStimulus(); - Cellsachse_moreno_abildskov_2008_bFromCellMLBackwardEuler(boost::shared_ptr /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus); + Cellsachse_moreno_abildskov_2008_bFromCellMLBackwardEuler(boost::shared_ptr /* unused */, boost::shared_ptr pIntracellularStimulus); ~Cellsachse_moreno_abildskov_2008_bFromCellMLBackwardEuler(); void VerifyStateVariables(); - double GetIIonic(const std::vector* pStateVariables=NULL);void ComputeResidual(double var_chaste_interface__environment__time_converted, const double rCurrentGuess[6], double rResidual[6]); - void ComputeJacobian(double var_chaste_interface__environment__time_converted, const double rCurrentGuess[6], double rJacobian[6][6]);protected: + double GetIIonic(const std::vector* pStateVariables=NULL); + void ComputeResidual(double var_chaste_interface__environment__time_converted, const double rCurrentGuess[6], double rResidual[6]); + void ComputeJacobian(double var_chaste_interface__environment__time_converted, const double rCurrentGuess[6], double rJacobian[6][6]); + +#if USING_DEVICE_COMPILER + template + DEVICE + static void ComputeResidualDevice(ValueType var_chaste_interface__environment__time_converted, const ValueType rCurrentGuess[NONLINEAR_SIZE], const ValueType rY[], ValueType rResidual[NONLINEAR_SIZE], ValueType mDt, const ValueType mParameters[], bool mSetVoltageDerivativeToZero, ValueType mFixedVoltage, ValueType capacitance, const DeviceStimulusFunctor stim); + + template + DEVICE + static void ComputeJacobianDevice(ValueType var_chaste_interface__environment__time_converted, const ValueType rCurrentGuess[NONLINEAR_SIZE], const ValueType rY[], ValueType rJacobian[NONLINEAR_SIZE][NONLINEAR_SIZE], ValueType mDt, const ValueType mParameters[], bool mSetVoltageDerivativeToZero, ValueType mFixedVoltage, ValueType capacitance, const DeviceStimulusFunctor stim); + template + DEVICE + static void UpdateTransmembranePotentialDevice(ValueType var_chaste_interface__environment__time_converted, ValueType rY[], ValueType mDt, const ValueType mParameters[], bool mSetVoltageDerivativeToZero, ValueType mFixedVoltage, DeviceStimulusFunctor stim, ValueType capacitance); + + template + DEVICE + static void SolveClosedFormVarsDevice(ValueType rY[TOTAL_SIZE], ValueType mDt, const ValueType mParameters[], bool mSetVoltageDerivativeToZero, ValueType mFixedVoltage, ValueType capacitance); + + template + DEVICE + static void FillInitialGuessDevice(ValueType _guess[NONLINEAR_SIZE], const ValueType rY[TOTAL_SIZE]); + + template + DEVICE + static void ScatterSolutionDevice(const ValueType _guess[NONLINEAR_SIZE], ValueType rY[TOTAL_SIZE]); +#endif +protected: void UpdateTransmembranePotential(double var_chaste_interface__environment__time_converted); void ComputeOneStepExceptVoltage(double var_chaste_interface__environment__time_converted); - std::vector ComputeDerivedQuantities(double var_chaste_interface__environment__time_converted, const std::vector & rY); -}; + std::vector ComputeDerivedQuantities(double var_chaste_interface__environment__time_converted, const std::vector & rY);}; // Needs to be included last #include "SerializationExportWrapper.hpp" @@ -83,4 +122,9 @@ namespace boost } -#endif // CELLSACHSE_MORENO_ABILDSKOV_2008_BFROMCELLMLBACKWARDEULER_HPP_ \ No newline at end of file +#endif // CELLSACHSE_MORENO_ABILDSKOV_2008_BFROMCELLMLBACKWARDEULER_HPP_ + +#if USING_DEVICE_COMPILER + #include "sachse_moreno_abildskov_2008_bKernels.hpp" + #include "BackwardEulerKernels.hpp" +#endif \ No newline at end of file diff --git a/chaste_codegen/data/tests/chaste_reference_models/BE/sachse_moreno_abildskov_2008_bKernels.hpp b/chaste_codegen/data/tests/chaste_reference_models/BE/sachse_moreno_abildskov_2008_bKernels.hpp new file mode 100644 index 000000000..aaded3329 --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/BE/sachse_moreno_abildskov_2008_bKernels.hpp @@ -0,0 +1,164 @@ +#ifndef CELLSACHSE_MORENO_ABILDSKOV_2008_BFROMCELLMLBACKWARDEULERKERNELS_HPP_ +#define CELLSACHSE_MORENO_ABILDSKOV_2008_BFROMCELLMLBACKWARDEULERKERNELS_HPP_ + +//! @file +//! +//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) +//! +//! Model: sachse_model_2007 +//! +//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen +//! (translator: chaste_codegen, model type: BackwardEuler) +//! on (date omitted as unimportant) +//! +//! +#include "MathsCustomFunctions.hpp" +#include "ChasteDeviceMacros.hpp" + + +template +DEVICE +void Cellsachse_moreno_abildskov_2008_bFromCellMLBackwardEuler::SolveClosedFormVarsDevice(ValueType rY[Cellsachse_moreno_abildskov_2008_bFromCellMLBackwardEuler::TOTAL_SIZE], + ValueType mDt, + const ValueType mParameters[], + bool mSetVoltageDerivativeToZero, + ValueType mFixedVoltage, + ValueType capacitance) +{ + + + + +} + +template +DEVICE +void Cellsachse_moreno_abildskov_2008_bFromCellMLBackwardEuler::FillInitialGuessDevice(ValueType _guess[Cellsachse_moreno_abildskov_2008_bFromCellMLBackwardEuler::NONLINEAR_SIZE], + const ValueType rY[Cellsachse_moreno_abildskov_2008_bFromCellMLBackwardEuler::TOTAL_SIZE]) +{ + _guess[0] = rY[1];_guess[1] = rY[2];_guess[2] = rY[3];_guess[3] = rY[4];_guess[4] = rY[5];_guess[5] = rY[6]; +} + +template +DEVICE +void Cellsachse_moreno_abildskov_2008_bFromCellMLBackwardEuler::ScatterSolutionDevice(const ValueType _guess[Cellsachse_moreno_abildskov_2008_bFromCellMLBackwardEuler::NONLINEAR_SIZE], + ValueType rY[Cellsachse_moreno_abildskov_2008_bFromCellMLBackwardEuler::TOTAL_SIZE]) +{ + rY[1] = _guess[0];rY[2] = _guess[1];rY[3] = _guess[2];rY[4] = _guess[3];rY[5] = _guess[4];rY[6] = _guess[5]; +} + +template +DEVICE +void Cellsachse_moreno_abildskov_2008_bFromCellMLBackwardEuler::ComputeResidualDevice(ValueType var_chaste_interface__environment__time_converted, + const ValueType rCurrentGuess[Cellsachse_moreno_abildskov_2008_bFromCellMLBackwardEuler::NONLINEAR_SIZE], + const ValueType rY[], + ValueType rResidual[Cellsachse_moreno_abildskov_2008_bFromCellMLBackwardEuler::NONLINEAR_SIZE], + ValueType mDt, + const ValueType mParameters[], + bool mSetVoltageDerivativeToZero, + ValueType mFixedVoltage, + ValueType capacitance, + const DeviceStimulusFunctor stim) +{ + ValueType var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt + + ValueType var_chaste_interface__I_Shkr__C0Shkr = rCurrentGuess[0]; + ValueType var_chaste_interface__I_Shkr__C1Shkr = rCurrentGuess[1]; + ValueType var_chaste_interface__I_Shkr__C2Shkr = rCurrentGuess[2]; + ValueType var_chaste_interface__I_Shkr__C3Shkr = rCurrentGuess[3]; + ValueType var_chaste_interface__I_Shkr__C4Shkr = rCurrentGuess[4]; + ValueType var_chaste_interface__I_Shkr__OShkr = rCurrentGuess[5]; + + const ValueType var_I_Shkr__k_o = 18; // first_order_rate_constant + const ValueType var_I_Shkr__k_v0 = 2; // first_order_rate_constant + const ValueType var_I_Shkr__ko = 77; // first_order_rate_constant + const ValueType var_I_Shkr__OShkr_orig_deriv = var_chaste_interface__I_Shkr__C4Shkr * var_I_Shkr__ko - var_chaste_interface__I_Shkr__OShkr * var_I_Shkr__k_o; // 1 / second + const ValueType d_dt_chaste_interface_var_I_Shkr__OShkr = CHASTE_CONST(0.001) * var_I_Shkr__OShkr_orig_deriv; // 1 / millisecond + const ValueType var_I_Shkr__kv0 = 30; // first_order_rate_constant + const ValueType var_I_Shkr__z_v = -CHASTE_CONST(1.53); // dimensionless + const ValueType var_I_Shkr__zv = CHASTE_CONST(1.28); // dimensionless + const ValueType var_model_parameters__F = 96500; // coulomb_per_mole + const ValueType var_model_parameters__R = 8310; // millijoule_per_kelvin_mole + const ValueType var_I_Shkr__k_v = var_I_Shkr__k_v0 * CHASTE_MATH::Exp(var_I_Shkr__z_v * var_chaste_interface__membrane__Vm * var_model_parameters__F / (var_model_parameters__R * mParameters[6])); // first_order_rate_constant + const ValueType var_I_Shkr__kv = var_I_Shkr__kv0 * CHASTE_MATH::Exp(var_I_Shkr__zv * var_chaste_interface__membrane__Vm * var_model_parameters__F / (var_model_parameters__R * mParameters[6])); // first_order_rate_constant + const ValueType var_I_Shkr__C0Shkr_orig_deriv = var_chaste_interface__I_Shkr__C1Shkr * var_I_Shkr__k_v - 4 * var_chaste_interface__I_Shkr__C0Shkr * var_I_Shkr__kv; // 1 / second + const ValueType d_dt_chaste_interface_var_I_Shkr__C0Shkr = CHASTE_CONST(0.001) * var_I_Shkr__C0Shkr_orig_deriv; // 1 / millisecond + const ValueType var_I_Shkr__C1Shkr_orig_deriv = -(3 * var_I_Shkr__kv + var_I_Shkr__k_v) * var_chaste_interface__I_Shkr__C1Shkr + 2 * var_chaste_interface__I_Shkr__C2Shkr * var_I_Shkr__k_v + 4 * var_chaste_interface__I_Shkr__C0Shkr * var_I_Shkr__kv; // 1 / second + const ValueType d_dt_chaste_interface_var_I_Shkr__C1Shkr = CHASTE_CONST(0.001) * var_I_Shkr__C1Shkr_orig_deriv; // 1 / millisecond + const ValueType var_I_Shkr__C2Shkr_orig_deriv = -(2 * var_I_Shkr__k_v + 2 * var_I_Shkr__kv) * var_chaste_interface__I_Shkr__C2Shkr + 3 * var_chaste_interface__I_Shkr__C1Shkr * var_I_Shkr__kv + 3 * var_chaste_interface__I_Shkr__C3Shkr * var_I_Shkr__k_v; // 1 / second + const ValueType d_dt_chaste_interface_var_I_Shkr__C2Shkr = CHASTE_CONST(0.001) * var_I_Shkr__C2Shkr_orig_deriv; // 1 / millisecond + const ValueType var_I_Shkr__C3Shkr_orig_deriv = -(3 * var_I_Shkr__k_v + var_I_Shkr__kv) * var_chaste_interface__I_Shkr__C3Shkr + 2 * var_chaste_interface__I_Shkr__C2Shkr * var_I_Shkr__kv + 4 * var_chaste_interface__I_Shkr__C4Shkr * var_I_Shkr__k_v; // 1 / second + const ValueType d_dt_chaste_interface_var_I_Shkr__C3Shkr = CHASTE_CONST(0.001) * var_I_Shkr__C3Shkr_orig_deriv; // 1 / millisecond + const ValueType var_I_Shkr__C4Shkr_orig_deriv = var_chaste_interface__I_Shkr__C3Shkr * var_I_Shkr__kv + var_chaste_interface__I_Shkr__OShkr * var_I_Shkr__k_o - (4 * var_I_Shkr__k_v + var_I_Shkr__ko) * var_chaste_interface__I_Shkr__C4Shkr; // 1 / second + const ValueType d_dt_chaste_interface_var_I_Shkr__C4Shkr = CHASTE_CONST(0.001) * var_I_Shkr__C4Shkr_orig_deriv; // 1 / millisecond + + rResidual[0] = rCurrentGuess[0] - rY[1] - mDt*d_dt_chaste_interface_var_I_Shkr__C0Shkr;rResidual[1] = rCurrentGuess[1] - rY[2] - mDt*d_dt_chaste_interface_var_I_Shkr__C1Shkr;rResidual[2] = rCurrentGuess[2] - rY[3] - mDt*d_dt_chaste_interface_var_I_Shkr__C2Shkr;rResidual[3] = rCurrentGuess[3] - rY[4] - mDt*d_dt_chaste_interface_var_I_Shkr__C3Shkr;rResidual[4] = rCurrentGuess[4] - rY[5] - mDt*d_dt_chaste_interface_var_I_Shkr__C4Shkr;rResidual[5] = rCurrentGuess[5] - rY[6] - mDt*d_dt_chaste_interface_var_I_Shkr__OShkr; +} + +template +DEVICE +void Cellsachse_moreno_abildskov_2008_bFromCellMLBackwardEuler::ComputeJacobianDevice(ValueType var_chaste_interface__environment__time_converted, + const ValueType rCurrentGuess[Cellsachse_moreno_abildskov_2008_bFromCellMLBackwardEuler::NONLINEAR_SIZE], + const ValueType rY[], + ValueType rJacobian[Cellsachse_moreno_abildskov_2008_bFromCellMLBackwardEuler::NONLINEAR_SIZE][Cellsachse_moreno_abildskov_2008_bFromCellMLBackwardEuler::NONLINEAR_SIZE], + ValueType mDt, + const ValueType mParameters[], + bool mSetVoltageDerivativeToZero, + ValueType mFixedVoltage, + ValueType capacitance, + const DeviceStimulusFunctor stim) +{ + ValueType var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt + + + const ValueType var_x0 = var_chaste_interface__membrane__Vm / mParameters[6]; + const ValueType var_x1 = CHASTE_MATH::Exp(CHASTE_CONST(14.864019253910952) * var_x0); + const ValueType var_x2 = CHASTE_CONST(0.12) * var_x1; + const ValueType var_x3 = CHASTE_MATH::Exp(-CHASTE_CONST(17.767148014440433) * var_x0); + const ValueType var_x4 = CHASTE_CONST(0.002) * var_x3; + const ValueType var_x5 = CHASTE_CONST(0.089999999999999997) * var_x1; + const ValueType var_x6 = CHASTE_CONST(0.0040000000000000001) * var_x3; + const ValueType var_x7 = CHASTE_CONST(0.059999999999999998) * var_x1; + const ValueType var_x8 = CHASTE_CONST(0.0060000000000000001) * var_x3; + const ValueType var_x9 = CHASTE_CONST(0.029999999999999999) * var_x1; + const ValueType var_x10 = CHASTE_CONST(0.0080000000000000002) * var_x3; + + rJacobian[0][0] = 1.0 - (mDt * (-var_x2));rJacobian[0][1] = -(mDt * (var_x4));rJacobian[0][2] = 0.0;rJacobian[0][3] = 0.0;rJacobian[0][4] = 0.0;rJacobian[0][5] = 0.0;rJacobian[1][0] = -(mDt * (var_x2));rJacobian[1][1] = 1.0 - (mDt * (-var_x4 - var_x5));rJacobian[1][2] = -(mDt * (var_x6));rJacobian[1][3] = 0.0;rJacobian[1][4] = 0.0;rJacobian[1][5] = 0.0;rJacobian[2][0] = 0.0;rJacobian[2][1] = -(mDt * (var_x5));rJacobian[2][2] = 1.0 - (mDt * (-var_x6 - var_x7));rJacobian[2][3] = -(mDt * (var_x8));rJacobian[2][4] = 0.0;rJacobian[2][5] = 0.0;rJacobian[3][0] = 0.0;rJacobian[3][1] = 0.0;rJacobian[3][2] = -(mDt * (var_x7));rJacobian[3][3] = 1.0 - (mDt * (-var_x8 - var_x9));rJacobian[3][4] = -(mDt * (var_x10));rJacobian[3][5] = 0.0;rJacobian[4][0] = 0.0;rJacobian[4][1] = 0.0;rJacobian[4][2] = 0.0;rJacobian[4][3] = -(mDt * (var_x9));rJacobian[4][4] = 1.0 - (mDt * (-CHASTE_CONST(0.076999999999999999) - var_x10));rJacobian[4][5] = -(mDt * (CHASTE_CONST(0.017999999999999999)));rJacobian[5][0] = 0.0;rJacobian[5][1] = 0.0;rJacobian[5][2] = 0.0;rJacobian[5][3] = 0.0;rJacobian[5][4] = -(mDt * (CHASTE_CONST(0.076999999999999999)));rJacobian[5][5] = 1.0 - (mDt * (-CHASTE_CONST(0.017999999999999999))); +} + +template +DEVICE +void Cellsachse_moreno_abildskov_2008_bFromCellMLBackwardEuler::UpdateTransmembranePotentialDevice(ValueType var_chaste_interface__environment__time_converted, + ValueType rY[], + ValueType mDt, + const ValueType mParameters[], + bool mSetVoltageDerivativeToZero, + ValueType mFixedVoltage, + DeviceStimulusFunctor stim, + ValueType capacitance) +{ + ValueType var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); + // Units: millivolt; Initial value: -58.0 + ValueType var_chaste_interface__I_Shkr__OShkr = rY[6]; + // Units: dimensionless; Initial value: 0.0 + + const ValueType var_I_Kir__aKir = CHASTE_CONST(0.93999999999999995); // dimensionless + const ValueType var_I_Kir__bKir = CHASTE_CONST(1.26); // dimensionless + const ValueType var_I_b__Eb = 0; // millivolt + const ValueType var_I_stim__I_stim_converted = -CHASTE_STIM(var_chaste_interface__environment__time_converted); // uA_per_cm2 + const ValueType var_I_stim__I_stim = 1000 * var_I_stim__I_stim_converted * mParameters[2] / CHASTE_CAP(); // nanoampere + const ValueType var_I_b__I_b = (-var_I_b__Eb + var_chaste_interface__membrane__Vm) * mParameters[5]; // nanoampere + const ValueType var_model_parameters__F = 96500; // coulomb_per_mole + const ValueType var_model_parameters__R = 8310; // millijoule_per_kelvin_mole + const ValueType var_I_Kir__EK = var_model_parameters__R * mParameters[6] * CHASTE_MATH::Log(mParameters[1] / mParameters[0]) / var_model_parameters__F; // millivolt + const ValueType var_I_Kir__OKir = 1 / (var_I_Kir__aKir + CHASTE_MATH::Exp((-var_I_Kir__EK + var_chaste_interface__membrane__Vm) * var_I_Kir__bKir * var_model_parameters__F / (var_model_parameters__R * mParameters[6]))); // dimensionless + const ValueType var_I_Kir__I_Kir = CHASTE_CONST(0.031622776601683791) * CHASTE_MATH::Sqrt(mParameters[1]) * (-var_I_Kir__EK + var_chaste_interface__membrane__Vm) * mParameters[4] * var_I_Kir__OKir; // nanoampere + const ValueType var_I_Shkr__I_Shkr = ((((var_chaste_interface__membrane__Vm >= -CHASTE_CONST(8.6113989637305703e-9) * mParameters[6]) && (var_chaste_interface__membrane__Vm <= CHASTE_CONST(8.6113989637305703e-9) * mParameters[6])) || ((var_chaste_interface__membrane__Vm >= CHASTE_CONST(8.6113989637305703e-9) * mParameters[6]) && (var_chaste_interface__membrane__Vm <= -CHASTE_CONST(8.6113989637305703e-9) * mParameters[6]))) ? (CHASTE_CONST(58062575.210589655) * (CHASTE_CONST(8.6113989637305703e-9) * mParameters[6] + var_chaste_interface__membrane__Vm) * (CHASTE_CONST(0.0096499999999999989) * (-mParameters[1] * CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8)) + mParameters[0]) * var_chaste_interface__I_Shkr__OShkr * mParameters[3] / (1 - CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) + CHASTE_CONST(0.0096499999999999989) * (-mParameters[1] * CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)) + mParameters[0]) * var_chaste_interface__I_Shkr__OShkr * mParameters[3] / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)))) / mParameters[6] - CHASTE_CONST(0.0096499999999999989) * (-mParameters[1] * CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8)) + mParameters[0]) * var_chaste_interface__I_Shkr__OShkr * mParameters[3] / (1 - CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8)))) : (CHASTE_CONST(1120607.7015643802) * (-mParameters[1] * CHASTE_MATH::Exp(-CHASTE_CONST(11.612515042117931) * var_chaste_interface__membrane__Vm / mParameters[6]) + mParameters[0]) * var_chaste_interface__I_Shkr__OShkr * mParameters[3] * var_chaste_interface__membrane__Vm / ((1 - CHASTE_MATH::Exp(-CHASTE_CONST(11.612515042117931) * var_chaste_interface__membrane__Vm / mParameters[6])) * mParameters[6]))); // nanoampere + const ValueType var_membrane__Vm_orig_deriv = (-var_I_Kir__I_Kir - var_I_Shkr__I_Shkr - var_I_b__I_b + var_I_stim__I_stim) / mParameters[2]; // millivolt / second + const ValueType d_dt_chaste_interface_var_membrane__Vm = CHASTE_CONST(0.001) * var_membrane__Vm_orig_deriv; // millivolt / millisecond + + rY[0] += mDt*d_dt_chaste_interface_var_membrane__Vm; +} + +#include "ChasteCpuMacros.hpp" +#endif // CELLSACHSE_MORENO_ABILDSKOV_2008_BFROMCELLMLBACKWARDEULERKERNELS_HPP_ \ No newline at end of file diff --git a/chaste_codegen/data/tests/chaste_reference_models/BE/test_piecewises_be.cpp b/chaste_codegen/data/tests/chaste_reference_models/BE/test_piecewises_be.cpp index b1ca1bcb5..7a0a934cd 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/BE/test_piecewises_be.cpp +++ b/chaste_codegen/data/tests/chaste_reference_models/BE/test_piecewises_be.cpp @@ -22,6 +22,8 @@ #include "HeartConfig.hpp" #include "IsNan.hpp" #include "MathsCustomFunctions.hpp" +#include "ChasteMathDeviceNamespaces.hpp" +#include "ChasteCpuMacros.hpp" @@ -96,7 +98,7 @@ void Celltest_piecewises_beFromCellMLBackwardEuler::ComputeResidual(double var_chaste_interface__environment__time_converted, const double rCurrentGuess[2], double rResidual[2]) { std::vector& rY = rGetStateVariables(); - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -69.1865 //output_nonlinear_state_assignments @@ -104,12 +106,12 @@ double var_chaste_interface__fast_sodium_current_m_gate__m = rCurrentGuess[1]; //output_equations - const double var_fast_sodium_current_m_gate__alpha_m = ((fabs(pow(var_chaste_interface__fast_sodium_current_m_gate__m, 2) * var_chaste_interface__membrane__V) < 0) ? (2000) : (200 * var_chaste_interface__membrane__V / (1 - exp(-0.10000000000000001 * var_chaste_interface__membrane__V)))); // per_second + const double var_fast_sodium_current_m_gate__alpha_m = ((CHASTE_MATH::Abs(CHASTE_MATH::Pow(var_chaste_interface__fast_sodium_current_m_gate__m, 2) * var_chaste_interface__membrane__V) < 0) ? (2000) : (200 * var_chaste_interface__membrane__V / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V)))); // per_second const double var_fast_sodium_current_m_gate__m_orig_deriv = var_fast_sodium_current_m_gate__alpha_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_fast_sodium_current_m_gate2__alpha_m = ((fabs(var_chaste_interface__membrane__V) < 0) ? (2000 * pow(var_chaste_interface__fast_sodium_current_m_gate2__m, 2)) : (200 * var_chaste_interface__membrane__V / (1 - exp(-0.10000000000000001 * var_chaste_interface__membrane__V)))); // per_second + const double d_dt_chaste_interface_var_fast_sodium_current_m_gate__m = CHASTE_CONST(0.001) * var_fast_sodium_current_m_gate__m_orig_deriv; // 1 / millisecond + const double var_fast_sodium_current_m_gate2__alpha_m = ((CHASTE_MATH::Abs(var_chaste_interface__membrane__V) < 0) ? (2000 * CHASTE_MATH::Pow(var_chaste_interface__fast_sodium_current_m_gate2__m, 2)) : (200 * var_chaste_interface__membrane__V / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V)))); // per_second const double var_fast_sodium_current_m_gate2__m_orig_deriv = var_fast_sodium_current_m_gate2__alpha_m; // 1 / second - const double d_dt_chaste_interface_var_fast_sodium_current_m_gate2__m = 0.001 * var_fast_sodium_current_m_gate2__m_orig_deriv; // 1 / millisecond + const double d_dt_chaste_interface_var_fast_sodium_current_m_gate2__m = CHASTE_CONST(0.001) * var_fast_sodium_current_m_gate2__m_orig_deriv; // 1 / millisecond rResidual[1] = rCurrentGuess[1] - rY[2] - mDt*d_dt_chaste_interface_var_fast_sodium_current_m_gate__m; rResidual[0] = rCurrentGuess[0] - rY[3] - mDt*d_dt_chaste_interface_var_fast_sodium_current_m_gate2__m; @@ -118,14 +120,14 @@ void Celltest_piecewises_beFromCellMLBackwardEuler::ComputeJacobian(double var_chaste_interface__environment__time_converted, const double rCurrentGuess[2], double rJacobian[2][2]) { std::vector& rY = rGetStateVariables(); - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -69.1865 double var_chaste_interface__fast_sodium_current_m_gate2__m = rCurrentGuess[0]; - rJacobian[0][0] = 1.0 - (mDt * (0.001 * ((fabs(var_chaste_interface__membrane__V) < 0) ? (4000 * var_chaste_interface__fast_sodium_current_m_gate2__m) : (0)))); + rJacobian[0][0] = 1.0 - (mDt * (CHASTE_CONST(0.001) * ((CHASTE_MATH::Abs(var_chaste_interface__membrane__V) < 0) ? (4000 * var_chaste_interface__fast_sodium_current_m_gate2__m) : (0)))); rJacobian[0][1] = 0.0; rJacobian[1][0] = 0.0; rJacobian[1][1] = 1.0; @@ -135,11 +137,11 @@ { // Time units: millisecond std::vector& rY = rGetStateVariables(); - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -69.1865 const double var_membrane__V_orig_deriv = var_chaste_interface__membrane__V; // millivolt / second - const double d_dt_chaste_interface_var_membrane__V = 0.001 * var_membrane__V_orig_deriv; // millivolt / millisecond + const double d_dt_chaste_interface_var_membrane__V = CHASTE_CONST(0.001) * var_membrane__V_orig_deriv; // millivolt / millisecond rY[0] += mDt*d_dt_chaste_interface_var_membrane__V; } @@ -148,14 +150,14 @@ { // Time units: millisecond std::vector& rY = rGetStateVariables(); - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -69.1865 double var_chaste_interface__fast_sodium_current_h_gate__h = rY[1]; // Units: dimensionless; Initial value: 0.1969 - rY[1] = (var_chaste_interface__fast_sodium_current_h_gate__h + ((((var_chaste_interface__membrane__V > 9999999) ? (0.001 * var_chaste_interface__membrane__V) : (0))) * mDt)) / (1.0 - ((0.001) * mDt)); + rY[1] = (var_chaste_interface__fast_sodium_current_h_gate__h + ((((var_chaste_interface__membrane__V > 9999999) ? (CHASTE_CONST(0.001) * var_chaste_interface__membrane__V) : (0))) * mDt)) / (1.0 - ((CHASTE_CONST(0.001)) * mDt)); double _guess[2] = {rY[3],rY[2]}; CardiacNewtonSolver<2,Celltest_piecewises_beFromCellMLBackwardEuler>* _p_solver = CardiacNewtonSolver<2,Celltest_piecewises_beFromCellMLBackwardEuler>::Instance(); diff --git a/chaste_codegen/data/tests/chaste_reference_models/BE/test_piecewises_be.hpp b/chaste_codegen/data/tests/chaste_reference_models/BE/test_piecewises_be.hpp index 4a89bba79..cb1fb9e87 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/BE/test_piecewises_be.hpp +++ b/chaste_codegen/data/tests/chaste_reference_models/BE/test_piecewises_be.hpp @@ -16,8 +16,16 @@ #include "ChasteSerialization.hpp" #include #include "AbstractStimulusFunction.hpp" +#if USING_DEVICE_COMPILER +#include "StimulusEvaluatorCuda.hpp" +#endif #include "AbstractBackwardEulerCardiacCell.hpp" +#if USING_DEVICE_COMPILER +template +class BackwardEulerKernelLauncher; // Forward declare to hide CUDA-specifics from standard C++ compiler +#endif + class Celltest_piecewises_beFromCellMLBackwardEuler : public AbstractBackwardEulerCardiacCell<2> { friend class boost::serialization::access; @@ -37,17 +45,48 @@ class Celltest_piecewises_beFromCellMLBackwardEuler : public AbstractBackwardEul const bool is_concentration[4] = {false, false, false, false}; const bool is_probability[4] = {false, false, false, false}; public: +#if USING_DEVICE_COMPILER + template using SolverKernelLauncher = BackwardEulerKernelLauncher; + static constexpr unsigned TOTAL_SIZE = 4u; + static constexpr unsigned NONLINEAR_SIZE = 2u; +#endif - Celltest_piecewises_beFromCellMLBackwardEuler(boost::shared_ptr /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus); + Celltest_piecewises_beFromCellMLBackwardEuler(boost::shared_ptr /* unused */, boost::shared_ptr pIntracellularStimulus); ~Celltest_piecewises_beFromCellMLBackwardEuler(); void VerifyStateVariables(); - double GetIIonic(const std::vector* pStateVariables=NULL);void ComputeResidual(double var_chaste_interface__environment__time_converted, const double rCurrentGuess[2], double rResidual[2]); - void ComputeJacobian(double var_chaste_interface__environment__time_converted, const double rCurrentGuess[2], double rJacobian[2][2]);protected: + double GetIIonic(const std::vector* pStateVariables=NULL); + void ComputeResidual(double var_chaste_interface__environment__time_converted, const double rCurrentGuess[2], double rResidual[2]); + void ComputeJacobian(double var_chaste_interface__environment__time_converted, const double rCurrentGuess[2], double rJacobian[2][2]); + +#if USING_DEVICE_COMPILER + template + DEVICE + static void ComputeResidualDevice(ValueType var_chaste_interface__environment__time_converted, const ValueType rCurrentGuess[NONLINEAR_SIZE], const ValueType rY[], ValueType rResidual[NONLINEAR_SIZE], ValueType mDt, const ValueType mParameters[], bool mSetVoltageDerivativeToZero, ValueType mFixedVoltage, ValueType capacitance, const DeviceStimulusFunctor stim); + + template + DEVICE + static void ComputeJacobianDevice(ValueType var_chaste_interface__environment__time_converted, const ValueType rCurrentGuess[NONLINEAR_SIZE], const ValueType rY[], ValueType rJacobian[NONLINEAR_SIZE][NONLINEAR_SIZE], ValueType mDt, const ValueType mParameters[], bool mSetVoltageDerivativeToZero, ValueType mFixedVoltage, ValueType capacitance, const DeviceStimulusFunctor stim); + template + DEVICE + static void UpdateTransmembranePotentialDevice(ValueType var_chaste_interface__environment__time_converted, ValueType rY[], ValueType mDt, const ValueType mParameters[], bool mSetVoltageDerivativeToZero, ValueType mFixedVoltage, DeviceStimulusFunctor stim, ValueType capacitance); + + template + DEVICE + static void SolveClosedFormVarsDevice(ValueType rY[TOTAL_SIZE], ValueType mDt, const ValueType mParameters[], bool mSetVoltageDerivativeToZero, ValueType mFixedVoltage, ValueType capacitance); + + template + DEVICE + static void FillInitialGuessDevice(ValueType _guess[NONLINEAR_SIZE], const ValueType rY[TOTAL_SIZE]); + + template + DEVICE + static void ScatterSolutionDevice(const ValueType _guess[NONLINEAR_SIZE], ValueType rY[TOTAL_SIZE]); +#endif +protected: void UpdateTransmembranePotential(double var_chaste_interface__environment__time_converted); void ComputeOneStepExceptVoltage(double var_chaste_interface__environment__time_converted); - std::vector ComputeDerivedQuantities(double var_chaste_interface__environment__time_converted, const std::vector & rY); -}; + std::vector ComputeDerivedQuantities(double var_chaste_interface__environment__time_converted, const std::vector & rY);}; // Needs to be included last #include "SerializationExportWrapper.hpp" @@ -82,4 +121,9 @@ namespace boost } -#endif // CELLTEST_PIECEWISES_BEFROMCELLMLBACKWARDEULER_HPP_ \ No newline at end of file +#endif // CELLTEST_PIECEWISES_BEFROMCELLMLBACKWARDEULER_HPP_ + +#if USING_DEVICE_COMPILER + #include "test_piecewises_beKernels.hpp" + #include "BackwardEulerKernels.hpp" +#endif \ No newline at end of file diff --git a/chaste_codegen/data/tests/chaste_reference_models/BEopt/bondarenko_szigeti_bett_kim_rasmusson_2004_apical.cpp b/chaste_codegen/data/tests/chaste_reference_models/BEopt/bondarenko_szigeti_bett_kim_rasmusson_2004_apical.cpp index 2b07a92a8..973434d17 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/BEopt/bondarenko_szigeti_bett_kim_rasmusson_2004_apical.cpp +++ b/chaste_codegen/data/tests/chaste_reference_models/BEopt/bondarenko_szigeti_bett_kim_rasmusson_2004_apical.cpp @@ -22,6 +22,8 @@ #include "HeartConfig.hpp" #include "IsNan.hpp" #include "MathsCustomFunctions.hpp" +#include "ChasteMathDeviceNamespaces.hpp" +#include "ChasteCpuMacros.hpp" @@ -144,7 +146,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 1 + exp(5.9871794871794881 - 0.12820512820512822 * var_chaste_interface__membrane__V); + return 1 + CHASTE_MATH::Exp(CHASTE_CONST(5.9871794871794881) - CHASTE_CONST(0.12820512820512822) * 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); @@ -155,7 +157,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 exp(0.013632298072467722 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(CHASTE_CONST(0.013632298072467722) * 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); @@ -166,7 +168,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 exp(-0.025317124991725771 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(-CHASTE_CONST(0.025317124991725771) * 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); @@ -177,7 +179,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 1 + 0.10000000000000001 * exp(-0.025317124991725771 * var_chaste_interface__membrane__V); + return 1 + CHASTE_CONST(0.10000000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(0.025317124991725771) * 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); @@ -188,7 +190,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 exp(-0.038949423064193495 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(-CHASTE_CONST(0.038949423064193495) * 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); @@ -199,7 +201,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.1245 * exp(-0.0038949423064193493 * var_chaste_interface__membrane__V); + return CHASTE_CONST(0.1245) * CHASTE_MATH::Exp(-CHASTE_CONST(0.0038949423064193493) * 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); @@ -210,7 +212,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 13 - 13 * exp(-2.1025 * pow((1 + 0.068965517241379309 * var_chaste_interface__membrane__V), 2)); + return 13 - 13 * CHASTE_MATH::Exp(-CHASTE_CONST(2.1025) * CHASTE_MATH::Pow((1 + CHASTE_CONST(0.068965517241379309) * var_chaste_interface__membrane__V), 2)); }; const double var_chaste_interface__membrane__V = mTableMins[0] + i*mTableSteps[0]; double val = f(var_chaste_interface__membrane__V); @@ -221,7 +223,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.40000000000000002 * (1 + 0.69999999999999996 * exp(-160 * pow((1 + 0.025000000000000001 * var_chaste_interface__membrane__V), 2)) - 0.75 * exp(-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)); + return CHASTE_CONST(0.40000000000000002) * (1 + CHASTE_CONST(0.69999999999999996) * CHASTE_MATH::Exp(-160 * CHASTE_MATH::Pow((1 + CHASTE_CONST(0.025000000000000001) * var_chaste_interface__membrane__V), 2)) - CHASTE_CONST(0.75) * CHASTE_MATH::Exp(-CHASTE_MATH::Pow((1 + CHASTE_CONST(0.050000000000000003) * var_chaste_interface__membrane__V), 2))) * CHASTE_MATH::Exp(CHASTE_CONST(1.2) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V) / (1 + CHASTE_CONST(0.12) * CHASTE_MATH::Exp(CHASTE_CONST(1.2) + CHASTE_CONST(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); @@ -232,7 +234,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.050000000000000003 * exp(-0.92307692307692313 - 0.076923076923076927 * var_chaste_interface__membrane__V); + return CHASTE_CONST(0.050000000000000003) * CHASTE_MATH::Exp(-CHASTE_CONST(0.92307692307692313) - CHASTE_CONST(0.076923076923076927) * 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); @@ -243,7 +245,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 exp(-0.038580246913580245 * pow((-1 + 0.20000000000000001 * var_chaste_interface__membrane__V), 2)); + return CHASTE_MATH::Exp(-CHASTE_CONST(0.038580246913580245) * CHASTE_MATH::Pow((-1 + CHASTE_CONST(0.20000000000000001) * var_chaste_interface__membrane__V), 2)); }; const double var_chaste_interface__membrane__V = mTableMins[0] + i*mTableSteps[0]; double val = f(var_chaste_interface__membrane__V); @@ -254,7 +256,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 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)); + return CHASTE_CONST(3.802) / (CHASTE_CONST(0.20000000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(0.016666666666666666) - CHASTE_CONST(0.0066666666666666671) * var_chaste_interface__membrane__V) + CHASTE_CONST(0.1027) * CHASTE_MATH::Exp(-CHASTE_CONST(0.14705882352941177) - CHASTE_CONST(0.058823529411764705) * 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); @@ -265,7 +267,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 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)); + return CHASTE_CONST(3.802) / (CHASTE_CONST(0.1027) * CHASTE_MATH::Exp(-CHASTE_CONST(0.16666666666666666) - CHASTE_CONST(0.066666666666666666) * var_chaste_interface__membrane__V) + CHASTE_CONST(0.23000000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(0.016666666666666666) - CHASTE_CONST(0.0066666666666666671) * 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); @@ -276,7 +278,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 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)); + return CHASTE_CONST(3.802) / (CHASTE_CONST(0.25) * CHASTE_MATH::Exp(-CHASTE_CONST(0.016666666666666666) - CHASTE_CONST(0.0066666666666666671) * var_chaste_interface__membrane__V) + CHASTE_CONST(0.1027) * CHASTE_MATH::Exp(-CHASTE_CONST(0.20833333333333334) - CHASTE_CONST(0.083333333333333329) * 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); @@ -287,7 +289,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 6.9999999999999997e-7 * exp(-0.90909090909090906 - 0.12987012987012986 * var_chaste_interface__membrane__V); + return CHASTE_CONST(6.9999999999999997e-7) * CHASTE_MATH::Exp(-CHASTE_CONST(0.90909090909090906) - CHASTE_CONST(0.12987012987012986) * 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); @@ -298,7 +300,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.19170000000000001 * exp(-0.12315270935960591 - 0.04926108374384236 * var_chaste_interface__membrane__V); + return CHASTE_CONST(0.19170000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(0.12315270935960591) - CHASTE_CONST(0.04926108374384236) * 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); @@ -309,7 +311,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.20000000000000001 * exp(0.12315270935960591 - 0.04926108374384236 * var_chaste_interface__membrane__V); + return CHASTE_CONST(0.20000000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.12315270935960591) - CHASTE_CONST(0.04926108374384236) * 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); @@ -320,7 +322,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.22 * exp(0.36945812807881773 - 0.04926108374384236 * var_chaste_interface__membrane__V); + return CHASTE_CONST(0.22) * CHASTE_MATH::Exp(CHASTE_CONST(0.36945812807881773) - CHASTE_CONST(0.04926108374384236) * 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); @@ -331,7 +333,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 exp(1.0731000000000002 + 0.035770000000000003 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(CHASTE_CONST(1.0731000000000002) + CHASTE_CONST(0.035770000000000003) * 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); @@ -342,7 +344,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 exp(-1.8711 - 0.062370000000000002 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(-CHASTE_CONST(1.8711) - CHASTE_CONST(0.062370000000000002) * 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); @@ -353,7 +355,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 1 + 0.0067083000000000004 * exp(-4.7857142857142856 - 0.14285714285714285 * var_chaste_interface__membrane__V); + return 1 + CHASTE_CONST(0.0067083000000000004) * CHASTE_MATH::Exp(-CHASTE_CONST(4.7857142857142856) - CHASTE_CONST(0.14285714285714285) * 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); @@ -364,7 +366,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 exp(-1.9285714285714286 - 0.14285714285714285 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(-CHASTE_CONST(1.9285714285714286) - CHASTE_CONST(0.14285714285714285) * 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); @@ -375,7 +377,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 1 + 0.051334999999999999 * exp(4.7857142857142856 + 0.14285714285714285 * var_chaste_interface__membrane__V); + return 1 + CHASTE_CONST(0.051334999999999999) * CHASTE_MATH::Exp(CHASTE_CONST(4.7857142857142856) + CHASTE_CONST(0.14285714285714285) * 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); @@ -386,7 +388,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 exp(4.7857142857142856 + 0.14285714285714285 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(CHASTE_CONST(4.7857142857142856) + CHASTE_CONST(0.14285714285714285) * 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); @@ -397,7 +399,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.013733 * exp(0.038198000000000003 * var_chaste_interface__membrane__V); + return CHASTE_CONST(0.013733) * CHASTE_MATH::Exp(CHASTE_CONST(0.038198000000000003) * 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); @@ -408,7 +410,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.090820999999999999 * exp(0.11695499999999999 + 0.023390999999999999 * var_chaste_interface__membrane__V); + return CHASTE_CONST(0.090820999999999999) * CHASTE_MATH::Exp(CHASTE_CONST(0.11695499999999999) + CHASTE_CONST(0.023390999999999999) * 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); @@ -419,7 +421,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 6.8899999999999994e-5 * exp(-0.041779999999999998 * var_chaste_interface__membrane__V); + return CHASTE_CONST(6.8899999999999994e-5) * CHASTE_MATH::Exp(-CHASTE_CONST(0.041779999999999998) * 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); @@ -430,7 +432,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.0064970000000000002 * exp(-0.16339999999999999 - 0.032680000000000001 * var_chaste_interface__membrane__V); + return CHASTE_CONST(0.0064970000000000002) * CHASTE_MATH::Exp(-CHASTE_CONST(0.16339999999999999) - CHASTE_CONST(0.032680000000000001) * 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); @@ -441,7 +443,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 exp(0.01176 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(CHASTE_CONST(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); @@ -452,7 +454,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 exp(-0.063100000000000003 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(-CHASTE_CONST(0.063100000000000003) * 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); @@ -463,7 +465,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 (((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)))); + return (((var_chaste_interface__membrane__V >= -CHASTE_CONST(26.500000781250002)) && (var_chaste_interface__membrane__V <= -CHASTE_CONST(26.499999218749998))) ? (-CHASTE_CONST(3.7604140624912359e-12) / (1 - CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999766942e-8))) + CHASTE_CONST(640000.00000149151) * (CHASTE_CONST(26.500000781250002) + var_chaste_interface__membrane__V) * (CHASTE_CONST(3.7604140624912359e-12) / (1 - CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999766942e-8))) + CHASTE_CONST(3.7604140624912359e-12) / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999766942e-8))))) : (CHASTE_CONST(4.8133299999999997e-6) * (CHASTE_CONST(26.5) + var_chaste_interface__membrane__V) / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(3.3919999999999999) - CHASTE_CONST(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); @@ -485,7 +487,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 exp(-1.0069999999999999 - 0.037999999999999999 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(-CHASTE_CONST(1.0069999999999999) - CHASTE_CONST(0.037999999999999999) * 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); @@ -496,7 +498,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 1 / (1 + exp(-2.9220779220779218 - 0.12987012987012986 * var_chaste_interface__membrane__V)); + return 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.9220779220779218) - CHASTE_CONST(0.12987012987012986) * 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); @@ -507,7 +509,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 13.17 + 39.299999999999997 * exp(-0.086199999999999999 * var_chaste_interface__membrane__V); + return CHASTE_CONST(13.17) + CHASTE_CONST(39.299999999999997) * CHASTE_MATH::Exp(-CHASTE_CONST(0.086199999999999999) * 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); @@ -518,7 +520,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 1 / (1 + exp(7.9298245614035094 + 0.17543859649122806 * var_chaste_interface__membrane__V)); + return 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(7.9298245614035094) + CHASTE_CONST(0.17543859649122806) * 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); @@ -529,7 +531,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 2.0579999999999998 + 0.49299999999999999 * exp(-0.062899999999999998 * var_chaste_interface__membrane__V); + return CHASTE_CONST(2.0579999999999998) + CHASTE_CONST(0.49299999999999999) * CHASTE_MATH::Exp(-CHASTE_CONST(0.062899999999999998) * 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); @@ -540,7 +542,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 270 + 1050 / (1 + exp(7.9298245614035094 + 0.17543859649122806 * var_chaste_interface__membrane__V)); + return 270 + 1050 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(7.9298245614035094) + CHASTE_CONST(0.17543859649122806) * 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); @@ -551,7 +553,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 1200 - 170 / (1 + exp(7.9298245614035094 + 0.17543859649122806 * var_chaste_interface__membrane__V)); + return 1200 - 170 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(7.9298245614035094) + CHASTE_CONST(0.17543859649122806) * 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); @@ -562,7 +564,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 exp(-0.92307692307692313 - 0.076923076923076927 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(-CHASTE_CONST(0.92307692307692313) - CHASTE_CONST(0.076923076923076927) * 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); @@ -573,7 +575,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 exp(1.2 + 0.10000000000000001 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(CHASTE_CONST(1.2) + CHASTE_CONST(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); @@ -584,7 +586,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 1 + 0.69999999999999996 * exp(-160 * pow((1 + 0.025000000000000001 * var_chaste_interface__membrane__V), 2)) - 0.75 * exp(-pow((1 + 0.050000000000000003 * var_chaste_interface__membrane__V), 2)); + return 1 + CHASTE_CONST(0.69999999999999996) * CHASTE_MATH::Exp(-160 * CHASTE_MATH::Pow((1 + CHASTE_CONST(0.025000000000000001) * var_chaste_interface__membrane__V), 2)) - CHASTE_CONST(0.75) * CHASTE_MATH::Exp(-CHASTE_MATH::Pow((1 + CHASTE_CONST(0.050000000000000003) * var_chaste_interface__membrane__V), 2)); }; const double var_chaste_interface__membrane__V = mTableMins[0] + i*mTableSteps[0]; double val = f(var_chaste_interface__membrane__V); @@ -595,7 +597,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 exp(-2.1025 * pow((1 + 0.068965517241379309 * var_chaste_interface__membrane__V), 2)); + return CHASTE_MATH::Exp(-CHASTE_CONST(2.1025) * CHASTE_MATH::Pow((1 + CHASTE_CONST(0.068965517241379309) * var_chaste_interface__membrane__V), 2)); }; const double var_chaste_interface__membrane__V = mTableMins[0] + i*mTableSteps[0]; double val = f(var_chaste_interface__membrane__V); @@ -606,7 +608,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 exp(-0.016666666666666666 - 0.0066666666666666671 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(-CHASTE_CONST(0.016666666666666666) - CHASTE_CONST(0.0066666666666666671) * 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); @@ -617,7 +619,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.1027 * exp(-0.20833333333333334 - 0.083333333333333329 * var_chaste_interface__membrane__V); + return CHASTE_CONST(0.1027) * CHASTE_MATH::Exp(-CHASTE_CONST(0.20833333333333334) - CHASTE_CONST(0.083333333333333329) * 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); @@ -628,7 +630,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.1027 * exp(-0.16666666666666666 - 0.066666666666666666 * var_chaste_interface__membrane__V); + return CHASTE_CONST(0.1027) * CHASTE_MATH::Exp(-CHASTE_CONST(0.16666666666666666) - CHASTE_CONST(0.066666666666666666) * 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); @@ -639,7 +641,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 exp(-0.90909090909090906 - 0.12987012987012986 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(-CHASTE_CONST(0.90909090909090906) - CHASTE_CONST(0.12987012987012986) * 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); @@ -650,7 +652,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.1027 * exp(-0.14705882352941177 - 0.058823529411764705 * var_chaste_interface__membrane__V); + return CHASTE_CONST(0.1027) * CHASTE_MATH::Exp(-CHASTE_CONST(0.14705882352941177) - CHASTE_CONST(0.058823529411764705) * 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); @@ -661,7 +663,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 CHASTE_CONST(0.022348) * CHASTE_MATH::Exp(CHASTE_CONST(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); @@ -694,9 +696,9 @@ std::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_amplitude_converted = -80 * CHASTE_CAP(); // uA_per_cm2 + const double var_chaste_interface__membrane__stim_duration = CHASTE_CONST(0.5); // millisecond + const double var_chaste_interface__membrane__stim_period = CHASTE_CONST(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), @@ -725,23 +727,23 @@ std::shared_ptrmHasDefaultStimulusFromCellML = 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[0] = CHASTE_CONST(1.7399999999999999e-5); // (var_calcium_fluxes__v2) [per_millisecond] + this->mParameters[1] = CHASTE_CONST(4.5); // (var_calcium_fluxes__v1) [per_millisecond] + this->mParameters[2] = CHASTE_CONST(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[7] = CHASTE_CONST(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] + this->mParameters[11] = CHASTE_CONST(0.29380000000000001); // (var_time_independent_potassium_current__g_K1) [milliS_per_microF] + this->mParameters[12] = CHASTE_CONST(0.050000000000000003); // (var_non_inactivating_steady_state_potassium_current__g_Kss) [milliS_per_microF] + this->mParameters[13] = CHASTE_CONST(0.078); // (var_rapid_delayed_rectifier_potassium_current__g_Kr) [milliS_per_microF] + this->mParameters[14] = CHASTE_CONST(0.0057499999999999999); // (var_slow_delayed_rectifier_potassium_current__g_Ks) [milliS_per_microF] + this->mParameters[15] = CHASTE_CONST(292.80000000000001); // (var_sodium_calcium_exchange_current__k_NaCa) [picoA_per_picoF] + this->mParameters[16] = CHASTE_CONST(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() @@ -792,7 +794,7 @@ std::shared_ptr& rY = *pStateVariables; - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -830,24 +832,24 @@ std::shared_ptrIndexTable0(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 = 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_pump_current__i_pCa = CHASTE_MATH::Pow(var_calcium_concentration__Cai, 2) / (CHASTE_CONST(0.25) + CHASTE_MATH::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) * CHASTE_CAP() * var_chaste_interface__L_type_calcium_current__O * mParameters[7]; // uA_per_cm2 const double var_calcium_activated_chloride_current__i_ClCa = 2 * (40 + var_chaste_interface__membrane__V) * var_calcium_concentration__Cai / ((_lt_0_row[0]) * (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_calcium_background_current__i_Cab = CHASTE_CONST(0.00036699999999999998) * var_chaste_interface__membrane__V - CHASTE_CONST(0.0047112379481865285) * CHASTE_MATH::Log(mParameters[4] / var_calcium_concentration__Cai); // picoA_per_picoF + const double var_fast_transient_outward_potassium_current__E_K = CHASTE_CONST(25.674321243523316) * CHASTE_MATH::Log(mParameters[5] / var_chaste_interface__potassium_concentration__Ki); // millivolt + const double var_fast_transient_outward_potassium_current__i_Kto_f_converted = CHASTE_MATH::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) * CHASTE_CAP() * 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) * CHASTE_CAP() * 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 = CHASTE_MATH::Pow(var_chaste_interface__slow_delayed_rectifier_potassium_current__nKs, 2) * (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * CHASTE_CAP() * 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((mParameters[6] + 0.1111111111111111 * mParameters[5]) / (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((mParameters[5] + 0.020408163265306124 * mParameters[6]) / (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 = (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] / ((_lt_0_row[3]) * (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 var_fast_sodium_current__E_Na = CHASTE_CONST(25.674321243523316) * CHASTE_MATH::Log((mParameters[6] + CHASTE_CONST(0.1111111111111111) * mParameters[5]) / (var_chaste_interface__sodium_concentration__Nai + CHASTE_CONST(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) * CHASTE_CAP() * var_chaste_interface__fast_sodium_current__O_Na * mParameters[9]; // uA_per_cm2 + const double var_rapid_delayed_rectifier_potassium_current__i_Kr_converted = (-CHASTE_CONST(25.674321243523316) * CHASTE_MATH::Log((mParameters[5] + CHASTE_CONST(0.020408163265306124) * mParameters[6]) / (var_chaste_interface__potassium_concentration__Ki + CHASTE_CONST(0.020408163265306124) * var_chaste_interface__sodium_concentration__Nai)) + var_chaste_interface__membrane__V) * CHASTE_CAP() * var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K * mParameters[13]; // uA_per_cm2 + const double var_sodium_background_current__i_Nab = CHASTE_CONST(0.0025999999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.0025999999999999999) * var_fast_sodium_current__E_Na; // picoA_per_picoF + const double var_sodium_calcium_exchange_current__i_NaCa_converted = (CHASTE_MATH::Pow(var_chaste_interface__sodium_concentration__Nai, 3) * mParameters[4] * _lt_0_row[1] - CHASTE_MATH::Pow(mParameters[6], 3) * var_calcium_concentration__Cai * _lt_0_row[2]) * CHASTE_CAP() * mParameters[15] / ((_lt_0_row[3]) * (1380 + mParameters[4]) * (CHASTE_CONST(669921875000000.0) + CHASTE_MATH::Pow(mParameters[6], 3))); // uA_per_cm2 + const double var_sodium_potassium_pump_current__i_NaK = CHASTE_CONST(0.88) * mParameters[5] / ((1 + CHASTE_CONST(3043189.1166997822) * CHASTE_MATH::Pow((1 / var_chaste_interface__sodium_concentration__Nai), CHASTE_CONST(1.5))) * (1500 + mParameters[5]) * (1 + _lt_0_row[5] + CHASTE_CONST(0.036499999999999998) * (-CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * CHASTE_MATH::Exp(CHASTE_CONST(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) * CHASTE_CAP() * mParameters[5] * mParameters[11] / ((1 + CHASTE_MATH::Exp(CHASTE_CONST(0.089599999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(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 = CHASTE_CONST(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 = CHASTE_CAP() * var_calcium_activated_chloride_current__i_ClCa + CHASTE_CAP() * var_calcium_background_current__i_Cab + CHASTE_CAP() * var_calcium_pump_current__i_pCa + CHASTE_CAP() * var_slow_transient_outward_potassium_current__i_Kto_s + CHASTE_CAP() * var_sodium_background_current__i_Nab + CHASTE_CAP() * var_sodium_potassium_pump_current__i_NaK + CHASTE_CAP() * 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)); @@ -857,7 +859,7 @@ std::shared_ptr& rY = rGetStateVariables(); - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -917,39 +919,39 @@ std::shared_ptr& rY = rGetStateVariables(); - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -1074,43 +1076,43 @@ std::shared_ptr& rY = rGetStateVariables(); - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -2269,23 +2271,23 @@ std::shared_ptrIndexTable0(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 = pow(var_calcium_concentration__Cai, 2) / (0.25 + pow(var_calcium_concentration__Cai, 2)); // picoA_per_picoF + const double var_calcium_pump_current__i_pCa = CHASTE_MATH::Pow(var_calcium_concentration__Cai, 2) / (CHASTE_CONST(0.25) + CHASTE_MATH::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_calcium_background_current__i_Cab = CHASTE_CONST(0.00036699999999999998) * var_chaste_interface__membrane__V - CHASTE_CONST(0.0047112379481865285) * CHASTE_MATH::Log(mParameters[4] / var_calcium_concentration__Cai); // picoA_per_picoF + const double var_fast_transient_outward_potassium_current__E_K = CHASTE_CONST(25.674321243523316) * CHASTE_MATH::Log(mParameters[5] / var_chaste_interface__potassium_concentration__Ki); // millivolt + const double var_fast_transient_outward_potassium_current__i_Kto_f = CHASTE_MATH::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_delayed_rectifier_potassium_current__i_Ks = CHASTE_MATH::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((mParameters[6] + 0.1111111111111111 * mParameters[5]) / (var_chaste_interface__sodium_concentration__Nai + 0.1111111111111111 * var_chaste_interface__potassium_concentration__Ki)); // millivolt + const double var_fast_sodium_current__E_Na = CHASTE_CONST(25.674321243523316) * CHASTE_MATH::Log((mParameters[6] + CHASTE_CONST(0.1111111111111111) * mParameters[5]) / (var_chaste_interface__sodium_concentration__Nai + CHASTE_CONST(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((mParameters[5] + 0.020408163265306124 * mParameters[6]) / (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 = (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] / ((_lt_0_row[3]) * (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 * (40 + var_chaste_interface__membrane__V) * var_calcium_concentration__Cai / ((_lt_0_row[0]) * (10 + var_calcium_concentration__Cai)); // millivolt / millisecond + const double var_rapid_delayed_rectifier_potassium_current__i_Kr = (-CHASTE_CONST(25.674321243523316) * CHASTE_MATH::Log((mParameters[5] + CHASTE_CONST(0.020408163265306124) * mParameters[6]) / (var_chaste_interface__potassium_concentration__Ki + CHASTE_CONST(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 = CHASTE_CONST(0.0025999999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.0025999999999999999) * var_fast_sodium_current__E_Na; // picoA_per_picoF + const double var_sodium_calcium_exchange_current__i_NaCa = (CHASTE_MATH::Pow(var_chaste_interface__sodium_concentration__Nai, 3) * mParameters[4] * _lt_0_row[1] - CHASTE_MATH::Pow(mParameters[6], 3) * var_calcium_concentration__Cai * _lt_0_row[2]) * mParameters[15] / ((_lt_0_row[3]) * (1380 + mParameters[4]) * (CHASTE_CONST(669921875000000.0) + CHASTE_MATH::Pow(mParameters[6], 3))); // picoA_per_picoF + const double var_sodium_potassium_pump_current__i_NaK = CHASTE_CONST(0.88) * mParameters[5] / ((1 + CHASTE_CONST(3043189.1166997822) * CHASTE_MATH::Pow((1 / var_chaste_interface__sodium_concentration__Nai), CHASTE_CONST(1.5))) * (1500 + mParameters[5]) * (1 + _lt_0_row[5] + CHASTE_CONST(0.036499999999999998) * (-CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * CHASTE_MATH::Exp(CHASTE_CONST(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 + CHASTE_MATH::Exp(CHASTE_CONST(0.089599999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(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 = CHASTE_CONST(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 - CHASTE_STIM(var_chaste_interface__environment__time) / CHASTE_CAP() - 2 * (40 + var_chaste_interface__membrane__V) * var_calcium_concentration__Cai / ((_lt_0_row[0]) * (10 + var_calcium_concentration__Cai)); // millivolt / millisecond rY[0] += mDt*d_dt_chaste_interface_var_membrane__V; } @@ -2294,7 +2296,7 @@ std::shared_ptr& rY = rGetStateVariables(); - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -2321,13 +2323,13 @@ std::shared_ptrIndexTable0(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[20] / (_lt_0_row[19]); - 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[22] / (_lt_0_row[21]); + const double var_fast_transient_outward_potassium_current__alpha_a = CHASTE_CONST(0.18064) * _lt_0_row[17]; + const double var_fast_transient_outward_potassium_current__alpha_i = CHASTE_CONST(0.00015200000000000001) * _lt_0_row[20] / (_lt_0_row[19]); + const double var_fast_transient_outward_potassium_current__beta_a = CHASTE_CONST(0.39560000000000001) * _lt_0_row[18]; + const double var_fast_transient_outward_potassium_current__beta_i = CHASTE_CONST(0.00095) * _lt_0_row[22] / (_lt_0_row[21]); const double var_non_inactivating_steady_state_potassium_current__tau_Kss = _lt_0_row[32]; 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_delayed_rectifier_potassium_current__beta_n = CHASTE_CONST(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 = _lt_0_row[34]; @@ -2386,7 +2388,7 @@ std::shared_ptrmFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -2425,33 +2427,33 @@ std::shared_ptrGetCapacitance() * 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_L_type_calcium_current__i_CaL_converted = CHASTE_CAP() * var_L_type_calcium_current__i_CaL; // uA_per_cm2 + const double var_membrane__i_stim_converted = CHASTE_STIM(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_fast_transient_outward_potassium_current__E_K = var_membrane__R * var_membrane__T * CHASTE_MATH::Log(mParameters[5] / var_chaste_interface__potassium_concentration__Ki) / var_membrane__F; // millivolt + const double var_fast_transient_outward_potassium_current__i_Kto_f = CHASTE_MATH::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 = CHASTE_CAP() * 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_non_inactivating_steady_state_potassium_current__i_Kss_converted = CHASTE_CAP() * 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_slow_delayed_rectifier_potassium_current__i_Ks = CHASTE_MATH::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 = CHASTE_CAP() * 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((mParameters[6] + 0.1111111111111111 * mParameters[5]) / (var_chaste_interface__sodium_concentration__Nai + 0.1111111111111111 * var_chaste_interface__potassium_concentration__Ki)) / var_membrane__F; // millivolt + const double var_sodium_calcium_exchange_current__eta = CHASTE_CONST(0.34999999999999998); // dimensionless + const double var_sodium_calcium_exchange_current__k_sat = CHASTE_CONST(0.10000000000000001); // dimensionless + const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * CHASTE_MATH::Log((mParameters[6] + CHASTE_CONST(0.1111111111111111) * mParameters[5]) / (var_chaste_interface__sodium_concentration__Nai + CHASTE_CONST(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((mParameters[5] + 0.020408163265306124 * mParameters[6]) / (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 = (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 + const double var_fast_sodium_current__i_Na_converted = CHASTE_CAP() * 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 * CHASTE_MATH::Log((mParameters[5] + CHASTE_CONST(0.020408163265306124) * mParameters[6]) / (var_chaste_interface__potassium_concentration__Ki + CHASTE_CONST(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 = CHASTE_CAP() * var_rapid_delayed_rectifier_potassium_current__i_Kr; // uA_per_cm2 + const double var_sodium_calcium_exchange_current__i_NaCa = (CHASTE_MATH::Pow(var_chaste_interface__sodium_concentration__Nai, 3) * mParameters[4] * CHASTE_MATH::Exp(var_membrane__F * var_chaste_interface__membrane__V * var_sodium_calcium_exchange_current__eta / (var_membrane__R * var_membrane__T)) - CHASTE_MATH::Pow(mParameters[6], 3) * var_calcium_concentration__Cai * CHASTE_MATH::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 * CHASTE_MATH::Exp((-1 + var_sodium_calcium_exchange_current__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (CHASTE_MATH::Pow(mParameters[6], 3) + CHASTE_MATH::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 = CHASTE_CAP() * 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 + CHASTE_MATH::Exp(CHASTE_CONST(0.089599999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(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 = CHASTE_CAP() * var_time_independent_potassium_current__i_K1; // uA_per_cm2 std::vector dqs(12); dqs[0] = var_calcium_fluxes__J_rel; diff --git a/chaste_codegen/data/tests/chaste_reference_models/BEopt/bondarenko_szigeti_bett_kim_rasmusson_2004_apical.hpp b/chaste_codegen/data/tests/chaste_reference_models/BEopt/bondarenko_szigeti_bett_kim_rasmusson_2004_apical.hpp index 2ce7f7d61..c2d2ebb4e 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/BEopt/bondarenko_szigeti_bett_kim_rasmusson_2004_apical.hpp +++ b/chaste_codegen/data/tests/chaste_reference_models/BEopt/bondarenko_szigeti_bett_kim_rasmusson_2004_apical.hpp @@ -16,8 +16,13 @@ #include "ChasteSerialization.hpp" #include #include "AbstractStimulusFunction.hpp" +#if USING_DEVICE_COMPILER +#include "StimulusEvaluatorCuda.hpp" +#endif #include "AbstractBackwardEulerCardiacCell.hpp" + + class Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEulerOpt : public AbstractBackwardEulerCardiacCell<32> { friend class boost::serialization::access; @@ -38,19 +43,25 @@ const bool is_concentration[41] = {false, true, true, true, false, false, false, const bool is_probability[41] = {false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false}; public: + boost::shared_ptr UseCellMLDefaultStimulus(); double GetIntracellularCalciumConcentration(); - Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEulerOpt(boost::shared_ptr /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus); + Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEulerOpt(boost::shared_ptr /* unused */, boost::shared_ptr pIntracellularStimulus); ~Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEulerOpt(); void VerifyStateVariables(); AbstractLookupTableCollection* GetLookupTableCollection(); - double GetIIonic(const std::vector* pStateVariables=NULL);void ComputeResidual(double var_chaste_interface__environment__time, const double rCurrentGuess[32], double rResidual[32]); - void ComputeJacobian(double var_chaste_interface__environment__time, const double rCurrentGuess[32], double rJacobian[32][32]);protected: + double GetIIonic(const std::vector* pStateVariables=NULL); + void ComputeResidual(double var_chaste_interface__environment__time, const double rCurrentGuess[32], double rResidual[32]); + void ComputeJacobian(double var_chaste_interface__environment__time, const double rCurrentGuess[32], double rJacobian[32][32]); + +#if USING_DEVICE_COMPILER + +#endif +protected: void UpdateTransmembranePotential(double var_chaste_interface__environment__time); void ComputeOneStepExceptVoltage(double var_chaste_interface__environment__time); - std::vector ComputeDerivedQuantities(double var_chaste_interface__environment__time, const std::vector & rY); -}; + std::vector ComputeDerivedQuantities(double var_chaste_interface__environment__time, const std::vector & rY);}; // Needs to be included last #include "SerializationExportWrapper.hpp" @@ -85,4 +96,5 @@ namespace boost } -#endif // CELLBONDARENKO_SZIGETI_BETT_KIM_RASMUSSON_2004_APICALFROMCELLMLBACKWARDEULEROPT_HPP_ \ No newline at end of file +#endif // CELLBONDARENKO_SZIGETI_BETT_KIM_RASMUSSON_2004_APICALFROMCELLMLBACKWARDEULEROPT_HPP_ + diff --git a/chaste_codegen/data/tests/chaste_reference_models/BEopt/decker_2009.cpp b/chaste_codegen/data/tests/chaste_reference_models/BEopt/decker_2009.cpp index 15fb93e53..0603ca175 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/BEopt/decker_2009.cpp +++ b/chaste_codegen/data/tests/chaste_reference_models/BEopt/decker_2009.cpp @@ -22,6 +22,8 @@ #include "HeartConfig.hpp" #include "IsNan.hpp" #include "MathsCustomFunctions.hpp" +#include "ChasteMathDeviceNamespaces.hpp" +#include "ChasteCpuMacros.hpp" @@ -144,7 +146,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 exp(0.010107688547106707 * var_chaste_interface__membrane__Vm); + return CHASTE_MATH::Exp(CHASTE_CONST(0.010107688547106707) * 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); @@ -155,7 +157,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 exp(-0.027328194960695912 * var_chaste_interface__membrane__Vm); + return CHASTE_MATH::Exp(-CHASTE_CONST(0.027328194960695912) * 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); @@ -166,7 +168,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 1 + 0.32000000000000001 * exp(-0.027328194960695912 * var_chaste_interface__membrane__Vm); + return 1 + CHASTE_CONST(0.32000000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(0.027328194960695912) * 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); @@ -177,7 +179,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 1 + exp(-3.444101282717841 - 0.037435883507802616 * var_chaste_interface__membrane__Vm); + return 1 + CHASTE_MATH::Exp(-CHASTE_CONST(3.444101282717841) - CHASTE_CONST(0.037435883507802616) * 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); @@ -188,7 +190,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 exp(0.074871767015605231 * var_chaste_interface__membrane__Vm); + return CHASTE_MATH::Exp(CHASTE_CONST(0.074871767015605231) * 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); @@ -210,7 +212,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 -1 + exp(0.074871767015605231 * var_chaste_interface__membrane__Vm); + return -1 + CHASTE_MATH::Exp(CHASTE_CONST(0.074871767015605231) * 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); @@ -232,7 +234,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 -100 * exp(0.037435883507802616 * var_chaste_interface__membrane__Vm); + return -100 * CHASTE_MATH::Exp(CHASTE_CONST(0.037435883507802616) * 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); @@ -254,7 +256,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 -1 + exp(0.037435883507802616 * var_chaste_interface__membrane__Vm); + return -1 + CHASTE_MATH::Exp(CHASTE_CONST(0.037435883507802616) * 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); @@ -276,7 +278,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 1 + exp(1.2521739130434781 - 0.16722408026755853 * var_chaste_interface__membrane__Vm); + return 1 + CHASTE_MATH::Exp(CHASTE_CONST(1.2521739130434781) - CHASTE_CONST(0.16722408026755853) * 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); @@ -287,7 +289,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 1 + exp(0.64935064935064934 + 0.064935064935064929 * var_chaste_interface__membrane__Vm); + return 1 + CHASTE_MATH::Exp(CHASTE_CONST(0.64935064935064934) + CHASTE_CONST(0.064935064935064929) * 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); @@ -298,7 +300,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 exp(0.0018181818181818182 * var_chaste_interface__membrane__Vm); + return CHASTE_MATH::Exp(CHASTE_CONST(0.0018181818181818182) * 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); @@ -309,7 +311,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 1 / (1 + exp(1.4349206349206352 - 0.10582010582010583 * var_chaste_interface__membrane__Vm)); + return 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(1.4349206349206352) - CHASTE_CONST(0.10582010582010583) * 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); @@ -320,7 +322,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.58999999999999997 + 0.80000000000000004 * exp(0.67599999999999993 + 0.051999999999999998 * var_chaste_interface__membrane__Vm) / (1 + exp(1.7160000000000002 + 0.13200000000000001 * var_chaste_interface__membrane__Vm)); + return CHASTE_CONST(0.58999999999999997) + CHASTE_CONST(0.80000000000000004) * CHASTE_MATH::Exp(CHASTE_CONST(0.67599999999999993) + CHASTE_CONST(0.051999999999999998) * var_chaste_interface__membrane__Vm) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(1.7160000000000002) + CHASTE_CONST(0.13200000000000001) * 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); @@ -331,7 +333,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.20000000000000001 + 0.80000000000000004 / (1 + exp(5.833333333333333 + 0.33333333333333331 * var_chaste_interface__membrane__Vm)); + return CHASTE_CONST(0.20000000000000001) + CHASTE_CONST(0.80000000000000004) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(5.833333333333333) + CHASTE_CONST(0.33333333333333331) * 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); @@ -342,7 +344,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 9.9990000999900015e-5 + 0.99990000999900008 / (1 + exp(5.833333333333333 + 0.33333333333333331 * var_chaste_interface__membrane__Vm)); + return CHASTE_CONST(9.9990000999900015e-5) + CHASTE_CONST(0.99990000999900008) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(5.833333333333333) + CHASTE_CONST(0.33333333333333331) * 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); @@ -353,7 +355,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 1 / (0.040277106492669565 / (1 + exp(4.7444197507005512 + 0.096627693496956227 * var_chaste_interface__membrane__Vm)) + 0.032730010146303147 / (1 + exp(-0.019709447580272044 - 0.092532617747756077 * var_chaste_interface__membrane__Vm))); + return 1 / (CHASTE_CONST(0.040277106492669565) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(4.7444197507005512) + CHASTE_CONST(0.096627693496956227) * var_chaste_interface__membrane__Vm)) + CHASTE_CONST(0.032730010146303147) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.019709447580272044) - CHASTE_CONST(0.092532617747756077) * 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); @@ -364,7 +366,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 1 + exp(-0.019709447580272044 - 0.092532617747756077 * var_chaste_interface__membrane__Vm); + return 1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.019709447580272044) - CHASTE_CONST(0.092532617747756077) * 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); @@ -375,7 +377,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.040277106492669565 / (1 + exp(4.7444197507005512 + 0.096627693496956227 * var_chaste_interface__membrane__Vm)); + return CHASTE_CONST(0.040277106492669565) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(4.7444197507005512) + CHASTE_CONST(0.096627693496956227) * 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); @@ -386,7 +388,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 1 / (1 + exp(-2.3729411764705883 - 0.23529411764705882 * var_chaste_interface__membrane__Vm)); + return 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.3729411764705883) - CHASTE_CONST(0.23529411764705882) * 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); @@ -397,7 +399,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.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)))); + return (((-CHASTE_CONST(0.2364224) + CHASTE_CONST(0.13600000000000001) * var_chaste_interface__membrane__Vm >= -CHASTE_CONST(9.9999999999999995e-8)) && (-CHASTE_CONST(0.2364224) + CHASTE_CONST(0.13600000000000001) * var_chaste_interface__membrane__Vm <= CHASTE_CONST(9.9999999999999995e-8))) ? (CHASTE_CONST(0.0038902447058823523) + CHASTE_CONST(0.00029999999999999997) * var_chaste_interface__membrane__Vm) : (-CHASTE_CONST(0.004411764705882352) * (-CHASTE_CONST(0.2364224) + CHASTE_CONST(0.13600000000000001) * var_chaste_interface__membrane__Vm) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(0.2364224) - CHASTE_CONST(0.13600000000000001) * var_chaste_interface__membrane__Vm)))) + (((CHASTE_CONST(5.8385137599999997) + CHASTE_CONST(0.1522) * var_chaste_interface__membrane__Vm >= -CHASTE_CONST(9.9999999999999995e-8)) && (CHASTE_CONST(5.8385137599999997) + CHASTE_CONST(0.1522) * var_chaste_interface__membrane__Vm <= CHASTE_CONST(9.9999999999999995e-8))) ? (-CHASTE_CONST(0.0037830293298291716) - CHASTE_CONST(0.00014999999999999999) * var_chaste_interface__membrane__Vm) : (CHASTE_CONST(0.0019710906701708277) * (CHASTE_CONST(5.8385137599999997) + CHASTE_CONST(0.1522) * var_chaste_interface__membrane__Vm) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(5.8385137599999997) + CHASTE_CONST(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); @@ -408,7 +410,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.0016666666666666668 / (1 + exp(14.918032786885247 + 0.16393442622950821 * var_chaste_interface__membrane__Vm)); + return CHASTE_CONST(0.0016666666666666668) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(14.918032786885247) + CHASTE_CONST(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); @@ -419,7 +421,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 (((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)))); + return (((CHASTE_CONST(4.7130000000000001) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__Vm >= -CHASTE_CONST(9.9999999999999995e-8)) && (CHASTE_CONST(4.7130000000000001) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__Vm <= CHASTE_CONST(9.9999999999999995e-8))) ? (CHASTE_CONST(10.7408) + CHASTE_CONST(0.16) * var_chaste_interface__membrane__Vm) : (-CHASTE_CONST(3.1999999999999997) * (CHASTE_CONST(4.7130000000000001) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__Vm) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(4.7130000000000001) - CHASTE_CONST(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); @@ -441,7 +443,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 exp(-0.090909090909090912 * var_chaste_interface__membrane__Vm); + return CHASTE_MATH::Exp(-CHASTE_CONST(0.090909090909090912) * 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); @@ -452,7 +454,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 >= -40) ? (0) : (0.13500000000000001 * exp(-11.764705882352942 - 0.14705882352941177 * var_chaste_interface__membrane__Vm))); + return ((var_chaste_interface__membrane__Vm >= -40) ? (0) : (CHASTE_CONST(0.13500000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(11.764705882352942) - CHASTE_CONST(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); @@ -474,7 +476,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 >= -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))); + return ((var_chaste_interface__membrane__Vm >= -40) ? (CHASTE_CONST(7.6923076923076916) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.96036036036036043) - CHASTE_CONST(0.0900900900900901) * var_chaste_interface__membrane__Vm))) : (310000 * CHASTE_MATH::Exp(CHASTE_CONST(0.34999999999999998) * var_chaste_interface__membrane__Vm) + CHASTE_CONST(3.5600000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(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); @@ -496,7 +498,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 >= -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)))); + return ((var_chaste_interface__membrane__Vm >= -40) ? (0) : ((CHASTE_CONST(37.780000000000001) + var_chaste_interface__membrane__Vm) * (-127140 * CHASTE_MATH::Exp(CHASTE_CONST(0.24440000000000001) * var_chaste_interface__membrane__Vm) - CHASTE_CONST(6.9480000000000006e-5) * CHASTE_MATH::Exp(-CHASTE_CONST(0.043909999999999998) * var_chaste_interface__membrane__Vm)) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(24.640530000000002) + CHASTE_CONST(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); @@ -518,7 +520,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 >= -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)))); + return ((var_chaste_interface__membrane__Vm >= -40) ? (CHASTE_CONST(0.29999999999999999) * CHASTE_MATH::Exp(-CHASTE_CONST(2.5349999999999999e-7) * var_chaste_interface__membrane__Vm) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(3.2000000000000002) - CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__Vm))) : (CHASTE_CONST(0.1212) * CHASTE_MATH::Exp(-CHASTE_CONST(0.01052) * var_chaste_interface__membrane__Vm) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(5.5312920000000005) - CHASTE_CONST(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); @@ -540,7 +542,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 1 / (1 + exp(-1.3230057479321462 - 0.14019346698443852 * var_chaste_interface__membrane__Vm)); + return 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(1.3230057479321462) - CHASTE_CONST(0.14019346698443852) * 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); @@ -551,7 +553,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 3.5 / (1 + exp(3.403513787634354 + 0.034035137876343539 * var_chaste_interface__membrane__Vm)) + 0.82719827942757873 / (1 + exp(0.62658348478969694 - 0.034035137876343539 * var_chaste_interface__membrane__Vm)); + return CHASTE_CONST(3.5) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(3.403513787634354) + CHASTE_CONST(0.034035137876343539) * var_chaste_interface__membrane__Vm)) + CHASTE_CONST(0.82719827942757873) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(0.62658348478969694) - CHASTE_CONST(0.034035137876343539) * 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); @@ -562,7 +564,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 1 + exp(11.6 + 0.20000000000000001 * var_chaste_interface__membrane__Vm); + return 1 + CHASTE_MATH::Exp(CHASTE_CONST(11.6) + CHASTE_CONST(0.20000000000000001) * 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); @@ -573,7 +575,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 1 + exp(-2.1111111111111112 - 0.1111111111111111 * var_chaste_interface__membrane__Vm); + return 1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.1111111111111112) - CHASTE_CONST(0.1111111111111111) * 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); @@ -584,7 +586,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 1 + exp(12 + 0.20000000000000001 * var_chaste_interface__membrane__Vm); + return 1 + CHASTE_MATH::Exp(12 + CHASTE_CONST(0.20000000000000001) * 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); @@ -595,7 +597,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.0031250000000000002 / ((1 + exp(11.6 + 0.20000000000000001 * var_chaste_interface__membrane__Vm)) * (0.025000000000000001 / (1 + exp(11.6 + 0.20000000000000001 * var_chaste_interface__membrane__Vm)) + 0.20000000000000001 / (1 + exp(-2.1111111111111112 - 0.1111111111111111 * var_chaste_interface__membrane__Vm)))); + return CHASTE_CONST(0.0031250000000000002) / ((1 + CHASTE_MATH::Exp(CHASTE_CONST(11.6) + CHASTE_CONST(0.20000000000000001) * var_chaste_interface__membrane__Vm)) * (CHASTE_CONST(0.025000000000000001) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(11.6) + CHASTE_CONST(0.20000000000000001) * var_chaste_interface__membrane__Vm)) + CHASTE_CONST(0.20000000000000001) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.1111111111111112) - CHASTE_CONST(0.1111111111111111) * 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); @@ -606,7 +608,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.014864597980859999 * exp(0.0011184831685939309 * var_chaste_interface__membrane__Vm); + return CHASTE_CONST(0.014864597980859999) * CHASTE_MATH::Exp(CHASTE_CONST(0.0011184831685939309) * 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); @@ -617,7 +619,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.083986312199829993 * exp(-0.0020762336738124813 * var_chaste_interface__membrane__Vm); + return CHASTE_CONST(0.083986312199829993) * CHASTE_MATH::Exp(-CHASTE_CONST(0.0020762336738124813) * 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); @@ -628,7 +630,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.0031173268874 * exp(-0.015957214534570986 * var_chaste_interface__membrane__Vm); + return CHASTE_CONST(0.0031173268874) * CHASTE_MATH::Exp(-CHASTE_CONST(0.015957214534570986) * 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); @@ -639,7 +641,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.077319900973309999 * exp(-0.002423079581399111 * var_chaste_interface__membrane__Vm); + return CHASTE_CONST(0.077319900973309999) * CHASTE_MATH::Exp(-CHASTE_CONST(0.002423079581399111) * 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); @@ -650,7 +652,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.01460066118316 * exp(0.0091586713426216482 * var_chaste_interface__membrane__Vm); + return CHASTE_CONST(0.01460066118316) * CHASTE_MATH::Exp(CHASTE_CONST(0.0091586713426216482) * 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); @@ -661,7 +663,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.58638228663014003 * exp(0.010558998462268819 * var_chaste_interface__membrane__Vm); + return -CHASTE_CONST(0.58638228663014003) * CHASTE_MATH::Exp(CHASTE_CONST(0.010558998462268819) * 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); @@ -672,7 +674,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 exp(-0.00300137636070284 * var_chaste_interface__membrane__Vm); + return CHASTE_MATH::Exp(-CHASTE_CONST(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); @@ -683,7 +685,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 1 + exp(5.833333333333333 + 0.33333333333333331 * var_chaste_interface__membrane__Vm); + return 1 + CHASTE_MATH::Exp(CHASTE_CONST(5.833333333333333) + CHASTE_CONST(0.33333333333333331) * 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); @@ -694,7 +696,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 exp(0.0011184831685939309 * var_chaste_interface__membrane__Vm); + return CHASTE_MATH::Exp(CHASTE_CONST(0.0011184831685939309) * 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); @@ -705,7 +707,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 exp(-0.0020762336738124813 * var_chaste_interface__membrane__Vm); + return CHASTE_MATH::Exp(-CHASTE_CONST(0.0020762336738124813) * 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); @@ -716,7 +718,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 exp(-0.015957214534570986 * var_chaste_interface__membrane__Vm); + return CHASTE_MATH::Exp(-CHASTE_CONST(0.015957214534570986) * 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); @@ -727,7 +729,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 exp(0.0091586713426216482 * var_chaste_interface__membrane__Vm); + return CHASTE_MATH::Exp(CHASTE_CONST(0.0091586713426216482) * 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 +740,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 CHASTE_CONST(0.79405459958640001) * CHASTE_MATH::Exp(-CHASTE_CONST(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); @@ -771,8 +773,8 @@ std::shared_ptr Celldeck 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_amplitude_converted = -80 * CHASTE_CAP(); // uA_per_cm2 + const double var_chaste_interface__membrane__stim_duration = CHASTE_CONST(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( @@ -802,27 +804,27 @@ std::shared_ptr Celldeck // 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[0] = CHASTE_CONST(0.0043750000000000004); // (var_Ileak__Ileak_max) [mM_per_ms] + this->mParameters[1] = CHASTE_CONST(0.1125); // (var_Irel__kappa) [mM_per_uA_per_uF_per_ms_per_ms] + this->mParameters[2] = CHASTE_CONST(0.0043750000000000004); // (var_Iup__iupbar) [mM_per_ms] + this->mParameters[3] = CHASTE_CONST(1.8); // (var_model_parameters__Ca_o) [mM] + this->mParameters[4] = CHASTE_CONST(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] + this->mParameters[6] = CHASTE_CONST(0.00015552); // (var_ICaL__PCa) [L_per_F_ms] + this->mParameters[7] = CHASTE_CONST(1.9950799999999999e-7); // (var_ICab__PCab) [L_per_F_ms] + this->mParameters[8] = CHASTE_CONST(0.00022499999999999999); // (var_IClb__gClb) [mS_per_uF] + this->mParameters[9] = CHASTE_CONST(3.2000000000000001e-9); // (var_INab__PNab) [L_per_F_ms] + this->mParameters[10] = CHASTE_CONST(0.057500000000000002); // (var_IpCa__gpCa) [uA_per_uF] + this->mParameters[11] = CHASTE_CONST(9.0749999999999993); // (var_INa__g_Na) [mS_per_uF] + this->mParameters[12] = CHASTE_CONST(0.5); // (var_IK1__g_K1_max) [mS_per_uF] + this->mParameters[13] = CHASTE_CONST(0.0064999999999999997); // (var_INaL__gNaL) [mS_per_uF] + this->mParameters[14] = CHASTE_CONST(0.0027599999999999999); // (var_IKp__gKp) [mS_per_uF] + this->mParameters[15] = CHASTE_CONST(0.013854200000000001); // (var_IKr__gKr_max) [mS_per_uF] + this->mParameters[16] = CHASTE_CONST(0.082600000000000007); // (var_IKs__gKs_max) [mS_per_uF] + this->mParameters[17] = CHASTE_CONST(4.5); // (var_INaCa__Vmax) [uA_per_uF] + this->mParameters[18] = CHASTE_CONST(1.3999999999999999); // (var_INaK__ibarnak) [uA_per_uF] + this->mParameters[19] = CHASTE_CONST(8.9999999999999996e-7); // (var_Ito2__PCl) [L_per_F_ms] + this->mParameters[20] = CHASTE_CONST(0.49745800000000001); // (var_Ito1__gto1) [mS_per_uF] } Celldecker_2009FromCellMLBackwardEulerOpt::~Celldecker_2009FromCellMLBackwardEulerOpt() @@ -873,7 +875,7 @@ std::shared_ptr Celldeck // 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]); + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -954,17 +956,17 @@ std::shared_ptr Celldeck // 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 * (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_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 - const double var_membrane__kiont = -2 * var_INaK__INaK + (-var_reversal_potentials__EK + var_chaste_interface__membrane__Vm) * mParameters[14] / (_lt_0_row[8]) + (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 * sqrt(mParameters[4]) * (-var_reversal_potentials__EK + var_chaste_interface__membrane__Vm) * mParameters[15] * var_chaste_interface__IKr_xr_gate__xr / (_lt_0_row[9]) + 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 var_INaCa__INaCa_ss_sr = CHASTE_CONST(0.20000000000000001) * (CHASTE_MATH::Pow(var_chaste_interface__Na__Na_ss_sr, 3) * mParameters[3] * _lt_0_row[0] - CHASTE_MATH::Pow(mParameters[5], 3) * var_chaste_interface__Ca__Ca_ss_sr * _lt_0_row[1]) * mParameters[17] / ((_lt_0_row[2]) * (1 + CHASTE_CONST(1.5624999999999999e-8) / CHASTE_MATH::Pow(var_chaste_interface__Ca__Ca_ss_sr, 2)) * (CHASTE_CONST(669921.875) * var_chaste_interface__Ca__Ca_ss_sr + CHASTE_CONST(1.3) * CHASTE_MATH::Pow(var_chaste_interface__Na__Na_ss_sr, 3) + CHASTE_MATH::Pow(var_chaste_interface__Na__Na_ss_sr, 3) * mParameters[3] + CHASTE_MATH::Pow(mParameters[5], 3) * var_chaste_interface__Ca__Ca_ss_sr + CHASTE_CONST(0.0035999999999999999) * CHASTE_MATH::Pow(mParameters[5], 3) * (1 + CHASTE_CONST(0.00053738391835633597) * CHASTE_MATH::Pow(var_chaste_interface__Na__Na_ss_sr, 3)) + CHASTE_CONST(1860.8670000000004) * (1 + CHASTE_CONST(277.77777777777777) * var_chaste_interface__Ca__Ca_ss_sr) * mParameters[3])); // uA_per_uF + const double var_INaCa__INaCa = CHASTE_CONST(0.80000000000000004) * (CHASTE_MATH::Pow(var_chaste_interface__Na__Na_i, 3) * mParameters[3] * _lt_0_row[0] - CHASTE_MATH::Pow(mParameters[5], 3) * var_chaste_interface__Ca__Ca_i * _lt_0_row[1]) * mParameters[17] / ((_lt_0_row[2]) * (1 + CHASTE_CONST(1.5624999999999999e-8) / CHASTE_MATH::Pow(var_chaste_interface__Ca__Ca_i, 2)) * (CHASTE_CONST(669921.875) * var_chaste_interface__Ca__Ca_i + CHASTE_CONST(1.3) * CHASTE_MATH::Pow(var_chaste_interface__Na__Na_i, 3) + CHASTE_MATH::Pow(var_chaste_interface__Na__Na_i, 3) * mParameters[3] + CHASTE_MATH::Pow(mParameters[5], 3) * var_chaste_interface__Ca__Ca_i + CHASTE_CONST(0.0035999999999999999) * CHASTE_MATH::Pow(mParameters[5], 3) * (1 + CHASTE_CONST(0.00053738391835633597) * CHASTE_MATH::Pow(var_chaste_interface__Na__Na_i, 3)) + CHASTE_CONST(1860.8670000000004) * (1 + CHASTE_CONST(277.77777777777777) * var_chaste_interface__Ca__Ca_i) * mParameters[3])) + var_INaCa__INaCa_ss_sr; // uA_per_uF + const double var_INaK__INaK = CHASTE_CONST(0.056895766954938545) * CHASTE_MATH::Pow(var_chaste_interface__Na__Na_i, 3) * mParameters[18] * mParameters[4] / (CHASTE_MATH::Pow((1 + CHASTE_CONST(0.38461538461538458) * var_chaste_interface__Na__Na_i), 3) * (_lt_0_row[3]) * (CHASTE_CONST(1.5) + mParameters[4])); // uA_per_uF + const double var_INab__phi = CHASTE_CONST(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) * (((CHASTE_CONST(0.074871767015605231) * var_chaste_interface__membrane__Vm >= -CHASTE_CONST(9.9999999999999995e-8)) && (CHASTE_CONST(0.074871767015605231) * var_chaste_interface__membrane__Vm <= CHASTE_CONST(9.9999999999999995e-8))) ? (192970 * (1 - CHASTE_CONST(0.037435883507802616) * var_chaste_interface__membrane__Vm) * (-CHASTE_CONST(0.34100000000000003) * mParameters[3] + var_chaste_interface__Ca__Ca_ss_CaL * _lt_0_row[4]) * mParameters[6]) : (CHASTE_CONST(14448.004881001343) * (-CHASTE_CONST(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] / (CHASTE_CONST(0.00050000000000000001) + var_chaste_interface__Ca__Ca_i) + (((CHASTE_CONST(0.074871767015605231) * var_chaste_interface__membrane__Vm >= -CHASTE_CONST(9.9999999999999995e-8)) && (CHASTE_CONST(0.074871767015605231) * var_chaste_interface__membrane__Vm <= CHASTE_CONST(9.9999999999999995e-8))) ? (192970 * (1 - CHASTE_CONST(0.037435883507802616) * var_chaste_interface__membrane__Vm) * (-CHASTE_CONST(0.34100000000000003) * mParameters[3] + var_chaste_interface__Ca__Ca_i * _lt_0_row[4]) * mParameters[7]) : (CHASTE_CONST(14448.004881001343) * (-CHASTE_CONST(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 = (CHASTE_CONST(26.712338705498265) * CHASTE_MATH::Log(100 / var_chaste_interface__Cl__Cl_i) + var_chaste_interface__membrane__Vm) * mParameters[8] + (1 - 1 / (1 + CHASTE_CONST(6.2499999999999991) * CHASTE_MATH::Pow(var_chaste_interface__Irel__Irel, 2))) * (((CHASTE_CONST(0.037435883507802616) * var_chaste_interface__membrane__Vm >= -CHASTE_CONST(9.9999999999999995e-8)) && (CHASTE_CONST(0.037435883507802616) * var_chaste_interface__membrane__Vm <= CHASTE_CONST(9.9999999999999995e-8))) ? (-96485 * (1 - CHASTE_CONST(0.018717941753901308) * var_chaste_interface__membrane__Vm) * (_lt_0_row[6] + var_chaste_interface__Cl__Cl_i) * mParameters[19]) : (-CHASTE_CONST(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 = CHASTE_CONST(26.712338705498265) * CHASTE_MATH::Log(mParameters[4] / var_chaste_interface__K__K_i); // mV + const double var_reversal_potentials__ENa = CHASTE_CONST(26.712338705498265) * CHASTE_MATH::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 + CHASTE_MATH::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 + CHASTE_MATH::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 >= -CHASTE_CONST(9.9999999999999995e-8)) && (var_INab__phi <= CHASTE_CONST(9.9999999999999995e-8))) ? (96485 * (1 - CHASTE_CONST(0.5) * var_INab__phi) * (-mParameters[5] + var_chaste_interface__Na__Na_i * CHASTE_MATH::Exp(var_INab__phi)) * mParameters[9]) : (96485 * (-mParameters[5] + var_chaste_interface__Na__Na_i * CHASTE_MATH::Exp(var_INab__phi)) * mParameters[9] * var_INab__phi / (-1 + CHASTE_MATH::Exp(var_INab__phi)))); // uA_per_uF + const double var_membrane__kiont = -2 * var_INaK__INaK + (-var_reversal_potentials__EK + var_chaste_interface__membrane__Vm) * mParameters[14] / (_lt_0_row[8]) + (1 + CHASTE_CONST(0.59999999999999998) / (1 + CHASTE_CONST(6.4818210260626455e-7) * CHASTE_MATH::Pow((1 / var_chaste_interface__Ca__Ca_i), CHASTE_CONST(1.3999999999999999)))) * (-CHASTE_CONST(26.712338705498265) * CHASTE_MATH::Log((CHASTE_CONST(0.018329999999999999) * mParameters[5] + mParameters[4]) / (CHASTE_CONST(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] + CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::Sqrt(mParameters[4]) * (-var_reversal_potentials__EK + var_chaste_interface__membrane__Vm) * mParameters[15] * var_chaste_interface__IKr_xr_gate__xr / (_lt_0_row[9]) + CHASTE_CONST(0.4389381125701739) * CHASTE_MATH::Sqrt(mParameters[4]) * (-var_reversal_potentials__EK + var_chaste_interface__membrane__Vm) * mParameters[12] / ((1 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__membrane__Vm - CHASTE_CONST(0.23849999999999999) * var_reversal_potentials__EK)) * (CHASTE_CONST(1.02) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__membrane__Vm - CHASTE_CONST(0.23849999999999999) * var_reversal_potentials__EK)) + (CHASTE_CONST(0.49124000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.43983232) + CHASTE_CONST(0.080320000000000003) * var_chaste_interface__membrane__Vm - CHASTE_CONST(0.080320000000000003) * var_reversal_potentials__EK) + CHASTE_MATH::Exp(-CHASTE_CONST(36.698642499999998) + CHASTE_CONST(0.061749999999999999) * var_chaste_interface__membrane__Vm - CHASTE_CONST(0.061749999999999999) * var_reversal_potentials__EK)) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.4444678999999998) + CHASTE_CONST(0.51429999999999998) * var_reversal_potentials__EK - CHASTE_CONST(0.51429999999999998) * var_chaste_interface__membrane__Vm)))) + CHASTE_MATH::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) * CHASTE_CAP(); // uA_per_cm2 const double i_ionic = var_chaste_interface__i_ionic; EXCEPT_IF_NOT(!std::isnan(i_ionic)); @@ -974,7 +976,7 @@ std::shared_ptr Celldeck 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]); + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -1044,32 +1046,32 @@ std::shared_ptr Celldeck //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_Ca__Idiff_ss = CHASTE_CONST(0.5) * var_chaste_interface__Ca__Ca_ss_sr - CHASTE_CONST(0.5) * var_chaste_interface__Ca__Ca_ss_CaL; // mM_per_ms + const double var_CaMK_active__CaMK_active = CHASTE_CONST(0.050000000000000003) * (1 - var_chaste_interface__CaMK_active__CaMK_trap) / (1 + CHASTE_CONST(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 d_dt_chaste_interface_var_CaMK_active__CaMK_trap = -CHASTE_CONST(0.00068000000000000005) * var_chaste_interface__CaMK_active__CaMK_trap + CHASTE_CONST(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_ICaL__delta = 3 / (1 + CHASTE_CONST(8.1000000000000005e-11) / CHASTE_MATH::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 = (-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 + var_CaMK_active__CaMK_active)) * var_chaste_interface__Ca__Ca_i * mParameters[2] / (0.00092000000000000003 - 0.00017000000000000001 * var_CaMK_active__CaMK_active / (0.14999999999999999 + var_CaMK_active__CaMK_active) + var_chaste_interface__Ca__Ca_i); // mM_per_ms + const double var_Ileak__Ileak = CHASTE_CONST(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] / (CHASTE_CONST(0.00050000000000000001) + var_chaste_interface__Ca__Ca_i); // uA_per_uF + const double var_Irel__beta_tau = CHASTE_CONST(4.75) + CHASTE_CONST(4.75) / (1 + CHASTE_CONST(2.9619676669542428e-6) * CHASTE_MATH::Pow((1 / var_CaMK_active__CaMK_active), 10)); // ms + const double var_Itr__Itr = CHASTE_CONST(0.040000000000000001) * var_chaste_interface__Ca__Ca_NSR - CHASTE_CONST(0.040000000000000001) * var_chaste_interface__Ca__Ca_JSR; // mM_per_ms + const double d_dt_chaste_interface_var_Ca__Ca_JSR = (-var_chaste_interface__Irel__Irel + var_Itr__Itr) / (1 + 8 / CHASTE_MATH::Pow((CHASTE_CONST(0.80000000000000004) + var_chaste_interface__Ca__Ca_JSR), 2)); // mM / ms + const double var_Iup__Iup = (1 + CHASTE_CONST(0.75) * var_CaMK_active__CaMK_active / (CHASTE_CONST(0.14999999999999999) + var_CaMK_active__CaMK_active)) * var_chaste_interface__Ca__Ca_i * mParameters[2] / (CHASTE_CONST(0.00092000000000000003) - CHASTE_CONST(0.00017000000000000001) * var_CaMK_active__CaMK_active / (CHASTE_CONST(0.14999999999999999) + 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 var_cell_geometry__vcell = CHASTE_CONST(1.2100000000000001e-5) * CHASTE_CONST(CHASTE_MATH::Pi); // uL + const double var_cell_geometry__Vjsr = CHASTE_CONST(0.0047999999999999996) * var_cell_geometry__vcell; // uL + const double var_cell_geometry__Vmyo = CHASTE_CONST(0.67800000000000005) * var_cell_geometry__vcell; // uL + const double var_cell_geometry__Vnsr = CHASTE_CONST(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_cell_geometry__Vss_sr = CHASTE_CONST(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__IV_tau_star = 1 / (_lt_0_row[17] + 1 / ((_lt_0_row[16]) * (25 - CHASTE_CONST(17.5) / (1 + CHASTE_CONST(8.1000000000000005e-11) / CHASTE_MATH::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 @@ -1080,15 +1082,15 @@ std::shared_ptr Celldeck 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] + 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 = (((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_ICaL__delta_I = CHASTE_CONST(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 = CHASTE_CONST(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 = (-CHASTE_CONST(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 = CHASTE_CONST(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 = CHASTE_STIM(var_chaste_interface__environment__time) / CHASTE_CAP(); // uA_per_uF + const double var_cell_geometry__AF = CHASTE_CONST(5.0619267243613002e-10) * CHASTE_CONST(CHASTE_MATH::Pi); // uF_mole_per_C + const double var_ICaL__ICaL = (var_chaste_interface__ICaL__O + var_chaste_interface__ICaL__O_star) * (((CHASTE_CONST(0.074871767015605231) * var_chaste_interface__membrane__Vm >= -CHASTE_CONST(9.9999999999999995e-8)) && (CHASTE_CONST(0.074871767015605231) * var_chaste_interface__membrane__Vm <= CHASTE_CONST(9.9999999999999995e-8))) ? (192970 * (1 - CHASTE_CONST(0.037435883507802616) * var_chaste_interface__membrane__Vm) * (-CHASTE_CONST(0.34100000000000003) * mParameters[3] + var_chaste_interface__Ca__Ca_ss_CaL * _lt_0_row[4]) * mParameters[6]) : (CHASTE_CONST(14448.004881001343) * (-CHASTE_CONST(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 + CHASTE_CONST(0.0097788000000000007) / CHASTE_MATH::Pow((CHASTE_CONST(0.0086999999999999994) + var_chaste_interface__Ca__Ca_ss_CaL), 2) + CHASTE_CONST(4.0890000000000003e-5) / CHASTE_MATH::Pow((CHASTE_CONST(0.00087000000000000001) + var_chaste_interface__Ca__Ca_ss_CaL), 2)); // mM / ms + const double var_ICab__ICab = (((CHASTE_CONST(0.074871767015605231) * var_chaste_interface__membrane__Vm >= -CHASTE_CONST(9.9999999999999995e-8)) && (CHASTE_CONST(0.074871767015605231) * var_chaste_interface__membrane__Vm <= CHASTE_CONST(9.9999999999999995e-8))) ? (192970 * (1 - CHASTE_CONST(0.037435883507802616) * var_chaste_interface__membrane__Vm) * (-CHASTE_CONST(0.34100000000000003) * mParameters[3] + var_chaste_interface__Ca__Ca_i * _lt_0_row[4]) * mParameters[7]) : (CHASTE_CONST(14448.004881001343) * (-CHASTE_CONST(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 @@ -1100,7 +1102,7 @@ std::shared_ptr Celldeck 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__C15 = (-CHASTE_CONST(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 @@ -1109,33 +1111,33 @@ std::shared_ptr Celldeck 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 * (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 d_dt_chaste_interface_var_Ca__Ca_ss_sr = -(-var_chaste_interface__Irel__Irel * var_cell_geometry__Vjsr / var_cell_geometry__Vss_sr - 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_IKs__O1 = CHASTE_CONST(0.089538306411019994) * var_chaste_interface__IKs__C15 + (-var_IKs__eta + _lt_0_row[38]) * var_chaste_interface__IKs__O1 + CHASTE_CONST(0.79405459958640001) * var_IKs__O2 * _lt_0_row[39]; // 1 / ms + const double var_INaCa__INaCa_ss_sr = CHASTE_CONST(0.20000000000000001) * (CHASTE_MATH::Pow(var_chaste_interface__Na__Na_ss_sr, 3) * mParameters[3] * _lt_0_row[0] - CHASTE_MATH::Pow(mParameters[5], 3) * var_chaste_interface__Ca__Ca_ss_sr * _lt_0_row[1]) * mParameters[17] / ((_lt_0_row[2]) * (1 + CHASTE_CONST(1.5624999999999999e-8) / CHASTE_MATH::Pow(var_chaste_interface__Ca__Ca_ss_sr, 2)) * (CHASTE_CONST(669921.875) * var_chaste_interface__Ca__Ca_ss_sr + CHASTE_CONST(1.3) * CHASTE_MATH::Pow(var_chaste_interface__Na__Na_ss_sr, 3) + CHASTE_MATH::Pow(var_chaste_interface__Na__Na_ss_sr, 3) * mParameters[3] + CHASTE_MATH::Pow(mParameters[5], 3) * var_chaste_interface__Ca__Ca_ss_sr + CHASTE_CONST(0.0035999999999999999) * CHASTE_MATH::Pow(mParameters[5], 3) * (1 + CHASTE_CONST(0.00053738391835633597) * CHASTE_MATH::Pow(var_chaste_interface__Na__Na_ss_sr, 3)) + CHASTE_CONST(1860.8670000000004) * (1 + CHASTE_CONST(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 = -(-var_chaste_interface__Irel__Irel * var_cell_geometry__Vjsr / var_cell_geometry__Vss_sr - var_INaCa__INaCa_ss_sr * var_cell_geometry__AF / var_cell_geometry__Vss_sr + var_Ca__Idiff + var_Ca__Idiff_ss) / (1 + CHASTE_CONST(0.0097788000000000007) / CHASTE_MATH::Pow((CHASTE_CONST(0.0086999999999999994) + var_chaste_interface__Ca__Ca_ss_sr), 2) + CHASTE_CONST(4.0890000000000003e-5) / CHASTE_MATH::Pow((CHASTE_CONST(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 * (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 d_dt_chaste_interface_var_Ca__Ca_i = ((-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 * 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 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))) * (((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_INaCa__INaCa = CHASTE_CONST(0.80000000000000004) * (CHASTE_MATH::Pow(var_chaste_interface__Na__Na_i, 3) * mParameters[3] * _lt_0_row[0] - CHASTE_MATH::Pow(mParameters[5], 3) * var_chaste_interface__Ca__Ca_i * _lt_0_row[1]) * mParameters[17] / ((_lt_0_row[2]) * (1 + CHASTE_CONST(1.5624999999999999e-8) / CHASTE_MATH::Pow(var_chaste_interface__Ca__Ca_i, 2)) * (CHASTE_CONST(669921.875) * var_chaste_interface__Ca__Ca_i + CHASTE_CONST(1.3) * CHASTE_MATH::Pow(var_chaste_interface__Na__Na_i, 3) + CHASTE_MATH::Pow(var_chaste_interface__Na__Na_i, 3) * mParameters[3] + CHASTE_MATH::Pow(mParameters[5], 3) * var_chaste_interface__Ca__Ca_i + CHASTE_CONST(0.0035999999999999999) * CHASTE_MATH::Pow(mParameters[5], 3) * (1 + CHASTE_CONST(0.00053738391835633597) * CHASTE_MATH::Pow(var_chaste_interface__Na__Na_i, 3)) + CHASTE_CONST(1860.8670000000004) * (1 + CHASTE_CONST(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 = ((-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 + CHASTE_CONST(0.5) * (-var_ICab__ICab - var_IpCa__IpCa + 2 * var_INaCa__INaCa) * var_cell_geometry__AF / var_cell_geometry__Vmyo) / (1 + CHASTE_CONST(0.00011900000000000002) / CHASTE_MATH::Pow((CHASTE_CONST(0.0023800000000000002) + var_chaste_interface__Ca__Ca_i), 2) + CHASTE_CONST(3.5000000000000004e-5) / CHASTE_MATH::Pow((CHASTE_CONST(0.00050000000000000001) + var_chaste_interface__Ca__Ca_i), 2)); // mM / ms + const double var_INaK__INaK = CHASTE_CONST(0.056895766954938545) * CHASTE_MATH::Pow(var_chaste_interface__Na__Na_i, 3) * mParameters[18] * mParameters[4] / (CHASTE_MATH::Pow((1 + CHASTE_CONST(0.38461538461538458) * var_chaste_interface__Na__Na_i), 3) * (_lt_0_row[3]) * (CHASTE_CONST(1.5) + mParameters[4])); // uA_per_uF + const double var_INab__phi = CHASTE_CONST(0.037435883507802616) * var_chaste_interface__membrane__Vm; // dimensionless + const double var_INab__INab = (((var_INab__phi >= -CHASTE_CONST(9.9999999999999995e-8)) && (var_INab__phi <= CHASTE_CONST(9.9999999999999995e-8))) ? (96485 * (1 - CHASTE_CONST(0.5) * var_INab__phi) * (-mParameters[5] + var_chaste_interface__Na__Na_i * CHASTE_MATH::Exp(var_INab__phi)) * mParameters[9]) : (96485 * (-mParameters[5] + var_chaste_interface__Na__Na_i * CHASTE_MATH::Exp(var_INab__phi)) * mParameters[9] * var_INab__phi / (-1 + CHASTE_MATH::Exp(var_INab__phi)))); // uA_per_uF + const double d_dt_chaste_interface_var_Irel__Irel = (1 + CHASTE_CONST(0.0123) / var_chaste_interface__Ca__Ca_JSR) * (-var_chaste_interface__Irel__Irel - var_ICaL__ICaL * var_Irel__beta_tau * mParameters[1] / (1 + CHASTE_MATH::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 + CHASTE_CONST(6.2499999999999991) * CHASTE_MATH::Pow(var_chaste_interface__Irel__Irel, 2))) * (((CHASTE_CONST(0.037435883507802616) * var_chaste_interface__membrane__Vm >= -CHASTE_CONST(9.9999999999999995e-8)) && (CHASTE_CONST(0.037435883507802616) * var_chaste_interface__membrane__Vm <= CHASTE_CONST(9.9999999999999995e-8))) ? (-96485 * (1 - CHASTE_CONST(0.018717941753901308) * var_chaste_interface__membrane__Vm) * (_lt_0_row[6] + var_chaste_interface__Cl__Cl_i) * mParameters[19]) : (-CHASTE_CONST(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_reversal_potentials__ECl = -CHASTE_CONST(26.712338705498265) * CHASTE_MATH::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_reversal_potentials__EK = CHASTE_CONST(26.712338705498265) * CHASTE_MATH::Log(mParameters[4] / var_chaste_interface__K__K_i); // mV + const double var_CT_K_Cl__CT_K_Cl = CHASTE_CONST(1.77e-5) * (-var_reversal_potentials__ECl + var_reversal_potentials__EK) / (CHASTE_CONST(87.825100000000006) - var_reversal_potentials__ECl + var_reversal_potentials__EK); // mM_per_ms + const double var_IK1__IK1 = CHASTE_CONST(0.4389381125701739) * CHASTE_MATH::Sqrt(mParameters[4]) * (-var_reversal_potentials__EK + var_chaste_interface__membrane__Vm) * mParameters[12] / ((1 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__membrane__Vm - CHASTE_CONST(0.23849999999999999) * var_reversal_potentials__EK)) * (CHASTE_CONST(1.02) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__membrane__Vm - CHASTE_CONST(0.23849999999999999) * var_reversal_potentials__EK)) + (CHASTE_CONST(0.49124000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.43983232) + CHASTE_CONST(0.080320000000000003) * var_chaste_interface__membrane__Vm - CHASTE_CONST(0.080320000000000003) * var_reversal_potentials__EK) + CHASTE_MATH::Exp(-CHASTE_CONST(36.698642499999998) + CHASTE_CONST(0.061749999999999999) * var_chaste_interface__membrane__Vm - CHASTE_CONST(0.061749999999999999) * var_reversal_potentials__EK)) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.4444678999999998) + CHASTE_CONST(0.51429999999999998) * var_reversal_potentials__EK - CHASTE_CONST(0.51429999999999998) * var_chaste_interface__membrane__Vm)))); // uA_per_uF const double var_IKp__IKp = (-var_reversal_potentials__EK + var_chaste_interface__membrane__Vm) * mParameters[14] / (_lt_0_row[8]); // uA_per_uF - const double var_IKr__IKr = 0.43033148291193518 * sqrt(mParameters[4]) * (-var_reversal_potentials__EK + var_chaste_interface__membrane__Vm) * mParameters[15] * var_chaste_interface__IKr_xr_gate__xr / (_lt_0_row[9]); // 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 var_IKr__IKr = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::Sqrt(mParameters[4]) * (-var_reversal_potentials__EK + var_chaste_interface__membrane__Vm) * mParameters[15] * var_chaste_interface__IKr_xr_gate__xr / (_lt_0_row[9]); // uA_per_uF + const double var_Ito1__Ito1 = CHASTE_MATH::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 = CHASTE_CONST(26.712338705498265) * CHASTE_MATH::Log(mParameters[5] / var_chaste_interface__Na__Na_i); // mV + const double var_CT_Na_Cl__CT_Na_Cl = CHASTE_CONST(2.4610800000000002e-5) * CHASTE_MATH::Pow((-var_reversal_potentials__ECl + var_reversal_potentials__ENa), 4) / (CHASTE_CONST(59494197.640692554) + CHASTE_MATH::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 + 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 var_INa__INa = CHASTE_MATH::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 = CHASTE_MATH::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 var_IKs__IKs = (1 + CHASTE_CONST(0.59999999999999998) / (1 + CHASTE_CONST(6.4818210260626455e-7) * CHASTE_MATH::Pow((1 / var_chaste_interface__Ca__Ca_i), CHASTE_CONST(1.3999999999999999)))) * (-CHASTE_CONST(26.712338705498265) * CHASTE_MATH::Log((CHASTE_CONST(0.018329999999999999) * mParameters[5] + mParameters[4]) / (CHASTE_CONST(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; @@ -1178,7 +1180,7 @@ std::shared_ptr Celldeck 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]); + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -1244,111 +1246,111 @@ std::shared_ptr Celldeck 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_x1 = 1 + CHASTE_CONST(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_x3 = CHASTE_CONST(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_x8 = CHASTE_MATH::Pow(var_chaste_interface__Ca__Ca_ss_sr, (-2)); + const double var_x9 = CHASTE_MATH::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_x11 = CHASTE_CONST(0.80000000000000004) + var_chaste_interface__Ca__Ca_JSR; + const double var_x12 = CHASTE_MATH::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_x14 = CHASTE_CONST(0.040000000000000001) * var_x13; + const double var_x15 = CHASTE_CONST(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_x18 = var_x5 / CHASTE_MATH::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_x21 = CHASTE_CONST(0.00092000000000000003) - CHASTE_CONST(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_x25 = var_x24 * (CHASTE_CONST(0.75) * var_x17 + CHASTE_CONST(0.75) * var_x19); + const double var_x26 = CHASTE_MATH::Pow(var_x21, (-2)); + const double var_x27 = 1 + CHASTE_CONST(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_x29 = var_x28 * (CHASTE_CONST(0.00017000000000000001) * var_x17 + CHASTE_CONST(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_x31 = var_x24 * (-CHASTE_CONST(5.6250000000000005e-5) * var_x30 + CHASTE_CONST(5.6250000000000005e-5) * var_x0 * var_x16 * var_x8 * var_x9); + const double var_x32 = var_x28 * (-CHASTE_CONST(1.2750000000000002e-8) * var_x30 + CHASTE_CONST(1.2750000000000002e-8) * var_x0 * var_x16 * var_x8 * var_x9); + const double var_x33 = CHASTE_CONST(0.0023800000000000002) + var_chaste_interface__Ca__Ca_i; + const double var_x34 = CHASTE_CONST(0.00050000000000000001) + var_chaste_interface__Ca__Ca_i; + const double var_x35 = CHASTE_MATH::Pow(var_x34, (-2)); + const double var_x36 = 1 + CHASTE_CONST(0.00011900000000000002) / CHASTE_MATH::Pow(var_x33, 2) + CHASTE_CONST(3.5000000000000004e-5) * var_x35; 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 = 0.074871767015605231 * var_chaste_interface__membrane__Vm; - const double var_x42 = exp(var_x41); + const double var_x39 = CHASTE_CONST(0.0054277286135693209) * mParameters[0]; + const double var_x40 = 192970 - CHASTE_CONST(7224.0024405006716) * var_chaste_interface__membrane__Vm; + const double var_x41 = CHASTE_CONST(0.074871767015605231) * var_chaste_interface__membrane__Vm; + const double var_x42 = CHASTE_MATH::Exp(var_x41); const double var_x43 = var_x42; - const double var_x44 = (var_x41 >= -9.9999999999999995e-8) && (var_x41 <= 9.9999999999999995e-8); - const double var_x45 = 14448.004881001343 * var_chaste_interface__membrane__Vm / (-1 + var_x42); + const double var_x44 = (var_x41 >= -CHASTE_CONST(9.9999999999999995e-8)) && (var_x41 <= CHASTE_CONST(9.9999999999999995e-8)); + const double var_x45 = CHASTE_CONST(14448.004881001343) * var_chaste_interface__membrane__Vm / (-1 + var_x42); const double var_x46 = var_x42 * var_x45; - 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_x47 = CHASTE_CONST(3.0851110000007915e-5) * mParameters[10] / var_x34; + const double var_x48 = CHASTE_CONST(0.081415929203539822) * var_x23 * var_x27; + const double var_x49 = 1 + CHASTE_CONST(1.5624999999999999e-8) / CHASTE_MATH::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_x51 = CHASTE_MATH::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_x53 = CHASTE_MATH::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_x55 = var_x53 * (1 + CHASTE_CONST(0.00053738391835633597) * var_x51); + const double var_x56 = (1 + CHASTE_CONST(277.77777777777777) * var_chaste_interface__Ca__Ca_i) * mParameters[3]; + const double var_x57 = 1 / (var_x52 + var_x54 + CHASTE_CONST(669921.875) * var_chaste_interface__Ca__Ca_i + CHASTE_CONST(0.0035999999999999999) * var_x55 + CHASTE_CONST(1.3) * var_x51 + CHASTE_CONST(1860.8670000000004) * var_x56); + const double var_x58 = CHASTE_CONST(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_x60 = 1 / (1 + CHASTE_CONST(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_x63 = CHASTE_MATH::Pow((CHASTE_CONST(1.9405247813411081e-6) * var_x51 + CHASTE_CONST(1.4927113702623908e-6) * var_x52 + CHASTE_CONST(1.4927113702623908e-6) * var_x54 + CHASTE_CONST(0.0027777373294460648) * var_x56 + CHASTE_CONST(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_x66 = -CHASTE_CONST(669921.875) - var_x53 - CHASTE_CONST(516907.50000000012) * mParameters[3]; + const double var_x67 = CHASTE_MATH::Pow(var_x49, (-2)); + const double var_x68 = CHASTE_MATH::Pow(var_chaste_interface__Ca__Ca_i, (-3)); + const double var_x69 = -CHASTE_CONST(0.34100000000000003) * mParameters[3]; const double var_x70 = (var_x69 + var_x43 * var_chaste_interface__Ca__Ca_i) * mParameters[7]; - const double var_x71 = 0.037435883507802616 * var_chaste_interface__membrane__Vm; + const double var_x71 = CHASTE_CONST(0.037435883507802616) * var_chaste_interface__membrane__Vm; const double var_x72 = 192970 - 192970 * var_x71; - const double var_x73 = pow(var_chaste_interface__Na__Na_ss_sr, 3); + const double var_x73 = CHASTE_MATH::Pow(var_chaste_interface__Na__Na_ss_sr, 3); const double var_x74 = var_x73 * mParameters[3]; const double var_x75 = var_x53 * var_chaste_interface__Ca__Ca_ss_sr; - const double var_x76 = var_x53 * (1 + 0.00053738391835633597 * var_x73); - const double var_x77 = (1 + 277.77777777777777 * var_chaste_interface__Ca__Ca_ss_sr) * mParameters[3]; - const double var_x78 = 1 / (var_x74 + var_x75 + 669921.875 * var_chaste_interface__Ca__Ca_ss_sr + 0.0035999999999999999 * var_x76 + 1.3 * var_x73 + 1860.8670000000004 * var_x77); - const double var_x79 = 1 + 1.5624999999999999e-8 * var_x8; + const double var_x76 = var_x53 * (1 + CHASTE_CONST(0.00053738391835633597) * var_x73); + const double var_x77 = (1 + CHASTE_CONST(277.77777777777777) * var_chaste_interface__Ca__Ca_ss_sr) * mParameters[3]; + const double var_x78 = 1 / (var_x74 + var_x75 + CHASTE_CONST(669921.875) * var_chaste_interface__Ca__Ca_ss_sr + CHASTE_CONST(0.0035999999999999999) * var_x76 + CHASTE_CONST(1.3) * var_x73 + CHASTE_CONST(1860.8670000000004) * var_x77); + const double var_x79 = 1 + CHASTE_CONST(1.5624999999999999e-8) * var_x8; const double var_x80 = 1 / var_x79; const double var_x81 = -var_x59 * var_x75 + var_x64 * var_x73 * mParameters[3]; const double var_x82 = var_x61 * var_x80 * var_x81; const double var_x83 = var_x78 * var_x82; const double var_x84 = var_x50 * var_x61 * var_x65; const double var_x85 = var_x62 * var_x78 * var_x80; - const double var_x86 = pow((1.9405247813411081e-6 * var_x73 + 1.4927113702623908e-6 * var_x74 + 1.4927113702623908e-6 * var_x75 + 0.0027777373294460648 * var_x77 + 5.3737609329446059e-9 * var_x76 + var_chaste_interface__Ca__Ca_ss_sr), (-2)); - const double var_x87 = pow(var_x79, (-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_x86 = CHASTE_MATH::Pow((CHASTE_CONST(1.9405247813411081e-6) * var_x73 + CHASTE_CONST(1.4927113702623908e-6) * var_x74 + CHASTE_CONST(1.4927113702623908e-6) * var_x75 + CHASTE_CONST(0.0027777373294460648) * var_x77 + CHASTE_CONST(5.3737609329446059e-9) * var_x76 + var_chaste_interface__Ca__Ca_ss_sr), (-2)); + const double var_x87 = CHASTE_MATH::Pow(var_x79, (-2)); + const double var_x88 = CHASTE_MATH::Pow(var_chaste_interface__Ca__Ca_ss_sr, (-3)); + const double var_x89 = CHASTE_MATH::Pow(var_chaste_interface__Na__Na_i, 2); const double var_x90 = 3 * mParameters[3]; - const double var_x91 = 5.8037463182484285e-6 * var_x53; - const double var_x92 = -3.9000000000000004 * var_x89 - var_x89 * var_x90 - var_x89 * var_x91; + const double var_x91 = CHASTE_CONST(5.8037463182484285e-6) * var_x53; + const double var_x92 = -CHASTE_CONST(3.9000000000000004) * var_x89 - var_x89 * var_x90 - var_x89 * var_x91; const double var_x93 = var_x63 * var_x84; const double var_x94 = var_x57 * var_x61; const double var_x95 = var_x50 * var_x94; const double var_x96 = var_x64 * mParameters[3]; const double var_x97 = 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_x98 = CHASTE_MATH::Pow(var_chaste_interface__Na__Na_ss_sr, 2); + const double var_x99 = -CHASTE_CONST(3.9000000000000004) * var_x98 - var_x90 * var_x98 - var_x91 * var_x98; const double var_x100 = var_x82 * var_x86; const double var_x101 = var_x61 * var_x78; const double var_x102 = var_x101 * var_x80 * 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_x103 = CHASTE_CONST(0.0086999999999999994) + var_chaste_interface__Ca__Ca_ss_CaL; + const double var_x104 = CHASTE_CONST(0.00087000000000000001) + var_chaste_interface__Ca__Ca_ss_CaL; + const double var_x105 = 1 + CHASTE_CONST(0.0097788000000000007) / CHASTE_MATH::Pow(var_x103, 2) + CHASTE_CONST(4.0890000000000003e-5) / CHASTE_MATH::Pow(var_x104, 2); const double var_x106 = 1 / var_x105; const double var_x107 = var_chaste_interface__ICaL__O + var_chaste_interface__ICaL__O_star; const double var_x108 = var_x40 * mParameters[6]; @@ -1358,77 +1360,77 @@ std::shared_ptr Celldeck const double var_x112 = var_x107 * var_x111; const double var_x113 = ((var_x44) ? (var_x112 * var_x72) : (var_x112 * var_x45)); const double var_x114 = ((var_x44) ? (var_x108 * var_x110) : (var_x111 * var_x45)); - const double var_x115 = -0.010458526290002684 * var_x106 * var_x114; - const double var_x116 = 0.0086999999999999994 + var_chaste_interface__Ca__Ca_ss_sr; - const double var_x117 = 0.00087000000000000001 + var_chaste_interface__Ca__Ca_ss_sr; - const double var_x118 = 1 + 0.0097788000000000007 / pow(var_x116, 2) + 4.0890000000000003e-5 / pow(var_x117, 2); + const double var_x115 = -CHASTE_CONST(0.010458526290002684) * var_x106 * var_x114; + const double var_x116 = CHASTE_CONST(0.0086999999999999994) + var_chaste_interface__Ca__Ca_ss_sr; + const double var_x117 = CHASTE_CONST(0.00087000000000000001) + var_chaste_interface__Ca__Ca_ss_sr; + const double var_x118 = 1 + CHASTE_CONST(0.0097788000000000007) / CHASTE_MATH::Pow(var_x116, 2) + CHASTE_CONST(4.0890000000000003e-5) / CHASTE_MATH::Pow(var_x117, 2); const double var_x119 = 1 / var_x118; const double var_x120 = var_x101 * var_x81 * var_x87 * var_x88; - const double var_x121 = 9.3214219101444593e-16 * var_x100; + const double var_x121 = CHASTE_CONST(9.3214219101444593e-16) * var_x100; const double var_x122 = var_x119; const double var_x123 = 1 / var_chaste_interface__Cl__Cl_i; - const double var_x124 = log(100 * var_x123); + const double var_x124 = CHASTE_MATH::Log(100 * var_x123); const double var_x125 = 1 / var_chaste_interface__K__K_i; - const double var_x126 = log(var_x125 * mParameters[4]); - const double var_x127 = 26.712338705498265 * var_x126; - const double var_x128 = var_x127 + 26.712338705498265 * var_x124; - const double var_x129 = 0.00047280839508731927 / (87.825100000000006 + var_x128); + const double var_x126 = CHASTE_MATH::Log(var_x125 * mParameters[4]); + const double var_x127 = CHASTE_CONST(26.712338705498265) * var_x126; + const double var_x128 = var_x127 + CHASTE_CONST(26.712338705498265) * var_x124; + const double var_x129 = CHASTE_CONST(0.00047280839508731927) / (CHASTE_CONST(87.825100000000006) + var_x128); const double var_x130 = var_x123 * var_x129; - const double var_x131 = pow((1 + 0.30415380916729118 * var_x124 + 0.30415380916729118 * var_x126), (-2)); + const double var_x131 = CHASTE_MATH::Pow((1 + CHASTE_CONST(0.30415380916729118) * var_x124 + CHASTE_CONST(0.30415380916729118) * var_x126), (-2)); const double var_x132 = 1 / var_chaste_interface__Na__Na_i; - const double var_x133 = var_x124 + log(var_x132 * mParameters[5]); - const double var_x134 = pow(var_x133, 4); - const double var_x135 = 50.122574928945262 * pow(var_x133, 3) / (59494197.640692554 + 509152.231225166 * var_x134); - const double var_x136 = pow((1 + 0.0085580149227345564 * var_x134), (-2)); - const double var_x137 = pow(var_x133, 7); - const double var_x138 = var_x123 * var_x135 - 7.2099425022651882e-9 * var_x123 * var_x136 * var_x137; + const double var_x133 = var_x124 + CHASTE_MATH::Log(var_x132 * mParameters[5]); + const double var_x134 = CHASTE_MATH::Pow(var_x133, 4); + const double var_x135 = CHASTE_CONST(50.122574928945262) * CHASTE_MATH::Pow(var_x133, 3) / (CHASTE_CONST(59494197.640692554) + CHASTE_CONST(509152.231225166) * var_x134); + const double var_x136 = CHASTE_MATH::Pow((1 + CHASTE_CONST(0.0085580149227345564) * var_x134), (-2)); + const double var_x137 = CHASTE_MATH::Pow(var_x133, 7); + const double var_x138 = var_x123 * var_x135 - CHASTE_CONST(7.2099425022651882e-9) * var_x123 * var_x136 * var_x137; const double var_x139 = var_x125 * var_x129; - const double var_x140 = 6.1298221377044294e-8 * var_x128 * var_x131; - const double var_x141 = var_x132 * var_x135 - 7.2099425022651882e-9 * var_x132 * var_x136 * var_x137; - const double var_x142 = pow(var_chaste_interface__Irel__Irel, 2); - const double var_x143 = 1 / (1 + 6.2499999999999991 * var_x142); + const double var_x140 = CHASTE_CONST(6.1298221377044294e-8) * var_x128 * var_x131; + const double var_x141 = var_x132 * var_x135 - CHASTE_CONST(7.2099425022651882e-9) * var_x132 * var_x136 * var_x137; + const double var_x142 = CHASTE_MATH::Pow(var_chaste_interface__Irel__Irel, 2); + const double var_x143 = 1 / (1 + CHASTE_CONST(6.2499999999999991) * var_x142); const double var_x144 = mParameters[19] * var_chaste_interface__Ito2_i2f_gate__i2f; - const double var_x145 = var_x144 * (1 - 0.018717941753901308 * var_chaste_interface__membrane__Vm); - const double var_x146 = (var_x71 >= -9.9999999999999995e-8) && (var_x71 <= 9.9999999999999995e-8); - const double var_x147 = exp(var_x71); + const double var_x145 = var_x144 * (1 - CHASTE_CONST(0.018717941753901308) * var_chaste_interface__membrane__Vm); + const double var_x146 = (var_x71 >= -CHASTE_CONST(9.9999999999999995e-8)) && (var_x71 <= CHASTE_CONST(9.9999999999999995e-8)); + const double var_x147 = CHASTE_MATH::Exp(var_x71); const double var_x148 = var_chaste_interface__membrane__Vm / (-1 + var_x147); - const double var_x149 = 3612.0012202503358 * var_x148; - const double var_x150 = (-100 * var_x147 + var_chaste_interface__Cl__Cl_i) * var_chaste_interface__Irel__Irel / pow((0.16000000000000003 + var_x142), 2); - const double var_x151 = 1 + 8.1000000000000005e-11 / pow(var_chaste_interface__Ca__Ca_ss_CaL, 4); - const double var_x152 = 1 / (pow(var_x151, 2) * pow(var_chaste_interface__Ca__Ca_ss_CaL, 5)); - const double var_x153 = 9.7200000000000016e-10 * var_x152; + const double var_x149 = CHASTE_CONST(3612.0012202503358) * var_x148; + const double var_x150 = (-100 * var_x147 + var_chaste_interface__Cl__Cl_i) * var_chaste_interface__Irel__Irel / CHASTE_MATH::Pow((CHASTE_CONST(0.16000000000000003) + var_x142), 2); + const double var_x151 = 1 + CHASTE_CONST(8.1000000000000005e-11) / CHASTE_MATH::Pow(var_chaste_interface__Ca__Ca_ss_CaL, 4); + const double var_x152 = 1 / (CHASTE_MATH::Pow(var_x151, 2) * CHASTE_MATH::Pow(var_chaste_interface__Ca__Ca_ss_CaL, 5)); + const double var_x153 = CHASTE_CONST(9.7200000000000016e-10) * var_x152; const double var_x154 = var_x153 * var_chaste_interface__ICaL__C; const double var_x155 = 1 / (_lt_0_row[12]); const double var_x156 = _lt_0_row[11]; const double var_x157 = var_x155 * var_x156; const double var_x158 = 1 / (_lt_0_row[40]); - const double var_x159 = 0.80000000000000004 * var_x158; - const double var_x160 = 0.80000000000000004 - var_x159; + const double var_x159 = CHASTE_CONST(0.80000000000000004) * var_x158; + const double var_x160 = CHASTE_CONST(0.80000000000000004) - var_x159; const double var_x161 = _lt_0_row[17]; const double var_x162 = 1 / (_lt_0_row[16]); - const double var_x163 = var_x161 + 0.032730010146303147 * var_x162; + const double var_x163 = var_x161 + CHASTE_CONST(0.032730010146303147) * var_x162; const double var_x164 = var_x160 * var_x163; const double var_x165 = 1 / var_x151; const double var_x166 = 3 * var_x165; const double var_x167 = var_x164 + var_x166; - const double var_x168 = 0.20000000000000001 + var_x159; + const double var_x168 = CHASTE_CONST(0.20000000000000001) + var_x159; const double var_x169 = var_x163 * var_x168; const double var_x170 = var_x155 * (1 - var_x156); - const double var_x171 = 0.99990000999900008 * var_x158; - const double var_x172 = 0.99990000999900008 - var_x171; - const double var_x173 = 9.9990000999900015e-5 + var_x171; + const double var_x171 = CHASTE_CONST(0.99990000999900008) * var_x158; + const double var_x172 = CHASTE_CONST(0.99990000999900008) - var_x171; + const double var_x173 = CHASTE_CONST(9.9990000999900015e-5) + var_x171; const double var_x174 = var_x168 * var_x172 / (var_x160 * var_x173); - const double var_x175 = 9.7200000000000002e-16 * var_x152 * var_x174; + const double var_x175 = CHASTE_CONST(9.7200000000000002e-16) * var_x152 * var_x174; const double var_x176 = var_x175 * var_chaste_interface__ICaL__CI; - const double var_x177 = 3.0000000000000001e-6 * var_x165 * var_x174; + const double var_x177 = CHASTE_CONST(3.0000000000000001e-6) * var_x165 * var_x174; const double var_x178 = var_x169 + var_x177; - const double var_x179 = 9.0720000000000001e-12 * var_x152 * var_x162 / pow((1 - 0.69999999999999996 * var_x165), 2); + const double var_x179 = CHASTE_CONST(9.0720000000000001e-12) * var_x152 * var_x162 / CHASTE_MATH::Pow((1 - CHASTE_CONST(0.69999999999999996) * var_x165), 2); const double var_x180 = var_x179 * var_chaste_interface__ICaL__C_star; const double var_x181 = var_x179 * var_chaste_interface__ICaL__CI_star; const double var_x182 = -var_x170; - const double var_x183 = var_x161 + var_x162 / (25 - 17.5 * var_x165); + const double var_x183 = var_x161 + var_x162 / (25 - CHASTE_CONST(17.5) * var_x165); const double var_x184 = var_x173 * var_x183; - const double var_x185 = 9.9999999999999995e-7 + var_x170; + const double var_x185 = CHASTE_CONST(9.9999999999999995e-7) + var_x170; const double var_x186 = var_x172 * var_x183; const double var_x187 = -var_x172; const double var_x188 = 1 + var_x186; @@ -1436,46 +1438,46 @@ std::shared_ptr Celldeck const double var_x190 = -var_x157; const double var_x191 = -var_x184; const double var_x192 = _lt_0_row[41]; - const double var_x193 = 0.059458391923439997 * var_x192; + const double var_x193 = CHASTE_CONST(0.059458391923439997) * var_x192; const double var_x194 = _lt_0_row[42]; - const double var_x195 = 0.083986312199829993 * var_x194; + const double var_x195 = CHASTE_CONST(0.083986312199829993) * var_x194; const double var_x196 = _lt_0_row[43]; - const double var_x197 = 0.0062346537747999999 * var_x196; - const double var_x198 = 0.029729195961719999 * var_x192; + const double var_x197 = CHASTE_CONST(0.0062346537747999999) * var_x196; + const double var_x198 = CHASTE_CONST(0.029729195961719999) * var_x192; const double var_x199 = _lt_0_row[44]; - const double var_x200 = 0.01460066118316 * var_x199; - const double var_x201 = 0.014864597980859999 * var_x192; + const double var_x200 = CHASTE_CONST(0.01460066118316) * var_x199; + const double var_x201 = CHASTE_CONST(0.014864597980859999) * var_x192; const double var_x202 = var_x195 + var_x200; - const double var_x203 = 0.16797262439965999 * var_x194; - const double var_x204 = 0.009351980662199999 * var_x196; - const double var_x205 = 0.02920132236632 * var_x199; + const double var_x203 = CHASTE_CONST(0.16797262439965999) * var_x194; + const double var_x204 = CHASTE_CONST(0.009351980662199999) * var_x196; + const double var_x205 = CHASTE_CONST(0.02920132236632) * var_x199; const double var_x206 = var_x203 + var_x205; - const double var_x207 = 0.043801983549479999 * var_x199; - const double var_x208 = 0.0124693075496 * var_x196; + const double var_x207 = CHASTE_CONST(0.043801983549479999) * var_x199; + const double var_x208 = CHASTE_CONST(0.0124693075496) * var_x196; const double var_x209 = _lt_0_row[36]; - const double var_x210 = 0.04459379394258 * var_x192; - const double var_x211 = 0.0031173268874 * var_x196; - const double var_x212 = 0.25195893659948998 * var_x194; + const double var_x210 = CHASTE_CONST(0.04459379394258) * var_x192; + const double var_x211 = CHASTE_CONST(0.0031173268874) * var_x196; + const double var_x212 = CHASTE_CONST(0.25195893659948998) * var_x194; const double var_x213 = var_x207 + var_x212; - const double var_x214 = 0.33594524879931997 * var_x194; - const double var_x215 = 0.058402644732640001 * var_x199; + const double var_x214 = CHASTE_CONST(0.33594524879931997) * var_x194; + const double var_x215 = CHASTE_CONST(0.058402644732640001) * var_x199; const double var_x216 = _lt_0_row[45]; const double var_x217 = -var_x216; const double var_x218 = 1 / var_x5; - const double var_x219 = pow(var_x218, 10); - const double var_x220 = 1 + 2.9619676669542428e-6 * var_x219; - const double var_x221 = var_x218 * var_x219 / pow(var_x220, 2); + const double var_x219 = CHASTE_MATH::Pow(var_x218, 10); + const double var_x220 = 1 + CHASTE_CONST(2.9619676669542428e-6) * var_x219; + const double var_x221 = var_x218 * var_x219 / CHASTE_MATH::Pow(var_x220, 2); const double var_x222 = -var_x221 * var_x7; const double var_x223 = 1 / var_chaste_interface__Ca__Ca_JSR; - const double var_x224 = 1 + 0.0123 * var_x223; + const double var_x224 = 1 + CHASTE_CONST(0.0123) * var_x223; const double var_x225 = 1 / var_x220; - const double var_x226 = 4.75 + 4.75 * var_x225; - const double var_x227 = pow(var_x223, 8); + const double var_x226 = CHASTE_CONST(4.75) + CHASTE_CONST(4.75) * var_x225; + const double var_x227 = CHASTE_MATH::Pow(var_x223, 8); const double var_x228 = 1 + var_x227; const double var_x229 = mParameters[1] / var_x228; const double var_x230 = var_x113 * var_x229; const double var_x231 = -var_chaste_interface__Irel__Irel - var_x226 * var_x230; - const double var_x232 = var_x224 * var_x231 / pow((1 + var_x225), 2); + const double var_x232 = var_x224 * var_x231 / CHASTE_MATH::Pow((1 + var_x225), 2); const double var_x233 = 1 / var_x226; const double var_x234 = var_x224 * var_x233; const double var_x235 = var_x230 * var_x234; @@ -1483,50 +1485,50 @@ std::shared_ptr Celldeck const double var_x237 = var_x10 * var_x221; const double var_x238 = -var_x114 * var_x236; const double var_x239 = 1 / var_chaste_interface__Ca__Ca_i; - const double var_x240 = pow(var_x239, 1.3999999999999999); - const double var_x241 = 1 + 6.4818210260626455e-7 * var_x240; - const double var_x242 = 1 / (0.018329999999999999 * var_chaste_interface__Na__Na_i + var_chaste_interface__K__K_i); - const double var_x243 = -26.712338705498265 * log(var_x242 * (0.018329999999999999 * mParameters[5] + mParameters[4])) + var_chaste_interface__membrane__Vm; + const double var_x240 = CHASTE_MATH::Pow(var_x239, CHASTE_CONST(1.3999999999999999)); + const double var_x241 = 1 + CHASTE_CONST(6.4818210260626455e-7) * var_x240; + const double var_x242 = 1 / (CHASTE_CONST(0.018329999999999999) * var_chaste_interface__Na__Na_i + var_chaste_interface__K__K_i); + const double var_x243 = -CHASTE_CONST(26.712338705498265) * CHASTE_MATH::Log(var_x242 * (CHASTE_CONST(0.018329999999999999) * mParameters[5] + mParameters[4])) + var_chaste_interface__membrane__Vm; const double var_x244 = 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_x245 = -6.1702220000015831e-5 - 3.7021332000009499e-5 / var_x241; + const double var_x245 = -CHASTE_CONST(6.1702220000015831e-5) - CHASTE_CONST(3.7021332000009499e-5) / var_x241; const double var_x246 = var_x245 * mParameters[16]; const double var_x247 = -var_x243 * var_x246; - const double var_x248 = 0.0016482105995215921 * var_x125; - const double var_x249 = sqrt(mParameters[4]); + const double var_x248 = CHASTE_CONST(0.0016482105995215921) * var_x125; + const double var_x249 = CHASTE_MATH::Sqrt(mParameters[4]); const double var_x250 = var_x125 * var_x249; - const double var_x251 = exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__Vm - 6.3708927812613361 * var_x126); + const double var_x251 = CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__membrane__Vm - CHASTE_CONST(6.3708927812613361) * var_x126); const double var_x252 = 1 + var_x251; const double var_x253 = 1 / var_x252; - const double var_x254 = exp(-2.4444678999999998 + 13.738155796237757 * var_x126 - 0.51429999999999998 * var_chaste_interface__membrane__Vm); + const double var_x254 = CHASTE_MATH::Exp(-CHASTE_CONST(2.4444678999999998) + CHASTE_CONST(13.738155796237757) * var_x126 - CHASTE_CONST(0.51429999999999998) * var_chaste_interface__membrane__Vm); const double var_x255 = 1 + var_x254; const double var_x256 = 1 / var_x255; - const double var_x257 = exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__Vm - 2.1455350448256207 * var_x126); - const double var_x258 = exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__Vm - 1.6494869150645177 * var_x126); - const double var_x259 = var_x258 + 0.49124000000000001 * var_x257; + const double var_x257 = CHASTE_MATH::Exp(CHASTE_CONST(0.43983232) + CHASTE_CONST(0.080320000000000003) * var_chaste_interface__membrane__Vm - CHASTE_CONST(2.1455350448256207) * var_x126); + const double var_x258 = CHASTE_MATH::Exp(-CHASTE_CONST(36.698642499999998) + CHASTE_CONST(0.061749999999999999) * var_chaste_interface__membrane__Vm - CHASTE_CONST(1.6494869150645177) * var_x126); + const double var_x259 = var_x258 + CHASTE_CONST(0.49124000000000001) * var_x257; const double var_x260 = var_x256 * var_x259; - const double var_x261 = 1 / (var_x260 + 1.02 * var_x253); + const double var_x261 = 1 / (var_x260 + CHASTE_CONST(1.02) * var_x253); const double var_x262 = var_x253 * mParameters[12]; - const double var_x263 = pow(var_x252, (-2)); + const double var_x263 = CHASTE_MATH::Pow(var_x252, (-2)); const double var_x264 = -var_x127 + var_chaste_interface__membrane__Vm; - const double var_x265 = 1 + 0.38461538461538458 * var_chaste_interface__Na__Na_i; - const double var_x266 = 1 / (1 + exp(-3.444101282717841 - var_x71)); - const double var_x267 = 1 / (1.5 + mParameters[4]); + const double var_x265 = 1 + CHASTE_CONST(0.38461538461538458) * var_chaste_interface__Na__Na_i; + const double var_x266 = 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(3.444101282717841) - var_x71)); + const double var_x267 = 1 / (CHASTE_CONST(1.5) + mParameters[4]); const double var_x268 = var_x266 * var_x267 * mParameters[18] * mParameters[4]; - const double var_x269 = var_x268 * var_x89 / pow(var_x265, 3); - const double var_x270 = pow(var_x265, (-4)); - const double var_x271 = 3.299618375272375e-16 * var_x93; - const double var_x272 = 8.2490459381809375e-17 * var_x100; + const double var_x269 = var_x268 * var_x89 / CHASTE_MATH::Pow(var_x265, 3); + const double var_x270 = CHASTE_MATH::Pow(var_x265, (-4)); + const double var_x271 = CHASTE_CONST(3.299618375272375e-16) * var_x93; + const double var_x272 = CHASTE_CONST(8.2490459381809375e-17) * var_x100; const double var_x273 = var_x147 * mParameters[9]; - const double var_x274 = 0.0016482105995215921 * var_x132; - const double var_x275 = 2.796426573043338e-15 * var_x100; + const double var_x274 = CHASTE_CONST(0.0016482105995215921) * var_x132; + const double var_x275 = CHASTE_CONST(2.796426573043338e-15) * var_x100; - rJacobian[0][0] = 1.0 - (mDt * (-0.00068000000000000005 - 0.0025000000000000005 * var_x2 * var_x5 + 0.0025000000000000005 * var_x0 * var_x2 * var_x7)); + rJacobian[0][0] = 1.0 - (mDt * (-CHASTE_CONST(0.00068000000000000005) - CHASTE_CONST(0.0025000000000000005) * var_x2 * var_x5 + CHASTE_CONST(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][5] = -(mDt * (CHASTE_CONST(3.7500000000000005e-6) * var_x10 * var_x5 + CHASTE_CONST(1.8750000000000003e-7) * var_x8 * CHASTE_MATH::Pow(var_x0, 2) / CHASTE_MATH::Pow(var_x1, 3))); rJacobian[0][6] = 0.0; rJacobian[0][7] = 0.0; rJacobian[0][8] = 0.0; @@ -1557,7 +1559,7 @@ 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_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][1] = 1.0 - (mDt * (-var_x14 + CHASTE_CONST(0.25) * (-var_chaste_interface__Irel__Irel + CHASTE_CONST(0.040000000000000001) * var_chaste_interface__Ca__Ca_NSR - CHASTE_CONST(0.040000000000000001) * var_chaste_interface__Ca__Ca_JSR) / (CHASTE_MATH::Pow(var_x11, 3) * CHASTE_MATH::Pow((CHASTE_CONST(0.125) + var_x12), 2)))); rJacobian[1][2] = -(mDt * (var_x14)); rJacobian[1][3] = 0.0; rJacobian[1][4] = 0.0; @@ -1592,8 +1594,8 @@ std::shared_ptr Celldeck 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][1] = -(mDt * (CHASTE_CONST(0.0034782608695652171))); + rJacobian[2][2] = 1.0 - (mDt * (-CHASTE_CONST(0.0034782608695652171) - CHASTE_CONST(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)); @@ -1626,12 +1628,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_x25 - 0.081415929203539822 * var_x29))); + rJacobian[3][0] = -(mDt * (var_x38 * (-CHASTE_CONST(0.081415929203539822) * var_x25 - CHASTE_CONST(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_x44) ? (var_x40 * var_x43 * mParameters[7]) : (var_x46 * mParameters[7])) - 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_x83 - 0.14749262536873156 * var_chaste_interface__Ca__Ca_i - 3.0851110000007915e-5 * ((var_x44) ? (var_x70 * var_x72) : (var_x45 * var_x70)) + var_x39 * var_chaste_interface__Ca__Ca_NSR + var_x58 * var_x84 - 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 * (-CHASTE_CONST(0.14749262536873156) - var_x47 - var_x48 - CHASTE_CONST(3.0851110000007915e-5) * ((var_x44) ? (var_x40 * var_x43 * mParameters[7]) : (var_x46 * mParameters[7])) - var_x50 * var_x58 * var_x62 + CHASTE_CONST(3.0851110000007915e-5) * var_x35 * var_chaste_interface__Ca__Ca_i * mParameters[10] + CHASTE_CONST(0.081415929203539822) * var_x26 * var_x27 * var_chaste_interface__Ca__Ca_i * mParameters[2] + CHASTE_CONST(1.0998727917574584e-16) * var_x50 * var_x60 * var_x63 * var_x65 * var_x66 * mParameters[17] + CHASTE_CONST(1.5425555000003961e-12) * var_x57 * var_x60 * var_x65 * var_x67 * var_x68 * mParameters[17]) + (CHASTE_CONST(0.00023800000000000004) / CHASTE_MATH::Pow(var_x33, 3) + CHASTE_CONST(7.0000000000000007e-5) / CHASTE_MATH::Pow(var_x34, 3)) * (CHASTE_CONST(0.14749262536873156) * var_chaste_interface__Ca__Ca_ss_sr + CHASTE_CONST(1.2340444000003168e-5) * var_x83 - CHASTE_CONST(0.14749262536873156) * var_chaste_interface__Ca__Ca_i - CHASTE_CONST(3.0851110000007915e-5) * ((var_x44) ? (var_x70 * var_x72) : (var_x45 * var_x70)) + var_x39 * var_chaste_interface__Ca__Ca_NSR + var_x58 * var_x84 - var_x47 * var_chaste_interface__Ca__Ca_i - var_x48 * var_chaste_interface__Ca__Ca_i) / CHASTE_MATH::Pow(var_x36, 2))); rJacobian[3][4] = 0.0; - rJacobian[3][5] = -(mDt * (var_x38 * (0.14749262536873156 - 1.2340444000003168e-5 * var_x85 - 0.081415929203539822 * var_x31 - 0.081415929203539822 * var_x32 + 2.7496819793936459e-17 * var_x60 * var_x66 * var_x80 * var_x81 * var_x86 * mParameters[17] + 3.8563887500009902e-13 * var_x60 * var_x78 * var_x81 * var_x87 * var_x88 * mParameters[17]))); + rJacobian[3][5] = -(mDt * (var_x38 * (CHASTE_CONST(0.14749262536873156) - CHASTE_CONST(1.2340444000003168e-5) * var_x85 - CHASTE_CONST(0.081415929203539822) * var_x31 - CHASTE_CONST(0.081415929203539822) * var_x32 + CHASTE_CONST(2.7496819793936459e-17) * var_x60 * var_x66 * var_x80 * var_x81 * var_x86 * mParameters[17] + CHASTE_CONST(3.8563887500009902e-13) * var_x60 * var_x78 * var_x81 * var_x87 * var_x88 * mParameters[17]))); rJacobian[3][6] = 0.0; rJacobian[3][7] = 0.0; rJacobian[3][8] = 0.0; @@ -1659,13 +1661,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 * (1.0998727917574584e-16 * var_x92 * var_x93 + 0.00014808532800003802 * var_x95 * var_x97))); - rJacobian[3][34] = -(mDt * (var_x38 * (3.7021332000009505e-5 * var_x102 + 2.7496819793936459e-17 * var_x100 * var_x99))); + rJacobian[3][33] = -(mDt * (var_x38 * (CHASTE_CONST(1.0998727917574584e-16) * var_x92 * var_x93 + CHASTE_CONST(0.00014808532800003802) * var_x95 * var_x97))); + rJacobian[3][34] = -(mDt * (var_x38 * (CHASTE_CONST(3.7021332000009505e-5) * var_x102 + CHASTE_CONST(2.7496819793936459e-17) * var_x100 * 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_x106 * (5 + 0.010458526290002684 * var_x109) - (0.019557600000000001 / pow(var_x103, 3) + 8.1780000000000006e-5 / pow(var_x104, 3)) * (5 * var_chaste_interface__Ca__Ca_ss_CaL + 0.010458526290002684 * var_x113 - 5 * var_chaste_interface__Ca__Ca_ss_sr) / pow(var_x105, 2))); + rJacobian[4][4] = 1.0 - (mDt * (-var_x106 * (5 + CHASTE_CONST(0.010458526290002684) * var_x109) - (CHASTE_CONST(0.019557600000000001) / CHASTE_MATH::Pow(var_x103, 3) + CHASTE_CONST(8.1780000000000006e-5) / CHASTE_MATH::Pow(var_x104, 3)) * (5 * var_chaste_interface__Ca__Ca_ss_CaL + CHASTE_CONST(0.010458526290002684) * var_x113 - 5 * var_chaste_interface__Ca__Ca_ss_sr) / CHASTE_MATH::Pow(var_x105, 2))); rJacobian[4][5] = -(mDt * (5 * var_x106)); rJacobian[4][6] = 0.0; rJacobian[4][7] = 0.0; @@ -1700,8 +1702,8 @@ std::shared_ptr Celldeck rJacobian[5][1] = 0.0; rJacobian[5][2] = 0.0; rJacobian[5][3] = -(mDt * (5 * var_x119)); - rJacobian[5][4] = -(mDt * (0.5 * var_x119)); - rJacobian[5][5] = 1.0 - (mDt * (-var_x122 * (5.5 + 0.0004183410516001074 * var_x85 - 1.3073157862503357e-11 * var_x120 - var_x121 * var_x66) - (0.019557600000000001 / pow(var_x116, 3) + 8.1780000000000006e-5 / pow(var_x117, 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_x83) / pow(var_x118, 2))); + rJacobian[5][4] = -(mDt * (CHASTE_CONST(0.5) * var_x119)); + rJacobian[5][5] = 1.0 - (mDt * (-var_x122 * (CHASTE_CONST(5.5) + CHASTE_CONST(0.0004183410516001074) * var_x85 - CHASTE_CONST(1.3073157862503357e-11) * var_x120 - var_x121 * var_x66) - (CHASTE_CONST(0.019557600000000001) / CHASTE_MATH::Pow(var_x116, 3) + CHASTE_CONST(8.1780000000000006e-5) / CHASTE_MATH::Pow(var_x117, 3)) * (CHASTE_CONST(5.5) * var_chaste_interface__Ca__Ca_ss_sr - CHASTE_CONST(0.5) * var_chaste_interface__Ca__Ca_ss_CaL - CHASTE_CONST(0.23999999999999996) * var_chaste_interface__Irel__Irel - 5 * var_chaste_interface__Ca__Ca_i - CHASTE_CONST(0.0004183410516001074) * var_x83) / CHASTE_MATH::Pow(var_x118, 2))); rJacobian[5][6] = 0.0; rJacobian[5][7] = 0.0; rJacobian[5][8] = 0.0; @@ -1727,18 +1729,18 @@ 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_x119)); + rJacobian[5][31] = -(mDt * (CHASTE_CONST(0.23999999999999996) * var_x119)); rJacobian[5][32] = 0.0; rJacobian[5][33] = 0.0; - rJacobian[5][34] = -(mDt * (-var_x122 * (-0.0012550231548003222 * var_x102 - var_x121 * var_x99))); + rJacobian[5][34] = -(mDt * (-var_x122 * (-CHASTE_CONST(0.0012550231548003222) * var_x102 - var_x121 * 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_x130 - var_x138 - 0.0016482105995215921 * var_x123 * mParameters[8] + 6.1298221377044294e-8 * var_x123 * var_x128 * var_x131)); - rJacobian[6][7] = -(mDt * (0.14749262536873156)); + rJacobian[6][6] = 1.0 - (mDt * (-CHASTE_CONST(0.14749262536873156) - var_x130 - var_x138 - CHASTE_CONST(0.0016482105995215921) * var_x123 * mParameters[8] + CHASTE_CONST(6.1298221377044294e-8) * var_x123 * var_x128 * var_x131)); + rJacobian[6][7] = -(mDt * (CHASTE_CONST(0.14749262536873156))); rJacobian[6][8] = 0.0; rJacobian[6][9] = 0.0; rJacobian[6][10] = 0.0; @@ -1772,7 +1774,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_x146) ? (var_x145 * (-96485 + 96485 * var_x143)) : (-var_x144 * var_x149 * (1 - var_x143))))); + rJacobian[7][6] = -(mDt * (5 + CHASTE_CONST(0.0020917052580005369) * ((var_x146) ? (var_x145 * (-96485 + 96485 * var_x143)) : (-var_x144 * var_x149 * (1 - var_x143))))); rJacobian[7][7] = 1.0 - (mDt * (-5)); rJacobian[7][8] = 0.0; rJacobian[7][9] = 0.0; @@ -1797,7 +1799,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_x146) ? (-30875.200000000004 * var_x145 * var_x150) : (-1155.8403904801075 * var_x144 * var_x148 * var_x150)))); + rJacobian[7][31] = -(mDt * (CHASTE_CONST(0.0020917052580005369) * ((var_x146) ? (-CHASTE_CONST(30875.200000000004) * var_x145 * var_x150) : (-CHASTE_CONST(1155.8403904801075) * var_x144 * var_x148 * var_x150)))); rJacobian[7][32] = 0.0; rJacobian[7][33] = 0.0; rJacobian[7][34] = 0.0; @@ -1846,7 +1848,7 @@ std::shared_ptr Celldeck rJacobian[9][7] = 0.0; rJacobian[9][8] = -(mDt * (var_x164)); rJacobian[9][9] = 1.0 - (mDt * (-var_x157 - var_x178)); - rJacobian[9][10] = -(mDt * (9.9999999999999995e-7)); + rJacobian[9][10] = -(mDt * (CHASTE_CONST(9.9999999999999995e-7))); rJacobian[9][11] = 0.0; rJacobian[9][12] = 0.0; rJacobian[9][13] = -(mDt * (var_x170)); @@ -1984,13 +1986,13 @@ std::shared_ptr Celldeck 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_x190)); - rJacobian[13][10] = -(mDt * (-9.9999999999999995e-7)); - rJacobian[13][11] = -(mDt * (-9.9999999999999995e-7)); - rJacobian[13][12] = -(mDt * (-9.9999999999999995e-7 + var_x164)); + rJacobian[13][8] = -(mDt * (-CHASTE_CONST(9.9999999999999995e-7))); + rJacobian[13][9] = -(mDt * (-CHASTE_CONST(9.9999999999999995e-7) - var_x190)); + rJacobian[13][10] = -(mDt * (-CHASTE_CONST(9.9999999999999995e-7))); + rJacobian[13][11] = -(mDt * (-CHASTE_CONST(9.9999999999999995e-7))); + rJacobian[13][12] = -(mDt * (-CHASTE_CONST(9.9999999999999995e-7) + var_x164)); rJacobian[13][13] = 1.0 - (mDt * (-var_x178 - var_x185)); - rJacobian[13][14] = -(mDt * (-9.9999999999999995e-7)); + rJacobian[13][14] = -(mDt * (-CHASTE_CONST(9.9999999999999995e-7))); rJacobian[13][15] = 0.0; rJacobian[13][16] = 0.0; rJacobian[13][17] = 0.0; @@ -2277,7 +2279,7 @@ std::shared_ptr Celldeck rJacobian[21][18] = 0.0; rJacobian[21][19] = 0.0; rJacobian[21][20] = -(mDt * (var_x200)); - rJacobian[21][21] = 1.0 - (mDt * (-0.089538306411019994 - var_x208)); + rJacobian[21][21] = 1.0 - (mDt * (-CHASTE_CONST(0.089538306411019994) - var_x208)); rJacobian[21][22] = 0.0; rJacobian[21][23] = 0.0; rJacobian[21][24] = 0.0; @@ -2592,7 +2594,7 @@ std::shared_ptr Celldeck rJacobian[30][18] = -(mDt * (var_x217)); rJacobian[30][19] = -(mDt * (var_x217)); rJacobian[30][20] = -(mDt * (var_x217)); - rJacobian[30][21] = -(mDt * (0.089538306411019994 - var_x216)); + rJacobian[30][21] = -(mDt * (CHASTE_CONST(0.089538306411019994) - var_x216)); rJacobian[30][22] = -(mDt * (var_x217)); rJacobian[30][23] = -(mDt * (var_x217)); rJacobian[30][24] = -(mDt * (var_x217)); @@ -2606,12 +2608,12 @@ std::shared_ptr Celldeck rJacobian[30][32] = 0.0; rJacobian[30][33] = 0.0; rJacobian[30][34] = 0.0; - rJacobian[31][0] = -(mDt * (6.2357214041141957e-6 * var_x222 * var_x232 + 0.00014069346418032653 * var_x222 * var_x235)); - rJacobian[31][1] = -(mDt * (-0.0123 * var_x231 * var_x233 / pow(var_chaste_interface__Ca__Ca_JSR, 2) - 8 * var_x113 * var_x223 * var_x224 * var_x227 * mParameters[1] / pow(var_x228, 2))); + rJacobian[31][0] = -(mDt * (CHASTE_CONST(6.2357214041141957e-6) * var_x222 * var_x232 + CHASTE_CONST(0.00014069346418032653) * var_x222 * var_x235)); + rJacobian[31][1] = -(mDt * (-CHASTE_CONST(0.0123) * var_x231 * var_x233 / CHASTE_MATH::Pow(var_chaste_interface__Ca__Ca_JSR, 2) - 8 * var_x113 * var_x223 * var_x224 * var_x227 * mParameters[1] / CHASTE_MATH::Pow(var_x228, 2))); rJacobian[31][2] = 0.0; rJacobian[31][3] = 0.0; rJacobian[31][4] = -(mDt * (-var_x109 * var_x236)); - rJacobian[31][5] = -(mDt * (-4.6767910530856466e-10 * var_x232 * var_x237 - 1.0552009813524491e-8 * var_x235 * var_x237)); + rJacobian[31][5] = -(mDt * (-CHASTE_CONST(4.6767910530856466e-10) * var_x232 * var_x237 - CHASTE_CONST(1.0552009813524491e-8) * var_x235 * var_x237)); rJacobian[31][6] = 0.0; rJacobian[31][7] = 0.0; rJacobian[31][8] = 0.0; @@ -2644,7 +2646,7 @@ std::shared_ptr Celldeck rJacobian[32][0] = 0.0; rJacobian[32][1] = 0.0; rJacobian[32][2] = 0.0; - rJacobian[32][3] = -(mDt * (-3.3595190743871034e-11 * var_x239 * var_x240 * var_x243 * var_x244 * mParameters[16] / pow(var_x241, 2))); + rJacobian[32][3] = -(mDt * (-CHASTE_CONST(3.3595190743871034e-11) * var_x239 * var_x240 * var_x243 * var_x244 * mParameters[16] / CHASTE_MATH::Pow(var_x241, 2))); rJacobian[32][4] = 0.0; rJacobian[32][5] = 0.0; rJacobian[32][6] = -(mDt * (-var_x130 + var_x123 * var_x140)); @@ -2673,15 +2675,15 @@ std::shared_ptr Celldeck rJacobian[32][29] = -(mDt * (var_x247)); rJacobian[32][30] = 0.0; rJacobian[32][31] = 0.0; - rJacobian[32][32] = 1.0 - (mDt * (-var_x139 - var_x248 * mParameters[14] / (_lt_0_row[8]) + 6.1298221377044294e-8 * var_x125 * var_x128 * var_x131 - 0.00072346244967216237 * var_x250 * var_x261 * var_x262 + 26.712338705498265 * var_x242 * var_x244 * var_x245 * mParameters[16] - 0.00070927691144329649 * var_x250 * mParameters[15] * var_chaste_interface__IKr_xr_gate__xr / (_lt_0_row[9]) - 2.6031772383887529e-5 * var_x249 * var_x262 * var_x264 * (-var_x256 * (1.053972635420138 * var_x125 * var_x257 + 1.6494869150645177 * var_x125 * var_x258) + 6.4983106368865622 * var_x125 * var_x251 * var_x263 - 13.738155796237757 * var_x125 * var_x254 * var_x259 / pow(var_x255, 2)) / pow((var_x253 + 0.98039215686274506 * var_x260), 2) - var_x248 * 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_x125 * var_x249 * var_x251 * var_x261 * var_x263 * var_x264 * mParameters[12])); - rJacobian[32][33] = -(mDt * (2.1063570778339494e-5 * var_x269 + 0.48963716847178318 * var_x242 * var_x244 * var_x246 - 8.1013733762844218e-6 * var_x268 * var_x270 * var_x51)); + rJacobian[32][32] = 1.0 - (mDt * (-var_x139 - var_x248 * mParameters[14] / (_lt_0_row[8]) + CHASTE_CONST(6.1298221377044294e-8) * var_x125 * var_x128 * var_x131 - CHASTE_CONST(0.00072346244967216237) * var_x250 * var_x261 * var_x262 + CHASTE_CONST(26.712338705498265) * var_x242 * var_x244 * var_x245 * mParameters[16] - CHASTE_CONST(0.00070927691144329649) * var_x250 * mParameters[15] * var_chaste_interface__IKr_xr_gate__xr / (_lt_0_row[9]) - CHASTE_CONST(2.6031772383887529e-5) * var_x249 * var_x262 * var_x264 * (-var_x256 * (CHASTE_CONST(1.053972635420138) * var_x125 * var_x257 + CHASTE_CONST(1.6494869150645177) * var_x125 * var_x258) + CHASTE_CONST(6.4983106368865622) * var_x125 * var_x251 * var_x263 - CHASTE_CONST(13.738155796237757) * var_x125 * var_x254 * var_x259 / CHASTE_MATH::Pow(var_x255, 2)) / CHASTE_MATH::Pow((var_x253 + CHASTE_CONST(0.98039215686274506) * var_x260), 2) - var_x248 * CHASTE_MATH::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] + CHASTE_CONST(0.00017254579424681073) * var_x125 * var_x249 * var_x251 * var_x261 * var_x263 * var_x264 * mParameters[12])); + rJacobian[32][33] = -(mDt * (CHASTE_CONST(2.1063570778339494e-5) * var_x269 + CHASTE_CONST(0.48963716847178318) * var_x242 * var_x244 * var_x246 - CHASTE_CONST(8.1013733762844218e-6) * var_x268 * var_x270 * var_x51)); 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_x271 * var_x66 - 4.6276665000011881e-12 * var_x65 * var_x67 * var_x68 * var_x94 + 0.00014808532800003802 * var_x50 * var_x53 * var_x57 * var_x59 * var_x60 * mParameters[17])); + rJacobian[33][3] = -(mDt * (-var_x271 * var_x66 - CHASTE_CONST(4.6276665000011881e-12) * var_x65 * var_x67 * var_x68 * var_x94 + CHASTE_CONST(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_x120 - var_x272 * var_x66 + 3.7021332000009505e-5 * var_x53 * var_x59 * var_x60 * var_x78 * var_x80 * mParameters[17])); + rJacobian[33][5] = -(mDt * (-CHASTE_CONST(1.156916625000297e-12) * var_x120 - var_x272 * var_x66 + CHASTE_CONST(3.7021332000009505e-5) * var_x53 * var_x59 * var_x60 * var_x78 * var_x80 * mParameters[17])); rJacobian[33][6] = -(mDt * (-var_x138)); rJacobian[33][7] = 0.0; rJacobian[33][8] = 0.0; @@ -2709,14 +2711,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_x141 - 3.1595356167509241e-5 * var_x269 - 6.1702220000015831e-5 * ((var_x146) ? (var_x273 * (96485 - 1806.0006101251679 * var_chaste_interface__membrane__Vm)) : (var_x149 * var_x273)) - var_x271 * var_x92 - 0.00044425598400011404 * var_x95 * var_x97 - 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 + 1.2152060064426631e-5 * var_x266 * var_x267 * var_x270 * var_x51 * mParameters[18] * mParameters[4])); - rJacobian[33][34] = -(mDt * (0.14749262536873156 - 0.00011106399600002851 * var_x102 - var_x272 * var_x99)); + rJacobian[33][33] = 1.0 - (mDt * (-CHASTE_CONST(0.14749262536873156) - var_x141 - CHASTE_CONST(3.1595356167509241e-5) * var_x269 - CHASTE_CONST(6.1702220000015831e-5) * ((var_x146) ? (var_x273 * (96485 - CHASTE_CONST(1806.0006101251679) * var_chaste_interface__membrane__Vm)) : (var_x149 * var_x273)) - var_x271 * var_x92 - CHASTE_CONST(0.00044425598400011404) * var_x95 * var_x97 - var_x274 * CHASTE_MATH::Pow(var_chaste_interface__INaL_mL_gate__mL, 3) * mParameters[13] * var_chaste_interface__INaL_hL_gate__hL - var_x274 * CHASTE_MATH::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 + CHASTE_CONST(1.2152060064426631e-5) * var_x266 * var_x267 * var_x270 * var_x51 * mParameters[18] * mParameters[4])); + rJacobian[33][34] = -(mDt * (CHASTE_CONST(0.14749262536873156) - CHASTE_CONST(0.00011106399600002851) * var_x102 - var_x272 * 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_x120 - var_x275 * var_x66 + 0.0012550231548003222 * var_x53 * var_x59 * var_x60 * var_x78 * var_x80 * mParameters[17])); + rJacobian[34][5] = -(mDt * (-CHASTE_CONST(3.9219473587510072e-11) * var_x120 - var_x275 * var_x66 + CHASTE_CONST(0.0012550231548003222) * var_x53 * var_x59 * var_x60 * var_x78 * var_x80 * mParameters[17])); rJacobian[34][6] = 0.0; rJacobian[34][7] = 0.0; rJacobian[34][8] = 0.0; @@ -2745,14 +2747,14 @@ 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_x102 - var_x275 * var_x99)); + rJacobian[34][34] = 1.0 - (mDt * (-5 - CHASTE_CONST(0.0037650694644009667) * var_x102 - var_x275 * 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]); + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -2836,27 +2838,27 @@ std::shared_ptr Celldeck 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] + 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))) * (((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_IpCa__IpCa = var_chaste_interface__Ca__Ca_i * mParameters[10] / (CHASTE_CONST(0.00050000000000000001) + var_chaste_interface__Ca__Ca_i); // uA_per_uF + const double var_membrane__i_Stim = CHASTE_STIM(var_chaste_interface__environment__time) / CHASTE_CAP(); // uA_per_uF + const double var_ICaL__ICaL = (var_chaste_interface__ICaL__O + var_chaste_interface__ICaL__O_star) * (((CHASTE_CONST(0.074871767015605231) * var_chaste_interface__membrane__Vm >= -CHASTE_CONST(9.9999999999999995e-8)) && (CHASTE_CONST(0.074871767015605231) * var_chaste_interface__membrane__Vm <= CHASTE_CONST(9.9999999999999995e-8))) ? (192970 * (1 - CHASTE_CONST(0.037435883507802616) * var_chaste_interface__membrane__Vm) * (-CHASTE_CONST(0.34100000000000003) * mParameters[3] + var_chaste_interface__Ca__Ca_ss_CaL * _lt_0_row[4]) * mParameters[6]) : (CHASTE_CONST(14448.004881001343) * (-CHASTE_CONST(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 = (((CHASTE_CONST(0.074871767015605231) * var_chaste_interface__membrane__Vm >= -CHASTE_CONST(9.9999999999999995e-8)) && (CHASTE_CONST(0.074871767015605231) * var_chaste_interface__membrane__Vm <= CHASTE_CONST(9.9999999999999995e-8))) ? (192970 * (1 - CHASTE_CONST(0.037435883507802616) * var_chaste_interface__membrane__Vm) * (-CHASTE_CONST(0.34100000000000003) * mParameters[3] + var_chaste_interface__Ca__Ca_i * _lt_0_row[4]) * mParameters[7]) : (CHASTE_CONST(14448.004881001343) * (-CHASTE_CONST(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 = CHASTE_CONST(0.20000000000000001) * (CHASTE_MATH::Pow(var_chaste_interface__Na__Na_ss_sr, 3) * mParameters[3] * _lt_0_row[0] - CHASTE_MATH::Pow(mParameters[5], 3) * var_chaste_interface__Ca__Ca_ss_sr * _lt_0_row[1]) * mParameters[17] / ((_lt_0_row[2]) * (1 + CHASTE_CONST(1.5624999999999999e-8) / CHASTE_MATH::Pow(var_chaste_interface__Ca__Ca_ss_sr, 2)) * (CHASTE_CONST(669921.875) * var_chaste_interface__Ca__Ca_ss_sr + CHASTE_CONST(1.3) * CHASTE_MATH::Pow(var_chaste_interface__Na__Na_ss_sr, 3) + CHASTE_MATH::Pow(var_chaste_interface__Na__Na_ss_sr, 3) * mParameters[3] + CHASTE_MATH::Pow(mParameters[5], 3) * var_chaste_interface__Ca__Ca_ss_sr + CHASTE_CONST(0.0035999999999999999) * CHASTE_MATH::Pow(mParameters[5], 3) * (1 + CHASTE_CONST(0.00053738391835633597) * CHASTE_MATH::Pow(var_chaste_interface__Na__Na_ss_sr, 3)) + CHASTE_CONST(1860.8670000000004) * (1 + CHASTE_CONST(277.77777777777777) * var_chaste_interface__Ca__Ca_ss_sr) * mParameters[3])); // uA_per_uF + const double var_INaCa__INaCa = CHASTE_CONST(0.80000000000000004) * (CHASTE_MATH::Pow(var_chaste_interface__Na__Na_i, 3) * mParameters[3] * _lt_0_row[0] - CHASTE_MATH::Pow(mParameters[5], 3) * var_chaste_interface__Ca__Ca_i * _lt_0_row[1]) * mParameters[17] / ((_lt_0_row[2]) * (1 + CHASTE_CONST(1.5624999999999999e-8) / CHASTE_MATH::Pow(var_chaste_interface__Ca__Ca_i, 2)) * (CHASTE_CONST(669921.875) * var_chaste_interface__Ca__Ca_i + CHASTE_CONST(1.3) * CHASTE_MATH::Pow(var_chaste_interface__Na__Na_i, 3) + CHASTE_MATH::Pow(var_chaste_interface__Na__Na_i, 3) * mParameters[3] + CHASTE_MATH::Pow(mParameters[5], 3) * var_chaste_interface__Ca__Ca_i + CHASTE_CONST(0.0035999999999999999) * CHASTE_MATH::Pow(mParameters[5], 3) * (1 + CHASTE_CONST(0.00053738391835633597) * CHASTE_MATH::Pow(var_chaste_interface__Na__Na_i, 3)) + CHASTE_CONST(1860.8670000000004) * (1 + CHASTE_CONST(277.77777777777777) * var_chaste_interface__Ca__Ca_i) * mParameters[3])) + var_INaCa__INaCa_ss_sr; // uA_per_uF + const double var_INaK__INaK = CHASTE_CONST(0.056895766954938545) * CHASTE_MATH::Pow(var_chaste_interface__Na__Na_i, 3) * mParameters[18] * mParameters[4] / (CHASTE_MATH::Pow((1 + CHASTE_CONST(0.38461538461538458) * var_chaste_interface__Na__Na_i), 3) * (_lt_0_row[3]) * (CHASTE_CONST(1.5) + mParameters[4])); // uA_per_uF + const double var_INab__phi = CHASTE_CONST(0.037435883507802616) * var_chaste_interface__membrane__Vm; // dimensionless + const double var_INab__INab = (((var_INab__phi >= -CHASTE_CONST(9.9999999999999995e-8)) && (var_INab__phi <= CHASTE_CONST(9.9999999999999995e-8))) ? (96485 * (1 - CHASTE_CONST(0.5) * var_INab__phi) * (-mParameters[5] + var_chaste_interface__Na__Na_i * CHASTE_MATH::Exp(var_INab__phi)) * mParameters[9]) : (96485 * (-mParameters[5] + var_chaste_interface__Na__Na_i * CHASTE_MATH::Exp(var_INab__phi)) * mParameters[9] * var_INab__phi / (-1 + CHASTE_MATH::Exp(var_INab__phi)))); // uA_per_uF + const double var_Ito2__Ito2 = (1 - 1 / (1 + CHASTE_CONST(6.2499999999999991) * CHASTE_MATH::Pow(var_chaste_interface__Irel__Irel, 2))) * (((CHASTE_CONST(0.037435883507802616) * var_chaste_interface__membrane__Vm >= -CHASTE_CONST(9.9999999999999995e-8)) && (CHASTE_CONST(0.037435883507802616) * var_chaste_interface__membrane__Vm <= CHASTE_CONST(9.9999999999999995e-8))) ? (-96485 * (1 - CHASTE_CONST(0.018717941753901308) * var_chaste_interface__membrane__Vm) * (_lt_0_row[6] + var_chaste_interface__Cl__Cl_i) * mParameters[19]) : (-CHASTE_CONST(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 = -CHASTE_CONST(26.712338705498265) * CHASTE_MATH::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_reversal_potentials__EK = CHASTE_CONST(26.712338705498265) * CHASTE_MATH::Log(mParameters[4] / var_chaste_interface__K__K_i); // mV + const double var_IK1__IK1 = CHASTE_CONST(0.4389381125701739) * CHASTE_MATH::Sqrt(mParameters[4]) * (-var_reversal_potentials__EK + var_chaste_interface__membrane__Vm) * mParameters[12] / ((1 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__membrane__Vm - CHASTE_CONST(0.23849999999999999) * var_reversal_potentials__EK)) * (CHASTE_CONST(1.02) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__membrane__Vm - CHASTE_CONST(0.23849999999999999) * var_reversal_potentials__EK)) + (CHASTE_CONST(0.49124000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.43983232) + CHASTE_CONST(0.080320000000000003) * var_chaste_interface__membrane__Vm - CHASTE_CONST(0.080320000000000003) * var_reversal_potentials__EK) + CHASTE_MATH::Exp(-CHASTE_CONST(36.698642499999998) + CHASTE_CONST(0.061749999999999999) * var_chaste_interface__membrane__Vm - CHASTE_CONST(0.061749999999999999) * var_reversal_potentials__EK)) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.4444678999999998) + CHASTE_CONST(0.51429999999999998) * var_reversal_potentials__EK - CHASTE_CONST(0.51429999999999998) * var_chaste_interface__membrane__Vm)))); // uA_per_uF const double var_IKp__IKp = (-var_reversal_potentials__EK + var_chaste_interface__membrane__Vm) * mParameters[14] / (_lt_0_row[8]); // uA_per_uF - const double var_IKr__IKr = 0.43033148291193518 * sqrt(mParameters[4]) * (-var_reversal_potentials__EK + var_chaste_interface__membrane__Vm) * mParameters[15] * var_chaste_interface__IKr_xr_gate__xr / (_lt_0_row[9]); // 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 var_IKr__IKr = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::Sqrt(mParameters[4]) * (-var_reversal_potentials__EK + var_chaste_interface__membrane__Vm) * mParameters[15] * var_chaste_interface__IKr_xr_gate__xr / (_lt_0_row[9]); // uA_per_uF + const double var_Ito1__Ito1 = CHASTE_MATH::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 = CHASTE_CONST(26.712338705498265) * CHASTE_MATH::Log(mParameters[5] / var_chaste_interface__Na__Na_i); // mV + const double var_INa__INa = CHASTE_MATH::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 = CHASTE_MATH::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 + CHASTE_CONST(0.59999999999999998) / (1 + CHASTE_CONST(6.4818210260626455e-7) * CHASTE_MATH::Pow((1 / var_chaste_interface__Ca__Ca_i), CHASTE_CONST(1.3999999999999999)))) * (-CHASTE_CONST(26.712338705498265) * CHASTE_MATH::Log((CHASTE_CONST(0.018329999999999999) * mParameters[5] + mParameters[4]) / (CHASTE_CONST(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 - var_INaCa__INaCa - var_INaCa__INaCa_ss_sr - var_INaK__INaK; // mV / ms rY[0] += mDt*d_dt_chaste_interface_var_membrane__Vm; @@ -2866,7 +2868,7 @@ std::shared_ptr Celldeck { // Time units: millisecond std::vector& rY = rGetStateVariables(); - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -2897,47 +2899,47 @@ std::shared_ptr Celldeck // 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_IKr_xr_gate__B_1 = -CHASTE_CONST(0.13600000000000001); + const double var_IKr_xr_gate__A_1 = -CHASTE_CONST(0.00059999999999999995) / var_IKr_xr_gate__B_1; + const double var_IKr_xr_gate__B_2 = CHASTE_CONST(0.1522); + const double var_IKr_xr_gate__A_2 = CHASTE_CONST(0.00029999999999999997) / var_IKr_xr_gate__B_2; + const double var_IKr_xr_gate__v0_1 = CHASTE_CONST(1.7383999999999999); + const double var_IKr_xr_gate__v0_2 = -CHASTE_CONST(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_INaL_mL_gate__B = -CHASTE_CONST(0.10000000000000001); + const double var_INaL_mL_gate__A = -CHASTE_CONST(0.32000000000000001) / var_INaL_mL_gate__B; + const double var_INaL_mL_gate__v0 = -CHASTE_CONST(47.130000000000003); + const double var_INa_m_gate__B = -CHASTE_CONST(0.10000000000000001); + const double var_INa_m_gate__A = -CHASTE_CONST(0.32000000000000001) / var_INa_m_gate__B; + const double var_INa_m_gate__v0 = -CHASTE_CONST(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__temp_part_1 = (((var_IKr_xr_gate__U_1 >= -CHASTE_CONST(9.9999999999999995e-8)) && (var_IKr_xr_gate__U_1 <= CHASTE_CONST(9.9999999999999995e-8))) ? ((1 - CHASTE_CONST(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 + CHASTE_MATH::Exp(var_IKr_xr_gate__U_1)))); + const double var_IKr_xr_gate__temp_part_2 = (((var_IKr_xr_gate__U_2 >= -CHASTE_CONST(9.9999999999999995e-8)) && (var_IKr_xr_gate__U_2 <= CHASTE_CONST(9.9999999999999995e-8))) ? ((1 - CHASTE_CONST(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 + CHASTE_MATH::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_hL_gate__hL_infinity = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(14.918032786885247) + CHASTE_CONST(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_INaL_mL_gate__amL = (((var_INaL_mL_gate__U >= -CHASTE_CONST(9.9999999999999995e-8)) && (var_INaL_mL_gate__U <= CHASTE_CONST(9.9999999999999995e-8))) ? ((1 - CHASTE_CONST(0.5) * var_INaL_mL_gate__U) * var_INaL_mL_gate__A) : (var_INaL_mL_gate__A * var_INaL_mL_gate__U / (-1 + CHASTE_MATH::Exp(var_INaL_mL_gate__U)))); + const double var_INaL_mL_gate__bmL = CHASTE_CONST(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_INa_m_gate__am = (((var_INa_m_gate__U >= -CHASTE_CONST(9.9999999999999995e-8)) && (var_INa_m_gate__U <= CHASTE_CONST(9.9999999999999995e-8))) ? ((1 - CHASTE_CONST(0.5) * var_INa_m_gate__U) * var_INa_m_gate__A) : (var_INa_m_gate__A * var_INa_m_gate__U / (-1 + CHASTE_MATH::Exp(var_INa_m_gate__U)))); + const double var_INa_m_gate__bm = CHASTE_CONST(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__alpha_a = CHASTE_CONST(0.82719827942757873) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(0.62658348478969694) - CHASTE_CONST(0.034035137876343539) * var_chaste_interface__membrane__Vm)); + const double var_Ito1_a_gate__beta_a = CHASTE_CONST(3.5) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(3.403513787634354) + CHASTE_CONST(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_Ito1_i1f_gate__alpha_i1f = CHASTE_CONST(0.025000000000000001) / (_lt_0_row[29]); + const double var_Ito1_i1f_gate__beta_i1f = CHASTE_CONST(0.10208977775055385) / (_lt_0_row[30]); + const double var_Ito1_i1s_gate__alpha_i1s = CHASTE_CONST(0.0040000000000000001) / (_lt_0_row[31]); + const double var_Ito1_i1s_gate__beta_i1s = CHASTE_CONST(0.10208977775055385) / (_lt_0_row[30]); + const double var_Ito2_i2f_gate__alpha_i2f = CHASTE_CONST(0.025000000000000001) / (_lt_0_row[29]); + const double var_Ito2_i2f_gate__beta_i2f = CHASTE_CONST(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); @@ -2996,7 +2998,7 @@ std::shared_ptr Celldeck { // Inputs: // Time units: millisecond - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -3084,125 +3086,125 @@ std::shared_ptr Celldeck 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_0 = CHASTE_CONST(0.050000000000000003); // dimensionless + const double var_CaMK_active__Km = CHASTE_CONST(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__gamma_Cao = CHASTE_CONST(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__gamma_Ca_o = CHASTE_CONST(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_IKs__gKs = (1 + CHASTE_CONST(0.59999999999999998) / (1 + CHASTE_CONST(6.4818210260626455e-7) * CHASTE_MATH::Pow((1 / var_chaste_interface__Ca__Ca_i), CHASTE_CONST(1.3999999999999999)))) * mParameters[16]; // mS_per_uF + const double var_INaCa__KmCa_act = CHASTE_CONST(0.000125); // mM + const double var_INaCa__KmCai = CHASTE_CONST(0.0035999999999999999); // mM + const double var_INaCa__KmCao = CHASTE_CONST(1.3); // mM + const double var_INaCa__KmNai = CHASTE_CONST(12.300000000000001); // mM + const double var_INaCa__KmNao = CHASTE_CONST(87.5); // mM + const double var_INaCa__denom_1 = 1 + CHASTE_MATH::Pow(var_INaCa__KmCa_act, 2) / CHASTE_MATH::Pow(var_chaste_interface__Ca__Ca_i, 2); // dimensionless + const double var_INaCa__denom_ss_1 = 1 + CHASTE_MATH::Pow(var_INaCa__KmCa_act, 2) / CHASTE_MATH::Pow(var_chaste_interface__Ca__Ca_ss_sr, 2); // dimensionless + const double var_INaCa__eta = CHASTE_CONST(0.27000000000000002); // dimensionless + const double var_INaCa__ksat = CHASTE_CONST(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__kmko = CHASTE_CONST(1.5); // mM + const double var_INaK__kmnai = CHASTE_CONST(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__KmpCa = CHASTE_CONST(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_IpCa__IpCa_converted = CHASTE_CAP() * 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__kCa_ito2 = CHASTE_CONST(0.40000000000000002); // mM_per_ms + const double var_Ito2__KCa_ito2 = 1 - 1 / (1 + CHASTE_MATH::Pow(var_chaste_interface__Irel__Irel, 2) / CHASTE_MATH::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_bar = CHASTE_CONST(0.75); // dimensionless + const double var_Iup__delta_kmPLB_bar = CHASTE_CONST(0.00017000000000000001); // mM + const double var_Iup__kmCaMK = CHASTE_CONST(0.14999999999999999); // mM const double var_Iup__delta_iupCaMK = var_CaMK_active__CaMK_active * var_Iup__delta_iupCaMK_bar / (var_CaMK_active__CaMK_active + var_Iup__kmCaMK); // dimensionless const double var_Iup__delta_kmPLB = var_CaMK_active__CaMK_active * var_Iup__delta_kmPLB_bar / (var_CaMK_active__CaMK_active + var_Iup__kmCaMK); // mM - const double var_Iup__kmup = 0.00092000000000000003; // mM + const double var_Iup__kmup = CHASTE_CONST(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_INaK__PNa = CHASTE_MATH::Pow(var_chaste_interface__Na__Na_i, 3) / CHASTE_MATH::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_membrane__i_Stim_converted = CHASTE_STIM(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_INaCa__denom_3 = CHASTE_MATH::Pow(var_INaCa__KmNao, 3) * var_chaste_interface__Ca__Ca_i + CHASTE_MATH::Pow(var_chaste_interface__Na__Na_i, 3) * var_INaCa__KmCao + CHASTE_MATH::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 = CHASTE_MATH::Pow(var_INaCa__KmNao, 3) * var_chaste_interface__Ca__Ca_ss_sr + CHASTE_MATH::Pow(var_chaste_interface__Na__Na_ss_sr, 3) * var_INaCa__KmCao + CHASTE_MATH::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_IK1__gK1 = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::Sqrt(mParameters[4]) * mParameters[12]; // mS_per_uF + const double var_IKr__gKr = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::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_INaCa__denom_4 = CHASTE_MATH::Pow(var_chaste_interface__Na__Na_i, 3) * mParameters[3] + CHASTE_MATH::Pow(mParameters[5], 3) * var_chaste_interface__Ca__Ca_i + CHASTE_MATH::Pow(mParameters[5], 3) * (1 + CHASTE_MATH::Pow(var_chaste_interface__Na__Na_i, 3) / CHASTE_MATH::Pow(var_INaCa__KmNai, 3)) * var_INaCa__KmCai; // mM4 + const double var_INaCa__denom_ss_4 = CHASTE_MATH::Pow(var_chaste_interface__Na__Na_ss_sr, 3) * mParameters[3] + CHASTE_MATH::Pow(mParameters[5], 3) * var_chaste_interface__Ca__Ca_ss_sr + CHASTE_MATH::Pow(mParameters[5], 3) * (1 + CHASTE_MATH::Pow(var_chaste_interface__Na__Na_ss_sr, 3) / CHASTE_MATH::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__A = 4 * CHASTE_MATH::Pow(var_model_parameters__F, 2) * (-var_ICaL__gamma_Cao * mParameters[3] + var_chaste_interface__Ca__Ca_ss_CaL * var_ICaL__gamma_Cai * CHASTE_MATH::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_max = (((var_ICaL__U >= -CHASTE_CONST(9.9999999999999995e-8)) && (var_ICaL__U <= CHASTE_CONST(9.9999999999999995e-8))) ? ((1 - CHASTE_CONST(0.5) * var_ICaL__U) * var_ICaL__A) : (var_ICaL__A * var_ICaL__U / (-1 + CHASTE_MATH::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_ICaL__ICaL_converted = CHASTE_CAP() * 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__A = 4 * CHASTE_MATH::Pow(var_model_parameters__F, 2) * (-var_ICab__gamma_Ca_o * mParameters[3] + var_chaste_interface__Ca__Ca_i * var_ICab__gamma_Ca_i * CHASTE_MATH::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_ICab__ICab = (((var_ICab__U >= -CHASTE_CONST(9.9999999999999995e-8)) && (var_ICab__U <= CHASTE_CONST(9.9999999999999995e-8))) ? ((1 - CHASTE_CONST(0.5) * var_ICab__U) * var_ICab__A) : (var_ICab__A * var_ICab__U / (-1 + CHASTE_MATH::Exp(var_ICab__U)))); // uA_per_uF + const double var_ICab__ICab_converted = CHASTE_CAP() * var_ICab__ICab; // uA_per_cm2 + const double var_INaCa__denom_2 = 1 + var_INaCa__ksat * CHASTE_MATH::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 * CHASTE_MATH::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 = CHASTE_CONST(0.20000000000000001) * (CHASTE_MATH::Pow(var_chaste_interface__Na__Na_ss_sr, 3) * mParameters[3] * CHASTE_MATH::Exp(var_INaCa__eta * var_chaste_interface__membrane__Vm * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T)) - CHASTE_MATH::Pow(mParameters[5], 3) * var_chaste_interface__Ca__Ca_ss_sr * CHASTE_MATH::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_ss_sr_converted = CHASTE_CAP() * var_INaCa__INaCa_ss_sr; // uA_per_cm2 + const double var_INaCa__numerator = CHASTE_CONST(0.80000000000000004) * (CHASTE_MATH::Pow(var_chaste_interface__Na__Na_i, 3) * mParameters[3] * CHASTE_MATH::Exp(var_INaCa__eta * var_chaste_interface__membrane__Vm * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T)) - CHASTE_MATH::Pow(mParameters[5], 3) * var_chaste_interface__Ca__Ca_i * CHASTE_MATH::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_INaCa__INaCa_converted = CHASTE_CAP() * 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__fv = 1 / (1 + CHASTE_MATH::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_INaK__INaK_converted = CHASTE_CAP() * 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__A = (-mParameters[5] + var_chaste_interface__Na__Na_i * CHASTE_MATH::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_INab__INab = (((var_INab__U >= -CHASTE_CONST(9.9999999999999995e-8)) && (var_INab__U <= CHASTE_CONST(9.9999999999999995e-8))) ? ((1 - CHASTE_CONST(0.5) * var_INab__U) * var_INab__A) : (var_INab__A * var_INab__U / (-1 + CHASTE_MATH::Exp(var_INab__U)))); // uA_per_uF + const double var_INab__INab_converted = CHASTE_CAP() * 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__A = -CHASTE_MATH::Pow(var_Ito2__zCl, 2) * CHASTE_MATH::Pow(var_model_parameters__F, 2) * (-var_model_parameters__Cl_o * CHASTE_MATH::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_max = (((var_Ito2__U >= -CHASTE_CONST(9.9999999999999995e-8)) && (var_Ito2__U <= CHASTE_CONST(9.9999999999999995e-8))) ? ((1 - CHASTE_CONST(0.5) * var_Ito2__U) * var_Ito2__A) : (var_Ito2__A * var_Ito2__U / (-1 + CHASTE_MATH::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_Ito2__Ito2_converted = CHASTE_CAP() * var_Ito2__Ito2; // uA_per_cm2 + const double var_reversal_potentials__ECl = -var_model_parameters__R * var_model_parameters__T * CHASTE_MATH::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_IClb__IClb_converted = CHASTE_CAP() * var_IClb__IClb; // uA_per_cm2 + const double var_reversal_potentials__EK = var_model_parameters__R * var_model_parameters__T * CHASTE_MATH::Log(mParameters[4] / var_chaste_interface__K__K_i) / var_model_parameters__F; // mV + const double var_IK1_K1_gate__alpha_k1 = CHASTE_CONST(1.02) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__membrane__Vm - CHASTE_CONST(0.23849999999999999) * var_reversal_potentials__EK)); // dimensionless + const double var_IK1_K1_gate__beta_k1 = (CHASTE_CONST(0.49124000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.43983232) + CHASTE_CONST(0.080320000000000003) * var_chaste_interface__membrane__Vm - CHASTE_CONST(0.080320000000000003) * var_reversal_potentials__EK) + CHASTE_MATH::Exp(-CHASTE_CONST(36.698642499999998) + CHASTE_CONST(0.061749999999999999) * var_chaste_interface__membrane__Vm - CHASTE_CONST(0.061749999999999999) * var_reversal_potentials__EK)) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.4444678999999998) + CHASTE_CONST(0.51429999999999998) * var_reversal_potentials__EK - CHASTE_CONST(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_IK1__IK1_converted = CHASTE_CAP() * 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_IKp__IKp_converted = CHASTE_CAP() * 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_IKr__IKr_converted = CHASTE_CAP() * var_IKr__IKr; // uA_per_cm2 + const double var_Ito1__Ito1 = CHASTE_MATH::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 = CHASTE_CAP() * var_Ito1__Ito1; // uA_per_cm2 + const double var_reversal_potentials__ENa = var_model_parameters__R * var_model_parameters__T * CHASTE_MATH::Log(mParameters[5] / var_chaste_interface__Na__Na_i) / var_model_parameters__F; // mV + const double var_INa__INa = CHASTE_MATH::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 = CHASTE_CAP() * var_INa__INa; // uA_per_cm2 + const double var_INaL__INaL = CHASTE_MATH::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 = CHASTE_CAP() * var_INaL__INaL; // uA_per_cm2 + const double var_reversal_potentials__prnak = CHASTE_CONST(0.018329999999999999); // dimensionless + const double var_reversal_potentials__EKs = var_model_parameters__R * var_model_parameters__T * CHASTE_MATH::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 + const double var_IKs__IKs_converted = CHASTE_CAP() * var_IKs__IKs; // uA_per_cm2 std::vector dqs(20); dqs[0] = var_Ileak__Ileak; diff --git a/chaste_codegen/data/tests/chaste_reference_models/BEopt/decker_2009.hpp b/chaste_codegen/data/tests/chaste_reference_models/BEopt/decker_2009.hpp index 7e6a4c755..5d624657a 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/BEopt/decker_2009.hpp +++ b/chaste_codegen/data/tests/chaste_reference_models/BEopt/decker_2009.hpp @@ -16,8 +16,13 @@ #include "ChasteSerialization.hpp" #include #include "AbstractStimulusFunction.hpp" +#if USING_DEVICE_COMPILER +#include "StimulusEvaluatorCuda.hpp" +#endif #include "AbstractBackwardEulerCardiacCell.hpp" + + class Celldecker_2009FromCellMLBackwardEulerOpt : public AbstractBackwardEulerCardiacCell<35> { friend class boost::serialization::access; @@ -38,19 +43,25 @@ const bool is_concentration[46] = {false, true, false, false, false, false, fals const bool is_probability[46] = {false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false}; public: + boost::shared_ptr UseCellMLDefaultStimulus(); double GetIntracellularCalciumConcentration(); - Celldecker_2009FromCellMLBackwardEulerOpt(boost::shared_ptr /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus); + Celldecker_2009FromCellMLBackwardEulerOpt(boost::shared_ptr /* unused */, boost::shared_ptr pIntracellularStimulus); ~Celldecker_2009FromCellMLBackwardEulerOpt(); void VerifyStateVariables(); AbstractLookupTableCollection* GetLookupTableCollection(); - double GetIIonic(const std::vector* pStateVariables=NULL);void ComputeResidual(double var_chaste_interface__environment__time, const double rCurrentGuess[35], double rResidual[35]); - void ComputeJacobian(double var_chaste_interface__environment__time, const double rCurrentGuess[35], double rJacobian[35][35]);protected: + double GetIIonic(const std::vector* pStateVariables=NULL); + void ComputeResidual(double var_chaste_interface__environment__time, const double rCurrentGuess[35], double rResidual[35]); + void ComputeJacobian(double var_chaste_interface__environment__time, const double rCurrentGuess[35], double rJacobian[35][35]); + +#if USING_DEVICE_COMPILER + +#endif +protected: void UpdateTransmembranePotential(double var_chaste_interface__environment__time); void ComputeOneStepExceptVoltage(double var_chaste_interface__environment__time); - std::vector ComputeDerivedQuantities(double var_chaste_interface__environment__time, const std::vector & rY); -}; + std::vector ComputeDerivedQuantities(double var_chaste_interface__environment__time, const std::vector & rY);}; // Needs to be included last #include "SerializationExportWrapper.hpp" @@ -85,4 +96,5 @@ namespace boost } -#endif // CELLDECKER_2009FROMCELLMLBACKWARDEULEROPT_HPP_ \ No newline at end of file +#endif // CELLDECKER_2009FROMCELLMLBACKWARDEULEROPT_HPP_ + diff --git a/chaste_codegen/data/tests/chaste_reference_models/BEopt/dynamic_courtemanche_ramirez_nattel_1998.cpp b/chaste_codegen/data/tests/chaste_reference_models/BEopt/dynamic_courtemanche_ramirez_nattel_1998.cpp index 6837116ae..a492ffc8f 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/BEopt/dynamic_courtemanche_ramirez_nattel_1998.cpp +++ b/chaste_codegen/data/tests/chaste_reference_models/BEopt/dynamic_courtemanche_ramirez_nattel_1998.cpp @@ -22,6 +22,8 @@ #include "HeartConfig.hpp" #include "IsNan.hpp" #include "MathsCustomFunctions.hpp" +#include "ChasteMathDeviceNamespaces.hpp" +#include "ChasteCpuMacros.hpp" #include "ModelFactory.hpp" @@ -150,7 +152,7 @@ class Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTa for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return exp(0.013102317305629283 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(CHASTE_CONST(0.013102317305629283) * 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); @@ -161,7 +163,7 @@ class Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTa for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return exp(-0.024332874996168673 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(-CHASTE_CONST(0.024332874996168673) * 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); @@ -172,7 +174,7 @@ class Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTa for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 1 + 0.10000000000000001 * exp(-0.024332874996168673 * var_chaste_interface__membrane__V); + return 1 + CHASTE_CONST(0.10000000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(0.024332874996168673) * 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); @@ -183,7 +185,7 @@ class Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTa for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return exp(-0.037435192301797954 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(-CHASTE_CONST(0.037435192301797954) * 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); @@ -194,7 +196,7 @@ class Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTa for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 0.1245 * exp(-0.0037435192301797956 * var_chaste_interface__membrane__V); + return CHASTE_CONST(0.1245) * CHASTE_MATH::Exp(-CHASTE_CONST(0.0037435192301797956) * 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); @@ -205,7 +207,7 @@ class Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTa for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 1 + exp(0.66964285714285721 + 0.044642857142857144 * var_chaste_interface__membrane__V); + return 1 + CHASTE_MATH::Exp(CHASTE_CONST(0.66964285714285721) + CHASTE_CONST(0.044642857142857144) * 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); @@ -216,7 +218,7 @@ class Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTa for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 1 + exp(5.6000000000000005 + 0.070000000000000007 * var_chaste_interface__membrane__V); + return 1 + CHASTE_MATH::Exp(CHASTE_CONST(5.6000000000000005) + CHASTE_CONST(0.070000000000000007) * 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); @@ -227,7 +229,7 @@ class Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTa for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 0.0050000000000000001 + 0.050000000000000003 / (1 + exp(1.1538461538461537 - 0.076923076923076927 * var_chaste_interface__membrane__V)); + return CHASTE_CONST(0.0050000000000000001) + CHASTE_CONST(0.050000000000000003) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(1.1538461538461537) - CHASTE_CONST(0.076923076923076927) * 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); @@ -238,7 +240,7 @@ class Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTa for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return -1 / (1 + exp(2.3529411764705883 - 0.058823529411764705 * var_chaste_interface__membrane__V)); + return -1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(2.3529411764705883) - CHASTE_CONST(0.058823529411764705) * 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); @@ -249,7 +251,7 @@ class Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTa for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return ((fabs(-7.9000000000000004 + var_chaste_interface__membrane__V) < 1.0e-10) ? (1.0833333333333333) : (0.16666666666666666 * (1 + 0.29999999999999999 * exp(1.5800000000000001 - 0.20000000000000001 * var_chaste_interface__membrane__V)) * (-7.9000000000000004 + var_chaste_interface__membrane__V) / (1 - exp(1.5800000000000001 - 0.20000000000000001 * var_chaste_interface__membrane__V)))); + return ((CHASTE_MATH::Abs(-CHASTE_CONST(7.9000000000000004) + var_chaste_interface__membrane__V) < CHASTE_CONST(1.0e-10)) ? (CHASTE_CONST(1.0833333333333333)) : (CHASTE_CONST(0.16666666666666666) * (1 + CHASTE_CONST(0.29999999999999999) * CHASTE_MATH::Exp(CHASTE_CONST(1.5800000000000001) - CHASTE_CONST(0.20000000000000001) * var_chaste_interface__membrane__V)) * (-CHASTE_CONST(7.9000000000000004) + var_chaste_interface__membrane__V) / (1 - CHASTE_MATH::Exp(CHASTE_CONST(1.5800000000000001) - CHASTE_CONST(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); @@ -271,7 +273,7 @@ class Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTa for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 1 + exp(-1.25 - 0.125 * var_chaste_interface__membrane__V); + return 1 + CHASTE_MATH::Exp(-CHASTE_CONST(1.25) - CHASTE_CONST(0.125) * 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); @@ -282,7 +284,7 @@ class Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTa for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return ((fabs(10 + var_chaste_interface__membrane__V) < 1.0e-10) ? (0.21838829438742086 + 0.21838829438742086 * exp(-1.6025641025641024 - 0.16025641025641024 * var_chaste_interface__membrane__V)) : (0.035000000000000003 * (1 + exp(-1.6025641025641024 - 0.16025641025641024 * var_chaste_interface__membrane__V)) * (10 + var_chaste_interface__membrane__V) / (1 - exp(-1.6025641025641024 - 0.16025641025641024 * var_chaste_interface__membrane__V)))); + return ((CHASTE_MATH::Abs(10 + var_chaste_interface__membrane__V) < CHASTE_CONST(1.0e-10)) ? (CHASTE_CONST(0.21838829438742086) + CHASTE_CONST(0.21838829438742086) * CHASTE_MATH::Exp(-CHASTE_CONST(1.6025641025641024) - CHASTE_CONST(0.16025641025641024) * var_chaste_interface__membrane__V)) : (CHASTE_CONST(0.035000000000000003) * (1 + CHASTE_MATH::Exp(-CHASTE_CONST(1.6025641025641024) - CHASTE_CONST(0.16025641025641024) * var_chaste_interface__membrane__V)) * (10 + var_chaste_interface__membrane__V) / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(1.6025641025641024) - CHASTE_CONST(0.16025641025641024) * 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); @@ -304,7 +306,7 @@ class Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTa for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return exp(-4.057971014492753 - 0.14492753623188406 * var_chaste_interface__membrane__V) / (1 + exp(-4.057971014492753 - 0.14492753623188406 * var_chaste_interface__membrane__V)); + return CHASTE_MATH::Exp(-CHASTE_CONST(4.057971014492753) - CHASTE_CONST(0.14492753623188406) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(4.057971014492753) - CHASTE_CONST(0.14492753623188406) * 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); @@ -315,7 +317,7 @@ class Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTa for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 0.0022222222222222222 + 0.0021888888888888887 * exp(-0.113569 * pow((1 + 0.10000000000000001 * var_chaste_interface__membrane__V), 2)); + return CHASTE_CONST(0.0022222222222222222) + CHASTE_CONST(0.0021888888888888887) * CHASTE_MATH::Exp(-CHASTE_CONST(0.113569) * CHASTE_MATH::Pow((1 + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V), 2)); }; const double var_chaste_interface__membrane__V = mTableMins[0] + i*mTableSteps[0]; double val = f(var_chaste_interface__membrane__V); @@ -326,7 +328,7 @@ class Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTa for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return ((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)))); + return ((var_chaste_interface__membrane__V == (-CHASTE_CONST(47.130000000000003))) ? (CHASTE_CONST(3.2000000000000002)) : (CHASTE_CONST(0.32000000000000001) * (CHASTE_CONST(47.130000000000003) + var_chaste_interface__membrane__V) / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(4.7130000000000001) - CHASTE_CONST(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); @@ -348,7 +350,7 @@ class Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTa for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 0.080000000000000002 * exp(-0.090909090909090912 * var_chaste_interface__membrane__V); + return CHASTE_CONST(0.080000000000000002) * CHASTE_MATH::Exp(-CHASTE_CONST(0.090909090909090912) * 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); @@ -359,7 +361,7 @@ class Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTa for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 1 + exp(-2.1692307692307691 - 0.15384615384615385 * var_chaste_interface__membrane__V); + return 1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.1692307692307691) - CHASTE_CONST(0.15384615384615385) * 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); @@ -370,7 +372,7 @@ class Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTa for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return ((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)))) + ((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)))); + return ((CHASTE_MATH::Abs(CHASTE_CONST(14.1) + var_chaste_interface__membrane__V) < CHASTE_CONST(1.0e-10)) ? (CHASTE_CONST(0.0015)) : (CHASTE_CONST(0.00029999999999999997) * (CHASTE_CONST(14.1) + var_chaste_interface__membrane__V) / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(2.8199999999999998) - CHASTE_CONST(0.20000000000000001) * var_chaste_interface__membrane__V)))) + ((CHASTE_MATH::Abs(-CHASTE_CONST(3.3328000000000002) + var_chaste_interface__membrane__V) < CHASTE_CONST(1.0e-10)) ? (CHASTE_CONST(0.00037836118)) : (CHASTE_CONST(7.3898000000000003e-5) * (-CHASTE_CONST(3.3328000000000002) + var_chaste_interface__membrane__V) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.65046743564221166) + CHASTE_CONST(0.19517145812596365) * 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); @@ -381,7 +383,7 @@ class Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTa for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return pow((1 + exp(1.5669291338582676 - 0.07874015748031496 * var_chaste_interface__membrane__V)), (-0.5)); + return CHASTE_MATH::Pow((1 + CHASTE_MATH::Exp(CHASTE_CONST(1.5669291338582676) - CHASTE_CONST(0.07874015748031496) * var_chaste_interface__membrane__V)), (-CHASTE_CONST(0.5))); }; const double var_chaste_interface__membrane__V = mTableMins[0] + i*mTableSteps[0]; double val = f(var_chaste_interface__membrane__V); @@ -392,7 +394,7 @@ class Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTa for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 2 * ((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)))) + 2 * ((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)))); + return 2 * ((CHASTE_MATH::Abs(-CHASTE_CONST(19.899999999999999) + var_chaste_interface__membrane__V) < CHASTE_CONST(1.0e-10)) ? (CHASTE_CONST(0.00068000000000000005)) : (CHASTE_CONST(4.0000000000000003e-5) * (-CHASTE_CONST(19.899999999999999) + var_chaste_interface__membrane__V) / (1 - CHASTE_MATH::Exp(CHASTE_CONST(1.1705882352941175) - CHASTE_CONST(0.058823529411764705) * var_chaste_interface__membrane__V)))) + 2 * ((CHASTE_MATH::Abs(-CHASTE_CONST(19.899999999999999) + var_chaste_interface__membrane__V) < CHASTE_CONST(1.0e-10)) ? (CHASTE_CONST(0.00031500000000000001)) : (CHASTE_CONST(3.4999999999999997e-5) * (-CHASTE_CONST(19.899999999999999) + var_chaste_interface__membrane__V) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.2111111111111108) + CHASTE_CONST(0.1111111111111111) * 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); @@ -403,7 +405,7 @@ class Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTa for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 1 + exp(-1.1670467502850628 - 0.057012542759407071 * var_chaste_interface__membrane__V); + return 1 + CHASTE_MATH::Exp(-CHASTE_CONST(1.1670467502850628) - CHASTE_CONST(0.057012542759407071) * 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); @@ -414,7 +416,7 @@ class Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTa for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 1.9500000000000002 / (2.5 + exp(4.8235294117647056 + 0.058823529411764705 * var_chaste_interface__membrane__V)) + 1.9500000000000002 / (exp(0.50847457627118642 - 0.016949152542372881 * var_chaste_interface__membrane__V) + exp(-1.1764705882352942 - 0.11764705882352941 * var_chaste_interface__membrane__V)); + return CHASTE_CONST(1.9500000000000002) / (CHASTE_CONST(2.5) + CHASTE_MATH::Exp(CHASTE_CONST(4.8235294117647056) + CHASTE_CONST(0.058823529411764705) * var_chaste_interface__membrane__V)) + CHASTE_CONST(1.9500000000000002) / (CHASTE_MATH::Exp(CHASTE_CONST(0.50847457627118642) - CHASTE_CONST(0.016949152542372881) * var_chaste_interface__membrane__V) + CHASTE_MATH::Exp(-CHASTE_CONST(1.1764705882352942) - CHASTE_CONST(0.11764705882352941) * 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); @@ -425,7 +427,7 @@ class Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTa for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 1 + exp(8.1320754716981138 + 0.18867924528301888 * var_chaste_interface__membrane__V); + return 1 + CHASTE_MATH::Exp(CHASTE_CONST(8.1320754716981138) + CHASTE_CONST(0.18867924528301888) * 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); @@ -436,7 +438,7 @@ class Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTa for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 3 / (35.560000000000002 + exp(-0.16935483870967738 - 0.13440860215053763 * var_chaste_interface__membrane__V)) + 3 / (18.530000000000001 + exp(10.383561643835618 + 0.091324200913242018 * var_chaste_interface__membrane__V)); + return 3 / (CHASTE_CONST(35.560000000000002) + CHASTE_MATH::Exp(-CHASTE_CONST(0.16935483870967738) - CHASTE_CONST(0.13440860215053763) * var_chaste_interface__membrane__V)) + 3 / (CHASTE_CONST(18.530000000000001) + CHASTE_MATH::Exp(CHASTE_CONST(10.383561643835618) + CHASTE_CONST(0.091324200913242018) * 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); @@ -447,7 +449,7 @@ class Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTa for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 1 + exp(-3.15625 - 0.10416666666666667 * var_chaste_interface__membrane__V); + return 1 + CHASTE_MATH::Exp(-CHASTE_CONST(3.15625) - CHASTE_CONST(0.10416666666666667) * 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); @@ -458,7 +460,7 @@ class Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTa for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 1 + exp(-3.6189956331877728 + 0.036390101892285295 * var_chaste_interface__membrane__V); + return 1 + CHASTE_MATH::Exp(-CHASTE_CONST(3.6189956331877728) + CHASTE_CONST(0.036390101892285295) * 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); @@ -469,7 +471,7 @@ class Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTa for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 3 / (21 + exp(6.6071428571428568 - 0.035714285714285712 * var_chaste_interface__membrane__V)) + 3 / exp(9.875 - 0.0625 * var_chaste_interface__membrane__V); + return 3 / (21 + CHASTE_MATH::Exp(CHASTE_CONST(6.6071428571428568) - CHASTE_CONST(0.035714285714285712) * var_chaste_interface__membrane__V)) + 3 / CHASTE_MATH::Exp(CHASTE_CONST(9.875) - CHASTE_CONST(0.0625) * 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); @@ -502,7 +504,7 @@ std::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_amplitude_converted = -2000 * CHASTE_CAP() / 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 @@ -535,22 +537,22 @@ std::shared_ptrmParameters[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[2] = CHASTE_CONST(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[4] = CHASTE_CONST(1.8); // (var_standard_ionic_concentrations__Ca_o) [millimolar] + this->mParameters[5] = CHASTE_CONST(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[7] = CHASTE_CONST(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[10] = CHASTE_CONST(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[13] = CHASTE_CONST(0.089999999999999997); // (var_time_independent_potassium_current__g_K1) [nanoS_per_picoF] + this->mParameters[14] = CHASTE_CONST(0.029411764999999999); // (var_rapid_delayed_rectifier_K_current__g_Kr) [nanoS_per_picoF] + this->mParameters[15] = CHASTE_CONST(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] + this->mParameters[17] = CHASTE_CONST(0.16520000000000001); // (var_transient_outward_K_current__g_to) [nanoS_per_picoF] } Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt::~Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt() @@ -601,7 +603,7 @@ std::shared_ptr& rY = *pStateVariables; - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -642,22 +644,22 @@ std::shared_ptrIndexTable0(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 var_membrane__Cm_converted = CHASTE_CONST(9.9999999999999995e-7) * mParameters[9]; // uF + const double var_L_type_Ca_channel__i_Ca_L_converted = CHASTE_CONST(9.9999999999999995e-7) * (-65 + var_chaste_interface__membrane__V) * CHASTE_CAP() * 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 = CHASTE_CONST(0.27500000000000002) * var_chaste_interface__intracellular_ion_concentrations__Ca_i * mParameters[9] / (CHASTE_CONST(0.00050000000000000001) + var_chaste_interface__intracellular_ion_concentrations__Ca_i); // picoA + const double var_background_currents__i_B_Ca = CHASTE_CONST(0.0011310000000000001) * (-CHASTE_CONST(13.356415961992688) * CHASTE_MATH::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 = CHASTE_CONST(9.9999999999999995e-7) * (CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[4] * _lt_0_row[0] - CHASTE_MATH::Pow(mParameters[6], 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i * _lt_0_row[1]) * CHASTE_CAP() * mParameters[16] * mParameters[9] / ((_lt_0_row[2]) * (CHASTE_CONST(669921.875) + CHASTE_MATH::Pow(mParameters[6], 3)) * (CHASTE_CONST(1.3799999999999999) + mParameters[4]) * var_membrane__Cm_converted); // uA_per_cm2 + const double var_fast_sodium_current__E_Na = CHASTE_CONST(26.712831923985377) * CHASTE_MATH::Log(mParameters[6] / var_chaste_interface__intracellular_ion_concentrations__Na_i); // millivolt + const double var_background_currents__i_B_Na = CHASTE_CONST(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 = CHASTE_CONST(9.9999999999999995e-7) * CHASTE_MATH::Pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * CHASTE_CAP() * 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 = CHASTE_CONST(0.59933873999999998) * mParameters[9] * mParameters[5] / ((1 + CHASTE_CONST(31.622776601683793) * CHASTE_MATH::Pow((1 / var_chaste_interface__intracellular_ion_concentrations__Na_i), CHASTE_CONST(1.5))) * (CHASTE_CONST(1.5) + mParameters[5]) * (1 + _lt_0_row[4] + CHASTE_CONST(0.036499999999999998) * (-CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * CHASTE_MATH::Exp(CHASTE_CONST(0.01485884101040119) * mParameters[6])) * _lt_0_row[3])); // picoA + const double var_time_independent_potassium_current__E_K = CHASTE_CONST(26.712831923985377) * CHASTE_MATH::Log(mParameters[5] / var_chaste_interface__intracellular_ion_concentrations__K_i); // millivolt + const double var_rapid_delayed_rectifier_K_current__i_Kr_converted = CHASTE_CONST(9.9999999999999995e-7) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * CHASTE_CAP() * 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 = CHASTE_CONST(9.9999999999999995e-7) * CHASTE_MATH::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) * CHASTE_CAP() * mParameters[9] * mParameters[15] / var_membrane__Cm_converted; // uA_per_cm2 + const double var_time_independent_potassium_current__i_K1_converted = CHASTE_CONST(9.9999999999999995e-7) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * CHASTE_CAP() * 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 = CHASTE_CONST(9.9999999999999995e-7) * CHASTE_MATH::Pow(var_chaste_interface__transient_outward_K_current_oa_gate__oa, 3) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * CHASTE_CAP() * 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 = CHASTE_MATH::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 + CHASTE_CONST(9.9999999999999995e-7) * CHASTE_CAP() * var_background_currents__i_B_Ca + CHASTE_CONST(9.9999999999999995e-7) * CHASTE_CAP() * var_background_currents__i_B_Na + CHASTE_CONST(9.9999999999999995e-7) * CHASTE_CAP() * var_sarcolemmal_calcium_pump_current__i_CaP + CHASTE_CONST(9.9999999999999995e-7) * CHASTE_CAP() * var_sodium_potassium_pump__i_NaK + CHASTE_CONST(9.9999999999999995e-7) * CHASTE_CAP() * 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)); @@ -667,7 +669,7 @@ std::shared_ptr& rY = rGetStateVariables(); - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -713,33 +715,33 @@ std::shared_ptrIndexTable0(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_Ca_uptake_current_by_the_NSR__i_up = mParameters[2] / (1 + CHASTE_CONST(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 + CHASTE_CONST(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 = CHASTE_MATH::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 = CHASTE_CONST(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_sarcolemmal_calcium_pump_current__i_CaP = CHASTE_CONST(0.27500000000000002) * var_chaste_interface__intracellular_ion_concentrations__Ca_i * mParameters[9] / (CHASTE_CONST(0.00050000000000000001) + var_chaste_interface__intracellular_ion_concentrations__Ca_i); // picoA + const double var_background_currents__i_B_Ca = CHASTE_CONST(0.0011310000000000001) * (-CHASTE_CONST(13.356415961992688) * CHASTE_MATH::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 = (CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[4] * _lt_0_row[0] - CHASTE_MATH::Pow(mParameters[6], 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i * _lt_0_row[1]) * mParameters[16] * mParameters[9] / ((_lt_0_row[2]) * (CHASTE_CONST(669921.875) + CHASTE_MATH::Pow(mParameters[6], 3)) * (CHASTE_CONST(1.3799999999999999) + mParameters[4])); // picoA + const double var_Ca_release_current_from_JSR__Fn = CHASTE_CONST(9.6479999999999999e-11) * var_Ca_release_current_from_JSR__i_rel + CHASTE_CONST(1.0364122723649997e-15) * var_Na_Ca_exchanger_current__i_NaCa - CHASTE_CONST(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 = CHASTE_CONST(0.125) / (1 + CHASTE_MATH::Exp(250 - CHASTE_CONST(731528895391368.0) * var_Ca_release_current_from_JSR__Fn)) - CHASTE_CONST(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 + CHASTE_MATH::Exp(50 - CHASTE_CONST(731528895391368.0) * var_Ca_release_current_from_JSR__Fn)) - var_chaste_interface__Ca_release_current_from_JSR_v_gate__v) / (CHASTE_CONST(1.9099999999999999) + CHASTE_CONST(2.0899999999999999) / (1 + CHASTE_MATH::Exp(250 - CHASTE_CONST(731528895391368.0) * var_Ca_release_current_from_JSR__Fn))); // 1 / millisecond + const double var_fast_sodium_current__E_Na = CHASTE_CONST(26.712831923985377) * CHASTE_MATH::Log(mParameters[6] / var_chaste_interface__intracellular_ion_concentrations__Na_i); // millivolt + const double var_background_currents__i_B_Na = CHASTE_CONST(0.00067443750000000002) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[9]; // picoA + const double var_fast_sodium_current__i_Na = CHASTE_MATH::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 = (CHASTE_CONST(0.081176470588235281) * var_Ca_leak_current_by_the_NSR__i_up_leak + CHASTE_CONST(0.0070588235294117632) * var_Ca_release_current_from_JSR__i_rel + CHASTE_CONST(7.5827646500219453e-7) * var_Na_Ca_exchanger_current__i_NaCa - CHASTE_CONST(0.081176470588235281) * var_Ca_uptake_current_by_the_NSR__i_up - CHASTE_CONST(3.7913823250109726e-7) * var_L_type_Ca_channel__i_Ca_L - CHASTE_CONST(3.7913823250109726e-7) * var_background_currents__i_B_Ca - CHASTE_CONST(3.7913823250109726e-7) * var_sarcolemmal_calcium_pump_current__i_CaP) / (1 + CHASTE_CONST(0.00011900000000000002) / CHASTE_MATH::Pow((CHASTE_CONST(0.0023800000000000002) + var_chaste_interface__intracellular_ion_concentrations__Ca_i), 2) + CHASTE_CONST(3.5000000000000004e-5) / CHASTE_MATH::Pow((CHASTE_CONST(0.00050000000000000001) + var_chaste_interface__intracellular_ion_concentrations__Ca_i), 2)); // millimolar / millisecond + const double var_sodium_potassium_pump__i_NaK = CHASTE_CONST(0.59933873999999998) * mParameters[9] * mParameters[5] / ((1 + CHASTE_CONST(31.622776601683793) * CHASTE_MATH::Pow((1 / var_chaste_interface__intracellular_ion_concentrations__Na_i), CHASTE_CONST(1.5))) * (CHASTE_CONST(1.5) + mParameters[5]) * (1 + _lt_0_row[4] + CHASTE_CONST(0.036499999999999998) * (-CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * CHASTE_MATH::Exp(CHASTE_CONST(0.01485884101040119) * mParameters[6])) * _lt_0_row[3])); // picoA + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Na_i = CHASTE_CONST(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 = CHASTE_CONST(26.712831923985377) * CHASTE_MATH::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_slow_delayed_rectifier_K_current__i_Ks = CHASTE_MATH::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 + const double var_transfer_current_from_NSR_to_JSR__i_tr = CHASTE_CONST(0.0055555555555555558) * var_chaste_interface__intracellular_ion_concentrations__Ca_up - CHASTE_CONST(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 / CHASTE_MATH::Pow((CHASTE_CONST(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 - CHASTE_CONST(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 = CHASTE_MATH::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 = CHASTE_MATH::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 = CHASTE_CONST(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; @@ -754,7 +756,7 @@ std::shared_ptr& rY = rGetStateVariables(); - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -799,117 +801,117 @@ std::shared_ptr& rY = rGetStateVariables(); - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -976,20 +978,20 @@ std::shared_ptrIndexTable0(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_sarcolemmal_calcium_pump_current__i_CaP = CHASTE_CONST(0.27500000000000002) * var_chaste_interface__intracellular_ion_concentrations__Ca_i * mParameters[9] / (CHASTE_CONST(0.00050000000000000001) + var_chaste_interface__intracellular_ion_concentrations__Ca_i); // picoA + const double var_background_currents__i_B_Ca = CHASTE_CONST(0.0011310000000000001) * (-CHASTE_CONST(13.356415961992688) * CHASTE_MATH::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 = (CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[4] * _lt_0_row[0] - CHASTE_MATH::Pow(mParameters[6], 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i * _lt_0_row[1]) * mParameters[16] * mParameters[9] / ((_lt_0_row[2]) * (CHASTE_CONST(669921.875) + CHASTE_MATH::Pow(mParameters[6], 3)) * (CHASTE_CONST(1.3799999999999999) + mParameters[4])); // picoA + const double var_fast_sodium_current__E_Na = CHASTE_CONST(26.712831923985377) * CHASTE_MATH::Log(mParameters[6] / var_chaste_interface__intracellular_ion_concentrations__Na_i); // millivolt + const double var_background_currents__i_B_Na = CHASTE_CONST(0.00067443750000000002) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[9]; // picoA + const double var_fast_sodium_current__i_Na = CHASTE_MATH::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 = CHASTE_CONST(0.59933873999999998) * mParameters[9] * mParameters[5] / ((1 + CHASTE_CONST(31.622776601683793) * CHASTE_MATH::Pow((1 / var_chaste_interface__intracellular_ion_concentrations__Na_i), CHASTE_CONST(1.5))) * (CHASTE_CONST(1.5) + mParameters[5]) * (1 + _lt_0_row[4] + CHASTE_CONST(0.036499999999999998) * (-CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * CHASTE_MATH::Exp(CHASTE_CONST(0.01485884101040119) * mParameters[6])) * _lt_0_row[3])); // picoA + const double var_time_independent_potassium_current__E_K = CHASTE_CONST(26.712831923985377) * CHASTE_MATH::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_slow_delayed_rectifier_K_current__i_Ks = CHASTE_MATH::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 + const double var_transient_outward_K_current__i_to = CHASTE_MATH::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 = CHASTE_MATH::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 * CHASTE_STIM(var_chaste_interface__environment__time) * mParameters[9] / CHASTE_CAP()) / mParameters[9]; // millivolt / millisecond rY[0] += mDt*d_dt_chaste_interface_var_membrane__V; } @@ -998,7 +1000,7 @@ std::shared_ptr& rY = rGetStateVariables(); - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -1033,47 +1035,47 @@ std::shared_ptrIndexTable0(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__tau_w = ((CHASTE_MATH::Abs(-CHASTE_CONST(7.9000000000000004) + var_chaste_interface__membrane__V) < CHASTE_CONST(1.0e-10)) ? (CHASTE_CONST(0.92307692307692313)) : (6 * (1 - CHASTE_MATH::Exp(CHASTE_CONST(1.5800000000000001) - CHASTE_CONST(0.20000000000000001) * var_chaste_interface__membrane__V)) / ((1 + CHASTE_CONST(0.29999999999999999) * CHASTE_MATH::Exp(CHASTE_CONST(1.5800000000000001) - CHASTE_CONST(0.20000000000000001) * var_chaste_interface__membrane__V)) * (-CHASTE_CONST(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_d_gate__tau_d = ((CHASTE_MATH::Abs(10 + var_chaste_interface__membrane__V) < CHASTE_CONST(1.0e-10)) ? (CHASTE_CONST(4.5789999999999997) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(1.6025641025641024) - CHASTE_CONST(0.16025641025641024) * var_chaste_interface__membrane__V))) : (CHASTE_CONST(28.571428571428569) * (1 - CHASTE_MATH::Exp(-CHASTE_CONST(1.6025641025641024) - CHASTE_CONST(0.16025641025641024) * var_chaste_interface__membrane__V)) / ((1 + CHASTE_MATH::Exp(-CHASTE_CONST(1.6025641025641024) - CHASTE_CONST(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_L_type_Ca_channel_f_gate__tau_f = 9 / (CHASTE_CONST(0.02) + CHASTE_CONST(0.019699999999999999) * CHASTE_MATH::Exp(-CHASTE_CONST(0.113569) * CHASTE_MATH::Pow((1 + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V), 2))); + const double var_fast_sodium_current_h_gate__alpha_h = ((var_chaste_interface__membrane__V < -40) ? (CHASTE_CONST(0.13500000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(11.764705882352942) + CHASTE_CONST(0.14705882352941177) * mParameters[12] - CHASTE_CONST(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 * CHASTE_MATH::Exp(CHASTE_CONST(0.34999999999999998) * var_chaste_interface__membrane__V - CHASTE_CONST(0.34999999999999998) * mParameters[12]) + CHASTE_CONST(3.5600000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.079000000000000001) * var_chaste_interface__membrane__V - CHASTE_CONST(0.079000000000000001) * mParameters[12])) : (CHASTE_CONST(7.6923076923076916) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.96036036036036043) + CHASTE_CONST(0.0900900900900901) * mParameters[12] - CHASTE_CONST(0.0900900900900901) * var_chaste_interface__membrane__V)))); + const double var_fast_sodium_current_h_gate__h_inf = CHASTE_CONST(0.01) * mParameters[11] + (1 - CHASTE_CONST(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__alpha_j = ((var_chaste_interface__membrane__V < -40) ? ((CHASTE_CONST(37.780000000000001) + var_chaste_interface__membrane__V) * (-127140 * CHASTE_MATH::Exp(CHASTE_CONST(0.24440000000000001) * var_chaste_interface__membrane__V - CHASTE_CONST(0.24440000000000001) * mParameters[12]) - CHASTE_CONST(3.4740000000000003e-5) * CHASTE_MATH::Exp(CHASTE_CONST(0.043909999999999998) * mParameters[12] - CHASTE_CONST(0.043909999999999998) * var_chaste_interface__membrane__V)) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(24.640530000000002) + CHASTE_CONST(0.311) * var_chaste_interface__membrane__V - CHASTE_CONST(0.311) * mParameters[12]))) : (0)); + const double var_fast_sodium_current_j_gate__beta_j = ((var_chaste_interface__membrane__V < -40) ? (CHASTE_CONST(0.1212) * CHASTE_MATH::Exp(CHASTE_CONST(0.01052) * mParameters[12] - CHASTE_CONST(0.01052) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(5.5312920000000005) + CHASTE_CONST(0.13780000000000001) * mParameters[12] - CHASTE_CONST(0.13780000000000001) * var_chaste_interface__membrane__V))) : (CHASTE_CONST(0.29999999999999999) * CHASTE_MATH::Exp(CHASTE_CONST(2.5349999999999999e-7) * mParameters[12] - CHASTE_CONST(2.5349999999999999e-7) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(3.2000000000000002) + CHASTE_CONST(0.10000000000000001) * mParameters[12] - CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V)))); + const double var_fast_sodium_current_j_gate__j_inf = CHASTE_CONST(0.01) * mParameters[11] + (1 - CHASTE_CONST(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__alpha_xr = ((CHASTE_MATH::Abs(CHASTE_CONST(14.1) + var_chaste_interface__membrane__V) < CHASTE_CONST(1.0e-10)) ? (CHASTE_CONST(0.0015)) : (CHASTE_CONST(0.00029999999999999997) * (CHASTE_CONST(14.1) + var_chaste_interface__membrane__V) / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(2.8199999999999998) - CHASTE_CONST(0.20000000000000001) * var_chaste_interface__membrane__V)))); + const double var_rapid_delayed_rectifier_K_current_xr_gate__beta_xr = ((CHASTE_MATH::Abs(-CHASTE_CONST(3.3328000000000002) + var_chaste_interface__membrane__V) < CHASTE_CONST(1.0e-10)) ? (CHASTE_CONST(0.00037836118)) : (CHASTE_CONST(7.3898000000000003e-5) * (-CHASTE_CONST(3.3328000000000002) + var_chaste_interface__membrane__V) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.65046743564221166) + CHASTE_CONST(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__alpha_xs = ((CHASTE_MATH::Abs(-CHASTE_CONST(19.899999999999999) + var_chaste_interface__membrane__V) < CHASTE_CONST(1.0e-10)) ? (CHASTE_CONST(0.00068000000000000005)) : (CHASTE_CONST(4.0000000000000003e-5) * (-CHASTE_CONST(19.899999999999999) + var_chaste_interface__membrane__V) / (1 - CHASTE_MATH::Exp(CHASTE_CONST(1.1705882352941175) - CHASTE_CONST(0.058823529411764705) * var_chaste_interface__membrane__V)))); + const double var_slow_delayed_rectifier_K_current_xs_gate__beta_xs = ((CHASTE_MATH::Abs(-CHASTE_CONST(19.899999999999999) + var_chaste_interface__membrane__V) < CHASTE_CONST(1.0e-10)) ? (CHASTE_CONST(0.00031500000000000001)) : (CHASTE_CONST(3.4999999999999997e-5) * (-CHASTE_CONST(19.899999999999999) + var_chaste_interface__membrane__V) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.2111111111111108) + CHASTE_CONST(0.1111111111111111) * var_chaste_interface__membrane__V)))); + const double var_slow_delayed_rectifier_K_current_xs_gate__tau_xs = CHASTE_CONST(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__alpha_oa = CHASTE_CONST(0.65000000000000002) / (CHASTE_MATH::Exp(CHASTE_CONST(0.50847457627118642) - CHASTE_CONST(0.016949152542372881) * var_chaste_interface__membrane__V) + CHASTE_MATH::Exp(-CHASTE_CONST(1.1764705882352942) - CHASTE_CONST(0.11764705882352941) * var_chaste_interface__membrane__V)); + const double var_transient_outward_K_current_oa_gate__beta_oa = CHASTE_CONST(0.65000000000000002) / (CHASTE_CONST(2.5) + CHASTE_MATH::Exp(CHASTE_CONST(4.8235294117647056) + CHASTE_CONST(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__alpha_oi = 1 / (CHASTE_CONST(18.530000000000001) + CHASTE_MATH::Exp(CHASTE_CONST(10.383561643835618) + CHASTE_CONST(0.091324200913242018) * var_chaste_interface__membrane__V)); + const double var_transient_outward_K_current_oi_gate__beta_oi = 1 / (CHASTE_CONST(35.560000000000002) + CHASTE_MATH::Exp(-CHASTE_CONST(0.16935483870967738) - CHASTE_CONST(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__alpha_ua = CHASTE_CONST(0.65000000000000002) / (CHASTE_MATH::Exp(CHASTE_CONST(0.50847457627118642) - CHASTE_CONST(0.016949152542372881) * var_chaste_interface__membrane__V) + CHASTE_MATH::Exp(-CHASTE_CONST(1.1764705882352942) - CHASTE_CONST(0.11764705882352941) * var_chaste_interface__membrane__V)); + const double var_ultrarapid_delayed_rectifier_K_current_ua_gate__beta_ua = CHASTE_CONST(0.65000000000000002) / (CHASTE_CONST(2.5) + CHASTE_MATH::Exp(CHASTE_CONST(4.8235294117647056) + CHASTE_CONST(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__alpha_ui = 1 / (21 + CHASTE_MATH::Exp(CHASTE_CONST(6.6071428571428568) - CHASTE_CONST(0.035714285714285712) * var_chaste_interface__membrane__V)); + const double var_ultrarapid_delayed_rectifier_K_current_ui_gate__beta_ui = 1 / CHASTE_MATH::Exp(CHASTE_CONST(9.875) - CHASTE_CONST(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]); @@ -1108,7 +1110,7 @@ std::shared_ptrmFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -1154,39 +1156,39 @@ std::shared_ptrIndexTable0(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_Na_Ca_exchanger_current__K_mCa = CHASTE_CONST(1.3799999999999999); // millimolar + const double var_Na_Ca_exchanger_current__K_mNa = CHASTE_CONST(87.5); // millimolar + const double var_Na_Ca_exchanger_current__K_sat = CHASTE_CONST(0.10000000000000001); // dimensionless + const double var_Na_Ca_exchanger_current__gamma = CHASTE_CONST(0.34999999999999998); // dimensionless + const double var_Ca_release_current_from_JSR__i_rel = CHASTE_MATH::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 = CHASTE_CONST(9.9999999999999995e-7) * mParameters[9]; // uF + const double var_membrane__F = CHASTE_CONST(96.486699999999999); // coulomb_per_millimole + const double var_membrane__R = CHASTE_CONST(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_L_type_Ca_channel__i_Ca_L_converted = CHASTE_CONST(9.9999999999999995e-7) * CHASTE_CAP() * 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 / (CHASTE_CONST(0.02) + CHASTE_CONST(0.019699999999999999) * CHASTE_MATH::Exp(-CHASTE_CONST(0.113569) * CHASTE_MATH::Pow((1 + CHASTE_CONST(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) ? (CHASTE_CONST(0.13500000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(11.764705882352942) + CHASTE_CONST(0.14705882352941177) * mParameters[12] - CHASTE_CONST(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 * CHASTE_MATH::Exp(CHASTE_CONST(0.34999999999999998) * var_chaste_interface__membrane__V - CHASTE_CONST(0.34999999999999998) * mParameters[12]) + CHASTE_CONST(3.5600000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.079000000000000001) * var_chaste_interface__membrane__V - CHASTE_CONST(0.079000000000000001) * mParameters[12])) : (CHASTE_CONST(7.6923076923076916) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.96036036036036043) + CHASTE_CONST(0.0900900900900901) * mParameters[12] - CHASTE_CONST(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__alpha_j = ((var_chaste_interface__membrane__V < -40) ? ((CHASTE_CONST(37.780000000000001) + var_chaste_interface__membrane__V) * (-127140 * CHASTE_MATH::Exp(CHASTE_CONST(0.24440000000000001) * var_chaste_interface__membrane__V - CHASTE_CONST(0.24440000000000001) * mParameters[12]) - CHASTE_CONST(3.4740000000000003e-5) * CHASTE_MATH::Exp(CHASTE_CONST(0.043909999999999998) * mParameters[12] - CHASTE_CONST(0.043909999999999998) * var_chaste_interface__membrane__V)) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(24.640530000000002) + CHASTE_CONST(0.311) * var_chaste_interface__membrane__V - CHASTE_CONST(0.311) * mParameters[12]))) : (0)); // per_millisecond + const double var_fast_sodium_current_j_gate__beta_j = ((var_chaste_interface__membrane__V < -40) ? (CHASTE_CONST(0.1212) * CHASTE_MATH::Exp(CHASTE_CONST(0.01052) * mParameters[12] - CHASTE_CONST(0.01052) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(5.5312920000000005) + CHASTE_CONST(0.13780000000000001) * mParameters[12] - CHASTE_CONST(0.13780000000000001) * var_chaste_interface__membrane__V))) : (CHASTE_CONST(0.29999999999999999) * CHASTE_MATH::Exp(CHASTE_CONST(2.5349999999999999e-7) * mParameters[12] - CHASTE_CONST(2.5349999999999999e-7) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(3.2000000000000002) + CHASTE_CONST(0.10000000000000001) * mParameters[12] - CHASTE_CONST(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_membrane__i_st_converted = CHASTE_STIM(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_Na_Ca_exchanger_current__i_NaCa = (CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[4] * CHASTE_MATH::Exp(var_Na_Ca_exchanger_current__gamma * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - CHASTE_MATH::Pow(mParameters[6], 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i * CHASTE_MATH::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 * CHASTE_MATH::Exp((-1 + var_Na_Ca_exchanger_current__gamma) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (CHASTE_MATH::Pow(var_Na_Ca_exchanger_current__K_mNa, 3) + CHASTE_MATH::Pow(mParameters[6], 3)) * (var_Na_Ca_exchanger_current__K_mCa + mParameters[4])); // picoA + const double var_Na_Ca_exchanger_current__i_NaCa_converted = CHASTE_CONST(9.9999999999999995e-7) * CHASTE_CAP() * 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 * CHASTE_MATH::Log(mParameters[6] / var_chaste_interface__intracellular_ion_concentrations__Na_i) / var_membrane__F; // millivolt + const double var_fast_sodium_current__i_Na = CHASTE_MATH::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 = CHASTE_CONST(9.9999999999999995e-7) * CHASTE_CAP() * 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 * CHASTE_MATH::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_rapid_delayed_rectifier_K_current__i_Kr_converted = CHASTE_CONST(9.9999999999999995e-7) * CHASTE_CAP() * 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 = CHASTE_MATH::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 = CHASTE_CONST(9.9999999999999995e-7) * CHASTE_CAP() * 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 + const double var_time_independent_potassium_current__i_K1_converted = CHASTE_CONST(9.9999999999999995e-7) * CHASTE_CAP() * var_time_independent_potassium_current__i_K1 / var_membrane__Cm_converted; // uA_per_cm2 + const double var_transient_outward_K_current__i_to = CHASTE_MATH::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 = CHASTE_CONST(9.9999999999999995e-7) * CHASTE_CAP() * 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; diff --git a/chaste_codegen/data/tests/chaste_reference_models/BEopt/dynamic_courtemanche_ramirez_nattel_1998.hpp b/chaste_codegen/data/tests/chaste_reference_models/BEopt/dynamic_courtemanche_ramirez_nattel_1998.hpp index 53dafd2bf..f6677e087 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/BEopt/dynamic_courtemanche_ramirez_nattel_1998.hpp +++ b/chaste_codegen/data/tests/chaste_reference_models/BEopt/dynamic_courtemanche_ramirez_nattel_1998.hpp @@ -17,8 +17,13 @@ #include #include "AbstractDynamicallyLoadableEntity.hpp" #include "AbstractStimulusFunction.hpp" +#if USING_DEVICE_COMPILER +#include "StimulusEvaluatorCuda.hpp" +#endif #include "AbstractBackwardEulerCardiacCell.hpp" + + class Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt : public AbstractBackwardEulerCardiacCell<8>, public AbstractDynamicallyLoadableEntity { friend class boost::serialization::access; @@ -41,19 +46,25 @@ const bool is_concentration[21] = {false, true, false, false, false, false, fals const bool is_probability[21] = {false, false, true, true, true, false, false, false, false, false, false, true, true, true, false, false, false, false, false, false, false}; public: + boost::shared_ptr UseCellMLDefaultStimulus(); double GetIntracellularCalciumConcentration(); - Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt(boost::shared_ptr /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus); + Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt(boost::shared_ptr /* unused */, boost::shared_ptr pIntracellularStimulus); ~Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt(); void VerifyStateVariables(); AbstractLookupTableCollection* GetLookupTableCollection(); - double GetIIonic(const std::vector* pStateVariables=NULL);void ComputeResidual(double var_chaste_interface__environment__time, const double rCurrentGuess[8], double rResidual[8]); - void ComputeJacobian(double var_chaste_interface__environment__time, const double rCurrentGuess[8], double rJacobian[8][8]);protected: + double GetIIonic(const std::vector* pStateVariables=NULL); + void ComputeResidual(double var_chaste_interface__environment__time, const double rCurrentGuess[8], double rResidual[8]); + void ComputeJacobian(double var_chaste_interface__environment__time, const double rCurrentGuess[8], double rJacobian[8][8]); + +#if USING_DEVICE_COMPILER + +#endif +protected: void UpdateTransmembranePotential(double var_chaste_interface__environment__time); void ComputeOneStepExceptVoltage(double var_chaste_interface__environment__time); - std::vector ComputeDerivedQuantities(double var_chaste_interface__environment__time, const std::vector & rY); -}; + std::vector ComputeDerivedQuantities(double var_chaste_interface__environment__time, const std::vector & rY);}; // Needs to be included last #include "SerializationExportWrapper.hpp" @@ -88,4 +99,5 @@ namespace boost } -#endif // DYNAMICCOURTEMANCHE_RAMIREZ_NATTEL_1998FROMCELLMLBACKWARDEULEROPT_HPP_ \ No newline at end of file +#endif // DYNAMICCOURTEMANCHE_RAMIREZ_NATTEL_1998FROMCELLMLBACKWARDEULEROPT_HPP_ + diff --git a/chaste_codegen/data/tests/chaste_reference_models/CVODE_DATA_CLAMP/Shannon2004_with_modifiers.cpp b/chaste_codegen/data/tests/chaste_reference_models/CVODE_DATA_CLAMP/Shannon2004_with_modifiers.cpp index 21637c579..04a9f040f 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/CVODE_DATA_CLAMP/Shannon2004_with_modifiers.cpp +++ b/chaste_codegen/data/tests/chaste_reference_models/CVODE_DATA_CLAMP/Shannon2004_with_modifiers.cpp @@ -22,6 +22,8 @@ #include "HeartConfig.hpp" #include "IsNan.hpp" #include "MathsCustomFunctions.hpp" +#include "ChasteMathDeviceNamespaces.hpp" +#include "ChasteCpuMacros.hpp" #if CHASTE_SUNDIALS_VERSION >= 60000 #include "CvodeContextManager.hpp" @@ -40,7 +42,7 @@ bool Cellshannon_wang_puglisi_weber_bers_2004FromCellMLCvodeDataClamp::registere 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_amplitude_converted = -CHASTE_CONST(9.5) * CHASTE_CAP(); // 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 @@ -191,29 +193,29 @@ bool Cellshannon_wang_puglisi_weber_bers_2004FromCellMLCvodeDataClamp::registere 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, 0) = CHASTE_CONST(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, 2) = CHASTE_CONST(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, 6) = CHASTE_CONST(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, 8) = CHASTE_CONST(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, 10) = CHASTE_CONST(96486.699999999997); // (var_model_parameters__F) [coulomb_per_mole] + NV_Ith_S(this->mParameters, 11) = CHASTE_CONST(8314.2999999999993); // (var_model_parameters__R) [joule_per_kilomole_kelvin] + NV_Ith_S(this->mParameters, 12) = CHASTE_CONST(0.00054000000000000001); // (var_ICaL__PCa) [litre_per_farad_millisecond] + NV_Ith_S(this->mParameters, 13) = CHASTE_CONST(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, 18) = CHASTE_CONST(0.02); // (var_Itof__G_tof) [milliS_per_microF] + NV_Ith_S(this->mParameters, 19) = CHASTE_CONST(0.90000000000000002); // (var_IK1__G_K1_max) [milliS_per_microF] + NV_Ith_S(this->mParameters, 20) = CHASTE_CONST(0.029999999999999999); // (var_IKr__G_IKr_const) [milliS_per_microF] + NV_Ith_S(this->mParameters, 21) = CHASTE_CONST(0.070000000000000007); // (var_IKs__G_Ks_max) [milliS_per_microF] + NV_Ith_S(this->mParameters, 22) = CHASTE_CONST(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] } @@ -271,7 +273,7 @@ bool Cellshannon_wang_puglisi_weber_bers_2004FromCellMLCvodeDataClamp::registere made_new_cvode_vector = true; rY = MakeNVector(*pStateVariables); } - double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -312,135 +314,135 @@ bool Cellshannon_wang_puglisi_weber_bers_2004FromCellMLCvodeDataClamp::registere 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__Fx_ICaL_SL = CHASTE_CONST(0.10000000000000001); // dimensionless + const double var_ICaL__Fx_ICaL_jct = CHASTE_CONST(0.90000000000000002); // dimensionless + const double var_ICaL__PK = CHASTE_CONST(2.7000000000000001e-7); // litre_per_farad_millisecond + const double var_ICaL__PNa = CHASTE_CONST(1.4999999999999999e-8); // litre_per_farad_millisecond + const double var_ICaL__Q10_CaL = CHASTE_CONST(1.8); // dimensionless + const double var_ICaL__gamma_Cai = CHASTE_CONST(0.34100000000000003); // dimensionless + const double var_ICaL__gamma_Cao = CHASTE_CONST(0.34100000000000003); // dimensionless + const double var_ICaL__gamma_Ki = CHASTE_CONST(0.75); // dimensionless + const double var_ICaL__gamma_Ko = CHASTE_CONST(0.75); // dimensionless + const double var_ICaL__gamma_Nai = CHASTE_CONST(0.75); // dimensionless + const double var_ICaL__gamma_Nao = CHASTE_CONST(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, 21); // 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, 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_ICab__Fx_CaBk_SL = CHASTE_CONST(0.89000000000000001); // dimensionless + const double var_ICab__Fx_CaBk_jct = CHASTE_CONST(0.11); // dimensionless + const double var_ICab__G_CaBk = CHASTE_CONST(0.00025129999999999998); // milliS_per_microF + const double var_ICap__Fx_SLCaP_SL = CHASTE_CONST(0.89000000000000001); // dimensionless + const double var_ICap__Fx_SLCaP_jct = CHASTE_CONST(0.11); // dimensionless + const double var_ICap__H = CHASTE_CONST(1.6000000000000001); // dimensionless + const double var_ICap__Km = CHASTE_CONST(0.00050000000000000001); // millimolar + const double var_ICap__Q10_SLCaP = CHASTE_CONST(2.3500000000000001); // dimensionless + const double var_ICap__V_maxAF = CHASTE_CONST(0.067299999999999999); // microA_per_microF + const double var_ICl_Ca__Fx_Cl_SL = CHASTE_CONST(0.89000000000000001); // dimensionless + const double var_ICl_Ca__Fx_Cl_jct = CHASTE_CONST(0.11); // dimensionless + const double var_ICl_Ca__G_Cl = CHASTE_CONST(0.109625); // milliS_per_microF + const double var_ICl_Ca__Kd_ClCa = CHASTE_CONST(0.10000000000000001); // millimolar + const double var_IKs__Fx_Ks_SL = CHASTE_CONST(0.89000000000000001); // dimensionless + const double var_IKs__Fx_Ks_jct = CHASTE_CONST(0.11); // dimensionless + const double var_IKs__pCa_SL = 3 - CHASTE_MATH::Log10(var_chaste_interface__Ca_buffer__Ca_SL); // dimensionless + const double var_IKs__G_Ks_SL = (CHASTE_CONST(0.057000000000000002) + CHASTE_CONST(0.19) / (1 + CHASTE_MATH::Exp(-12 + CHASTE_CONST(1.6666666666666667) * var_IKs__pCa_SL))) * NV_Ith_S(mParameters, 21); // milliS_per_microF + const double var_IKs__pCa_jct = 3 - CHASTE_MATH::Log10(var_chaste_interface__Ca_buffer__Ca_jct); // dimensionless + const double var_IKs__G_Ks_jct = (CHASTE_CONST(0.057000000000000002) + CHASTE_CONST(0.19) / (1 + CHASTE_MATH::Exp(-12 + CHASTE_CONST(1.6666666666666667) * var_IKs__pCa_jct))) * NV_Ith_S(mParameters, 21); // milliS_per_microF + const double var_IKs__pKNa = CHASTE_CONST(0.018329999999999999); // dimensionless + const double var_INa__Fx_Na_SL = CHASTE_CONST(0.89000000000000001); // dimensionless + const double var_INa__Fx_Na_jct = CHASTE_CONST(0.11); // dimensionless + const double var_INaCa__Fx_NCX_SL = CHASTE_CONST(0.89000000000000001); // dimensionless + const double var_INaCa__Fx_NCX_jct = CHASTE_CONST(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_INaCa__K_mCai = CHASTE_CONST(0.0035899999999999999); // millimolar + const double var_INaCa__K_mCao = CHASTE_CONST(1.3); // millimolar + const double var_INaCa__K_mNai = CHASTE_CONST(12.289999999999999); // millimolar + const double var_INaCa__K_mNao = CHASTE_CONST(87.5); // millimolar + const double var_INaCa__Kd_act = CHASTE_CONST(0.00025599999999999999); // millimolar + const double var_INaCa__Ka_SL = 1 / (1 + CHASTE_MATH::Pow(var_INaCa__Kd_act, 3) / CHASTE_MATH::Pow(var_chaste_interface__Ca_buffer__Ca_SL, 3)); // dimensionless + const double var_INaCa__Ka_jct = 1 / (1 + CHASTE_MATH::Pow(var_INaCa__Kd_act, 3) / CHASTE_MATH::Pow(var_chaste_interface__Ca_buffer__Ca_jct, 3)); // dimensionless + const double var_INaCa__Q10_NCX = CHASTE_CONST(1.5700000000000001); // dimensionless + const double var_INaCa__eta = CHASTE_CONST(0.34999999999999998); // dimensionless + const double var_INaCa__ksat = CHASTE_CONST(0.27000000000000002); // dimensionless + const double var_INaK__Fx_NaK_SL = CHASTE_CONST(0.89000000000000001); // dimensionless + const double var_INaK__Fx_NaK_jct = CHASTE_CONST(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__I_NaK_max = CHASTE_CONST(1.9099999999999999); // microA_per_microF + const double var_INaK__Km_Ko = CHASTE_CONST(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_INaK__Q10_Km_Nai = CHASTE_CONST(1.49); // dimensionless + const double var_INaK__Q10_NaK = CHASTE_CONST(1.6299999999999999); // dimensionless + const double var_INa__openProb = CHASTE_MATH::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 = CHASTE_CONST(0.89000000000000001); // dimensionless + const double var_INab__Fx_NaBk_jct = CHASTE_CONST(0.11); // dimensionless + const double var_INab__G_NaBk = CHASTE_CONST(0.00029700000000000001); // milliS_per_microF + const double var_IKr_Rr_gate__Rr = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(1.4732142857142858) + CHASTE_CONST(0.044642857142857144) * var_chaste_interface__cell__V)); // dimensionless + const double var_IK1__G_K1 = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::Sqrt(NV_Ith_S(mParameters, 8)) * NV_Ith_S(mParameters, 19); // milliS_per_microF + const double var_IKr__G_IKr = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::Sqrt(NV_Ith_S(mParameters, 8)) * NV_Ith_S(mParameters, 20); // milliS_per_microF + const double var_INaK__sigma = -CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * CHASTE_MATH::Exp(CHASTE_CONST(0.01485884101040119) * NV_Ith_S(mParameters, 9)); // dimensionless + const double var_ICaL__Q_CaL = CHASTE_MATH::Pow(var_ICaL__Q10_CaL, (-31 + CHASTE_CONST(0.10000000000000001) * NV_Ith_S(mParameters, 24))); // dimensionless + const double var_ICaL__temp = CHASTE_CONST(0.45000000000000001) * CHASTE_MATH::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 * CHASTE_MATH::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 + CHASTE_MATH::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 * CHASTE_MATH::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 + CHASTE_MATH::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) * CHASTE_MATH::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 + CHASTE_MATH::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 * CHASTE_MATH::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 + CHASTE_MATH::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 * CHASTE_MATH::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 + CHASTE_MATH::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_ICaL__i_CaL_converted = CHASTE_CAP() * var_ICaL__i_CaL; // uA_per_cm2 + const double var_ICap__Q_SLCaP = CHASTE_MATH::Pow(var_ICap__Q10_SLCaP, (-31 + CHASTE_CONST(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 + CHASTE_MATH::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 + CHASTE_MATH::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_ICap__i_Cap_converted = CHASTE_CAP() * var_ICap__i_Cap; // uA_per_cm2 + const double var_IKs__E_Ks = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24) * CHASTE_MATH::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 = CHASTE_MATH::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 = CHASTE_MATH::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_IKs__i_Ks_converted = CHASTE_CAP() * var_IKs__i_Ks; // uA_per_cm2 + const double var_INaCa__Q_NCX = CHASTE_MATH::Pow(var_INaCa__Q10_NCX, (-31 + CHASTE_CONST(0.10000000000000001) * NV_Ith_S(mParameters, 24))); // dimensionless + const double var_INaCa__temp_SL = (CHASTE_MATH::Pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) * CHASTE_MATH::Exp(var_INaCa__eta * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24))) - CHASTE_MATH::Pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_SL * CHASTE_MATH::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 * CHASTE_MATH::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 / (CHASTE_MATH::Pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * var_INaCa__K_mCao + CHASTE_MATH::Pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) + CHASTE_MATH::Pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_SL + CHASTE_MATH::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 + CHASTE_MATH::Pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * (1 + CHASTE_MATH::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 = (CHASTE_MATH::Pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) * CHASTE_MATH::Exp(var_INaCa__eta * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24))) - CHASTE_MATH::Pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_jct * CHASTE_MATH::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 * CHASTE_MATH::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 / (CHASTE_MATH::Pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * var_INaCa__K_mCao + CHASTE_MATH::Pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) + CHASTE_MATH::Pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_jct + CHASTE_MATH::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 + CHASTE_MATH::Pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * (1 + CHASTE_MATH::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_INaCa__i_NaCa_converted = CHASTE_CAP() * var_INaCa__i_NaCa; // uA_per_cm2 + const double var_INaK__Q_Km_Nai = CHASTE_MATH::Pow(var_INaK__Q10_Km_Nai, (-31 + CHASTE_CONST(0.10000000000000001) * NV_Ith_S(mParameters, 24))); // dimensionless + const double var_INaK__Q_NaK = CHASTE_MATH::Pow(var_INaK__Q10_NaK, (-31 + CHASTE_CONST(0.10000000000000001) * NV_Ith_S(mParameters, 24))); // dimensionless + const double var_INaK__f_NaK = 1 / (1 + CHASTE_CONST(0.1245) * CHASTE_MATH::Exp(-CHASTE_CONST(0.10000000000000001) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24))) + CHASTE_CONST(0.036499999999999998) * var_INaK__sigma * CHASTE_MATH::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 + CHASTE_MATH::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 + CHASTE_MATH::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_reversal_potentials__E_Ca_SL = CHASTE_CONST(0.5) * NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24) * CHASTE_MATH::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_reversal_potentials__E_Ca_jct = CHASTE_CONST(0.5) * NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24) * CHASTE_MATH::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_ICab__i_Cab_converted = CHASTE_CAP() * var_ICab__i_Cab; // uA_per_cm2 + const double var_reversal_potentials__E_Cl = -NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24) * CHASTE_MATH::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 = (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_IClb__i_Clb_converted = CHASTE_CAP() * var_IClb__i_Clb; // uA_per_cm2 + const double var_reversal_potentials__E_K = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24) * CHASTE_MATH::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 = CHASTE_CONST(1.02) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__cell__V - CHASTE_CONST(0.23849999999999999) * var_reversal_potentials__E_K)); // per_millisecond + const double var_IK1_K1_gate__beta_K1 = (CHASTE_MATH::Exp(-CHASTE_CONST(36.698642499999998) + CHASTE_CONST(0.061749999999999999) * var_chaste_interface__cell__V - CHASTE_CONST(0.061749999999999999) * var_reversal_potentials__E_K) + CHASTE_CONST(0.49124000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.43983232) + CHASTE_CONST(0.080320000000000003) * var_chaste_interface__cell__V - CHASTE_CONST(0.080320000000000003) * var_reversal_potentials__E_K)) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.4444678999999998) + CHASTE_CONST(0.51429999999999998) * var_reversal_potentials__E_K - CHASTE_CONST(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_IK1__i_K1_converted = CHASTE_CAP() * 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_IKr__i_Kr_converted = CHASTE_CAP() * 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_Itof__i_tof_converted = CHASTE_CAP() * var_Itof__i_tof; // uA_per_cm2 + const double var_Itos__i_tos = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * (CHASTE_CONST(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 = CHASTE_CAP() * 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) * CHASTE_MATH::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_reversal_potentials__E_Na_jct = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24) * CHASTE_MATH::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_INa__i_Na_converted = CHASTE_CAP() * 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 var_INab__i_Nab_converted = CHASTE_CAP() * var_INab__i_Nab; // uA_per_cm2 + const double var_chaste_interface__i_ionic = CHASTE_CAP() * var_ICl_Ca__i_Cl_Ca + CHASTE_CAP() * 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) @@ -455,7 +457,7 @@ bool Cellshannon_wang_puglisi_weber_bers_2004FromCellMLCvodeDataClamp::registere { // 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)); + double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -548,217 +550,217 @@ bool Cellshannon_wang_puglisi_weber_bers_2004FromCellMLCvodeDataClamp::registere // 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__Bmax_Calsequestrin = CHASTE_CONST(0.14000000000000001); // millimolar + const double var_Ca_buffer__Bmax_SLB_SL = CHASTE_CONST(0.037400000000000003); // millimolar + const double var_Ca_buffer__Bmax_SLB_jct = CHASTE_CONST(0.0045999999999999999); // millimolar + const double var_Ca_buffer__Bmax_SLHigh_SL = CHASTE_CONST(0.0134); // millimolar + const double var_Ca_buffer__Bmax_SLHigh_jct = CHASTE_CONST(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__koff_SLB = CHASTE_CONST(1.3); // per_millisecond + const double var_Ca_buffer__koff_SLHigh = CHASTE_CONST(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__Fx_ICaL_SL = CHASTE_CONST(0.10000000000000001); // dimensionless + const double var_ICaL__Fx_ICaL_jct = CHASTE_CONST(0.90000000000000002); // dimensionless + const double var_ICaL__PNa = CHASTE_CONST(1.4999999999999999e-8); // litre_per_farad_millisecond + const double var_ICaL__Q10_CaL = CHASTE_CONST(1.8); // dimensionless + const double var_ICaL__gamma_Cai = CHASTE_CONST(0.34100000000000003); // dimensionless + const double var_ICaL__gamma_Cao = CHASTE_CONST(0.34100000000000003); // dimensionless + const double var_ICaL__gamma_Nai = CHASTE_CONST(0.75); // dimensionless + const double var_ICaL__gamma_Nao = CHASTE_CONST(0.75); // dimensionless + const double d_dt_chaste_interface_var_ICaL_fCa_gate__fCaB_SL = -CHASTE_CONST(0.011900000000000001) * var_chaste_interface__ICaL_fCa_gate__fCaB_SL + CHASTE_CONST(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 = -CHASTE_CONST(0.011900000000000001) * var_chaste_interface__ICaL_fCa_gate__fCaB_jct + CHASTE_CONST(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_ICab__Fx_CaBk_SL = CHASTE_CONST(0.89000000000000001); // dimensionless + const double var_ICab__Fx_CaBk_jct = CHASTE_CONST(0.11); // dimensionless + const double var_ICab__G_CaBk = CHASTE_CONST(0.00025129999999999998); // milliS_per_microF + const double var_ICap__Fx_SLCaP_SL = CHASTE_CONST(0.89000000000000001); // dimensionless + const double var_ICap__Fx_SLCaP_jct = CHASTE_CONST(0.11); // dimensionless + const double var_ICap__H = CHASTE_CONST(1.6000000000000001); // dimensionless + const double var_ICap__Km = CHASTE_CONST(0.00050000000000000001); // millimolar + const double var_ICap__Q10_SLCaP = CHASTE_CONST(2.3500000000000001); // dimensionless + const double var_ICap__V_maxAF = CHASTE_CONST(0.067299999999999999); // microA_per_microF + const double var_INa__Fx_Na_SL = CHASTE_CONST(0.89000000000000001); // dimensionless + const double var_INa__Fx_Na_jct = CHASTE_CONST(0.11); // dimensionless + const double var_INaCa__Fx_NCX_SL = CHASTE_CONST(0.89000000000000001); // dimensionless + const double var_INaCa__Fx_NCX_jct = CHASTE_CONST(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_INaCa__K_mCai = CHASTE_CONST(0.0035899999999999999); // millimolar + const double var_INaCa__K_mCao = CHASTE_CONST(1.3); // millimolar + const double var_INaCa__K_mNai = CHASTE_CONST(12.289999999999999); // millimolar + const double var_INaCa__K_mNao = CHASTE_CONST(87.5); // millimolar + const double var_INaCa__Kd_act = CHASTE_CONST(0.00025599999999999999); // millimolar + const double var_INaCa__Ka_SL = 1 / (1 + CHASTE_MATH::Pow(var_INaCa__Kd_act, 3) / CHASTE_MATH::Pow(var_chaste_interface__Ca_buffer__Ca_SL, 3)); // dimensionless + const double var_INaCa__Ka_jct = 1 / (1 + CHASTE_MATH::Pow(var_INaCa__Kd_act, 3) / CHASTE_MATH::Pow(var_chaste_interface__Ca_buffer__Ca_jct, 3)); // dimensionless + const double var_INaCa__Q10_NCX = CHASTE_CONST(1.5700000000000001); // dimensionless + const double var_INaCa__eta = CHASTE_CONST(0.34999999999999998); // dimensionless + const double var_INaCa__ksat = CHASTE_CONST(0.27000000000000002); // dimensionless + const double var_INaK__Fx_NaK_SL = CHASTE_CONST(0.89000000000000001); // dimensionless + const double var_INaK__Fx_NaK_jct = CHASTE_CONST(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__I_NaK_max = CHASTE_CONST(1.9099999999999999); // microA_per_microF + const double var_INaK__Km_Ko = CHASTE_CONST(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_INaK__Q10_Km_Nai = CHASTE_CONST(1.49); // dimensionless + const double var_INaK__Q10_NaK = CHASTE_CONST(1.6299999999999999); // dimensionless + const double var_INa__openProb = CHASTE_MATH::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 = CHASTE_CONST(0.89000000000000001); // dimensionless + const double var_INab__Fx_NaBk_jct = CHASTE_CONST(0.11); // dimensionless + const double var_INab__G_NaBk = CHASTE_CONST(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_Jpump_SR__H = CHASTE_CONST(1.7869999999999999); // dimensionless + const double var_Jpump_SR__Kmf = CHASTE_CONST(0.00024600000000000002); // millimolar + const double var_Jpump_SR__Kmr = CHASTE_CONST(1.7); // millimolar + const double var_Jpump_SR__Q10_SRCaP = CHASTE_CONST(2.6000000000000001); // dimensionless + const double var_Jrel_SR__EC50_SR = CHASTE_CONST(0.45000000000000001); // millimolar + const double var_Jrel_SR__HSR = CHASTE_CONST(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__kCaSR = -(-var_Jrel_SR__Min_SR + var_Jrel_SR__Max_SR) / (1 + CHASTE_MATH::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 = CHASTE_CONST(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__kim = CHASTE_CONST(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__kom = CHASTE_CONST(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 + CHASTE_MATH::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 + CHASTE_MATH::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 - CHASTE_MATH::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__Bmax_SL = CHASTE_CONST(1.6499999999999999); // millimolar + const double var_Na_buffer__Bmax_jct = CHASTE_CONST(7.5609999999999999); // millimolar + const double var_Na_buffer__koff = CHASTE_CONST(0.001); // per_millisecond + const double var_Na_buffer__kon = CHASTE_CONST(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 var_ICaL_d_gate__d_infinity = 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.4166666666666665) - CHASTE_CONST(0.16666666666666666) * var_chaste_interface__cell__V)); // dimensionless + const double var_ICaL_d_gate__tau_d = CHASTE_CONST(28.571428571428569) * (1 - CHASTE_MATH::Exp(-CHASTE_CONST(2.4166666666666665) - CHASTE_CONST(0.16666666666666666) * var_chaste_interface__cell__V)) * var_ICaL_d_gate__d_infinity / (CHASTE_CONST(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 var_ICaL_f_gate__f_infinity = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(9.7388888888888889) + CHASTE_CONST(0.27777777777777779) * var_chaste_interface__cell__V)) + CHASTE_CONST(0.59999999999999998) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(2.5) - CHASTE_CONST(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 / (CHASTE_CONST(0.02) + CHASTE_CONST(0.019699999999999999) * CHASTE_MATH::Exp(-CHASTE_CONST(0.23877882250000002) * CHASTE_MATH::Pow((1 + CHASTE_CONST(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 var_IKr_Xr_gate__Xr_infinity = 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(6.666666666666667) - CHASTE_CONST(0.13333333333333333) * var_chaste_interface__cell__V)); // dimensionless + const double var_IKr_Xr_gate__tau_Xr = 1 / (CHASTE_CONST(0.00060999999999999997) * (10 + var_chaste_interface__cell__V) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(1.45) + CHASTE_CONST(0.14499999999999999) * var_chaste_interface__cell__V)) + CHASTE_CONST(0.0013799999999999999) * (7 + var_chaste_interface__cell__V) / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(0.86099999999999999) - CHASTE_CONST(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 var_IKs_Xs_gate__Xs_infinity = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(0.089820359281437126) - CHASTE_CONST(0.059880239520958084) * var_chaste_interface__cell__V)); // dimensionless + const double var_IKs_Xs_gate__tau_Xs = 1 / (CHASTE_CONST(0.00013100000000000001) * (30 + var_chaste_interface__cell__V) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(2.0609999999999999) + CHASTE_CONST(0.068699999999999997) * var_chaste_interface__cell__V)) + CHASTE_CONST(7.1899999999999999e-5) * (30 + var_chaste_interface__cell__V) / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(4.4399999999999995) - CHASTE_CONST(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__alpha_h = ((var_chaste_interface__cell__V < -40) ? (CHASTE_CONST(0.13500000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(11.764705882352942) + CHASTE_CONST(0.14705882352941177) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 17), var_chaste_interface__environment__time) - CHASTE_CONST(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 * CHASTE_MATH::Exp(CHASTE_CONST(0.34999999999999998) * var_chaste_interface__cell__V - CHASTE_CONST(0.34999999999999998) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 17), var_chaste_interface__environment__time)) + CHASTE_CONST(3.5600000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.079000000000000001) * var_chaste_interface__cell__V - CHASTE_CONST(0.079000000000000001) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 17), var_chaste_interface__environment__time))) : (CHASTE_CONST(7.6923076923076916) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.96036036036036043) + CHASTE_CONST(0.0900900900900901) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 17), var_chaste_interface__environment__time) - CHASTE_CONST(0.0900900900900901) * var_chaste_interface__cell__V)))); // per_millisecond + const double var_INa_h_gate__h_infinity = CHASTE_CONST(0.01) * mp_membrane_fast_sodium_current_reduced_inactivation_modifier->Calc(NV_Ith_S(mParameters, 16), var_chaste_interface__environment__time) + (1 - CHASTE_CONST(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) ? ((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__alpha_j = ((var_chaste_interface__cell__V < -40) ? ((CHASTE_CONST(37.780000000000001) + var_chaste_interface__cell__V) * (-127140 * CHASTE_MATH::Exp(CHASTE_CONST(0.24440000000000001) * var_chaste_interface__cell__V - CHASTE_CONST(0.24440000000000001) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 17), var_chaste_interface__environment__time)) - CHASTE_CONST(3.4740000000000003e-5) * CHASTE_MATH::Exp(CHASTE_CONST(0.043909999999999998) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 17), var_chaste_interface__environment__time) - CHASTE_CONST(0.043909999999999998) * var_chaste_interface__cell__V)) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(24.640530000000002) + CHASTE_CONST(0.311) * var_chaste_interface__cell__V - CHASTE_CONST(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) ? (CHASTE_CONST(0.1212) * CHASTE_MATH::Exp(CHASTE_CONST(0.01052) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 17), var_chaste_interface__environment__time) - CHASTE_CONST(0.01052) * var_chaste_interface__cell__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(5.5312920000000005) + CHASTE_CONST(0.13780000000000001) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 17), var_chaste_interface__environment__time) - CHASTE_CONST(0.13780000000000001) * var_chaste_interface__cell__V))) : (CHASTE_CONST(0.29999999999999999) * CHASTE_MATH::Exp(CHASTE_CONST(2.5349999999999999e-7) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 17), var_chaste_interface__environment__time) - CHASTE_CONST(2.5349999999999999e-7) * var_chaste_interface__cell__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(3.2000000000000002) + CHASTE_CONST(0.10000000000000001) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 17), var_chaste_interface__environment__time) - CHASTE_CONST(0.10000000000000001) * var_chaste_interface__cell__V)))); // per_millisecond + const double var_INa_j_gate__j_infinity = CHASTE_CONST(0.01) * mp_membrane_fast_sodium_current_reduced_inactivation_modifier->Calc(NV_Ith_S(mParameters, 16), var_chaste_interface__environment__time) + (1 - CHASTE_CONST(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__alpha_m = CHASTE_CONST(0.32000000000000001) * (CHASTE_CONST(47.130000000000003) + var_chaste_interface__cell__V) / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(4.7130000000000001) - CHASTE_CONST(0.10000000000000001) * var_chaste_interface__cell__V)); // per_millisecond + const double var_INa_m_gate__beta_m = CHASTE_CONST(0.080000000000000002) * CHASTE_MATH::Exp(-CHASTE_CONST(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 var_Itof_X_gate__X_tof_infinity = 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.20000000000000001) - CHASTE_CONST(0.066666666666666666) * var_chaste_interface__cell__V)); // dimensionless + const double var_Itof_X_gate__tau_X_tof = CHASTE_CONST(1.5) + CHASTE_CONST(3.5) * CHASTE_MATH::Exp(-CHASTE_CONST(0.0011111111111111111) * CHASTE_MATH::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 var_Itof_Y_gate__Y_tof_infinity = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(3.3500000000000001) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__cell__V)); // dimensionless + const double var_Itof_Y_gate__tau_Y_tof = 20 + 20 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(3.3500000000000001) + CHASTE_CONST(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 var_Itos_R_gate__R_tos_infinity = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(3.3500000000000001) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__cell__V)); // dimensionless + const double var_Itos_R_gate__tau_R_tos = 220 + 2800 / (1 + CHASTE_MATH::Exp(6 + CHASTE_CONST(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 var_Itos_X_gate__X_tos_infinity = 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.20000000000000001) - CHASTE_CONST(0.066666666666666666) * var_chaste_interface__cell__V)); // dimensionless + const double var_Itos_X_gate__tau_X_tos = CHASTE_CONST(0.5) + 9 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(0.20000000000000001) + CHASTE_CONST(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 var_Itos_Y_gate__Y_tos_infinity = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(3.3500000000000001) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__cell__V)); // dimensionless + const double var_Itos_Y_gate__tau_Y_tos = 30 + 3000 / (1 + CHASTE_MATH::Exp(6 + CHASTE_CONST(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__Bmax_Calmodulin = CHASTE_CONST(0.024); // millimolar + const double var_cytosolic_Ca_buffer__Bmax_Myosin_Ca = CHASTE_CONST(0.14000000000000001); // millimolar + const double var_cytosolic_Ca_buffer__Bmax_Myosin_Mg = CHASTE_CONST(0.14000000000000001); // millimolar + const double var_cytosolic_Ca_buffer__Bmax_SRB = CHASTE_CONST(0.017100000000000001); // millimolar + const double var_cytosolic_Ca_buffer__Bmax_TroponinC = CHASTE_CONST(0.070000000000000007); // millimolar + const double var_cytosolic_Ca_buffer__Bmax_TroponinC_Ca_Mg_Ca = CHASTE_CONST(0.14000000000000001); // millimolar + const double var_cytosolic_Ca_buffer__Bmax_TroponinC_Ca_Mg_Mg = CHASTE_CONST(0.14000000000000001); // millimolar + const double var_cytosolic_Ca_buffer__koff_Calmodulin = CHASTE_CONST(0.23799999999999999); // per_millisecond + const double var_cytosolic_Ca_buffer__koff_Myosin_Ca = CHASTE_CONST(0.00046000000000000001); // per_millisecond + const double var_cytosolic_Ca_buffer__koff_Myosin_Mg = CHASTE_CONST(5.7000000000000003e-5); // per_millisecond + const double var_cytosolic_Ca_buffer__koff_SRB = CHASTE_CONST(0.059999999999999998); // per_millisecond + const double var_cytosolic_Ca_buffer__koff_TroponinC = CHASTE_CONST(0.019599999999999999); // per_millisecond + const double var_cytosolic_Ca_buffer__koff_TroponinC_Ca_Mg_Ca = CHASTE_CONST(3.1999999999999999e-5); // per_millisecond + const double var_cytosolic_Ca_buffer__koff_TroponinC_Ca_Mg_Mg = CHASTE_CONST(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__kon_Myosin_Ca = CHASTE_CONST(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_Myosin_Mg = CHASTE_CONST(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__kon_TroponinC = CHASTE_CONST(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__kon_TroponinC_Ca_Mg_Ca = CHASTE_CONST(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_cytosolic_Ca_buffer__kon_TroponinC_Ca_Mg_Mg = CHASTE_CONST(0.0030000000000000001); // per_millimolar_per_millisecond + const double var_indo_fluo_Ca_buffer_not_connected__Bmax_Fluo3_Cytosol = CHASTE_CONST(0.025000000000000001); // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__Bmax_Fluo3_SL = CHASTE_CONST(0.00076999999999999996); // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__Bmax_Fluo3_jct = CHASTE_CONST(2.0000000000000002e-5); // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__Bmax_Indo1_Cytosol = CHASTE_CONST(0.025000000000000001); // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__Bmax_Indo1_SL = CHASTE_CONST(0.00076999999999999996); // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__Bmax_Indo1_jct = CHASTE_CONST(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__koff_Fluo3 = CHASTE_CONST(0.11); // per_millisecond + const double var_indo_fluo_Ca_buffer_not_connected__koff_Indo1 = CHASTE_CONST(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_ion_diffusion__J_Ca_SL_cytosol = CHASTE_CONST(3.7243000000000002e-12) * var_chaste_interface__Ca_buffer__Ca_SL - CHASTE_CONST(3.7243000000000002e-12) * var_chaste_interface__Ca_buffer__Cai; // millimole_per_millisecond + const double var_ion_diffusion__J_Ca_jct_SL = CHASTE_CONST(8.2413000000000004e-13) * var_chaste_interface__Ca_buffer__Ca_jct - CHASTE_CONST(8.2413000000000004e-13) * var_chaste_interface__Ca_buffer__Ca_SL; // millimole_per_millisecond + const double var_ion_diffusion__J_Na_SL_cytosol = CHASTE_CONST(1.6385999999999999e-12) * var_chaste_interface__Na_buffer__Na_SL - CHASTE_CONST(1.6385999999999999e-12) * var_chaste_interface__Na_buffer__Nai; // millimole_per_millisecond + const double var_ion_diffusion__J_Na_jct_SL = CHASTE_CONST(1.8312999999999999e-14) * var_chaste_interface__Na_buffer__Na_jct - CHASTE_CONST(1.8312999999999999e-14) * var_chaste_interface__Na_buffer__Na_SL; // millimole_per_millisecond + const double var_model_parameters__Cm_per_area = CHASTE_CONST(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_INaK__sigma = -CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * CHASTE_MATH::Exp(CHASTE_CONST(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 = CHASTE_MATH::Pow(var_ICaL__Q10_CaL, (-31 + CHASTE_CONST(0.10000000000000001) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time))); // dimensionless + const double var_ICaL__temp = CHASTE_CONST(0.45000000000000001) * CHASTE_MATH::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 * CHASTE_MATH::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 + CHASTE_MATH::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 * CHASTE_MATH::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 + CHASTE_MATH::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 * CHASTE_MATH::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 + CHASTE_MATH::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 * CHASTE_MATH::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 + CHASTE_MATH::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 = CHASTE_MATH::Pow(var_ICap__Q10_SLCaP, (-31 + CHASTE_CONST(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 + CHASTE_MATH::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 + CHASTE_MATH::Pow((var_ICap__Km / var_chaste_interface__Ca_buffer__Ca_jct), var_ICap__H)); // microA_per_microF + const double var_INaCa__Q_NCX = CHASTE_MATH::Pow(var_INaCa__Q10_NCX, (-31 + CHASTE_CONST(0.10000000000000001) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time))); // dimensionless + const double var_INaCa__temp_SL = (CHASTE_MATH::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) * CHASTE_MATH::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))) - CHASTE_MATH::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 * CHASTE_MATH::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 * CHASTE_MATH::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 / (CHASTE_MATH::Pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * var_INaCa__K_mCao + CHASTE_MATH::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) + CHASTE_MATH::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 + CHASTE_MATH::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 + CHASTE_MATH::Pow(mp_extracellular_sodium_concentration_modifier->Calc(NV_Ith_S(mParameters, 9), var_chaste_interface__environment__time), var_INaCa__HNa) * (1 + CHASTE_MATH::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 = (CHASTE_MATH::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) * CHASTE_MATH::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))) - CHASTE_MATH::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 * CHASTE_MATH::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 * CHASTE_MATH::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 / (CHASTE_MATH::Pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * var_INaCa__K_mCao + CHASTE_MATH::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) + CHASTE_MATH::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 + CHASTE_MATH::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 + CHASTE_MATH::Pow(mp_extracellular_sodium_concentration_modifier->Calc(NV_Ith_S(mParameters, 9), var_chaste_interface__environment__time), var_INaCa__HNa) * (1 + CHASTE_MATH::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 = CHASTE_MATH::Pow(var_INaK__Q10_Km_Nai, (-31 + CHASTE_CONST(0.10000000000000001) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time))); // dimensionless + const double var_INaK__Q_NaK = CHASTE_MATH::Pow(var_INaK__Q10_NaK, (-31 + CHASTE_CONST(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 + CHASTE_CONST(0.1245) * CHASTE_MATH::Exp(-CHASTE_CONST(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))) + CHASTE_CONST(0.036499999999999998) * var_INaK__sigma * CHASTE_MATH::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 + CHASTE_MATH::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 + CHASTE_MATH::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 = CHASTE_MATH::Pow(var_Jpump_SR__Q10_SRCaP, (-31 + CHASTE_CONST(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_model_parameters__cell_radius = CHASTE_CONST(10.25); // micrometre + const double var_model_parameters__Cm = CHASTE_CONST(2.0e-8) * CHASTE_CONST(CHASTE_MATH::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 = CHASTE_CONST(3.1415926540000002e-15) * CHASTE_MATH::Pow(var_model_parameters__cell_radius, 2) * var_model_parameters__cell_length; // liter + const double var_model_parameters__Vol_SL = CHASTE_CONST(0.02) * var_model_parameters__Vol_Cell; // liter + const double var_model_parameters__Vol_SR = CHASTE_CONST(0.035000000000000003) * var_model_parameters__Vol_Cell; // liter + const double var_model_parameters__Vol_cytosol = CHASTE_CONST(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 @@ -767,12 +769,12 @@ bool Cellshannon_wang_puglisi_weber_bers_2004FromCellMLCvodeDataClamp::registere 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 var_Jpump_SR__j_pump_SR = (CHASTE_MATH::Pow((var_chaste_interface__Ca_buffer__Cai / var_Jpump_SR__Kmf), var_Jpump_SR__H) - CHASTE_MATH::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 + CHASTE_MATH::Pow((var_chaste_interface__Ca_buffer__Cai / var_Jpump_SR__Kmf), var_Jpump_SR__H) + CHASTE_MATH::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_model_parameters__Vol_jct = CHASTE_CONST(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 + CHASTE_CONST(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 + CHASTE_CONST(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 @@ -790,19 +792,19 @@ bool Cellshannon_wang_puglisi_weber_bers_2004FromCellMLCvodeDataClamp::registere 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_reversal_potentials__E_Ca_SL = CHASTE_CONST(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) * CHASTE_MATH::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 = -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 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 - CHASTE_CONST(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 = CHASTE_CONST(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) * CHASTE_MATH::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 = -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 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 - CHASTE_CONST(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) * CHASTE_MATH::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_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) * CHASTE_MATH::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 @@ -813,46 +815,46 @@ bool Cellshannon_wang_puglisi_weber_bers_2004FromCellMLCvodeDataClamp::registere } 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))) * 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(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__PK = CHASTE_CONST(2.7000000000000001e-7); // litre_per_farad_millisecond + const double var_ICaL__gamma_Ki = CHASTE_CONST(0.75); // dimensionless + const double var_ICaL__gamma_Ko = CHASTE_CONST(0.75); // dimensionless + const double var_ICl_Ca__Fx_Cl_SL = CHASTE_CONST(0.89000000000000001); // dimensionless + const double var_ICl_Ca__Fx_Cl_jct = CHASTE_CONST(0.11); // dimensionless + const double var_ICl_Ca__G_Cl = CHASTE_CONST(0.109625); // milliS_per_microF + const double var_ICl_Ca__Kd_ClCa = CHASTE_CONST(0.10000000000000001); // millimolar + const double var_IKs__Fx_Ks_SL = CHASTE_CONST(0.89000000000000001); // dimensionless + const double var_IKs__Fx_Ks_jct = CHASTE_CONST(0.11); // dimensionless + const double var_IKs__pCa_SL = 3 - CHASTE_MATH::Log10(var_chaste_interface__Ca_buffer__Ca_SL); // dimensionless + const double var_IKs__G_Ks_SL = (CHASTE_CONST(0.057000000000000002) + CHASTE_CONST(0.19) / (1 + CHASTE_MATH::Exp(-12 + CHASTE_CONST(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 - CHASTE_MATH::Log10(var_chaste_interface__Ca_buffer__Ca_jct); // dimensionless + const double var_IKs__G_Ks_jct = (CHASTE_CONST(0.057000000000000002) + CHASTE_CONST(0.19) / (1 + CHASTE_MATH::Exp(-12 + CHASTE_CONST(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 = CHASTE_CONST(0.018329999999999999); // dimensionless + const double var_IKr_Rr_gate__Rr = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(1.4732142857142858) + CHASTE_CONST(0.044642857142857144) * var_chaste_interface__cell__V)); // dimensionless + const double var_cell__i_Stim_converted = CHASTE_STIM(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_cell__i_Stim = var_cell__i_Stim_converted / CHASTE_CAP(); // microA_per_microF + const double var_IK1__G_K1 = mp_membrane_inward_rectifier_potassium_current_conductance_modifier->Calc(CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::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 = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::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) * CHASTE_MATH::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 + CHASTE_MATH::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__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) * CHASTE_MATH::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 = CHASTE_MATH::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 = CHASTE_MATH::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_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) * CHASTE_MATH::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 = (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_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) * CHASTE_MATH::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 = CHASTE_CONST(1.02) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__cell__V - CHASTE_CONST(0.23849999999999999) * var_reversal_potentials__E_K)); // per_millisecond + const double var_IK1_K1_gate__beta_K1 = (CHASTE_MATH::Exp(-CHASTE_CONST(36.698642499999998) + CHASTE_CONST(0.061749999999999999) * var_chaste_interface__cell__V - CHASTE_CONST(0.061749999999999999) * var_reversal_potentials__E_K) + CHASTE_CONST(0.49124000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.43983232) + CHASTE_CONST(0.080320000000000003) * var_chaste_interface__cell__V - CHASTE_CONST(0.080320000000000003) * var_reversal_potentials__E_K)) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.4444678999999998) + CHASTE_CONST(0.51429999999999998) * var_reversal_potentials__E_K - CHASTE_CONST(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_Itos__i_tos = mp_Itos__i_tos_modifier->Calc((-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * (CHASTE_CONST(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 @@ -860,7 +862,7 @@ bool Cellshannon_wang_puglisi_weber_bers_2004FromCellMLCvodeDataClamp::registere 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 + var_chaste_interface__membrane_data_clamp_current = (-CHASTE_EXP_VOLT(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 } @@ -916,7 +918,7 @@ bool Cellshannon_wang_puglisi_weber_bers_2004FromCellMLCvodeDataClamp::registere { // 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)); + double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -962,135 +964,135 @@ bool Cellshannon_wang_puglisi_weber_bers_2004FromCellMLCvodeDataClamp::registere // 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__Fx_ICaL_SL = CHASTE_CONST(0.10000000000000001); // dimensionless + const double var_ICaL__Fx_ICaL_jct = CHASTE_CONST(0.90000000000000002); // dimensionless + const double var_ICaL__PK = CHASTE_CONST(2.7000000000000001e-7); // litre_per_farad_millisecond + const double var_ICaL__PNa = CHASTE_CONST(1.4999999999999999e-8); // litre_per_farad_millisecond + const double var_ICaL__Q10_CaL = CHASTE_CONST(1.8); // dimensionless + const double var_ICaL__gamma_Cai = CHASTE_CONST(0.34100000000000003); // dimensionless + const double var_ICaL__gamma_Cao = CHASTE_CONST(0.34100000000000003); // dimensionless + const double var_ICaL__gamma_Ki = CHASTE_CONST(0.75); // dimensionless + const double var_ICaL__gamma_Ko = CHASTE_CONST(0.75); // dimensionless + const double var_ICaL__gamma_Nai = CHASTE_CONST(0.75); // dimensionless + const double var_ICaL__gamma_Nao = CHASTE_CONST(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(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(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_ICab__Fx_CaBk_SL = CHASTE_CONST(0.89000000000000001); // dimensionless + const double var_ICab__Fx_CaBk_jct = CHASTE_CONST(0.11); // dimensionless + const double var_ICab__G_CaBk = CHASTE_CONST(0.00025129999999999998); // milliS_per_microF + const double var_ICap__Fx_SLCaP_SL = CHASTE_CONST(0.89000000000000001); // dimensionless + const double var_ICap__Fx_SLCaP_jct = CHASTE_CONST(0.11); // dimensionless + const double var_ICap__H = CHASTE_CONST(1.6000000000000001); // dimensionless + const double var_ICap__Km = CHASTE_CONST(0.00050000000000000001); // millimolar + const double var_ICap__Q10_SLCaP = CHASTE_CONST(2.3500000000000001); // dimensionless + const double var_ICap__V_maxAF = CHASTE_CONST(0.067299999999999999); // microA_per_microF + const double var_IKs__Fx_Ks_SL = CHASTE_CONST(0.89000000000000001); // dimensionless + const double var_IKs__Fx_Ks_jct = CHASTE_CONST(0.11); // dimensionless + const double var_IKs__pCa_SL = 3 - CHASTE_MATH::Log10(var_chaste_interface__Ca_buffer__Ca_SL); // dimensionless + const double var_IKs__G_Ks_SL = (CHASTE_CONST(0.057000000000000002) + CHASTE_CONST(0.19) / (1 + CHASTE_MATH::Exp(-12 + CHASTE_CONST(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 - CHASTE_MATH::Log10(var_chaste_interface__Ca_buffer__Ca_jct); // dimensionless + const double var_IKs__G_Ks_jct = (CHASTE_CONST(0.057000000000000002) + CHASTE_CONST(0.19) / (1 + CHASTE_MATH::Exp(-12 + CHASTE_CONST(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 = CHASTE_CONST(0.018329999999999999); // dimensionless + const double var_INa__Fx_Na_SL = CHASTE_CONST(0.89000000000000001); // dimensionless + const double var_INa__Fx_Na_jct = CHASTE_CONST(0.11); // dimensionless + const double var_INaCa__Fx_NCX_SL = CHASTE_CONST(0.89000000000000001); // dimensionless + const double var_INaCa__Fx_NCX_jct = CHASTE_CONST(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_INaCa__K_mCai = CHASTE_CONST(0.0035899999999999999); // millimolar + const double var_INaCa__K_mCao = CHASTE_CONST(1.3); // millimolar + const double var_INaCa__K_mNai = CHASTE_CONST(12.289999999999999); // millimolar + const double var_INaCa__K_mNao = CHASTE_CONST(87.5); // millimolar + const double var_INaCa__Kd_act = CHASTE_CONST(0.00025599999999999999); // millimolar + const double var_INaCa__Ka_SL = 1 / (1 + CHASTE_MATH::Pow(var_INaCa__Kd_act, 3) / CHASTE_MATH::Pow(var_chaste_interface__Ca_buffer__Ca_SL, 3)); // dimensionless + const double var_INaCa__Ka_jct = 1 / (1 + CHASTE_MATH::Pow(var_INaCa__Kd_act, 3) / CHASTE_MATH::Pow(var_chaste_interface__Ca_buffer__Ca_jct, 3)); // dimensionless + const double var_INaCa__Q10_NCX = CHASTE_CONST(1.5700000000000001); // dimensionless + const double var_INaCa__eta = CHASTE_CONST(0.34999999999999998); // dimensionless + const double var_INaCa__ksat = CHASTE_CONST(0.27000000000000002); // dimensionless + const double var_INa__openProb = CHASTE_MATH::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 = CHASTE_CONST(0.89000000000000001); // dimensionless + const double var_INab__Fx_NaBk_jct = CHASTE_CONST(0.11); // dimensionless + const double var_INab__G_NaBk = CHASTE_CONST(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_ICaL_f_gate__tau_f = mp_membrane_L_type_calcium_current_f_gate_tau_modifier->Calc(1 / (CHASTE_CONST(0.02) + CHASTE_CONST(0.019699999999999999) * CHASTE_MATH::Exp(-CHASTE_CONST(0.23877882250000002) * CHASTE_MATH::Pow((1 + CHASTE_CONST(0.068965517241379309) * var_chaste_interface__cell__V), 2))), var_chaste_interface__environment__time); // millisecond + const double var_IKr_Rr_gate__Rr = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(1.4732142857142858) + CHASTE_CONST(0.044642857142857144) * var_chaste_interface__cell__V)); // dimensionless + const double var_INa_h_gate__alpha_h = ((var_chaste_interface__cell__V < -40) ? (CHASTE_CONST(0.13500000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(11.764705882352942) + CHASTE_CONST(0.14705882352941177) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 17), var_chaste_interface__environment__time) - CHASTE_CONST(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 * CHASTE_MATH::Exp(CHASTE_CONST(0.34999999999999998) * var_chaste_interface__cell__V - CHASTE_CONST(0.34999999999999998) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 17), var_chaste_interface__environment__time)) + CHASTE_CONST(3.5600000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.079000000000000001) * var_chaste_interface__cell__V - CHASTE_CONST(0.079000000000000001) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 17), var_chaste_interface__environment__time))) : (CHASTE_CONST(7.6923076923076916) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.96036036036036043) + CHASTE_CONST(0.0900900900900901) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 17), var_chaste_interface__environment__time) - CHASTE_CONST(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) ? ((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__alpha_j = ((var_chaste_interface__cell__V < -40) ? ((CHASTE_CONST(37.780000000000001) + var_chaste_interface__cell__V) * (-127140 * CHASTE_MATH::Exp(CHASTE_CONST(0.24440000000000001) * var_chaste_interface__cell__V - CHASTE_CONST(0.24440000000000001) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 17), var_chaste_interface__environment__time)) - CHASTE_CONST(3.4740000000000003e-5) * CHASTE_MATH::Exp(CHASTE_CONST(0.043909999999999998) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 17), var_chaste_interface__environment__time) - CHASTE_CONST(0.043909999999999998) * var_chaste_interface__cell__V)) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(24.640530000000002) + CHASTE_CONST(0.311) * var_chaste_interface__cell__V - CHASTE_CONST(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) ? (CHASTE_CONST(0.1212) * CHASTE_MATH::Exp(CHASTE_CONST(0.01052) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 17), var_chaste_interface__environment__time) - CHASTE_CONST(0.01052) * var_chaste_interface__cell__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(5.5312920000000005) + CHASTE_CONST(0.13780000000000001) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 17), var_chaste_interface__environment__time) - CHASTE_CONST(0.13780000000000001) * var_chaste_interface__cell__V))) : (CHASTE_CONST(0.29999999999999999) * CHASTE_MATH::Exp(CHASTE_CONST(2.5349999999999999e-7) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 17), var_chaste_interface__environment__time) - CHASTE_CONST(2.5349999999999999e-7) * var_chaste_interface__cell__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(3.2000000000000002) + CHASTE_CONST(0.10000000000000001) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 17), var_chaste_interface__environment__time) - CHASTE_CONST(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 + const double var_cell__i_Stim_converted = CHASTE_STIM(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 + var_chaste_interface__membrane_data_clamp_current = (-CHASTE_EXP_VOLT(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_model_parameters__Cm_per_area = CHASTE_CONST(1.9999999999999999e-6); // farad_per_cm2 + const double var_IK1__G_K1 = mp_membrane_inward_rectifier_potassium_current_conductance_modifier->Calc(CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::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 = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::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 = CHASTE_MATH::Pow(var_ICaL__Q10_CaL, (-31 + CHASTE_CONST(0.10000000000000001) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time))); // dimensionless + const double var_ICaL__temp = CHASTE_CONST(0.45000000000000001) * CHASTE_MATH::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 * CHASTE_MATH::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 + CHASTE_MATH::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 * CHASTE_MATH::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 + CHASTE_MATH::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) * CHASTE_MATH::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 + CHASTE_MATH::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 * CHASTE_MATH::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 + CHASTE_MATH::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 * CHASTE_MATH::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 + CHASTE_MATH::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_ICaL__i_CaL_converted = CHASTE_CAP() * var_ICaL__i_CaL; // uA_per_cm2 + const double var_ICap__Q_SLCaP = CHASTE_MATH::Pow(var_ICap__Q10_SLCaP, (-31 + CHASTE_CONST(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 + CHASTE_MATH::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 + CHASTE_MATH::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_ICap__i_Cap_converted = CHASTE_CAP() * 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) * CHASTE_MATH::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 = CHASTE_MATH::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 = CHASTE_MATH::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_IKs__i_Ks_converted = CHASTE_CAP() * var_IKs__i_Ks; // uA_per_cm2 + const double var_INaCa__Q_NCX = CHASTE_MATH::Pow(var_INaCa__Q10_NCX, (-31 + CHASTE_CONST(0.10000000000000001) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time))); // dimensionless + const double var_INaCa__temp_SL = (CHASTE_MATH::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) * CHASTE_MATH::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))) - CHASTE_MATH::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 * CHASTE_MATH::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 * CHASTE_MATH::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 / (CHASTE_MATH::Pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * var_INaCa__K_mCao + CHASTE_MATH::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) + CHASTE_MATH::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 + CHASTE_MATH::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 + CHASTE_MATH::Pow(mp_extracellular_sodium_concentration_modifier->Calc(NV_Ith_S(mParameters, 9), var_chaste_interface__environment__time), var_INaCa__HNa) * (1 + CHASTE_MATH::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 = (CHASTE_MATH::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) * CHASTE_MATH::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))) - CHASTE_MATH::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 * CHASTE_MATH::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 * CHASTE_MATH::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 / (CHASTE_MATH::Pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * var_INaCa__K_mCao + CHASTE_MATH::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) + CHASTE_MATH::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 + CHASTE_MATH::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 + CHASTE_MATH::Pow(mp_extracellular_sodium_concentration_modifier->Calc(NV_Ith_S(mParameters, 9), var_chaste_interface__environment__time), var_INaCa__HNa) * (1 + CHASTE_MATH::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_INaCa__i_NaCa_converted = CHASTE_CAP() * 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__cell_radius = CHASTE_CONST(10.25); // micrometre + const double var_model_parameters__Cm = CHASTE_CONST(2.0e-8) * CHASTE_CONST(CHASTE_MATH::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_reversal_potentials__E_Ca_SL = CHASTE_CONST(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) * CHASTE_MATH::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_reversal_potentials__E_Ca_jct = CHASTE_CONST(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) * CHASTE_MATH::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_ICab__i_Cab_converted = CHASTE_CAP() * 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) * CHASTE_MATH::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 = (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_IClb__i_Clb_converted = CHASTE_CAP() * 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) * CHASTE_MATH::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 = CHASTE_CONST(1.02) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__cell__V - CHASTE_CONST(0.23849999999999999) * var_reversal_potentials__E_K)); // per_millisecond + const double var_IK1_K1_gate__beta_K1 = (CHASTE_MATH::Exp(-CHASTE_CONST(36.698642499999998) + CHASTE_CONST(0.061749999999999999) * var_chaste_interface__cell__V - CHASTE_CONST(0.061749999999999999) * var_reversal_potentials__E_K) + CHASTE_CONST(0.49124000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.43983232) + CHASTE_CONST(0.080320000000000003) * var_chaste_interface__cell__V - CHASTE_CONST(0.080320000000000003) * var_reversal_potentials__E_K)) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.4444678999999998) + CHASTE_CONST(0.51429999999999998) * var_reversal_potentials__E_K - CHASTE_CONST(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_IK1__i_K1_converted = CHASTE_CAP() * 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_IKr__i_Kr_converted = CHASTE_CAP() * 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_Itof__i_tof_converted = CHASTE_CAP() * 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) * (CHASTE_CONST(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 = CHASTE_CAP() * 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) * CHASTE_MATH::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_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) * CHASTE_MATH::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_INa__i_Na_converted = CHASTE_CAP() * 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 + const double var_INab__i_Nab_converted = CHASTE_CAP() * var_INab__i_Nab; // uA_per_cm2 #if CHASTE_SUNDIALS_VERSION >= 60000 N_Vector dqs = N_VNew_Serial(24, CvodeContextManager::Instance()->GetSundialsContext()); @@ -1559,4 +1561,5 @@ void OdeSystemInformation { @@ -102,6 +106,10 @@ class Cellshannon_wang_puglisi_weber_bers_2004FromCellMLCvodeDataClamp : public const bool is_concentration[45] = {false, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true, false, false, true, true, true, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false}; const bool is_probability[45] = {false, false, true, true, true, false, false, false, false, false, false, false, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false}; public: + static constexpr unsigned TOTAL_SIZE = 45u; + static constexpr unsigned NNZ = 0u; + static inline const int sparse_rowptr[] = { }; + static inline const int sparse_colind[] = { }; boost::shared_ptr UseCellMLDefaultStimulus(); double GetIntracellularCalciumConcentration(); @@ -110,7 +118,19 @@ const bool is_probability[45] = {false, false, true, true, true, false, false, f void VerifyStateVariables(); double GetIIonic(const std::vector* pStateVariables=NULL); void EvaluateYDerivatives(double var_chaste_interface__environment__time, const N_Vector rY, N_Vector rDY); + N_Vector ComputeDerivedQuantities(double var_chaste_interface__environment__time, const N_Vector & rY); +#if USING_DEVICE_COMPILER + template + DEVICE + static void EvaluateYDerivativesDevice(ValueType var_chaste_interface__environment__time, const ValueType* rY, ValueType* rDY, const ValueType mSetVoltageDerivativeToZero, const ValueType mFixedVoltage, const ValueType* mParameters, const ValueType capacitance, const DeviceStimulusFunctor stim); + template + DEVICE + static void EvaluateAnalyticJacobianDevice(ValueType var_chaste_interface__environment__time, const ValueType *rY, ValueType *rDY, ValueType *rJacobian, ValueType *rTmp1, ValueType *rTmp2, ValueType *rTmp3, const unsigned nvars, const ValueType mSetVoltageDerivativeToZero, const ValueType mFixedVoltage, const ValueType *mParameters, const ValueType capacitance, const DeviceStimulusFunctor stim); + template + DEVICE + static void EvaluateSparseAnalyticJacobianDevice(ValueType var_chaste_interface__environment__time, const ValueType *rY, ValueType *rDY, ValueType *rJacobian, ValueType *rTmp1, ValueType *rTmp2, ValueType *rTmp3, const unsigned nvars, const ValueType mSetVoltageDerivativeToZero, const ValueType mFixedVoltage, const ValueType *mParameters, const ValueType capacitance, const DeviceStimulusFunctor stim); +#endif }; // Needs to be included last @@ -147,4 +167,10 @@ namespace boost } #endif // CELLSHANNON_WANG_PUGLISI_WEBER_BERS_2004FROMCELLMLCVODEDATACLAMP_HPP_ + + + +#if USING_DEVICE_COMPILER + #include "Shannon2004_with_modifiersKernels.hpp" +#endif #endif // CHASTE_CVODE \ No newline at end of file diff --git a/chaste_codegen/data/tests/chaste_reference_models/CVODE_DATA_CLAMP/dokos_model_1996.cpp b/chaste_codegen/data/tests/chaste_reference_models/CVODE_DATA_CLAMP/dokos_model_1996.cpp index 12f9e6995..4b7a3f996 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/CVODE_DATA_CLAMP/dokos_model_1996.cpp +++ b/chaste_codegen/data/tests/chaste_reference_models/CVODE_DATA_CLAMP/dokos_model_1996.cpp @@ -22,6 +22,8 @@ #include "HeartConfig.hpp" #include "IsNan.hpp" #include "MathsCustomFunctions.hpp" +#include "ChasteMathDeviceNamespaces.hpp" +#include "ChasteCpuMacros.hpp" #if CHASTE_SUNDIALS_VERSION >= 60000 #include "CvodeContextManager.hpp" @@ -49,13 +51,13 @@ 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, 0) = CHASTE_CONST(0.40000000000000002); // (var_L_type_calcium_current__g_CaL) [nanoS] + NV_Ith_S(this->mParameters, 1) = CHASTE_CONST(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] + NV_Ith_S(this->mParameters, 3) = CHASTE_CONST(0.00025999999999999998); // (var_delayed_rectifying_potassium_current__Kk) [picoA_per_millimolar] + NV_Ith_S(this->mParameters, 4) = CHASTE_CONST(0.25); // (var_fast_sodium_current__g_Na) [nanoS] + NV_Ith_S(this->mParameters, 5) = CHASTE_CONST(0.0135); // (var_hyperpolarising_activated_current__g_fK) [nanoS] + NV_Ith_S(this->mParameters, 6) = CHASTE_CONST(0.0080999999999999996); // (var_hyperpolarising_activated_current__g_fNa) [nanoS] } Celldokos_model_1996FromCellMLCvodeDataClamp::~Celldokos_model_1996FromCellMLCvodeDataClamp() @@ -111,7 +113,7 @@ made_new_cvode_vector = true; rY = MakeNVector(*pStateVariables); } - double var_chaste_interface__membrane__E = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + double var_chaste_interface__membrane__E = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -144,50 +146,50 @@ 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_T_type_calcium_current__g_CaT = CHASTE_CONST(0.085000000000000006); // nanoS + const double var_background_potassium_current__KbK = CHASTE_CONST(6.9999999999999994e-5); // picoA_per_millimolar + const double var_background_sodium_current__g_Nab = CHASTE_CONST(0.00024000000000000001); // nanoS + const double var_constants__F = CHASTE_CONST(96485.341499999995); // coulomb_per_mole + const double var_constants__R = CHASTE_CONST(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 = 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 = 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 = 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__P_KNa = CHASTE_CONST(0.035000000000000003); // dimensionless + const double var_hyperpolarising_activated_current__Kmf = CHASTE_CONST(10.300000000000001); // millimolar + const double var_membrane__C_converted = CHASTE_CONST(0.001) * NV_Ith_S(mParameters, 1); // uF + const double var_background_potassium_current__i_bK = CHASTE_MATH::Pow(var_chaste_interface__ion_concentrations__Ko, CHASTE_CONST(0.40999999999999998)) * (-var_chaste_interface__ion_concentrations__Ko * CHASTE_MATH::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 = CHASTE_MATH::Pow(var_chaste_interface__ion_concentrations__Ko, CHASTE_CONST(0.58999999999999997)) * (-var_chaste_interface__ion_concentrations__Ko * CHASTE_MATH::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 = CHASTE_MATH::Pow(var_chaste_interface__ion_concentrations__Ko, CHASTE_CONST(0.58999999999999997)) * (-var_chaste_interface__ion_concentrations__Nao * CHASTE_MATH::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_reversal_potentials__E_Ca = CHASTE_CONST(0.5) * var_constants__R * var_constants__T * CHASTE_MATH::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_reversal_potentials__E_K = var_constants__R * var_constants__T * CHASTE_MATH::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 = CHASTE_MATH::Pow(var_chaste_interface__ion_concentrations__Ko, CHASTE_CONST(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 / (CHASTE_MATH::Pow(var_hyperpolarising_activated_current__Kmf, CHASTE_CONST(1.8300000000000001)) + CHASTE_MATH::Pow(var_chaste_interface__ion_concentrations__Ko, CHASTE_CONST(1.8300000000000001))); // picoA + const double var_reversal_potentials__E_Na = var_constants__R * var_constants__T * CHASTE_MATH::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_fast_sodium_current__i_Na = CHASTE_MATH::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 = CHASTE_MATH::Pow(var_chaste_interface__ion_concentrations__Ko, CHASTE_CONST(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 / (CHASTE_MATH::Pow(var_hyperpolarising_activated_current__Kmf, CHASTE_CONST(1.8300000000000001)) + CHASTE_MATH::Pow(var_chaste_interface__ion_concentrations__Ko, CHASTE_CONST(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__K1ni = CHASTE_CONST(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__K2ni = CHASTE_CONST(2.2890000000000001); // millimolar + const double var_sodium_calcium_exchange_current__K2no = CHASTE_CONST(561.39999999999998); // millimolar + const double var_sodium_calcium_exchange_current__K3ni = CHASTE_CONST(26.440000000000001); // millimolar + const double var_sodium_calcium_exchange_current__K3no = CHASTE_CONST(4.6630000000000003); // millimolar + const double var_sodium_calcium_exchange_current__Kci = CHASTE_CONST(0.0207); // millimolar + const double var_sodium_calcium_exchange_current__Kcni = CHASTE_CONST(26.440000000000001); // millimolar + const double var_sodium_calcium_exchange_current__Kco = CHASTE_CONST(3.6629999999999998); // millimolar + const double var_sodium_calcium_exchange_current__Qci = CHASTE_CONST(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__Qn = CHASTE_CONST(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 + CHASTE_MATH::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 * CHASTE_MATH::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 + CHASTE_MATH::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 + CHASTE_MATH::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 * CHASTE_MATH::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 + CHASTE_MATH::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 * CHASTE_MATH::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 = (CHASTE_MATH::Pow(var_chaste_interface__ion_concentrations__Nai, 2) / (var_sodium_calcium_exchange_current__K1ni * var_sodium_calcium_exchange_current__K2ni) + CHASTE_MATH::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)) * CHASTE_MATH::Exp(CHASTE_CONST(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 * CHASTE_MATH::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 = (CHASTE_MATH::Pow(var_chaste_interface__ion_concentrations__Nao, 2) / (var_sodium_calcium_exchange_current__K1no * var_sodium_calcium_exchange_current__K2no) + CHASTE_MATH::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)) * CHASTE_MATH::Exp(-CHASTE_CONST(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 = CHASTE_MATH::Exp(CHASTE_CONST(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__k41 = CHASTE_MATH::Exp(-CHASTE_CONST(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 @@ -197,10 +199,10 @@ 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_sodium_potassium_pump__i_pmax = CHASTE_CONST(0.22600000000000001); // picoA + const double var_sodium_potassium_pump__i_p = (1 - CHASTE_CONST(0.035938096628557313) * CHASTE_MATH::Pow((-1 + CHASTE_CONST(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 var_chaste_interface__i_ionic = CHASTE_CONST(9.9999999999999995e-7) * CHASTE_CAP() * 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) @@ -215,7 +217,7 @@ { // Inputs: // Time units: millisecond - double var_chaste_interface__membrane__E = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + double var_chaste_interface__membrane__E = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -254,103 +256,103 @@ // 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_d_gate__tau_dL = CHASTE_CONST(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_T_type_calcium_current__g_CaT = CHASTE_CONST(0.085000000000000006); // nanoS + const double var_background_potassium_current__KbK = CHASTE_CONST(6.9999999999999994e-5); // picoA_per_millimolar + const double var_background_sodium_current__g_Nab = CHASTE_CONST(0.00024000000000000001); // nanoS + const double var_constants__F = CHASTE_CONST(96485.341499999995); // coulomb_per_mole + const double var_constants__R = CHASTE_CONST(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_delayed_rectifying_potassium_current__P_KNa = CHASTE_CONST(0.035000000000000003); // dimensionless + const double var_hyperpolarising_activated_current__Kmf = CHASTE_CONST(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 d_dt_chaste_interface_var_L_type_calcium_current_f2_gate__fL2 = CHASTE_CONST(0.001) * var_L_type_calcium_current_f2_gate__fL2_orig_deriv; // 1 / millisecond + const double var_ion_concentrations__Kb = CHASTE_CONST(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_ion_concentrations__V_i = CHASTE_CONST(2.5000000000000002e-6); // microlitre + const double var_ion_concentrations__V_e = CHASTE_CONST(0.20000000000000001) * var_ion_concentrations__V_i; // microlitre + const double var_ion_concentrations__tau_b = CHASTE_CONST(0.10000000000000001); // second + const double var_L_type_calcium_current_d_gate__dL_infinity = 1 / (1 + CHASTE_MATH::Exp(-1 - CHASTE_CONST(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 d_dt_chaste_interface_var_L_type_calcium_current_d_gate__dL = CHASTE_CONST(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 + CHASTE_MATH::Exp(CHASTE_CONST(4.166666666666667) + CHASTE_CONST(0.16666666666666666) * var_chaste_interface__membrane__E)); // dimensionless + const double var_L_type_calcium_current_f_gate__tau_fL = CHASTE_CONST(0.031) + 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(4.6419753086419755) + CHASTE_CONST(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 d_dt_chaste_interface_var_L_type_calcium_current_f_gate__fL = CHASTE_CONST(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 + CHASTE_MATH::Exp(-CHASTE_CONST(3.7704918032786887) - CHASTE_CONST(0.16393442622950821) * var_chaste_interface__membrane__E)); // dimensionless + const double var_T_type_calcium_current_d_gate__tau_dT = CHASTE_CONST(0.00059999999999999995) + CHASTE_CONST(0.0054000000000000003) / (1 + CHASTE_MATH::Exp(3 + CHASTE_CONST(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 d_dt_chaste_interface_var_T_type_calcium_current_d_gate__dT = CHASTE_CONST(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 + CHASTE_MATH::Exp(CHASTE_CONST(11.363636363636365) + CHASTE_CONST(0.15151515151515152) * var_chaste_interface__membrane__E)); // dimensionless + const double var_T_type_calcium_current_f_gate__tau_fT = CHASTE_CONST(0.001) + CHASTE_CONST(0.040000000000000001) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(5.2000000000000002) + CHASTE_CONST(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 = 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 = 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 = 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 d_dt_chaste_interface_var_T_type_calcium_current_f_gate__fT = CHASTE_CONST(0.001) * var_T_type_calcium_current_f_gate__fT_orig_deriv; // 1 / millisecond + const double var_background_potassium_current__i_bK = CHASTE_MATH::Pow(var_chaste_interface__ion_concentrations__Ko, CHASTE_CONST(0.40999999999999998)) * (-var_chaste_interface__ion_concentrations__Ko * CHASTE_MATH::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 = CHASTE_MATH::Pow(var_chaste_interface__ion_concentrations__Ko, CHASTE_CONST(0.58999999999999997)) * (-var_chaste_interface__ion_concentrations__Ko * CHASTE_MATH::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 = CHASTE_MATH::Pow(var_chaste_interface__ion_concentrations__Ko, CHASTE_CONST(0.58999999999999997)) * (-var_chaste_interface__ion_concentrations__Nao * CHASTE_MATH::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 * CHASTE_MATH::Exp(CHASTE_CONST(0.039800000000000002) * var_chaste_interface__membrane__E) + CHASTE_CONST(0.21099999999999999) * CHASTE_MATH::Exp(-CHASTE_CONST(0.050999999999999997) * var_chaste_interface__membrane__E)); // second + const double var_delayed_rectifying_potassium_current_x_gate__x_infinity = 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(3.3918918918918921) - CHASTE_CONST(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 d_dt_chaste_interface_var_delayed_rectifying_potassium_current_x_gate__x = CHASTE_CONST(0.001) * var_delayed_rectifying_potassium_current_x_gate__x_orig_deriv; // 1 / millisecond + const double var_fast_sodium_current_h_gate__alpha_h = CHASTE_CONST(32.399999999999999) * CHASTE_MATH::Exp(-CHASTE_CONST(13.076000000000002) - CHASTE_CONST(0.14000000000000001) * var_chaste_interface__membrane__E); // per_second + const double var_fast_sodium_current_h_gate__beta_h = 709 / (1 + CHASTE_CONST(4.2000000000000002) * CHASTE_MATH::Exp(-CHASTE_CONST(2.7239999999999998) - CHASTE_CONST(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 d_dt_chaste_interface_var_fast_sodium_current_h_gate__h = CHASTE_CONST(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 >= -CHASTE_CONST(34.300001111111108)) && (var_chaste_interface__membrane__E <= -CHASTE_CONST(34.299998888888886))) ? (-CHASTE_CONST(0.00022222222222367805) / (1 - CHASTE_MATH::Exp(CHASTE_CONST(1.0000000000065512e-7))) + CHASTE_CONST(449999.99999705196) * (CHASTE_CONST(34.300001111111108) + var_chaste_interface__membrane__E) * (CHASTE_CONST(0.00022222222222367805) / (1 - CHASTE_MATH::Exp(CHASTE_CONST(1.0000000000065512e-7))) + CHASTE_CONST(0.00022222222222367805) / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(1.0000000000065512e-7))))) : (200 * (CHASTE_CONST(34.299999999999997) + var_chaste_interface__membrane__E) / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(3.0869999999999997) - CHASTE_CONST(0.089999999999999997) * var_chaste_interface__membrane__E)))); // per_second + const double var_fast_sodium_current_m_gate__beta_m = 8000 * CHASTE_MATH::Exp(-CHASTE_CONST(8.4299999999999997) - CHASTE_CONST(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 d_dt_chaste_interface_var_fast_sodium_current_m_gate__m = CHASTE_CONST(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 >= -CHASTE_CONST(137.80000151515154)) && (var_chaste_interface__membrane__E <= -CHASTE_CONST(137.79999848484849))) ? (-CHASTE_CONST(5.4545454545085189e-7) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999322859e-8))) + CHASTE_CONST(330000.00000223459) * (CHASTE_CONST(137.80000151515154) + var_chaste_interface__membrane__E) * (CHASTE_CONST(5.4545454545085189e-7) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999322859e-8))) + CHASTE_CONST(5.4545454545085189e-7) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999322859e-8))))) : (CHASTE_CONST(0.35999999999999999) * (CHASTE_CONST(137.80000000000001) + var_chaste_interface__membrane__E) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.0948000000000011) + CHASTE_CONST(0.066000000000000003) * var_chaste_interface__membrane__E)))); // per_second + const double var_hyperpolarising_activated_current_y_gate__beta_y = (((var_chaste_interface__membrane__E >= -CHASTE_CONST(76.300000476190476)) && (var_chaste_interface__membrane__E <= -CHASTE_CONST(76.299999523809518))) ? (-CHASTE_CONST(4.7619047616187521e-8) / (1 - CHASTE_MATH::Exp(CHASTE_CONST(9.9999999993993777e-8))) + CHASTE_CONST(1049999.9999406631) * (CHASTE_CONST(76.300000476190476) + var_chaste_interface__membrane__E) * (CHASTE_CONST(4.7619047627289747e-8) / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(1.0000000001730847e-7))) + CHASTE_CONST(4.7619047616187521e-8) / (1 - CHASTE_MATH::Exp(CHASTE_CONST(9.9999999993993777e-8))))) : (CHASTE_CONST(0.10000000000000001) * (CHASTE_CONST(76.299999999999997) + var_chaste_interface__membrane__E) / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(16.023) - CHASTE_CONST(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 d_dt_chaste_interface_var_hyperpolarising_activated_current_y_gate__y = CHASTE_CONST(0.001) * var_hyperpolarising_activated_current_y_gate__y_orig_deriv; // 1 / millisecond + const double var_reversal_potentials__E_Ca = CHASTE_CONST(0.5) * var_constants__R * var_constants__T * CHASTE_MATH::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_reversal_potentials__E_K = var_constants__R * var_constants__T * CHASTE_MATH::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 = CHASTE_MATH::Pow(var_chaste_interface__ion_concentrations__Ko, CHASTE_CONST(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 / (CHASTE_MATH::Pow(var_hyperpolarising_activated_current__Kmf, CHASTE_CONST(1.8300000000000001)) + CHASTE_MATH::Pow(var_chaste_interface__ion_concentrations__Ko, CHASTE_CONST(1.8300000000000001))); // picoA + const double var_reversal_potentials__E_Na = var_constants__R * var_constants__T * CHASTE_MATH::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_fast_sodium_current__i_Na = CHASTE_MATH::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 = CHASTE_MATH::Pow(var_chaste_interface__ion_concentrations__Ko, CHASTE_CONST(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 / (CHASTE_MATH::Pow(var_hyperpolarising_activated_current__Kmf, CHASTE_CONST(1.8300000000000001)) + CHASTE_MATH::Pow(var_chaste_interface__ion_concentrations__Ko, CHASTE_CONST(1.8300000000000001))); // picoA + const double var_sarcoplasmic_reticulum_kinetics__KmCarel = CHASTE_CONST(0.001); // millimolar + const double var_sarcoplasmic_reticulum_kinetics__KmCaup = CHASTE_CONST(0.00050000000000000001); // millimolar + const double var_sarcoplasmic_reticulum_kinetics__V_rel = CHASTE_CONST(0.0060000000000000001) * var_ion_concentrations__V_i; // microlitre + const double var_sarcoplasmic_reticulum_kinetics__V_up = CHASTE_CONST(0.014) * var_ion_concentrations__V_i; // microlitre + const double var_sarcoplasmic_reticulum_kinetics__i_up_max = CHASTE_CONST(0.0212); // picoA + const double var_sarcoplasmic_reticulum_kinetics__i_up = CHASTE_MATH::Pow(var_chaste_interface__ion_concentrations__Cai, 2) * var_sarcoplasmic_reticulum_kinetics__i_up_max / (CHASTE_MATH::Pow(var_chaste_interface__ion_concentrations__Cai, 2) + CHASTE_MATH::Pow(var_sarcoplasmic_reticulum_kinetics__KmCaup, 2)); // picoA + const double var_sarcoplasmic_reticulum_kinetics__tau_rel = CHASTE_CONST(0.0050000000000000001); // second + const double var_sarcoplasmic_reticulum_kinetics__i_rel = 2 * CHASTE_MATH::Pow(var_chaste_interface__ion_concentrations__Cai, 2) * var_constants__F * var_chaste_interface__ion_concentrations__Carel * var_sarcoplasmic_reticulum_kinetics__V_rel / ((CHASTE_MATH::Pow(var_chaste_interface__ion_concentrations__Cai, 2) + CHASTE_MATH::Pow(var_sarcoplasmic_reticulum_kinetics__KmCarel, 2)) * var_sarcoplasmic_reticulum_kinetics__tau_rel); // picoA + const double var_sarcoplasmic_reticulum_kinetics__tau_tr = CHASTE_CONST(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_ion_concentrations__Carel_orig_deriv = CHASTE_CONST(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 = CHASTE_CONST(0.001) * var_ion_concentrations__Carel_orig_deriv; // millimolar / millisecond + const double var_ion_concentrations__Caup_orig_deriv = CHASTE_CONST(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 = CHASTE_CONST(0.001) * var_ion_concentrations__Caup_orig_deriv; // millimolar / millisecond + const double var_sodium_calcium_exchange_current__K1ni = CHASTE_CONST(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__K2ni = CHASTE_CONST(2.2890000000000001); // millimolar + const double var_sodium_calcium_exchange_current__K2no = CHASTE_CONST(561.39999999999998); // millimolar + const double var_sodium_calcium_exchange_current__K3ni = CHASTE_CONST(26.440000000000001); // millimolar + const double var_sodium_calcium_exchange_current__K3no = CHASTE_CONST(4.6630000000000003); // millimolar + const double var_sodium_calcium_exchange_current__Kci = CHASTE_CONST(0.0207); // millimolar + const double var_sodium_calcium_exchange_current__Kcni = CHASTE_CONST(26.440000000000001); // millimolar + const double var_sodium_calcium_exchange_current__Kco = CHASTE_CONST(3.6629999999999998); // millimolar + const double var_sodium_calcium_exchange_current__Qci = CHASTE_CONST(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__Qn = CHASTE_CONST(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 + CHASTE_MATH::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 * CHASTE_MATH::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 + CHASTE_MATH::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 + CHASTE_MATH::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 * CHASTE_MATH::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 + CHASTE_MATH::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 * CHASTE_MATH::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 = (CHASTE_MATH::Pow(var_chaste_interface__ion_concentrations__Nai, 2) / (var_sodium_calcium_exchange_current__K1ni * var_sodium_calcium_exchange_current__K2ni) + CHASTE_MATH::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)) * CHASTE_MATH::Exp(CHASTE_CONST(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 * CHASTE_MATH::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 = (CHASTE_MATH::Pow(var_chaste_interface__ion_concentrations__Nao, 2) / (var_sodium_calcium_exchange_current__K1no * var_sodium_calcium_exchange_current__K2no) + CHASTE_MATH::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)) * CHASTE_MATH::Exp(-CHASTE_CONST(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 = CHASTE_MATH::Exp(CHASTE_CONST(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__k41 = CHASTE_MATH::Exp(-CHASTE_CONST(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 @@ -358,22 +360,22 @@ 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_ion_concentrations__Cai_orig_deriv = -CHASTE_CONST(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 = CHASTE_CONST(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 + CHASTE_CONST(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 = CHASTE_CONST(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_sodium_potassium_pump__i_pmax = CHASTE_CONST(0.22600000000000001); // picoA + const double var_sodium_potassium_pump__i_p = (1 - CHASTE_CONST(0.035938096628557313) * CHASTE_MATH::Pow((-1 + CHASTE_CONST(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 = -(-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 d_dt_chaste_interface_var_ion_concentrations__Ki = CHASTE_CONST(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 + (-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 d_dt_chaste_interface_var_ion_concentrations__Ko = CHASTE_CONST(0.001) * var_ion_concentrations__Ko_orig_deriv; // millimolar / millisecond const double var_ion_concentrations__Nai_orig_deriv = -(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 d_dt_chaste_interface_var_ion_concentrations__Nai = CHASTE_CONST(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 + (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 + const double d_dt_chaste_interface_var_ion_concentrations__Nao = CHASTE_CONST(0.001) * var_ion_concentrations__Nao_orig_deriv; // millimolar / millisecond if (mSetVoltageDerivativeToZero) { @@ -389,10 +391,10 @@ 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 + var_chaste_interface__membrane_data_clamp_current = (-CHASTE_EXP_VOLT(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 + d_dt_chaste_interface_var_membrane__E = CHASTE_CONST(0.001) * var_membrane__E_orig_deriv; // millivolt / millisecond } NV_Ith_S(rDY,0) = d_dt_chaste_interface_var_membrane__E; @@ -419,7 +421,7 @@ { // Inputs: // Time units: millisecond - double var_chaste_interface__membrane__E = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + double var_chaste_interface__membrane__E = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -449,34 +451,34 @@ // 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__F = CHASTE_CONST(96485.341499999995); // coulomb_per_mole + const double var_constants__R = CHASTE_CONST(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 = 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 = 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__P_KNa = CHASTE_CONST(0.035000000000000003); // dimensionless + const double var_hyperpolarising_activated_current__Kmf = CHASTE_CONST(10.300000000000001); // millimolar + const double var_membrane__C_converted = CHASTE_CONST(0.001) * NV_Ith_S(mParameters, 1); // uF + const double var_delayed_rectifying_potassium_current__i_KK = CHASTE_MATH::Pow(var_chaste_interface__ion_concentrations__Ko, CHASTE_CONST(0.58999999999999997)) * (-var_chaste_interface__ion_concentrations__Ko * CHASTE_MATH::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 = CHASTE_MATH::Pow(var_chaste_interface__ion_concentrations__Ko, CHASTE_CONST(0.58999999999999997)) * (-var_chaste_interface__ion_concentrations__Nao * CHASTE_MATH::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 + const double var_delayed_rectifying_potassium_current__i_K_converted = CHASTE_CONST(9.9999999999999995e-7) * CHASTE_CAP() * 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 + var_chaste_interface__membrane_data_clamp_current = (-CHASTE_EXP_VOLT(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_reversal_potentials__E_Ca = CHASTE_CONST(0.5) * var_constants__R * var_constants__T * CHASTE_MATH::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_L_type_calcium_current__i_CaL_converted = CHASTE_CONST(9.9999999999999995e-7) * CHASTE_CAP() * 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 * CHASTE_MATH::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 = CHASTE_MATH::Pow(var_chaste_interface__ion_concentrations__Ko, CHASTE_CONST(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 / (CHASTE_MATH::Pow(var_hyperpolarising_activated_current__Kmf, CHASTE_CONST(1.8300000000000001)) + CHASTE_MATH::Pow(var_chaste_interface__ion_concentrations__Ko, CHASTE_CONST(1.8300000000000001))); // picoA + const double var_reversal_potentials__E_Na = var_constants__R * var_constants__T * CHASTE_MATH::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 = CHASTE_MATH::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 = CHASTE_CONST(9.9999999999999995e-7) * CHASTE_CAP() * var_fast_sodium_current__i_Na / var_membrane__C_converted; // uA_per_cm2 + const double var_hyperpolarising_activated_current__i_fNa = CHASTE_MATH::Pow(var_chaste_interface__ion_concentrations__Ko, CHASTE_CONST(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 / (CHASTE_MATH::Pow(var_hyperpolarising_activated_current__Kmf, CHASTE_CONST(1.8300000000000001)) + CHASTE_MATH::Pow(var_chaste_interface__ion_concentrations__Ko, CHASTE_CONST(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 + const double var_hyperpolarising_activated_current__i_f_converted = CHASTE_CONST(9.9999999999999995e-7) * CHASTE_CAP() * 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()); @@ -663,4 +665,5 @@ void OdeSystemInformation::Initial #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.hpp b/chaste_codegen/data/tests/chaste_reference_models/CVODE_DATA_CLAMP/dokos_model_1996.hpp index fd909a60d..83275c5ab 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/CVODE_DATA_CLAMP/dokos_model_1996.hpp +++ b/chaste_codegen/data/tests/chaste_reference_models/CVODE_DATA_CLAMP/dokos_model_1996.hpp @@ -17,7 +17,11 @@ #include "ChasteSerialization.hpp" #include #include "AbstractStimulusFunction.hpp" +#if USING_DEVICE_COMPILER +#include "StimulusEvaluatorCuda.hpp" +#endif #include "AbstractCvodeCellWithDataClamp.hpp" +#include "HostDeviceMacros.hpp" class Celldokos_model_1996FromCellMLCvodeDataClamp : public AbstractCvodeCellWithDataClamp { @@ -38,6 +42,10 @@ class Celldokos_model_1996FromCellMLCvodeDataClamp : public AbstractCvodeCellWit const bool is_concentration[18] = {false, true, false, false, false, false, false, false, false, false, false, true, false, false, true, true, true, true}; const bool is_probability[18] = {false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false}; public: + static constexpr unsigned TOTAL_SIZE = 18u; + static constexpr unsigned NNZ = 0u; + static inline const int sparse_rowptr[] = { }; + static inline const int sparse_colind[] = { }; double GetIntracellularCalciumConcentration(); Celldokos_model_1996FromCellMLCvodeDataClamp(boost::shared_ptr pOdeSolver /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus); @@ -45,7 +53,19 @@ const bool is_probability[18] = {false, false, false, false, false, false, false void VerifyStateVariables(); double GetIIonic(const std::vector* pStateVariables=NULL); void EvaluateYDerivatives(double var_chaste_interface__environment__time_converted, const N_Vector rY, N_Vector rDY); + N_Vector ComputeDerivedQuantities(double var_chaste_interface__environment__time_converted, const N_Vector & rY); +#if USING_DEVICE_COMPILER + template + DEVICE + static void EvaluateYDerivativesDevice(ValueType var_chaste_interface__environment__time_converted, const ValueType* rY, ValueType* rDY, const ValueType mSetVoltageDerivativeToZero, const ValueType mFixedVoltage, const ValueType* mParameters, const ValueType capacitance, const DeviceStimulusFunctor stim); + template + DEVICE + static void EvaluateAnalyticJacobianDevice(ValueType var_chaste_interface__environment__time_converted, const ValueType *rY, ValueType *rDY, ValueType *rJacobian, ValueType *rTmp1, ValueType *rTmp2, ValueType *rTmp3, const unsigned nvars, const ValueType mSetVoltageDerivativeToZero, const ValueType mFixedVoltage, const ValueType *mParameters, const ValueType capacitance, const DeviceStimulusFunctor stim); + template + DEVICE + static void EvaluateSparseAnalyticJacobianDevice(ValueType var_chaste_interface__environment__time_converted, const ValueType *rY, ValueType *rDY, ValueType *rJacobian, ValueType *rTmp1, ValueType *rTmp2, ValueType *rTmp3, const unsigned nvars, const ValueType mSetVoltageDerivativeToZero, const ValueType mFixedVoltage, const ValueType *mParameters, const ValueType capacitance, const DeviceStimulusFunctor stim); +#endif }; // Needs to be included last @@ -82,4 +102,10 @@ namespace boost } #endif // CELLDOKOS_MODEL_1996FROMCELLMLCVODEDATACLAMP_HPP_ + + + +#if USING_DEVICE_COMPILER + #include "dokos_model_1996Kernels.hpp" +#endif #endif // CHASTE_CVODE \ No newline at end of file diff --git a/chaste_codegen/data/tests/chaste_reference_models/CVODE_DATA_CLAMP/dynamic_Shannon2004.cpp b/chaste_codegen/data/tests/chaste_reference_models/CVODE_DATA_CLAMP/dynamic_Shannon2004.cpp index 617227af5..a8087da3a 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/CVODE_DATA_CLAMP/dynamic_Shannon2004.cpp +++ b/chaste_codegen/data/tests/chaste_reference_models/CVODE_DATA_CLAMP/dynamic_Shannon2004.cpp @@ -22,6 +22,8 @@ #include "HeartConfig.hpp" #include "IsNan.hpp" #include "MathsCustomFunctions.hpp" +#include "ChasteMathDeviceNamespaces.hpp" +#include "ChasteCpuMacros.hpp" #if CHASTE_SUNDIALS_VERSION >= 60000 #include "CvodeContextManager.hpp" @@ -34,7 +36,7 @@ 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_amplitude_converted = -CHASTE_CONST(9.5) * CHASTE_CAP(); // 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 @@ -68,29 +70,29 @@ // 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, 0) = CHASTE_CONST(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, 2) = CHASTE_CONST(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, 6) = CHASTE_CONST(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, 8) = CHASTE_CONST(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, 10) = CHASTE_CONST(96486.699999999997); // (var_model_parameters__F) [coulomb_per_mole] + NV_Ith_S(this->mParameters, 11) = CHASTE_CONST(8314.2999999999993); // (var_model_parameters__R) [joule_per_kilomole_kelvin] + NV_Ith_S(this->mParameters, 12) = CHASTE_CONST(0.00054000000000000001); // (var_ICaL__PCa) [litre_per_farad_millisecond] + NV_Ith_S(this->mParameters, 13) = CHASTE_CONST(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, 18) = CHASTE_CONST(0.02); // (var_Itof__G_tof) [milliS_per_microF] + NV_Ith_S(this->mParameters, 19) = CHASTE_CONST(0.90000000000000002); // (var_IK1__G_K1_max) [milliS_per_microF] + NV_Ith_S(this->mParameters, 20) = CHASTE_CONST(0.029999999999999999); // (var_IKr__G_IKr_const) [milliS_per_microF] + NV_Ith_S(this->mParameters, 21) = CHASTE_CONST(0.070000000000000007); // (var_IKs__G_Ks_max) [milliS_per_microF] + NV_Ith_S(this->mParameters, 22) = CHASTE_CONST(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] } @@ -148,7 +150,7 @@ made_new_cvode_vector = true; rY = MakeNVector(*pStateVariables); } - double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -189,135 +191,135 @@ 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__Fx_ICaL_SL = CHASTE_CONST(0.10000000000000001); // dimensionless + const double var_ICaL__Fx_ICaL_jct = CHASTE_CONST(0.90000000000000002); // dimensionless + const double var_ICaL__PK = CHASTE_CONST(2.7000000000000001e-7); // litre_per_farad_millisecond + const double var_ICaL__PNa = CHASTE_CONST(1.4999999999999999e-8); // litre_per_farad_millisecond + const double var_ICaL__Q10_CaL = CHASTE_CONST(1.8); // dimensionless + const double var_ICaL__gamma_Cai = CHASTE_CONST(0.34100000000000003); // dimensionless + const double var_ICaL__gamma_Cao = CHASTE_CONST(0.34100000000000003); // dimensionless + const double var_ICaL__gamma_Ki = CHASTE_CONST(0.75); // dimensionless + const double var_ICaL__gamma_Ko = CHASTE_CONST(0.75); // dimensionless + const double var_ICaL__gamma_Nai = CHASTE_CONST(0.75); // dimensionless + const double var_ICaL__gamma_Nao = CHASTE_CONST(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, 21); // 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, 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_ICab__Fx_CaBk_SL = CHASTE_CONST(0.89000000000000001); // dimensionless + const double var_ICab__Fx_CaBk_jct = CHASTE_CONST(0.11); // dimensionless + const double var_ICab__G_CaBk = CHASTE_CONST(0.00025129999999999998); // milliS_per_microF + const double var_ICap__Fx_SLCaP_SL = CHASTE_CONST(0.89000000000000001); // dimensionless + const double var_ICap__Fx_SLCaP_jct = CHASTE_CONST(0.11); // dimensionless + const double var_ICap__H = CHASTE_CONST(1.6000000000000001); // dimensionless + const double var_ICap__Km = CHASTE_CONST(0.00050000000000000001); // millimolar + const double var_ICap__Q10_SLCaP = CHASTE_CONST(2.3500000000000001); // dimensionless + const double var_ICap__V_maxAF = CHASTE_CONST(0.067299999999999999); // microA_per_microF + const double var_ICl_Ca__Fx_Cl_SL = CHASTE_CONST(0.89000000000000001); // dimensionless + const double var_ICl_Ca__Fx_Cl_jct = CHASTE_CONST(0.11); // dimensionless + const double var_ICl_Ca__G_Cl = CHASTE_CONST(0.109625); // milliS_per_microF + const double var_ICl_Ca__Kd_ClCa = CHASTE_CONST(0.10000000000000001); // millimolar + const double var_IKs__Fx_Ks_SL = CHASTE_CONST(0.89000000000000001); // dimensionless + const double var_IKs__Fx_Ks_jct = CHASTE_CONST(0.11); // dimensionless + const double var_IKs__pCa_SL = 3 - CHASTE_MATH::Log10(var_chaste_interface__Ca_buffer__Ca_SL); // dimensionless + const double var_IKs__G_Ks_SL = (CHASTE_CONST(0.057000000000000002) + CHASTE_CONST(0.19) / (1 + CHASTE_MATH::Exp(-12 + CHASTE_CONST(1.6666666666666667) * var_IKs__pCa_SL))) * NV_Ith_S(mParameters, 21); // milliS_per_microF + const double var_IKs__pCa_jct = 3 - CHASTE_MATH::Log10(var_chaste_interface__Ca_buffer__Ca_jct); // dimensionless + const double var_IKs__G_Ks_jct = (CHASTE_CONST(0.057000000000000002) + CHASTE_CONST(0.19) / (1 + CHASTE_MATH::Exp(-12 + CHASTE_CONST(1.6666666666666667) * var_IKs__pCa_jct))) * NV_Ith_S(mParameters, 21); // milliS_per_microF + const double var_IKs__pKNa = CHASTE_CONST(0.018329999999999999); // dimensionless + const double var_INa__Fx_Na_SL = CHASTE_CONST(0.89000000000000001); // dimensionless + const double var_INa__Fx_Na_jct = CHASTE_CONST(0.11); // dimensionless + const double var_INaCa__Fx_NCX_SL = CHASTE_CONST(0.89000000000000001); // dimensionless + const double var_INaCa__Fx_NCX_jct = CHASTE_CONST(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_INaCa__K_mCai = CHASTE_CONST(0.0035899999999999999); // millimolar + const double var_INaCa__K_mCao = CHASTE_CONST(1.3); // millimolar + const double var_INaCa__K_mNai = CHASTE_CONST(12.289999999999999); // millimolar + const double var_INaCa__K_mNao = CHASTE_CONST(87.5); // millimolar + const double var_INaCa__Kd_act = CHASTE_CONST(0.00025599999999999999); // millimolar + const double var_INaCa__Ka_SL = 1 / (1 + CHASTE_MATH::Pow(var_INaCa__Kd_act, 3) / CHASTE_MATH::Pow(var_chaste_interface__Ca_buffer__Ca_SL, 3)); // dimensionless + const double var_INaCa__Ka_jct = 1 / (1 + CHASTE_MATH::Pow(var_INaCa__Kd_act, 3) / CHASTE_MATH::Pow(var_chaste_interface__Ca_buffer__Ca_jct, 3)); // dimensionless + const double var_INaCa__Q10_NCX = CHASTE_CONST(1.5700000000000001); // dimensionless + const double var_INaCa__eta = CHASTE_CONST(0.34999999999999998); // dimensionless + const double var_INaCa__ksat = CHASTE_CONST(0.27000000000000002); // dimensionless + const double var_INaK__Fx_NaK_SL = CHASTE_CONST(0.89000000000000001); // dimensionless + const double var_INaK__Fx_NaK_jct = CHASTE_CONST(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__I_NaK_max = CHASTE_CONST(1.9099999999999999); // microA_per_microF + const double var_INaK__Km_Ko = CHASTE_CONST(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_INaK__Q10_Km_Nai = CHASTE_CONST(1.49); // dimensionless + const double var_INaK__Q10_NaK = CHASTE_CONST(1.6299999999999999); // dimensionless + const double var_INa__openProb = CHASTE_MATH::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 = CHASTE_CONST(0.89000000000000001); // dimensionless + const double var_INab__Fx_NaBk_jct = CHASTE_CONST(0.11); // dimensionless + const double var_INab__G_NaBk = CHASTE_CONST(0.00029700000000000001); // milliS_per_microF + const double var_IKr_Rr_gate__Rr = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(1.4732142857142858) + CHASTE_CONST(0.044642857142857144) * var_chaste_interface__cell__V)); // dimensionless + const double var_IK1__G_K1 = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::Sqrt(NV_Ith_S(mParameters, 8)) * NV_Ith_S(mParameters, 19); // milliS_per_microF + const double var_IKr__G_IKr = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::Sqrt(NV_Ith_S(mParameters, 8)) * NV_Ith_S(mParameters, 20); // milliS_per_microF + const double var_INaK__sigma = -CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * CHASTE_MATH::Exp(CHASTE_CONST(0.01485884101040119) * NV_Ith_S(mParameters, 9)); // dimensionless + const double var_ICaL__Q_CaL = CHASTE_MATH::Pow(var_ICaL__Q10_CaL, (-31 + CHASTE_CONST(0.10000000000000001) * NV_Ith_S(mParameters, 24))); // dimensionless + const double var_ICaL__temp = CHASTE_CONST(0.45000000000000001) * CHASTE_MATH::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 * CHASTE_MATH::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 + CHASTE_MATH::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 * CHASTE_MATH::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 + CHASTE_MATH::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) * CHASTE_MATH::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 + CHASTE_MATH::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 * CHASTE_MATH::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 + CHASTE_MATH::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 * CHASTE_MATH::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 + CHASTE_MATH::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_ICaL__i_CaL_converted = CHASTE_CAP() * var_ICaL__i_CaL; // uA_per_cm2 + const double var_ICap__Q_SLCaP = CHASTE_MATH::Pow(var_ICap__Q10_SLCaP, (-31 + CHASTE_CONST(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 + CHASTE_MATH::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 + CHASTE_MATH::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_ICap__i_Cap_converted = CHASTE_CAP() * var_ICap__i_Cap; // uA_per_cm2 + const double var_IKs__E_Ks = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24) * CHASTE_MATH::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 = CHASTE_MATH::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 = CHASTE_MATH::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_IKs__i_Ks_converted = CHASTE_CAP() * var_IKs__i_Ks; // uA_per_cm2 + const double var_INaCa__Q_NCX = CHASTE_MATH::Pow(var_INaCa__Q10_NCX, (-31 + CHASTE_CONST(0.10000000000000001) * NV_Ith_S(mParameters, 24))); // dimensionless + const double var_INaCa__temp_SL = (CHASTE_MATH::Pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) * CHASTE_MATH::Exp(var_INaCa__eta * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24))) - CHASTE_MATH::Pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_SL * CHASTE_MATH::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 * CHASTE_MATH::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 / (CHASTE_MATH::Pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * var_INaCa__K_mCao + CHASTE_MATH::Pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) + CHASTE_MATH::Pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_SL + CHASTE_MATH::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 + CHASTE_MATH::Pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * (1 + CHASTE_MATH::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 = (CHASTE_MATH::Pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) * CHASTE_MATH::Exp(var_INaCa__eta * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24))) - CHASTE_MATH::Pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_jct * CHASTE_MATH::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 * CHASTE_MATH::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 / (CHASTE_MATH::Pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * var_INaCa__K_mCao + CHASTE_MATH::Pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) + CHASTE_MATH::Pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_jct + CHASTE_MATH::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 + CHASTE_MATH::Pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * (1 + CHASTE_MATH::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_INaCa__i_NaCa_converted = CHASTE_CAP() * var_INaCa__i_NaCa; // uA_per_cm2 + const double var_INaK__Q_Km_Nai = CHASTE_MATH::Pow(var_INaK__Q10_Km_Nai, (-31 + CHASTE_CONST(0.10000000000000001) * NV_Ith_S(mParameters, 24))); // dimensionless + const double var_INaK__Q_NaK = CHASTE_MATH::Pow(var_INaK__Q10_NaK, (-31 + CHASTE_CONST(0.10000000000000001) * NV_Ith_S(mParameters, 24))); // dimensionless + const double var_INaK__f_NaK = 1 / (1 + CHASTE_CONST(0.1245) * CHASTE_MATH::Exp(-CHASTE_CONST(0.10000000000000001) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24))) + CHASTE_CONST(0.036499999999999998) * var_INaK__sigma * CHASTE_MATH::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 + CHASTE_MATH::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 + CHASTE_MATH::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_reversal_potentials__E_Ca_SL = CHASTE_CONST(0.5) * NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24) * CHASTE_MATH::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_reversal_potentials__E_Ca_jct = CHASTE_CONST(0.5) * NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24) * CHASTE_MATH::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_ICab__i_Cab_converted = CHASTE_CAP() * var_ICab__i_Cab; // uA_per_cm2 + const double var_reversal_potentials__E_Cl = -NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24) * CHASTE_MATH::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 = (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_IClb__i_Clb_converted = CHASTE_CAP() * var_IClb__i_Clb; // uA_per_cm2 + const double var_reversal_potentials__E_K = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24) * CHASTE_MATH::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 = CHASTE_CONST(1.02) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__cell__V - CHASTE_CONST(0.23849999999999999) * var_reversal_potentials__E_K)); // per_millisecond + const double var_IK1_K1_gate__beta_K1 = (CHASTE_MATH::Exp(-CHASTE_CONST(36.698642499999998) + CHASTE_CONST(0.061749999999999999) * var_chaste_interface__cell__V - CHASTE_CONST(0.061749999999999999) * var_reversal_potentials__E_K) + CHASTE_CONST(0.49124000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.43983232) + CHASTE_CONST(0.080320000000000003) * var_chaste_interface__cell__V - CHASTE_CONST(0.080320000000000003) * var_reversal_potentials__E_K)) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.4444678999999998) + CHASTE_CONST(0.51429999999999998) * var_reversal_potentials__E_K - CHASTE_CONST(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_IK1__i_K1_converted = CHASTE_CAP() * 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_IKr__i_Kr_converted = CHASTE_CAP() * 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_Itof__i_tof_converted = CHASTE_CAP() * var_Itof__i_tof; // uA_per_cm2 + const double var_Itos__i_tos = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * (CHASTE_CONST(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 = CHASTE_CAP() * 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) * CHASTE_MATH::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_reversal_potentials__E_Na_jct = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24) * CHASTE_MATH::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_INa__i_Na_converted = CHASTE_CAP() * 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 var_INab__i_Nab_converted = CHASTE_CAP() * var_INab__i_Nab; // uA_per_cm2 + const double var_chaste_interface__i_ionic = CHASTE_CAP() * var_ICl_Ca__i_Cl_Ca + CHASTE_CAP() * 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) @@ -332,7 +334,7 @@ { // Inputs: // Time units: millisecond - double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -425,217 +427,217 @@ // 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__Bmax_Calsequestrin = CHASTE_CONST(0.14000000000000001); // millimolar + const double var_Ca_buffer__Bmax_SLB_SL = CHASTE_CONST(0.037400000000000003); // millimolar + const double var_Ca_buffer__Bmax_SLB_jct = CHASTE_CONST(0.0045999999999999999); // millimolar + const double var_Ca_buffer__Bmax_SLHigh_SL = CHASTE_CONST(0.0134); // millimolar + const double var_Ca_buffer__Bmax_SLHigh_jct = CHASTE_CONST(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__koff_SLB = CHASTE_CONST(1.3); // per_millisecond + const double var_Ca_buffer__koff_SLHigh = CHASTE_CONST(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__Fx_ICaL_SL = CHASTE_CONST(0.10000000000000001); // dimensionless + const double var_ICaL__Fx_ICaL_jct = CHASTE_CONST(0.90000000000000002); // dimensionless + const double var_ICaL__PNa = CHASTE_CONST(1.4999999999999999e-8); // litre_per_farad_millisecond + const double var_ICaL__Q10_CaL = CHASTE_CONST(1.8); // dimensionless + const double var_ICaL__gamma_Cai = CHASTE_CONST(0.34100000000000003); // dimensionless + const double var_ICaL__gamma_Cao = CHASTE_CONST(0.34100000000000003); // dimensionless + const double var_ICaL__gamma_Nai = CHASTE_CONST(0.75); // dimensionless + const double var_ICaL__gamma_Nao = CHASTE_CONST(0.75); // dimensionless + const double d_dt_chaste_interface_var_ICaL_fCa_gate__fCaB_SL = -CHASTE_CONST(0.011900000000000001) * var_chaste_interface__ICaL_fCa_gate__fCaB_SL + CHASTE_CONST(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 = -CHASTE_CONST(0.011900000000000001) * var_chaste_interface__ICaL_fCa_gate__fCaB_jct + CHASTE_CONST(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_ICab__Fx_CaBk_SL = CHASTE_CONST(0.89000000000000001); // dimensionless + const double var_ICab__Fx_CaBk_jct = CHASTE_CONST(0.11); // dimensionless + const double var_ICab__G_CaBk = CHASTE_CONST(0.00025129999999999998); // milliS_per_microF + const double var_ICap__Fx_SLCaP_SL = CHASTE_CONST(0.89000000000000001); // dimensionless + const double var_ICap__Fx_SLCaP_jct = CHASTE_CONST(0.11); // dimensionless + const double var_ICap__H = CHASTE_CONST(1.6000000000000001); // dimensionless + const double var_ICap__Km = CHASTE_CONST(0.00050000000000000001); // millimolar + const double var_ICap__Q10_SLCaP = CHASTE_CONST(2.3500000000000001); // dimensionless + const double var_ICap__V_maxAF = CHASTE_CONST(0.067299999999999999); // microA_per_microF + const double var_INa__Fx_Na_SL = CHASTE_CONST(0.89000000000000001); // dimensionless + const double var_INa__Fx_Na_jct = CHASTE_CONST(0.11); // dimensionless + const double var_INaCa__Fx_NCX_SL = CHASTE_CONST(0.89000000000000001); // dimensionless + const double var_INaCa__Fx_NCX_jct = CHASTE_CONST(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_INaCa__K_mCai = CHASTE_CONST(0.0035899999999999999); // millimolar + const double var_INaCa__K_mCao = CHASTE_CONST(1.3); // millimolar + const double var_INaCa__K_mNai = CHASTE_CONST(12.289999999999999); // millimolar + const double var_INaCa__K_mNao = CHASTE_CONST(87.5); // millimolar + const double var_INaCa__Kd_act = CHASTE_CONST(0.00025599999999999999); // millimolar + const double var_INaCa__Ka_SL = 1 / (1 + CHASTE_MATH::Pow(var_INaCa__Kd_act, 3) / CHASTE_MATH::Pow(var_chaste_interface__Ca_buffer__Ca_SL, 3)); // dimensionless + const double var_INaCa__Ka_jct = 1 / (1 + CHASTE_MATH::Pow(var_INaCa__Kd_act, 3) / CHASTE_MATH::Pow(var_chaste_interface__Ca_buffer__Ca_jct, 3)); // dimensionless + const double var_INaCa__Q10_NCX = CHASTE_CONST(1.5700000000000001); // dimensionless + const double var_INaCa__eta = CHASTE_CONST(0.34999999999999998); // dimensionless + const double var_INaCa__ksat = CHASTE_CONST(0.27000000000000002); // dimensionless + const double var_INaK__Fx_NaK_SL = CHASTE_CONST(0.89000000000000001); // dimensionless + const double var_INaK__Fx_NaK_jct = CHASTE_CONST(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__I_NaK_max = CHASTE_CONST(1.9099999999999999); // microA_per_microF + const double var_INaK__Km_Ko = CHASTE_CONST(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_INaK__Q10_Km_Nai = CHASTE_CONST(1.49); // dimensionless + const double var_INaK__Q10_NaK = CHASTE_CONST(1.6299999999999999); // dimensionless + const double var_INa__openProb = CHASTE_MATH::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 = CHASTE_CONST(0.89000000000000001); // dimensionless + const double var_INab__Fx_NaBk_jct = CHASTE_CONST(0.11); // dimensionless + const double var_INab__G_NaBk = CHASTE_CONST(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_Jpump_SR__H = CHASTE_CONST(1.7869999999999999); // dimensionless + const double var_Jpump_SR__Kmf = CHASTE_CONST(0.00024600000000000002); // millimolar + const double var_Jpump_SR__Kmr = CHASTE_CONST(1.7); // millimolar + const double var_Jpump_SR__Q10_SRCaP = CHASTE_CONST(2.6000000000000001); // dimensionless + const double var_Jrel_SR__EC50_SR = CHASTE_CONST(0.45000000000000001); // millimolar + const double var_Jrel_SR__HSR = CHASTE_CONST(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__kCaSR = -(-var_Jrel_SR__Min_SR + var_Jrel_SR__Max_SR) / (1 + CHASTE_MATH::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 = CHASTE_CONST(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__kim = CHASTE_CONST(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__kom = CHASTE_CONST(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 + CHASTE_MATH::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 + CHASTE_MATH::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 - CHASTE_MATH::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__Bmax_SL = CHASTE_CONST(1.6499999999999999); // millimolar + const double var_Na_buffer__Bmax_jct = CHASTE_CONST(7.5609999999999999); // millimolar + const double var_Na_buffer__koff = CHASTE_CONST(0.001); // per_millisecond + const double var_Na_buffer__kon = CHASTE_CONST(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 var_ICaL_d_gate__d_infinity = 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.4166666666666665) - CHASTE_CONST(0.16666666666666666) * var_chaste_interface__cell__V)); // dimensionless + const double var_ICaL_d_gate__tau_d = CHASTE_CONST(28.571428571428569) * (1 - CHASTE_MATH::Exp(-CHASTE_CONST(2.4166666666666665) - CHASTE_CONST(0.16666666666666666) * var_chaste_interface__cell__V)) * var_ICaL_d_gate__d_infinity / (CHASTE_CONST(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 var_ICaL_f_gate__f_infinity = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(9.7388888888888889) + CHASTE_CONST(0.27777777777777779) * var_chaste_interface__cell__V)) + CHASTE_CONST(0.59999999999999998) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(2.5) - CHASTE_CONST(0.050000000000000003) * var_chaste_interface__cell__V)); // dimensionless + const double var_ICaL_f_gate__tau_f = 1 / (CHASTE_CONST(0.02) + CHASTE_CONST(0.019699999999999999) * CHASTE_MATH::Exp(-CHASTE_CONST(0.23877882250000002) * CHASTE_MATH::Pow((1 + CHASTE_CONST(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 var_IKr_Xr_gate__Xr_infinity = 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(6.666666666666667) - CHASTE_CONST(0.13333333333333333) * var_chaste_interface__cell__V)); // dimensionless + const double var_IKr_Xr_gate__tau_Xr = 1 / (CHASTE_CONST(0.00060999999999999997) * (10 + var_chaste_interface__cell__V) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(1.45) + CHASTE_CONST(0.14499999999999999) * var_chaste_interface__cell__V)) + CHASTE_CONST(0.0013799999999999999) * (7 + var_chaste_interface__cell__V) / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(0.86099999999999999) - CHASTE_CONST(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 var_IKs_Xs_gate__Xs_infinity = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(0.089820359281437126) - CHASTE_CONST(0.059880239520958084) * var_chaste_interface__cell__V)); // dimensionless + const double var_IKs_Xs_gate__tau_Xs = 1 / (CHASTE_CONST(0.00013100000000000001) * (30 + var_chaste_interface__cell__V) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(2.0609999999999999) + CHASTE_CONST(0.068699999999999997) * var_chaste_interface__cell__V)) + CHASTE_CONST(7.1899999999999999e-5) * (30 + var_chaste_interface__cell__V) / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(4.4399999999999995) - CHASTE_CONST(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__alpha_h = ((var_chaste_interface__cell__V < -40) ? (CHASTE_CONST(0.13500000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(11.764705882352942) + CHASTE_CONST(0.14705882352941177) * NV_Ith_S(mParameters, 17) - CHASTE_CONST(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 * CHASTE_MATH::Exp(CHASTE_CONST(0.34999999999999998) * var_chaste_interface__cell__V - CHASTE_CONST(0.34999999999999998) * NV_Ith_S(mParameters, 17)) + CHASTE_CONST(3.5600000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.079000000000000001) * var_chaste_interface__cell__V - CHASTE_CONST(0.079000000000000001) * NV_Ith_S(mParameters, 17))) : (CHASTE_CONST(7.6923076923076916) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.96036036036036043) + CHASTE_CONST(0.0900900900900901) * NV_Ith_S(mParameters, 17) - CHASTE_CONST(0.0900900900900901) * var_chaste_interface__cell__V)))); // per_millisecond + const double var_INa_h_gate__h_infinity = CHASTE_CONST(0.01) * NV_Ith_S(mParameters, 16) + (1 - CHASTE_CONST(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) ? ((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__alpha_j = ((var_chaste_interface__cell__V < -40) ? ((CHASTE_CONST(37.780000000000001) + var_chaste_interface__cell__V) * (-127140 * CHASTE_MATH::Exp(CHASTE_CONST(0.24440000000000001) * var_chaste_interface__cell__V - CHASTE_CONST(0.24440000000000001) * NV_Ith_S(mParameters, 17)) - CHASTE_CONST(3.4740000000000003e-5) * CHASTE_MATH::Exp(CHASTE_CONST(0.043909999999999998) * NV_Ith_S(mParameters, 17) - CHASTE_CONST(0.043909999999999998) * var_chaste_interface__cell__V)) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(24.640530000000002) + CHASTE_CONST(0.311) * var_chaste_interface__cell__V - CHASTE_CONST(0.311) * NV_Ith_S(mParameters, 17)))) : (0)); // per_millisecond + const double var_INa_j_gate__beta_j = ((var_chaste_interface__cell__V < -40) ? (CHASTE_CONST(0.1212) * CHASTE_MATH::Exp(CHASTE_CONST(0.01052) * NV_Ith_S(mParameters, 17) - CHASTE_CONST(0.01052) * var_chaste_interface__cell__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(5.5312920000000005) + CHASTE_CONST(0.13780000000000001) * NV_Ith_S(mParameters, 17) - CHASTE_CONST(0.13780000000000001) * var_chaste_interface__cell__V))) : (CHASTE_CONST(0.29999999999999999) * CHASTE_MATH::Exp(CHASTE_CONST(2.5349999999999999e-7) * NV_Ith_S(mParameters, 17) - CHASTE_CONST(2.5349999999999999e-7) * var_chaste_interface__cell__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(3.2000000000000002) + CHASTE_CONST(0.10000000000000001) * NV_Ith_S(mParameters, 17) - CHASTE_CONST(0.10000000000000001) * var_chaste_interface__cell__V)))); // per_millisecond + const double var_INa_j_gate__j_infinity = CHASTE_CONST(0.01) * NV_Ith_S(mParameters, 16) + (1 - CHASTE_CONST(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__alpha_m = CHASTE_CONST(0.32000000000000001) * (CHASTE_CONST(47.130000000000003) + var_chaste_interface__cell__V) / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(4.7130000000000001) - CHASTE_CONST(0.10000000000000001) * var_chaste_interface__cell__V)); // per_millisecond + const double var_INa_m_gate__beta_m = CHASTE_CONST(0.080000000000000002) * CHASTE_MATH::Exp(-CHASTE_CONST(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 var_Itof_X_gate__X_tof_infinity = 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.20000000000000001) - CHASTE_CONST(0.066666666666666666) * var_chaste_interface__cell__V)); // dimensionless + const double var_Itof_X_gate__tau_X_tof = CHASTE_CONST(1.5) + CHASTE_CONST(3.5) * CHASTE_MATH::Exp(-CHASTE_CONST(0.0011111111111111111) * CHASTE_MATH::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 var_Itof_Y_gate__Y_tof_infinity = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(3.3500000000000001) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__cell__V)); // dimensionless + const double var_Itof_Y_gate__tau_Y_tof = 20 + 20 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(3.3500000000000001) + CHASTE_CONST(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 var_Itos_R_gate__R_tos_infinity = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(3.3500000000000001) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__cell__V)); // dimensionless + const double var_Itos_R_gate__tau_R_tos = 220 + 2800 / (1 + CHASTE_MATH::Exp(6 + CHASTE_CONST(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 var_Itos_X_gate__X_tos_infinity = 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.20000000000000001) - CHASTE_CONST(0.066666666666666666) * var_chaste_interface__cell__V)); // dimensionless + const double var_Itos_X_gate__tau_X_tos = CHASTE_CONST(0.5) + 9 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(0.20000000000000001) + CHASTE_CONST(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 var_Itos_Y_gate__Y_tos_infinity = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(3.3500000000000001) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__cell__V)); // dimensionless + const double var_Itos_Y_gate__tau_Y_tos = 30 + 3000 / (1 + CHASTE_MATH::Exp(6 + CHASTE_CONST(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__Bmax_Calmodulin = CHASTE_CONST(0.024); // millimolar + const double var_cytosolic_Ca_buffer__Bmax_Myosin_Ca = CHASTE_CONST(0.14000000000000001); // millimolar + const double var_cytosolic_Ca_buffer__Bmax_Myosin_Mg = CHASTE_CONST(0.14000000000000001); // millimolar + const double var_cytosolic_Ca_buffer__Bmax_SRB = CHASTE_CONST(0.017100000000000001); // millimolar + const double var_cytosolic_Ca_buffer__Bmax_TroponinC = CHASTE_CONST(0.070000000000000007); // millimolar + const double var_cytosolic_Ca_buffer__Bmax_TroponinC_Ca_Mg_Ca = CHASTE_CONST(0.14000000000000001); // millimolar + const double var_cytosolic_Ca_buffer__Bmax_TroponinC_Ca_Mg_Mg = CHASTE_CONST(0.14000000000000001); // millimolar + const double var_cytosolic_Ca_buffer__koff_Calmodulin = CHASTE_CONST(0.23799999999999999); // per_millisecond + const double var_cytosolic_Ca_buffer__koff_Myosin_Ca = CHASTE_CONST(0.00046000000000000001); // per_millisecond + const double var_cytosolic_Ca_buffer__koff_Myosin_Mg = CHASTE_CONST(5.7000000000000003e-5); // per_millisecond + const double var_cytosolic_Ca_buffer__koff_SRB = CHASTE_CONST(0.059999999999999998); // per_millisecond + const double var_cytosolic_Ca_buffer__koff_TroponinC = CHASTE_CONST(0.019599999999999999); // per_millisecond + const double var_cytosolic_Ca_buffer__koff_TroponinC_Ca_Mg_Ca = CHASTE_CONST(3.1999999999999999e-5); // per_millisecond + const double var_cytosolic_Ca_buffer__koff_TroponinC_Ca_Mg_Mg = CHASTE_CONST(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__kon_Myosin_Ca = CHASTE_CONST(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_Myosin_Mg = CHASTE_CONST(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__kon_TroponinC = CHASTE_CONST(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__kon_TroponinC_Ca_Mg_Ca = CHASTE_CONST(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_cytosolic_Ca_buffer__kon_TroponinC_Ca_Mg_Mg = CHASTE_CONST(0.0030000000000000001); // per_millimolar_per_millisecond + const double var_indo_fluo_Ca_buffer_not_connected__Bmax_Fluo3_Cytosol = CHASTE_CONST(0.025000000000000001); // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__Bmax_Fluo3_SL = CHASTE_CONST(0.00076999999999999996); // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__Bmax_Fluo3_jct = CHASTE_CONST(2.0000000000000002e-5); // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__Bmax_Indo1_Cytosol = CHASTE_CONST(0.025000000000000001); // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__Bmax_Indo1_SL = CHASTE_CONST(0.00076999999999999996); // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__Bmax_Indo1_jct = CHASTE_CONST(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__koff_Fluo3 = CHASTE_CONST(0.11); // per_millisecond + const double var_indo_fluo_Ca_buffer_not_connected__koff_Indo1 = CHASTE_CONST(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_ion_diffusion__J_Ca_SL_cytosol = CHASTE_CONST(3.7243000000000002e-12) * var_chaste_interface__Ca_buffer__Ca_SL - CHASTE_CONST(3.7243000000000002e-12) * var_chaste_interface__Ca_buffer__Cai; // millimole_per_millisecond + const double var_ion_diffusion__J_Ca_jct_SL = CHASTE_CONST(8.2413000000000004e-13) * var_chaste_interface__Ca_buffer__Ca_jct - CHASTE_CONST(8.2413000000000004e-13) * var_chaste_interface__Ca_buffer__Ca_SL; // millimole_per_millisecond + const double var_ion_diffusion__J_Na_SL_cytosol = CHASTE_CONST(1.6385999999999999e-12) * var_chaste_interface__Na_buffer__Na_SL - CHASTE_CONST(1.6385999999999999e-12) * var_chaste_interface__Na_buffer__Nai; // millimole_per_millisecond + const double var_ion_diffusion__J_Na_jct_SL = CHASTE_CONST(1.8312999999999999e-14) * var_chaste_interface__Na_buffer__Na_jct - CHASTE_CONST(1.8312999999999999e-14) * var_chaste_interface__Na_buffer__Na_SL; // millimole_per_millisecond + const double var_model_parameters__Cm_per_area = CHASTE_CONST(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_INaK__sigma = -CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * CHASTE_MATH::Exp(CHASTE_CONST(0.01485884101040119) * NV_Ith_S(mParameters, 9)); // dimensionless + const double var_ICaL__Q_CaL = CHASTE_MATH::Pow(var_ICaL__Q10_CaL, (-31 + CHASTE_CONST(0.10000000000000001) * NV_Ith_S(mParameters, 24))); // dimensionless + const double var_ICaL__temp = CHASTE_CONST(0.45000000000000001) * CHASTE_MATH::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 * CHASTE_MATH::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 + CHASTE_MATH::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 * CHASTE_MATH::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 + CHASTE_MATH::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 * CHASTE_MATH::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 + CHASTE_MATH::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 * CHASTE_MATH::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 + CHASTE_MATH::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 = CHASTE_MATH::Pow(var_ICap__Q10_SLCaP, (-31 + CHASTE_CONST(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 + CHASTE_MATH::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 + CHASTE_MATH::Pow((var_ICap__Km / var_chaste_interface__Ca_buffer__Ca_jct), var_ICap__H)); // microA_per_microF + const double var_INaCa__Q_NCX = CHASTE_MATH::Pow(var_INaCa__Q10_NCX, (-31 + CHASTE_CONST(0.10000000000000001) * NV_Ith_S(mParameters, 24))); // dimensionless + const double var_INaCa__temp_SL = (CHASTE_MATH::Pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) * CHASTE_MATH::Exp(var_INaCa__eta * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24))) - CHASTE_MATH::Pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_SL * CHASTE_MATH::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 * CHASTE_MATH::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 / (CHASTE_MATH::Pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * var_INaCa__K_mCao + CHASTE_MATH::Pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) + CHASTE_MATH::Pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_SL + CHASTE_MATH::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 + CHASTE_MATH::Pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * (1 + CHASTE_MATH::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 = (CHASTE_MATH::Pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) * CHASTE_MATH::Exp(var_INaCa__eta * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24))) - CHASTE_MATH::Pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_jct * CHASTE_MATH::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 * CHASTE_MATH::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 / (CHASTE_MATH::Pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * var_INaCa__K_mCao + CHASTE_MATH::Pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) + CHASTE_MATH::Pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_jct + CHASTE_MATH::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 + CHASTE_MATH::Pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * (1 + CHASTE_MATH::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 = CHASTE_MATH::Pow(var_INaK__Q10_Km_Nai, (-31 + CHASTE_CONST(0.10000000000000001) * NV_Ith_S(mParameters, 24))); // dimensionless + const double var_INaK__Q_NaK = CHASTE_MATH::Pow(var_INaK__Q10_NaK, (-31 + CHASTE_CONST(0.10000000000000001) * NV_Ith_S(mParameters, 24))); // dimensionless + const double var_INaK__f_NaK = 1 / (1 + CHASTE_CONST(0.1245) * CHASTE_MATH::Exp(-CHASTE_CONST(0.10000000000000001) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24))) + CHASTE_CONST(0.036499999999999998) * var_INaK__sigma * CHASTE_MATH::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 + CHASTE_MATH::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 + CHASTE_MATH::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 = CHASTE_MATH::Pow(var_Jpump_SR__Q10_SRCaP, (-31 + CHASTE_CONST(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_model_parameters__cell_radius = CHASTE_CONST(10.25); // micrometre + const double var_model_parameters__Cm = CHASTE_CONST(2.0e-8) * CHASTE_CONST(CHASTE_MATH::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 = CHASTE_CONST(3.1415926540000002e-15) * CHASTE_MATH::Pow(var_model_parameters__cell_radius, 2) * var_model_parameters__cell_length; // liter + const double var_model_parameters__Vol_SL = CHASTE_CONST(0.02) * var_model_parameters__Vol_Cell; // liter + const double var_model_parameters__Vol_SR = CHASTE_CONST(0.035000000000000003) * var_model_parameters__Vol_Cell; // liter + const double var_model_parameters__Vol_cytosol = CHASTE_CONST(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 @@ -644,12 +646,12 @@ 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 var_Jpump_SR__j_pump_SR = (CHASTE_MATH::Pow((var_chaste_interface__Ca_buffer__Cai / var_Jpump_SR__Kmf), var_Jpump_SR__H) - CHASTE_MATH::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 + CHASTE_MATH::Pow((var_chaste_interface__Ca_buffer__Cai / var_Jpump_SR__Kmf), var_Jpump_SR__H) + CHASTE_MATH::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_model_parameters__Vol_jct = CHASTE_CONST(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 + CHASTE_CONST(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 + CHASTE_CONST(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 @@ -667,19 +669,19 @@ 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_reversal_potentials__E_Ca_SL = CHASTE_CONST(0.5) * NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24) * CHASTE_MATH::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, 24) * log(NV_Ith_S(mParameters, 6) / var_chaste_interface__Ca_buffer__Ca_jct) / NV_Ith_S(mParameters, 10); // millivolt + 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 - CHASTE_CONST(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 = CHASTE_CONST(0.5) * NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24) * CHASTE_MATH::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, 24) * log(NV_Ith_S(mParameters, 9) / var_chaste_interface__Na_buffer__Na_SL) / NV_Ith_S(mParameters, 10); // millivolt + 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 - CHASTE_CONST(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) * CHASTE_MATH::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_reversal_potentials__E_Na_jct = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24) * CHASTE_MATH::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 @@ -690,46 +692,46 @@ } 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, 21); // 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, 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__PK = CHASTE_CONST(2.7000000000000001e-7); // litre_per_farad_millisecond + const double var_ICaL__gamma_Ki = CHASTE_CONST(0.75); // dimensionless + const double var_ICaL__gamma_Ko = CHASTE_CONST(0.75); // dimensionless + const double var_ICl_Ca__Fx_Cl_SL = CHASTE_CONST(0.89000000000000001); // dimensionless + const double var_ICl_Ca__Fx_Cl_jct = CHASTE_CONST(0.11); // dimensionless + const double var_ICl_Ca__G_Cl = CHASTE_CONST(0.109625); // milliS_per_microF + const double var_ICl_Ca__Kd_ClCa = CHASTE_CONST(0.10000000000000001); // millimolar + const double var_IKs__Fx_Ks_SL = CHASTE_CONST(0.89000000000000001); // dimensionless + const double var_IKs__Fx_Ks_jct = CHASTE_CONST(0.11); // dimensionless + const double var_IKs__pCa_SL = 3 - CHASTE_MATH::Log10(var_chaste_interface__Ca_buffer__Ca_SL); // dimensionless + const double var_IKs__G_Ks_SL = (CHASTE_CONST(0.057000000000000002) + CHASTE_CONST(0.19) / (1 + CHASTE_MATH::Exp(-12 + CHASTE_CONST(1.6666666666666667) * var_IKs__pCa_SL))) * NV_Ith_S(mParameters, 21); // milliS_per_microF + const double var_IKs__pCa_jct = 3 - CHASTE_MATH::Log10(var_chaste_interface__Ca_buffer__Ca_jct); // dimensionless + const double var_IKs__G_Ks_jct = (CHASTE_CONST(0.057000000000000002) + CHASTE_CONST(0.19) / (1 + CHASTE_MATH::Exp(-12 + CHASTE_CONST(1.6666666666666667) * var_IKs__pCa_jct))) * NV_Ith_S(mParameters, 21); // milliS_per_microF + const double var_IKs__pKNa = CHASTE_CONST(0.018329999999999999); // dimensionless + const double var_IKr_Rr_gate__Rr = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(1.4732142857142858) + CHASTE_CONST(0.044642857142857144) * var_chaste_interface__cell__V)); // dimensionless + const double var_cell__i_Stim_converted = CHASTE_STIM(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_cell__i_Stim = var_cell__i_Stim_converted / CHASTE_CAP(); // microA_per_microF + const double var_IK1__G_K1 = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::Sqrt(NV_Ith_S(mParameters, 8)) * NV_Ith_S(mParameters, 19); // milliS_per_microF + const double var_IKr__G_IKr = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::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) * CHASTE_MATH::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 + CHASTE_MATH::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__E_Ks = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24) * CHASTE_MATH::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 = CHASTE_MATH::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 = CHASTE_MATH::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_reversal_potentials__E_Cl = -NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24) * CHASTE_MATH::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 = (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_reversal_potentials__E_K = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24) * CHASTE_MATH::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 = CHASTE_CONST(1.02) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__cell__V - CHASTE_CONST(0.23849999999999999) * var_reversal_potentials__E_K)); // per_millisecond + const double var_IK1_K1_gate__beta_K1 = (CHASTE_MATH::Exp(-CHASTE_CONST(36.698642499999998) + CHASTE_CONST(0.061749999999999999) * var_chaste_interface__cell__V - CHASTE_CONST(0.061749999999999999) * var_reversal_potentials__E_K) + CHASTE_CONST(0.49124000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.43983232) + CHASTE_CONST(0.080320000000000003) * var_chaste_interface__cell__V - CHASTE_CONST(0.080320000000000003) * var_reversal_potentials__E_K)) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.4444678999999998) + CHASTE_CONST(0.51429999999999998) * var_reversal_potentials__E_K - CHASTE_CONST(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_Itos__i_tos = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * (CHASTE_CONST(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 @@ -737,7 +739,7 @@ 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 + var_chaste_interface__membrane_data_clamp_current = (-CHASTE_EXP_VOLT(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 } @@ -793,7 +795,7 @@ { // Inputs: // Time units: millisecond - double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -839,135 +841,135 @@ // 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__Fx_ICaL_SL = CHASTE_CONST(0.10000000000000001); // dimensionless + const double var_ICaL__Fx_ICaL_jct = CHASTE_CONST(0.90000000000000002); // dimensionless + const double var_ICaL__PK = CHASTE_CONST(2.7000000000000001e-7); // litre_per_farad_millisecond + const double var_ICaL__PNa = CHASTE_CONST(1.4999999999999999e-8); // litre_per_farad_millisecond + const double var_ICaL__Q10_CaL = CHASTE_CONST(1.8); // dimensionless + const double var_ICaL__gamma_Cai = CHASTE_CONST(0.34100000000000003); // dimensionless + const double var_ICaL__gamma_Cao = CHASTE_CONST(0.34100000000000003); // dimensionless + const double var_ICaL__gamma_Ki = CHASTE_CONST(0.75); // dimensionless + const double var_ICaL__gamma_Ko = CHASTE_CONST(0.75); // dimensionless + const double var_ICaL__gamma_Nai = CHASTE_CONST(0.75); // dimensionless + const double var_ICaL__gamma_Nao = CHASTE_CONST(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, 21); // 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, 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_ICab__Fx_CaBk_SL = CHASTE_CONST(0.89000000000000001); // dimensionless + const double var_ICab__Fx_CaBk_jct = CHASTE_CONST(0.11); // dimensionless + const double var_ICab__G_CaBk = CHASTE_CONST(0.00025129999999999998); // milliS_per_microF + const double var_ICap__Fx_SLCaP_SL = CHASTE_CONST(0.89000000000000001); // dimensionless + const double var_ICap__Fx_SLCaP_jct = CHASTE_CONST(0.11); // dimensionless + const double var_ICap__H = CHASTE_CONST(1.6000000000000001); // dimensionless + const double var_ICap__Km = CHASTE_CONST(0.00050000000000000001); // millimolar + const double var_ICap__Q10_SLCaP = CHASTE_CONST(2.3500000000000001); // dimensionless + const double var_ICap__V_maxAF = CHASTE_CONST(0.067299999999999999); // microA_per_microF + const double var_IKs__Fx_Ks_SL = CHASTE_CONST(0.89000000000000001); // dimensionless + const double var_IKs__Fx_Ks_jct = CHASTE_CONST(0.11); // dimensionless + const double var_IKs__pCa_SL = 3 - CHASTE_MATH::Log10(var_chaste_interface__Ca_buffer__Ca_SL); // dimensionless + const double var_IKs__G_Ks_SL = (CHASTE_CONST(0.057000000000000002) + CHASTE_CONST(0.19) / (1 + CHASTE_MATH::Exp(-12 + CHASTE_CONST(1.6666666666666667) * var_IKs__pCa_SL))) * NV_Ith_S(mParameters, 21); // milliS_per_microF + const double var_IKs__pCa_jct = 3 - CHASTE_MATH::Log10(var_chaste_interface__Ca_buffer__Ca_jct); // dimensionless + const double var_IKs__G_Ks_jct = (CHASTE_CONST(0.057000000000000002) + CHASTE_CONST(0.19) / (1 + CHASTE_MATH::Exp(-12 + CHASTE_CONST(1.6666666666666667) * var_IKs__pCa_jct))) * NV_Ith_S(mParameters, 21); // milliS_per_microF + const double var_IKs__pKNa = CHASTE_CONST(0.018329999999999999); // dimensionless + const double var_INa__Fx_Na_SL = CHASTE_CONST(0.89000000000000001); // dimensionless + const double var_INa__Fx_Na_jct = CHASTE_CONST(0.11); // dimensionless + const double var_INaCa__Fx_NCX_SL = CHASTE_CONST(0.89000000000000001); // dimensionless + const double var_INaCa__Fx_NCX_jct = CHASTE_CONST(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_INaCa__K_mCai = CHASTE_CONST(0.0035899999999999999); // millimolar + const double var_INaCa__K_mCao = CHASTE_CONST(1.3); // millimolar + const double var_INaCa__K_mNai = CHASTE_CONST(12.289999999999999); // millimolar + const double var_INaCa__K_mNao = CHASTE_CONST(87.5); // millimolar + const double var_INaCa__Kd_act = CHASTE_CONST(0.00025599999999999999); // millimolar + const double var_INaCa__Ka_SL = 1 / (1 + CHASTE_MATH::Pow(var_INaCa__Kd_act, 3) / CHASTE_MATH::Pow(var_chaste_interface__Ca_buffer__Ca_SL, 3)); // dimensionless + const double var_INaCa__Ka_jct = 1 / (1 + CHASTE_MATH::Pow(var_INaCa__Kd_act, 3) / CHASTE_MATH::Pow(var_chaste_interface__Ca_buffer__Ca_jct, 3)); // dimensionless + const double var_INaCa__Q10_NCX = CHASTE_CONST(1.5700000000000001); // dimensionless + const double var_INaCa__eta = CHASTE_CONST(0.34999999999999998); // dimensionless + const double var_INaCa__ksat = CHASTE_CONST(0.27000000000000002); // dimensionless + const double var_INa__openProb = CHASTE_MATH::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 = CHASTE_CONST(0.89000000000000001); // dimensionless + const double var_INab__Fx_NaBk_jct = CHASTE_CONST(0.11); // dimensionless + const double var_INab__G_NaBk = CHASTE_CONST(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_ICaL_f_gate__tau_f = 1 / (CHASTE_CONST(0.02) + CHASTE_CONST(0.019699999999999999) * CHASTE_MATH::Exp(-CHASTE_CONST(0.23877882250000002) * CHASTE_MATH::Pow((1 + CHASTE_CONST(0.068965517241379309) * var_chaste_interface__cell__V), 2))); // millisecond + const double var_IKr_Rr_gate__Rr = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(1.4732142857142858) + CHASTE_CONST(0.044642857142857144) * var_chaste_interface__cell__V)); // dimensionless + const double var_INa_h_gate__alpha_h = ((var_chaste_interface__cell__V < -40) ? (CHASTE_CONST(0.13500000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(11.764705882352942) + CHASTE_CONST(0.14705882352941177) * NV_Ith_S(mParameters, 17) - CHASTE_CONST(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 * CHASTE_MATH::Exp(CHASTE_CONST(0.34999999999999998) * var_chaste_interface__cell__V - CHASTE_CONST(0.34999999999999998) * NV_Ith_S(mParameters, 17)) + CHASTE_CONST(3.5600000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.079000000000000001) * var_chaste_interface__cell__V - CHASTE_CONST(0.079000000000000001) * NV_Ith_S(mParameters, 17))) : (CHASTE_CONST(7.6923076923076916) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.96036036036036043) + CHASTE_CONST(0.0900900900900901) * NV_Ith_S(mParameters, 17) - CHASTE_CONST(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, 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__alpha_j = ((var_chaste_interface__cell__V < -40) ? ((CHASTE_CONST(37.780000000000001) + var_chaste_interface__cell__V) * (-127140 * CHASTE_MATH::Exp(CHASTE_CONST(0.24440000000000001) * var_chaste_interface__cell__V - CHASTE_CONST(0.24440000000000001) * NV_Ith_S(mParameters, 17)) - CHASTE_CONST(3.4740000000000003e-5) * CHASTE_MATH::Exp(CHASTE_CONST(0.043909999999999998) * NV_Ith_S(mParameters, 17) - CHASTE_CONST(0.043909999999999998) * var_chaste_interface__cell__V)) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(24.640530000000002) + CHASTE_CONST(0.311) * var_chaste_interface__cell__V - CHASTE_CONST(0.311) * NV_Ith_S(mParameters, 17)))) : (0)); // per_millisecond + const double var_INa_j_gate__beta_j = ((var_chaste_interface__cell__V < -40) ? (CHASTE_CONST(0.1212) * CHASTE_MATH::Exp(CHASTE_CONST(0.01052) * NV_Ith_S(mParameters, 17) - CHASTE_CONST(0.01052) * var_chaste_interface__cell__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(5.5312920000000005) + CHASTE_CONST(0.13780000000000001) * NV_Ith_S(mParameters, 17) - CHASTE_CONST(0.13780000000000001) * var_chaste_interface__cell__V))) : (CHASTE_CONST(0.29999999999999999) * CHASTE_MATH::Exp(CHASTE_CONST(2.5349999999999999e-7) * NV_Ith_S(mParameters, 17) - CHASTE_CONST(2.5349999999999999e-7) * var_chaste_interface__cell__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(3.2000000000000002) + CHASTE_CONST(0.10000000000000001) * NV_Ith_S(mParameters, 17) - CHASTE_CONST(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_cell__i_Stim_converted = CHASTE_STIM(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 + var_chaste_interface__membrane_data_clamp_current = (-CHASTE_EXP_VOLT(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_model_parameters__Cm_per_area = CHASTE_CONST(1.9999999999999999e-6); // farad_per_cm2 + const double var_IK1__G_K1 = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::Sqrt(NV_Ith_S(mParameters, 8)) * NV_Ith_S(mParameters, 19); // milliS_per_microF + const double var_IKr__G_IKr = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::Sqrt(NV_Ith_S(mParameters, 8)) * NV_Ith_S(mParameters, 20); // milliS_per_microF + const double var_ICaL__Q_CaL = CHASTE_MATH::Pow(var_ICaL__Q10_CaL, (-31 + CHASTE_CONST(0.10000000000000001) * NV_Ith_S(mParameters, 24))); // dimensionless + const double var_ICaL__temp = CHASTE_CONST(0.45000000000000001) * CHASTE_MATH::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 * CHASTE_MATH::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 + CHASTE_MATH::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 * CHASTE_MATH::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 + CHASTE_MATH::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) * CHASTE_MATH::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 + CHASTE_MATH::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 * CHASTE_MATH::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 + CHASTE_MATH::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 * CHASTE_MATH::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 + CHASTE_MATH::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_ICaL__i_CaL_converted = CHASTE_CAP() * var_ICaL__i_CaL; // uA_per_cm2 + const double var_ICap__Q_SLCaP = CHASTE_MATH::Pow(var_ICap__Q10_SLCaP, (-31 + CHASTE_CONST(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 + CHASTE_MATH::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 + CHASTE_MATH::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_ICap__i_Cap_converted = CHASTE_CAP() * var_ICap__i_Cap; // uA_per_cm2 + const double var_IKs__E_Ks = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24) * CHASTE_MATH::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 = CHASTE_MATH::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 = CHASTE_MATH::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_IKs__i_Ks_converted = CHASTE_CAP() * var_IKs__i_Ks; // uA_per_cm2 + const double var_INaCa__Q_NCX = CHASTE_MATH::Pow(var_INaCa__Q10_NCX, (-31 + CHASTE_CONST(0.10000000000000001) * NV_Ith_S(mParameters, 24))); // dimensionless + const double var_INaCa__temp_SL = (CHASTE_MATH::Pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) * CHASTE_MATH::Exp(var_INaCa__eta * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24))) - CHASTE_MATH::Pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_SL * CHASTE_MATH::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 * CHASTE_MATH::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 / (CHASTE_MATH::Pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * var_INaCa__K_mCao + CHASTE_MATH::Pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) + CHASTE_MATH::Pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_SL + CHASTE_MATH::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 + CHASTE_MATH::Pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * (1 + CHASTE_MATH::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 = (CHASTE_MATH::Pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) * CHASTE_MATH::Exp(var_INaCa__eta * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24))) - CHASTE_MATH::Pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_jct * CHASTE_MATH::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 * CHASTE_MATH::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 / (CHASTE_MATH::Pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * var_INaCa__K_mCao + CHASTE_MATH::Pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) + CHASTE_MATH::Pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_jct + CHASTE_MATH::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 + CHASTE_MATH::Pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * (1 + CHASTE_MATH::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_INaCa__i_NaCa_converted = CHASTE_CAP() * 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__cell_radius = CHASTE_CONST(10.25); // micrometre + const double var_model_parameters__Cm = CHASTE_CONST(2.0e-8) * CHASTE_CONST(CHASTE_MATH::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_reversal_potentials__E_Ca_SL = CHASTE_CONST(0.5) * NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24) * CHASTE_MATH::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_reversal_potentials__E_Ca_jct = CHASTE_CONST(0.5) * NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24) * CHASTE_MATH::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_ICab__i_Cab_converted = CHASTE_CAP() * var_ICab__i_Cab; // uA_per_cm2 + const double var_reversal_potentials__E_Cl = -NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24) * CHASTE_MATH::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 = (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_IClb__i_Clb_converted = CHASTE_CAP() * var_IClb__i_Clb; // uA_per_cm2 + const double var_reversal_potentials__E_K = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24) * CHASTE_MATH::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 = CHASTE_CONST(1.02) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__cell__V - CHASTE_CONST(0.23849999999999999) * var_reversal_potentials__E_K)); // per_millisecond + const double var_IK1_K1_gate__beta_K1 = (CHASTE_MATH::Exp(-CHASTE_CONST(36.698642499999998) + CHASTE_CONST(0.061749999999999999) * var_chaste_interface__cell__V - CHASTE_CONST(0.061749999999999999) * var_reversal_potentials__E_K) + CHASTE_CONST(0.49124000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.43983232) + CHASTE_CONST(0.080320000000000003) * var_chaste_interface__cell__V - CHASTE_CONST(0.080320000000000003) * var_reversal_potentials__E_K)) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.4444678999999998) + CHASTE_CONST(0.51429999999999998) * var_reversal_potentials__E_K - CHASTE_CONST(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_IK1__i_K1_converted = CHASTE_CAP() * 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_IKr__i_Kr_converted = CHASTE_CAP() * 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_Itof__i_tof_converted = CHASTE_CAP() * var_Itof__i_tof; // uA_per_cm2 + const double var_Itos__i_tos = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * (CHASTE_CONST(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 = CHASTE_CAP() * 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) * CHASTE_MATH::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_reversal_potentials__E_Na_jct = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24) * CHASTE_MATH::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_INa__i_Na_converted = CHASTE_CAP() * 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_INab__i_Nab_converted = CHASTE_CAP() * var_INab__i_Nab; // uA_per_cm2 #if CHASTE_SUNDIALS_VERSION >= 60000 N_Vector dqs = N_VNew_Serial(24, CvodeContextManager::Instance()->GetSundialsContext()); @@ -1445,4 +1447,5 @@ extern "C" } } + #endif // CHASTE_CVODE diff --git a/chaste_codegen/data/tests/chaste_reference_models/CVODE_DATA_CLAMP/dynamic_Shannon2004.hpp b/chaste_codegen/data/tests/chaste_reference_models/CVODE_DATA_CLAMP/dynamic_Shannon2004.hpp index 4071989a7..8da4f0ef5 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/CVODE_DATA_CLAMP/dynamic_Shannon2004.hpp +++ b/chaste_codegen/data/tests/chaste_reference_models/CVODE_DATA_CLAMP/dynamic_Shannon2004.hpp @@ -18,7 +18,11 @@ #include #include "AbstractDynamicallyLoadableEntity.hpp" #include "AbstractStimulusFunction.hpp" +#if USING_DEVICE_COMPILER +#include "StimulusEvaluatorCuda.hpp" +#endif #include "AbstractCvodeCellWithDataClamp.hpp" +#include "HostDeviceMacros.hpp" class Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvodeDataClamp : public AbstractCvodeCellWithDataClamp, public AbstractDynamicallyLoadableEntity { @@ -39,6 +43,10 @@ class Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvodeDataClamp : publ const bool is_concentration[45] = {false, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true, false, false, true, true, true, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false}; const bool is_probability[45] = {false, false, true, true, true, false, false, false, false, false, false, false, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false}; public: + static constexpr unsigned TOTAL_SIZE = 45u; + static constexpr unsigned NNZ = 0u; + static inline const int sparse_rowptr[] = { }; + static inline const int sparse_colind[] = { }; boost::shared_ptr UseCellMLDefaultStimulus(); double GetIntracellularCalciumConcentration(); @@ -47,7 +55,19 @@ const bool is_probability[45] = {false, false, true, true, true, false, false, f void VerifyStateVariables(); double GetIIonic(const std::vector* pStateVariables=NULL); void EvaluateYDerivatives(double var_chaste_interface__environment__time, const N_Vector rY, N_Vector rDY); + N_Vector ComputeDerivedQuantities(double var_chaste_interface__environment__time, const N_Vector & rY); +#if USING_DEVICE_COMPILER + template + DEVICE + static void EvaluateYDerivativesDevice(ValueType var_chaste_interface__environment__time, const ValueType* rY, ValueType* rDY, const ValueType mSetVoltageDerivativeToZero, const ValueType mFixedVoltage, const ValueType* mParameters, const ValueType capacitance, const DeviceStimulusFunctor stim); + template + DEVICE + static void EvaluateAnalyticJacobianDevice(ValueType var_chaste_interface__environment__time, const ValueType *rY, ValueType *rDY, ValueType *rJacobian, ValueType *rTmp1, ValueType *rTmp2, ValueType *rTmp3, const unsigned nvars, const ValueType mSetVoltageDerivativeToZero, const ValueType mFixedVoltage, const ValueType *mParameters, const ValueType capacitance, const DeviceStimulusFunctor stim); + template + DEVICE + static void EvaluateSparseAnalyticJacobianDevice(ValueType var_chaste_interface__environment__time, const ValueType *rY, ValueType *rDY, ValueType *rJacobian, ValueType *rTmp1, ValueType *rTmp2, ValueType *rTmp3, const unsigned nvars, const ValueType mSetVoltageDerivativeToZero, const ValueType mFixedVoltage, const ValueType *mParameters, const ValueType capacitance, const DeviceStimulusFunctor stim); +#endif }; // Needs to be included last @@ -84,4 +104,10 @@ namespace boost } #endif // DYNAMICSHANNON_WANG_PUGLISI_WEBER_BERS_2004FROMCELLMLCVODEDATACLAMP_HPP_ + + + +#if USING_DEVICE_COMPILER + #include "dynamic_Shannon2004Kernels.hpp" +#endif #endif // CHASTE_CVODE \ No newline at end of file diff --git a/chaste_codegen/data/tests/chaste_reference_models/CVODE_DATA_CLAMP/grandi_pasqualini_bers_2010_ssCvodeDataClamp.cpp b/chaste_codegen/data/tests/chaste_reference_models/CVODE_DATA_CLAMP/grandi_pasqualini_bers_2010_ssCvodeDataClamp.cpp index 2168088f9..d1eccb83c 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/CVODE_DATA_CLAMP/grandi_pasqualini_bers_2010_ssCvodeDataClamp.cpp +++ b/chaste_codegen/data/tests/chaste_reference_models/CVODE_DATA_CLAMP/grandi_pasqualini_bers_2010_ssCvodeDataClamp.cpp @@ -22,6 +22,8 @@ #include "HeartConfig.hpp" #include "IsNan.hpp" #include "MathsCustomFunctions.hpp" +#include "ChasteMathDeviceNamespaces.hpp" +#include "ChasteCpuMacros.hpp" #if CHASTE_SUNDIALS_VERSION >= 60000 #include "CvodeContextManager.hpp" @@ -40,7 +42,7 @@ bool Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClamp::registered = Mo 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_amplitude_converted = -CHASTE_CONST(9.5) * CHASTE_CAP(); // 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 @@ -74,30 +76,30 @@ bool Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClamp::registered = Mo // 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, 0) = CHASTE_CONST(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, 2) = CHASTE_CONST(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, 5) = CHASTE_CONST(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, 7) = CHASTE_CONST(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, 11) = CHASTE_CONST(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, 17) = CHASTE_CONST(0.34999999999999998); // (var_I_Ki__g_ki_factor) [mS_per_uF] + NV_Ith_S(this->mParameters, 18) = CHASTE_CONST(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, 21) = CHASTE_CONST(4.5); // (var_parameters__IbarNCX) [uA_per_uF] + NV_Ith_S(this->mParameters, 22) = CHASTE_CONST(1.8); // (var_parameters__IbarNaK) [uA_per_uF] + NV_Ith_S(this->mParameters, 23) = CHASTE_CONST(1.3809999999999999e-10); // (var_parameters__Cmem) [farad] NV_Ith_S(this->mParameters, 24) = 310; // (var_parameters__Temp) [kelvin] } @@ -154,7 +156,7 @@ bool Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClamp::registered = Mo made_new_cvode_vector = true; rY = MakeNVector(*pStateVariables); } - double var_chaste_interface__membrane_potential__V_m = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + double var_chaste_interface__membrane_potential__V_m = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -197,112 +199,112 @@ bool Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClamp::registered = Mo 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_I_Ks__gks_junc = CHASTE_CONST(0.0035000000000000001); // mS_per_uF + const double var_I_Ks__gks_sl = CHASTE_CONST(0.0035000000000000001); // mS_per_uF + const double var_I_Kp__kp_kp = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(7.4880000000000004) - CHASTE_CONST(0.16722408026755853) * var_chaste_interface__membrane_potential__V_m)); // dimensionless + const double var_I_Kr__rkr = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(3.0833333333333335) + CHASTE_CONST(0.041666666666666664) * var_chaste_interface__membrane_potential__V_m)); // dimensionless + const double var_parameters__Fjunc = CHASTE_CONST(0.11); // dimensionless + const double var_parameters__Fjunc_CaL = CHASTE_CONST(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__GCaB = CHASTE_CONST(0.00055130000000000001); // mS_per_uF + const double var_parameters__GClB = CHASTE_CONST(0.0089999999999999993); // mS_per_uF + const double var_parameters__GClCa = CHASTE_CONST(0.0548125); // mS_per_uF + const double var_parameters__GNaB = CHASTE_CONST(0.00059699999999999998); // mS_per_uF + const double var_parameters__IbarSLCaP = CHASTE_CONST(0.067299999999999999); // uA_per_uF + const double var_parameters__KdClCa = CHASTE_CONST(0.10000000000000001); // mM + const double var_parameters__Kdact = CHASTE_CONST(0.00014999999999999999); // mM + const double var_I_NCX__Ka_junc = 1 / (1 + CHASTE_MATH::Pow(var_parameters__Kdact, 2) / CHASTE_MATH::Pow(var_chaste_interface__Ca_Concentrations__Ca_j, 2)); // dimensionless + const double var_I_NCX__Ka_sl = 1 / (1 + CHASTE_MATH::Pow(var_parameters__Kdact, 2) / CHASTE_MATH::Pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 2)); // dimensionless + const double var_parameters__KmCai = CHASTE_CONST(0.0035899999999999999); // mM + const double var_parameters__KmCao = CHASTE_CONST(1.3); // mM + const double var_parameters__KmKo = CHASTE_CONST(1.5); // mM + const double var_parameters__KmNai = CHASTE_CONST(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__KmNao = CHASTE_CONST(87.5); // mM + const double var_parameters__KmPCa = CHASTE_CONST(0.00050000000000000001); // mM + const double var_I_Ki__g_K1 = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::Sqrt(NV_Ith_S(mParameters, 7)) * NV_Ith_S(mParameters, 17); // mS_per_uF + const double var_I_Kr__gkr = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::Sqrt(NV_Ith_S(mParameters, 7)) * NV_Ith_S(mParameters, 18); // mS_per_uF + const double var_I_NCX__s3_junc = CHASTE_MATH::Pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * NV_Ith_S(mParameters, 5) + CHASTE_MATH::Pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * var_parameters__KmCao + CHASTE_MATH::Pow(NV_Ith_S(mParameters, 8), 3) * var_chaste_interface__Ca_Concentrations__Ca_j + CHASTE_MATH::Pow(var_parameters__KmNao, 3) * (1 + var_chaste_interface__Ca_Concentrations__Ca_j / var_parameters__KmCai) * var_chaste_interface__Ca_Concentrations__Ca_j + CHASTE_MATH::Pow(NV_Ith_S(mParameters, 8), 3) * (1 + CHASTE_MATH::Pow(var_chaste_interface__Na_Concentrations__Na_j, 3) / CHASTE_MATH::Pow(var_parameters__KmNai, 3)) * var_parameters__KmCai; // mM4 + const double var_I_NCX__s3_sl = CHASTE_MATH::Pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * NV_Ith_S(mParameters, 5) + CHASTE_MATH::Pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * var_parameters__KmCao + CHASTE_MATH::Pow(NV_Ith_S(mParameters, 8), 3) * var_chaste_interface__Ca_Concentrations__Ca_sl + CHASTE_MATH::Pow(var_parameters__KmNao, 3) * (1 + var_chaste_interface__Ca_Concentrations__Ca_sl / var_parameters__KmCai) * var_chaste_interface__Ca_Concentrations__Ca_sl + CHASTE_MATH::Pow(NV_Ith_S(mParameters, 8), 3) * (1 + CHASTE_MATH::Pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) / CHASTE_MATH::Pow(var_parameters__KmNai, 3)) * var_parameters__KmCai; // mM4 + const double var_I_NaK__sigma = -CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * CHASTE_MATH::Exp(CHASTE_CONST(0.01485884101040119) * NV_Ith_S(mParameters, 8)); // dimensionless + const double var_parameters__Q10CaL = CHASTE_CONST(1.8); // dimensionless + const double var_parameters__Q10NCX = CHASTE_CONST(1.5700000000000001); // dimensionless + const double var_parameters__Q10SLCaP = CHASTE_CONST(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__fnak = 1 / (1 + CHASTE_CONST(0.1245) * CHASTE_MATH::Exp(-CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT) + CHASTE_CONST(0.036499999999999998) * var_I_NaK__sigma * CHASTE_MATH::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 + CHASTE_MATH::Pow(var_parameters__KmNaip, 4) / CHASTE_MATH::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 + CHASTE_MATH::Pow(var_parameters__KmNaip, 4) / CHASTE_MATH::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_parameters__Qpow = -31 + CHASTE_CONST(0.10000000000000001) * NV_Ith_S(mParameters, 24); // dimensionless + const double var_I_PCa__I_pca_junc = CHASTE_MATH::Pow(var_chaste_interface__Ca_Concentrations__Ca_j, CHASTE_CONST(1.6000000000000001)) * CHASTE_MATH::Pow(var_parameters__Q10SLCaP, var_parameters__Qpow) * var_parameters__Fjunc * var_parameters__IbarSLCaP / (CHASTE_MATH::Pow(var_chaste_interface__Ca_Concentrations__Ca_j, CHASTE_CONST(1.6000000000000001)) + CHASTE_MATH::Pow(var_parameters__KmPCa, CHASTE_CONST(1.6000000000000001))); // uA_per_uF + const double var_I_PCa__I_pca_sl = CHASTE_MATH::Pow(var_chaste_interface__Ca_Concentrations__Ca_sl, CHASTE_CONST(1.6000000000000001)) * CHASTE_MATH::Pow(var_parameters__Q10SLCaP, var_parameters__Qpow) * var_parameters__Fsl * var_parameters__IbarSLCaP / (CHASTE_MATH::Pow(var_chaste_interface__Ca_Concentrations__Ca_sl, CHASTE_CONST(1.6000000000000001)) + CHASTE_MATH::Pow(var_parameters__KmPCa, CHASTE_CONST(1.6000000000000001))); // uA_per_uF + const double var_parameters__eca_junc = CHASTE_CONST(0.5) * CHASTE_MATH::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_parameters__eca_sl = CHASTE_CONST(0.5) * CHASTE_MATH::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 = log(NV_Ith_S(mParameters, 4) / NV_Ith_S(mParameters, 6)) / var_parameters__FoRT; // mV + const double var_parameters__ecl = CHASTE_MATH::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 = 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_parameters__ek = CHASTE_MATH::Log(NV_Ith_S(mParameters, 7) / var_chaste_interface__K_Concentration__K_i) / var_parameters__FoRT; // mV + const double var_I_Ki__aki = CHASTE_CONST(1.02) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__membrane_potential__V_m - CHASTE_CONST(0.23849999999999999) * var_parameters__ek)); // dimensionless + const double var_I_Ki__bki = (CHASTE_CONST(0.49124000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.43983232) + CHASTE_CONST(0.080320000000000003) * var_chaste_interface__membrane_potential__V_m - CHASTE_CONST(0.080320000000000003) * var_parameters__ek) + CHASTE_MATH::Exp(-CHASTE_CONST(36.698642499999998) + CHASTE_CONST(0.061749999999999999) * var_chaste_interface__membrane_potential__V_m - CHASTE_CONST(0.061749999999999999) * var_parameters__ek)) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.4444678999999998) + CHASTE_CONST(0.51429999999999998) * var_parameters__ek - CHASTE_CONST(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(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_junc = CHASTE_MATH::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 = CHASTE_MATH::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 = 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_parameters__ena_sl = CHASTE_MATH::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 = CHASTE_MATH::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__GtoFast = ((var_parameters__epi == 1) ? (CHASTE_CONST(0.1144) * NV_Ith_S(mParameters, 16)) : (CHASTE_CONST(0.0014039999999999999) * NV_Ith_S(mParameters, 16))); // mS_per_uF + const double var_I_to__GtoSlow = ((var_parameters__epi == 1) ? (CHASTE_CONST(0.015599999999999999) * NV_Ith_S(mParameters, 20)) : (CHASTE_CONST(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_parameters__gkp = CHASTE_CONST(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_parameters__ksat = CHASTE_CONST(0.32000000000000001); // dimensionless + const double var_parameters__nu = CHASTE_CONST(0.27000000000000002); // dimensionless + const double var_I_NCX__s1_junc = CHASTE_MATH::Pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * NV_Ith_S(mParameters, 5) * CHASTE_MATH::Exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * var_parameters__nu); // mM4 + const double var_I_NCX__s1_sl = CHASTE_MATH::Pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * NV_Ith_S(mParameters, 5) * CHASTE_MATH::Exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * var_parameters__nu); // mM4 + const double var_I_NCX__s2_junc = CHASTE_MATH::Pow(NV_Ith_S(mParameters, 8), 3) * var_chaste_interface__Ca_Concentrations__Ca_j * CHASTE_MATH::Exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT); // mM4 + const double var_I_NCX__I_ncx_junc = CHASTE_MATH::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 * CHASTE_MATH::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 = CHASTE_MATH::Pow(NV_Ith_S(mParameters, 8), 3) * var_chaste_interface__Ca_Concentrations__Ca_sl * CHASTE_MATH::Exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT); // mM4 + const double var_I_NCX__I_ncx_sl = CHASTE_MATH::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 * CHASTE_MATH::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 = CHASTE_CONST(0.00054000000000000001) * NV_Ith_S(mParameters, 11); // cm_per_sec + const double var_I_Ca__ibarca_j = 4 * (-CHASTE_CONST(0.34100000000000003) * NV_Ith_S(mParameters, 5) + CHASTE_CONST(0.34100000000000003) * var_chaste_interface__Ca_Concentrations__Ca_j * CHASTE_MATH::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 + CHASTE_MATH::Exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_Ca_junc = CHASTE_CONST(0.45000000000000001) * CHASTE_MATH::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_I_Ca__ibarca_sl = 4 * (-CHASTE_CONST(0.34100000000000003) * NV_Ith_S(mParameters, 5) + CHASTE_CONST(0.34100000000000003) * var_chaste_interface__Ca_Concentrations__Ca_sl * CHASTE_MATH::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 + CHASTE_MATH::Exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_Ca_sl = CHASTE_CONST(0.45000000000000001) * CHASTE_MATH::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_parameters__pK = CHASTE_CONST(1.35e-7); // cm_per_sec + const double var_I_Ca__ibark = (-CHASTE_CONST(0.75) * NV_Ith_S(mParameters, 7) + CHASTE_CONST(0.75) * var_chaste_interface__K_Concentration__K_i * CHASTE_MATH::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 + CHASTE_MATH::Exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_CaK = CHASTE_CONST(0.45000000000000001) * CHASTE_MATH::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 = CHASTE_CONST(7.4999999999999993e-9); // cm_per_sec + const double var_I_Ca__ibarna_j = (-CHASTE_CONST(0.75) * NV_Ith_S(mParameters, 8) + CHASTE_CONST(0.75) * var_chaste_interface__Na_Concentrations__Na_j * CHASTE_MATH::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 + CHASTE_MATH::Exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_CaNa_junc = CHASTE_CONST(0.45000000000000001) * CHASTE_MATH::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 = (-CHASTE_CONST(0.75) * NV_Ith_S(mParameters, 8) + CHASTE_CONST(0.75) * var_chaste_interface__Na_Concentrations__Na_sl * CHASTE_MATH::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 + CHASTE_MATH::Exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_CaNa_sl = CHASTE_CONST(0.45000000000000001) * CHASTE_MATH::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((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_parameters__pNaK = CHASTE_CONST(0.018329999999999999); // dimensionless + const double var_I_Ks__eks = CHASTE_MATH::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 = CHASTE_MATH::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 var_chaste_interface__i_ionic = CHASTE_CAP() * var_membrane_potential__I_tot; // uA_per_cm2 const double i_ionic = var_chaste_interface__i_ionic; if (made_new_cvode_vector) @@ -317,7 +319,7 @@ bool Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClamp::registered = Mo { // Inputs: // Time units: millisecond - double var_chaste_interface__membrane_potential__V_m = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + double var_chaste_interface__membrane_potential__V_m = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -399,150 +401,150 @@ bool Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClamp::registered = Mo // 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 d_dt_chaste_interface_var_I_Ca__f_Ca_Bj = -CHASTE_CONST(0.011900000000000001) * var_chaste_interface__I_Ca__f_Ca_Bj + CHASTE_CONST(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 = -CHASTE_CONST(0.011900000000000001) * var_chaste_interface__I_Ca__f_Ca_Bsl + CHASTE_CONST(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 var_I_Ca__dss = 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.83333333333333337) - CHASTE_CONST(0.16666666666666666) * var_chaste_interface__membrane_potential__V_m)); // dimensionless + const double var_I_Ca__fss = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(3.8888888888888888) + CHASTE_CONST(0.1111111111111111) * var_chaste_interface__membrane_potential__V_m)) + CHASTE_CONST(0.59999999999999998) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(2.5) - CHASTE_CONST(0.050000000000000003) * var_chaste_interface__membrane_potential__V_m)); // dimensionless + const double var_I_Ca__taud = CHASTE_CONST(28.571428571428569) * (1 - CHASTE_MATH::Exp(-CHASTE_CONST(0.83333333333333337) - CHASTE_CONST(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 var_I_Ca__tauf = 1 / (CHASTE_CONST(0.02) + CHASTE_CONST(0.019699999999999999) * CHASTE_MATH::Exp(-CHASTE_CONST(0.23877882250000002) * CHASTE_MATH::Pow((1 + CHASTE_CONST(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 var_I_Kr__tauxr = 230 / (1 + CHASTE_MATH::Exp(2 + CHASTE_CONST(0.050000000000000003) * var_chaste_interface__membrane_potential__V_m)) + 3300 / ((1 + CHASTE_MATH::Exp(CHASTE_CONST(1.2222222222222223) + CHASTE_CONST(0.1111111111111111) * var_chaste_interface__membrane_potential__V_m)) * (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.4444444444444446) - CHASTE_CONST(0.1111111111111111) * var_chaste_interface__membrane_potential__V_m))); // msec + const double var_I_Kr__xrss = 1 / (1 + CHASTE_MATH::Exp(-2 - CHASTE_CONST(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 var_I_Ks__tauxs = CHASTE_CONST(990.10000000000002) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.17252124645892353) - CHASTE_CONST(0.070821529745042494) * var_chaste_interface__membrane_potential__V_m)); // msec + const double var_I_Ks__xsss = 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.26666666666666666) - CHASTE_CONST(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 - 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 - 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__ah = ((var_chaste_interface__membrane_potential__V_m >= -40) ? (0) : (CHASTE_CONST(0.057000000000000002) * CHASTE_MATH::Exp(-CHASTE_CONST(11.764705882352942) + CHASTE_CONST(0.14705882352941177) * NV_Ith_S(mParameters, 15) - CHASTE_CONST(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) : ((CHASTE_CONST(37.780000000000001) + var_chaste_interface__membrane_potential__V_m) * (-25428 * CHASTE_MATH::Exp(CHASTE_CONST(0.24440000000000001) * var_chaste_interface__membrane_potential__V_m - CHASTE_CONST(0.24440000000000001) * NV_Ith_S(mParameters, 15)) - CHASTE_CONST(6.9480000000000002e-6) * CHASTE_MATH::Exp(CHASTE_CONST(0.043909999999999998) * NV_Ith_S(mParameters, 15) - CHASTE_CONST(0.043909999999999998) * var_chaste_interface__membrane_potential__V_m)) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(24.640530000000002) + CHASTE_CONST(0.311) * var_chaste_interface__membrane_potential__V_m - CHASTE_CONST(0.311) * NV_Ith_S(mParameters, 15))))); // dimensionless + const double var_I_Na__bh = ((var_chaste_interface__membrane_potential__V_m >= -40) ? (CHASTE_CONST(5.9230769230769234) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.96036036036036043) + CHASTE_CONST(0.0900900900900901) * NV_Ith_S(mParameters, 15) - CHASTE_CONST(0.0900900900900901) * var_chaste_interface__membrane_potential__V_m))) : (310000 * CHASTE_MATH::Exp(CHASTE_CONST(0.34849999999999998) * var_chaste_interface__membrane_potential__V_m - CHASTE_CONST(0.34849999999999998) * NV_Ith_S(mParameters, 15)) + CHASTE_CONST(2.7000000000000002) * CHASTE_MATH::Exp(CHASTE_CONST(0.079000000000000001) * var_chaste_interface__membrane_potential__V_m - CHASTE_CONST(0.079000000000000001) * NV_Ith_S(mParameters, 15)))); // dimensionless + const double var_I_Na__bj = ((var_chaste_interface__membrane_potential__V_m >= -40) ? (CHASTE_CONST(0.59999999999999998) * CHASTE_MATH::Exp(CHASTE_CONST(0.057000000000000002) * var_chaste_interface__membrane_potential__V_m - CHASTE_CONST(0.057000000000000002) * NV_Ith_S(mParameters, 15)) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(3.2000000000000002) + CHASTE_CONST(0.10000000000000001) * NV_Ith_S(mParameters, 15) - CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane_potential__V_m))) : (CHASTE_CONST(0.024240000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.01052) * NV_Ith_S(mParameters, 15) - CHASTE_CONST(0.01052) * var_chaste_interface__membrane_potential__V_m) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(5.5312920000000005) + CHASTE_CONST(0.13780000000000001) * NV_Ith_S(mParameters, 15) - CHASTE_CONST(0.13780000000000001) * var_chaste_interface__membrane_potential__V_m)))); // dimensionless + const double var_I_Na__hss = CHASTE_CONST(0.01) * NV_Ith_S(mParameters, 14) + (1 - CHASTE_CONST(0.01) * NV_Ith_S(mParameters, 14)) / CHASTE_MATH::Pow((1 + CHASTE_MATH::Exp(CHASTE_CONST(9.6298788694481825) + CHASTE_CONST(0.13458950201884254) * var_chaste_interface__membrane_potential__V_m - CHASTE_CONST(0.13458950201884254) * NV_Ith_S(mParameters, 15))), 2); // dimensionless + const double var_I_Na__jss = CHASTE_CONST(0.01) * NV_Ith_S(mParameters, 14) + (1 - CHASTE_CONST(0.01) * NV_Ith_S(mParameters, 14)) / CHASTE_MATH::Pow((1 + CHASTE_MATH::Exp(CHASTE_CONST(9.6298788694481825) + CHASTE_CONST(0.13458950201884254) * var_chaste_interface__membrane_potential__V_m - CHASTE_CONST(0.13458950201884254) * NV_Ith_S(mParameters, 15))), 2); // dimensionless + const double var_I_Na__mss = 1 / CHASTE_MATH::Pow((1 + CHASTE_MATH::Exp(-CHASTE_CONST(6.2967884828349945) - CHASTE_CONST(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 var_I_Na__taum = CHASTE_CONST(0.12920000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(8.682389366752302) * CHASTE_MATH::Pow((1 + CHASTE_CONST(0.021838829438742085) * var_chaste_interface__membrane_potential__V_m), 2)) + CHASTE_CONST(0.064869999999999997) * CHASTE_MATH::Exp(-CHASTE_CONST(0.0089012876052174655) * CHASTE_MATH::Pow((-1 + CHASTE_CONST(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 var_I_to__tauxtof = CHASTE_CONST(0.5) + CHASTE_CONST(8.5) * CHASTE_MATH::Exp(-CHASTE_CONST(0.81000000000000005) * CHASTE_MATH::Pow((1 + CHASTE_CONST(0.022222222222222223) * var_chaste_interface__membrane_potential__V_m), 2)); // msec + const double var_I_to__tauxtos = CHASTE_CONST(0.5) + 9 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(0.20000000000000001) + CHASTE_CONST(0.066666666666666666) * var_chaste_interface__membrane_potential__V_m)); // msec + const double var_I_to__tauytof = 7 + 85 * CHASTE_MATH::Exp(-CHASTE_CONST(7.2727272727272725) * CHASTE_MATH::Pow((1 + CHASTE_CONST(0.025000000000000001) * var_chaste_interface__membrane_potential__V_m), 2)); // msec + const double var_I_to__tauytos = 30 + 800 / (1 + CHASTE_MATH::Exp(6 + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane_potential__V_m)); // msec + const double var_I_to__xtoss = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(1.4615384615384615) - CHASTE_CONST(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 var_I_to__ytoss = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(3.8999999999999999) + CHASTE_CONST(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__Bmax_CaM = CHASTE_CONST(0.024); // mM + const double var_parameters__Bmax_Naj = CHASTE_CONST(7.5609999999999999); // mM + const double var_parameters__Bmax_Nasl = CHASTE_CONST(1.6499999999999999); // mM + const double var_parameters__Bmax_SR = CHASTE_CONST(0.017100000000000001); // mM + const double var_parameters__Bmax_TnChigh = CHASTE_CONST(0.14000000000000001); // mM + const double var_parameters__Bmax_TnClow = CHASTE_CONST(0.070000000000000007); // mM + const double var_parameters__Bmax_myosin = CHASTE_CONST(0.14000000000000001); // mM + const double var_parameters__Fjunc = CHASTE_CONST(0.11); // dimensionless + const double var_parameters__Fjunc_CaL = CHASTE_CONST(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__GCaB = CHASTE_CONST(0.00055130000000000001); // mS_per_uF + const double var_parameters__GNaB = CHASTE_CONST(0.00059699999999999998); // mS_per_uF + const double var_parameters__IbarSLCaP = CHASTE_CONST(0.067299999999999999); // uA_per_uF + const double var_parameters__J_ca_juncsl = CHASTE_CONST(8.2413000000000004e-13); // liters_per_msec + const double var_parameters__J_ca_slmyo = CHASTE_CONST(3.2742999999999999e-12); // liters_per_msec + const double var_parameters__J_na_juncsl = CHASTE_CONST(1.8312999999999999e-14); // liters_per_msec + const double var_parameters__J_na_slmyo = CHASTE_CONST(1.6385999999999999e-12); // liters_per_msec + const double var_parameters__Kdact = CHASTE_CONST(0.00014999999999999999); // mM + const double var_I_NCX__Ka_junc = 1 / (1 + CHASTE_MATH::Pow(var_parameters__Kdact, 2) / CHASTE_MATH::Pow(var_chaste_interface__Ca_Concentrations__Ca_j, 2)); // dimensionless + const double var_I_NCX__Ka_sl = 1 / (1 + CHASTE_MATH::Pow(var_parameters__Kdact, 2) / CHASTE_MATH::Pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 2)); // dimensionless + const double var_parameters__KmCai = CHASTE_CONST(0.0035899999999999999); // mM + const double var_parameters__KmCao = CHASTE_CONST(1.3); // mM + const double var_parameters__KmKo = CHASTE_CONST(1.5); // mM + const double var_parameters__KmNai = CHASTE_CONST(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__KmNao = CHASTE_CONST(87.5); // mM + const double var_parameters__KmPCa = CHASTE_CONST(0.00050000000000000001); // mM + const double var_parameters__Kmf = CHASTE_CONST(0.00024600000000000002); // mM + const double var_parameters__Kmr = CHASTE_CONST(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_I_NCX__s3_junc = CHASTE_MATH::Pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * NV_Ith_S(mParameters, 5) + CHASTE_MATH::Pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * var_parameters__KmCao + CHASTE_MATH::Pow(NV_Ith_S(mParameters, 8), 3) * var_chaste_interface__Ca_Concentrations__Ca_j + CHASTE_MATH::Pow(var_parameters__KmNao, 3) * (1 + var_chaste_interface__Ca_Concentrations__Ca_j / var_parameters__KmCai) * var_chaste_interface__Ca_Concentrations__Ca_j + CHASTE_MATH::Pow(NV_Ith_S(mParameters, 8), 3) * (1 + CHASTE_MATH::Pow(var_chaste_interface__Na_Concentrations__Na_j, 3) / CHASTE_MATH::Pow(var_parameters__KmNai, 3)) * var_parameters__KmCai; // mM4 + const double var_I_NCX__s3_sl = CHASTE_MATH::Pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * NV_Ith_S(mParameters, 5) + CHASTE_MATH::Pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * var_parameters__KmCao + CHASTE_MATH::Pow(NV_Ith_S(mParameters, 8), 3) * var_chaste_interface__Ca_Concentrations__Ca_sl + CHASTE_MATH::Pow(var_parameters__KmNao, 3) * (1 + var_chaste_interface__Ca_Concentrations__Ca_sl / var_parameters__KmCai) * var_chaste_interface__Ca_Concentrations__Ca_sl + CHASTE_MATH::Pow(NV_Ith_S(mParameters, 8), 3) * (1 + CHASTE_MATH::Pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) / CHASTE_MATH::Pow(var_parameters__KmNai, 3)) * var_parameters__KmCai; // mM4 + const double var_I_NaK__sigma = -CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * CHASTE_MATH::Exp(CHASTE_CONST(0.01485884101040119) * NV_Ith_S(mParameters, 8)); // dimensionless + const double var_parameters__Q10CaL = CHASTE_CONST(1.8); // dimensionless + const double var_parameters__Q10NCX = CHASTE_CONST(1.5700000000000001); // dimensionless + const double var_parameters__Q10SLCaP = CHASTE_CONST(2.3500000000000001); // dimensionless + const double var_parameters__Q10SRCaP = CHASTE_CONST(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_I_NaK__fnak = 1 / (1 + CHASTE_CONST(0.1245) * CHASTE_MATH::Exp(-CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT) + CHASTE_CONST(0.036499999999999998) * var_I_NaK__sigma * CHASTE_MATH::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 + CHASTE_MATH::Pow(var_parameters__KmNaip, 4) / CHASTE_MATH::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 + CHASTE_MATH::Pow(var_parameters__KmNaip, 4) / CHASTE_MATH::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 + CHASTE_CONST(0.10000000000000001) * NV_Ith_S(mParameters, 24); // dimensionless + const double var_I_PCa__I_pca_junc = CHASTE_MATH::Pow(var_chaste_interface__Ca_Concentrations__Ca_j, CHASTE_CONST(1.6000000000000001)) * CHASTE_MATH::Pow(var_parameters__Q10SLCaP, var_parameters__Qpow) * var_parameters__Fjunc * var_parameters__IbarSLCaP / (CHASTE_MATH::Pow(var_chaste_interface__Ca_Concentrations__Ca_j, CHASTE_CONST(1.6000000000000001)) + CHASTE_MATH::Pow(var_parameters__KmPCa, CHASTE_CONST(1.6000000000000001))); // uA_per_uF + const double var_I_PCa__I_pca_sl = CHASTE_MATH::Pow(var_chaste_interface__Ca_Concentrations__Ca_sl, CHASTE_CONST(1.6000000000000001)) * CHASTE_MATH::Pow(var_parameters__Q10SLCaP, var_parameters__Qpow) * var_parameters__Fsl * var_parameters__IbarSLCaP / (CHASTE_MATH::Pow(var_chaste_interface__Ca_Concentrations__Ca_sl, CHASTE_CONST(1.6000000000000001)) + CHASTE_MATH::Pow(var_parameters__KmPCa, CHASTE_CONST(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 var_parameters__cellRadius = CHASTE_CONST(10.25); // um + const double var_parameters__Vcell = CHASTE_CONST(1.0000000000000001e-15) * CHASTE_CONST(CHASTE_MATH::Pi) * CHASTE_MATH::Pow(var_parameters__cellRadius, 2) * var_parameters__cellLength; // liter + const double var_parameters__Vjunc = CHASTE_CONST(0.00053900000000000009) * var_parameters__Vcell; // liter + const double var_parameters__Vmyo = CHASTE_CONST(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_parameters__Bmax_SLhighj = CHASTE_CONST(0.000165) * var_parameters__Vmyo / var_parameters__Vjunc; // mM + const double var_parameters__Bmax_SLlowj = CHASTE_CONST(0.00046000000000000001) * var_parameters__Vmyo / var_parameters__Vjunc; // mM + const double var_parameters__Vsl = CHASTE_CONST(0.02) * var_parameters__Vcell; // liter + const double var_parameters__Bmax_SLhighsl = CHASTE_CONST(0.0134) * var_parameters__Vmyo / var_parameters__Vsl; // mM + const double var_parameters__Bmax_SLlowsl = CHASTE_CONST(0.037400000000000003) * var_parameters__Vmyo / var_parameters__Vsl; // mM + const double var_parameters__Vsr = CHASTE_CONST(0.035000000000000003) * var_parameters__Vcell; // liter + const double var_parameters__Bmax_Csqn = CHASTE_CONST(0.14000000000000001) * var_parameters__Vmyo / var_parameters__Vsr; // mM + const double var_parameters__ec50SR = CHASTE_CONST(0.45000000000000001); // mM + const double var_SR_Fluxes__kCaSR = -(-var_SR_Fluxes__MinSR + var_SR_Fluxes__MaxSR) / (1 + CHASTE_MATH::Pow((var_parameters__ec50SR / var_chaste_interface__SR_Ca_Concentrations__Ca_sr), CHASTE_CONST(2.5))) + var_SR_Fluxes__MaxSR; // dimensionless + const double var_parameters__eca_junc = CHASTE_CONST(0.5) * CHASTE_MATH::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_parameters__eca_sl = CHASTE_CONST(0.5) * CHASTE_MATH::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 = 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_junc = CHASTE_MATH::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 = CHASTE_MATH::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 = 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_parameters__ena_sl = CHASTE_MATH::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 = CHASTE_MATH::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_parameters__hillSRCaP = CHASTE_CONST(1.7869999999999999); // dimensionless + const double var_SR_Fluxes__J_serca = CHASTE_MATH::Pow(var_parameters__Q10SRCaP, var_parameters__Qpow) * (CHASTE_MATH::Pow((var_chaste_interface__Ca_Concentrations__Ca_i / var_parameters__Kmf), var_parameters__hillSRCaP) - CHASTE_MATH::Pow((var_chaste_interface__SR_Ca_Concentrations__Ca_sr / var_parameters__Kmr), var_parameters__hillSRCaP)) * NV_Ith_S(mParameters, 2) / (1 + CHASTE_MATH::Pow((var_chaste_interface__Ca_Concentrations__Ca_i / var_parameters__Kmf), var_parameters__hillSRCaP) + CHASTE_MATH::Pow((var_chaste_interface__SR_Ca_Concentrations__Ca_sr / var_parameters__Kmr), var_parameters__hillSRCaP)); // mM_per_msec + const double var_parameters__kiCa = CHASTE_CONST(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__kim = CHASTE_CONST(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_cam = CHASTE_CONST(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__koff_myoca = CHASTE_CONST(0.00046000000000000001); // per_msec + const double var_parameters__koff_myomg = CHASTE_CONST(5.7000000000000003e-5); // per_msec + const double var_parameters__koff_na = CHASTE_CONST(0.001); // per_msec + const double var_parameters__koff_slh = CHASTE_CONST(0.029999999999999999); // per_msec + const double var_parameters__koff_sll = CHASTE_CONST(1.3); // per_msec + const double var_parameters__koff_sr = CHASTE_CONST(0.059999999999999998); // per_msec + const double var_parameters__koff_tnchca = CHASTE_CONST(3.1999999999999999e-5); // per_msec + const double var_parameters__koff_tnchmg = CHASTE_CONST(0.0033300000000000001); // per_msec + const double var_parameters__koff_tncl = CHASTE_CONST(0.019599999999999999); // per_msec + const double var_parameters__kom = CHASTE_CONST(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 + CHASTE_MATH::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 + CHASTE_MATH::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 - CHASTE_MATH::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 var_parameters__kon_myoca = CHASTE_CONST(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 var_parameters__kon_myomg = CHASTE_CONST(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_parameters__kon_na = CHASTE_CONST(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 @@ -557,38 +559,38 @@ bool Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClamp::registered = Mo 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 var_parameters__kon_tnchca = CHASTE_CONST(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 var_parameters__kon_tnchmg = CHASTE_CONST(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_parameters__kon_tncl = CHASTE_CONST(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 * 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_parameters__ksat = CHASTE_CONST(0.32000000000000001); // dimensionless + const double var_parameters__nu = CHASTE_CONST(0.27000000000000002); // dimensionless + const double var_I_NCX__s1_junc = CHASTE_MATH::Pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * NV_Ith_S(mParameters, 5) * CHASTE_MATH::Exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * var_parameters__nu); // mM4 + const double var_I_NCX__s1_sl = CHASTE_MATH::Pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * NV_Ith_S(mParameters, 5) * CHASTE_MATH::Exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * var_parameters__nu); // mM4 + const double var_I_NCX__s2_junc = CHASTE_MATH::Pow(NV_Ith_S(mParameters, 8), 3) * var_chaste_interface__Ca_Concentrations__Ca_j * CHASTE_MATH::Exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT); // mM4 + const double var_I_NCX__I_ncx_junc = CHASTE_MATH::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 * CHASTE_MATH::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 = CHASTE_MATH::Pow(NV_Ith_S(mParameters, 8), 3) * var_chaste_interface__Ca_Concentrations__Ca_sl * CHASTE_MATH::Exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT); // mM4 + const double var_I_NCX__I_ncx_sl = CHASTE_MATH::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 * CHASTE_MATH::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 = CHASTE_CONST(0.00054000000000000001) * NV_Ith_S(mParameters, 11); // cm_per_sec + const double var_I_Ca__ibarca_j = 4 * (-CHASTE_CONST(0.34100000000000003) * NV_Ith_S(mParameters, 5) + CHASTE_CONST(0.34100000000000003) * var_chaste_interface__Ca_Concentrations__Ca_j * CHASTE_MATH::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 + CHASTE_MATH::Exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_Ca_junc = CHASTE_CONST(0.45000000000000001) * CHASTE_MATH::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 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 - CHASTE_CONST(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 * (-CHASTE_CONST(0.34100000000000003) * NV_Ith_S(mParameters, 5) + CHASTE_CONST(0.34100000000000003) * var_chaste_interface__Ca_Concentrations__Ca_sl * CHASTE_MATH::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 + CHASTE_MATH::Exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_Ca_sl = CHASTE_CONST(0.45000000000000001) * CHASTE_MATH::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 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 - CHASTE_CONST(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 = CHASTE_CONST(7.4999999999999993e-9); // cm_per_sec + const double var_I_Ca__ibarna_j = (-CHASTE_CONST(0.75) * NV_Ith_S(mParameters, 8) + CHASTE_CONST(0.75) * var_chaste_interface__Na_Concentrations__Na_j * CHASTE_MATH::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 + CHASTE_MATH::Exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_CaNa_junc = CHASTE_CONST(0.45000000000000001) * CHASTE_MATH::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 = (-CHASTE_CONST(0.75) * NV_Ith_S(mParameters, 8) + CHASTE_CONST(0.75) * var_chaste_interface__Na_Concentrations__Na_sl * CHASTE_MATH::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 + CHASTE_MATH::Exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_CaNa_sl = CHASTE_CONST(0.45000000000000001) * CHASTE_MATH::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 @@ -600,49 +602,49 @@ bool Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClamp::registered = Mo } 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_junc = CHASTE_CONST(0.0035000000000000001); // mS_per_uF + const double var_I_Ks__gks_sl = CHASTE_CONST(0.0035000000000000001); // mS_per_uF + const double var_I_Kp__kp_kp = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(7.4880000000000004) - CHASTE_CONST(0.16722408026755853) * var_chaste_interface__membrane_potential__V_m)); // dimensionless + const double var_I_Kr__rkr = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(3.0833333333333335) + CHASTE_CONST(0.041666666666666664) * var_chaste_interface__membrane_potential__V_m)); // dimensionless + const double var_membrane_potential__i_Stim_converted = CHASTE_STIM(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_membrane_potential__i_Stim = var_membrane_potential__i_Stim_converted / CHASTE_CAP(); // 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_parameters__GClB = CHASTE_CONST(0.0089999999999999993); // mS_per_uF + const double var_parameters__GClCa = CHASTE_CONST(0.0548125); // mS_per_uF + const double var_parameters__KdClCa = CHASTE_CONST(0.10000000000000001); // mM + const double var_I_Ki__g_K1 = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::Sqrt(NV_Ith_S(mParameters, 7)) * NV_Ith_S(mParameters, 17); // mS_per_uF + const double var_I_Kr__gkr = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::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 = log(NV_Ith_S(mParameters, 4) / NV_Ith_S(mParameters, 6)) / var_parameters__FoRT; // mV + const double var_parameters__ecl = CHASTE_MATH::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 = 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_parameters__ek = CHASTE_MATH::Log(NV_Ith_S(mParameters, 7) / var_chaste_interface__K_Concentration__K_i) / var_parameters__FoRT; // mV + const double var_I_Ki__aki = CHASTE_CONST(1.02) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__membrane_potential__V_m - CHASTE_CONST(0.23849999999999999) * var_parameters__ek)); // dimensionless + const double var_I_Ki__bki = (CHASTE_CONST(0.49124000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.43983232) + CHASTE_CONST(0.080320000000000003) * var_chaste_interface__membrane_potential__V_m - CHASTE_CONST(0.080320000000000003) * var_parameters__ek) + CHASTE_MATH::Exp(-CHASTE_CONST(36.698642499999998) + CHASTE_CONST(0.061749999999999999) * var_chaste_interface__membrane_potential__V_m - CHASTE_CONST(0.061749999999999999) * var_parameters__ek)) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.4444678999999998) + CHASTE_CONST(0.51429999999999998) * var_parameters__ek - CHASTE_CONST(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__GtoFast = ((var_parameters__epi == 1) ? (CHASTE_CONST(0.1144) * NV_Ith_S(mParameters, 16)) : (CHASTE_CONST(0.0014039999999999999) * NV_Ith_S(mParameters, 16))); // mS_per_uF + const double var_I_to__GtoSlow = ((var_parameters__epi == 1) ? (CHASTE_CONST(0.015599999999999999) * NV_Ith_S(mParameters, 20)) : (CHASTE_CONST(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_parameters__gkp = CHASTE_CONST(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_parameters__pK = CHASTE_CONST(1.35e-7); // cm_per_sec + const double var_I_Ca__ibark = (-CHASTE_CONST(0.75) * NV_Ith_S(mParameters, 7) + CHASTE_CONST(0.75) * var_chaste_interface__K_Concentration__K_i * CHASTE_MATH::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 + CHASTE_MATH::Exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_CaK = CHASTE_CONST(0.45000000000000001) * CHASTE_MATH::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 = 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_parameters__pNaK = CHASTE_CONST(0.018329999999999999); // dimensionless + const double var_I_Ks__eks = CHASTE_MATH::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 = CHASTE_MATH::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 @@ -650,7 +652,7 @@ bool Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClamp::registered = Mo 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 + var_chaste_interface__membrane_data_clamp_current = (-CHASTE_EXP_VOLT(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 } @@ -700,7 +702,7 @@ bool Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClamp::registered = Mo { // Inputs: // Time units: millisecond - double var_chaste_interface__membrane_potential__V_m = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + double var_chaste_interface__membrane_potential__V_m = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -750,15 +752,15 @@ bool Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClamp::registered = Mo // 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_I_Ks__gks_junc = CHASTE_CONST(0.0035000000000000001); // mS_per_uF + const double var_I_Ks__gks_sl = CHASTE_CONST(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_Ca__tauf = 1 / (CHASTE_CONST(0.02) + CHASTE_CONST(0.019699999999999999) * CHASTE_MATH::Exp(-CHASTE_CONST(0.23877882250000002) * CHASTE_MATH::Pow((1 + CHASTE_CONST(0.068965517241379309) * var_chaste_interface__membrane_potential__V_m), 2))); // msec + const double var_I_Kr__rkr = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(3.0833333333333335) + CHASTE_CONST(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) : (CHASTE_CONST(0.057000000000000002) * CHASTE_MATH::Exp(-CHASTE_CONST(11.764705882352942) + CHASTE_CONST(0.14705882352941177) * NV_Ith_S(mParameters, 15) - CHASTE_CONST(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) : ((CHASTE_CONST(37.780000000000001) + var_chaste_interface__membrane_potential__V_m) * (-25428 * CHASTE_MATH::Exp(CHASTE_CONST(0.24440000000000001) * var_chaste_interface__membrane_potential__V_m - CHASTE_CONST(0.24440000000000001) * NV_Ith_S(mParameters, 15)) - CHASTE_CONST(6.9480000000000002e-6) * CHASTE_MATH::Exp(CHASTE_CONST(0.043909999999999998) * NV_Ith_S(mParameters, 15) - CHASTE_CONST(0.043909999999999998) * var_chaste_interface__membrane_potential__V_m)) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(24.640530000000002) + CHASTE_CONST(0.311) * var_chaste_interface__membrane_potential__V_m - CHASTE_CONST(0.311) * NV_Ith_S(mParameters, 15))))); // dimensionless + const double var_I_Na__bh = ((var_chaste_interface__membrane_potential__V_m >= -40) ? (CHASTE_CONST(5.9230769230769234) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.96036036036036043) + CHASTE_CONST(0.0900900900900901) * NV_Ith_S(mParameters, 15) - CHASTE_CONST(0.0900900900900901) * var_chaste_interface__membrane_potential__V_m))) : (310000 * CHASTE_MATH::Exp(CHASTE_CONST(0.34849999999999998) * var_chaste_interface__membrane_potential__V_m - CHASTE_CONST(0.34849999999999998) * NV_Ith_S(mParameters, 15)) + CHASTE_CONST(2.7000000000000002) * CHASTE_MATH::Exp(CHASTE_CONST(0.079000000000000001) * var_chaste_interface__membrane_potential__V_m - CHASTE_CONST(0.079000000000000001) * NV_Ith_S(mParameters, 15)))); // dimensionless + const double var_I_Na__bj = ((var_chaste_interface__membrane_potential__V_m >= -40) ? (CHASTE_CONST(0.59999999999999998) * CHASTE_MATH::Exp(CHASTE_CONST(0.057000000000000002) * var_chaste_interface__membrane_potential__V_m - CHASTE_CONST(0.057000000000000002) * NV_Ith_S(mParameters, 15)) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(3.2000000000000002) + CHASTE_CONST(0.10000000000000001) * NV_Ith_S(mParameters, 15) - CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane_potential__V_m))) : (CHASTE_CONST(0.024240000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.01052) * NV_Ith_S(mParameters, 15) - CHASTE_CONST(0.01052) * var_chaste_interface__membrane_potential__V_m) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(5.5312920000000005) + CHASTE_CONST(0.13780000000000001) * NV_Ith_S(mParameters, 15) - CHASTE_CONST(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 @@ -766,96 +768,96 @@ bool Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClamp::registered = Mo 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 + var_chaste_interface__membrane_data_clamp_current = (-CHASTE_EXP_VOLT(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_membrane_potential__i_Stim_converted = CHASTE_STIM(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__Fjunc = CHASTE_CONST(0.11); // dimensionless + const double var_parameters__Fjunc_CaL = CHASTE_CONST(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__IbarSLCaP = CHASTE_CONST(0.067299999999999999); // uA_per_uF + const double var_parameters__Kdact = CHASTE_CONST(0.00014999999999999999); // mM + const double var_I_NCX__Ka_junc = 1 / (1 + CHASTE_MATH::Pow(var_parameters__Kdact, 2) / CHASTE_MATH::Pow(var_chaste_interface__Ca_Concentrations__Ca_j, 2)); // dimensionless + const double var_I_NCX__Ka_sl = 1 / (1 + CHASTE_MATH::Pow(var_parameters__Kdact, 2) / CHASTE_MATH::Pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 2)); // dimensionless + const double var_parameters__KmCai = CHASTE_CONST(0.0035899999999999999); // mM + const double var_parameters__KmCao = CHASTE_CONST(1.3); // mM + const double var_parameters__KmKo = CHASTE_CONST(1.5); // mM + const double var_parameters__KmNai = CHASTE_CONST(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__KmNao = CHASTE_CONST(87.5); // mM + const double var_parameters__KmPCa = CHASTE_CONST(0.00050000000000000001); // mM + const double var_parameters__Kmf = CHASTE_CONST(0.00024600000000000002); // mM + const double var_parameters__Kmr = CHASTE_CONST(1.7); // mM + const double var_I_Ki__g_K1 = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::Sqrt(NV_Ith_S(mParameters, 7)) * NV_Ith_S(mParameters, 17); // mS_per_uF + const double var_I_Kr__gkr = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::Sqrt(NV_Ith_S(mParameters, 7)) * NV_Ith_S(mParameters, 18); // mS_per_uF + const double var_I_NCX__s3_junc = CHASTE_MATH::Pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * NV_Ith_S(mParameters, 5) + CHASTE_MATH::Pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * var_parameters__KmCao + CHASTE_MATH::Pow(NV_Ith_S(mParameters, 8), 3) * var_chaste_interface__Ca_Concentrations__Ca_j + CHASTE_MATH::Pow(var_parameters__KmNao, 3) * (1 + var_chaste_interface__Ca_Concentrations__Ca_j / var_parameters__KmCai) * var_chaste_interface__Ca_Concentrations__Ca_j + CHASTE_MATH::Pow(NV_Ith_S(mParameters, 8), 3) * (1 + CHASTE_MATH::Pow(var_chaste_interface__Na_Concentrations__Na_j, 3) / CHASTE_MATH::Pow(var_parameters__KmNai, 3)) * var_parameters__KmCai; // mM4 + const double var_I_NCX__s3_sl = CHASTE_MATH::Pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * NV_Ith_S(mParameters, 5) + CHASTE_MATH::Pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * var_parameters__KmCao + CHASTE_MATH::Pow(NV_Ith_S(mParameters, 8), 3) * var_chaste_interface__Ca_Concentrations__Ca_sl + CHASTE_MATH::Pow(var_parameters__KmNao, 3) * (1 + var_chaste_interface__Ca_Concentrations__Ca_sl / var_parameters__KmCai) * var_chaste_interface__Ca_Concentrations__Ca_sl + CHASTE_MATH::Pow(NV_Ith_S(mParameters, 8), 3) * (1 + CHASTE_MATH::Pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) / CHASTE_MATH::Pow(var_parameters__KmNai, 3)) * var_parameters__KmCai; // mM4 + const double var_I_NaK__sigma = -CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * CHASTE_MATH::Exp(CHASTE_CONST(0.01485884101040119) * NV_Ith_S(mParameters, 8)); // dimensionless + const double var_parameters__Q10CaL = CHASTE_CONST(1.8); // dimensionless + const double var_parameters__Q10NCX = CHASTE_CONST(1.5700000000000001); // dimensionless + const double var_parameters__Q10SLCaP = CHASTE_CONST(2.3500000000000001); // dimensionless + const double var_parameters__Q10SRCaP = CHASTE_CONST(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__fnak = 1 / (1 + CHASTE_CONST(0.1245) * CHASTE_MATH::Exp(-CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT) + CHASTE_CONST(0.036499999999999998) * var_I_NaK__sigma * CHASTE_MATH::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 + CHASTE_MATH::Pow(var_parameters__KmNaip, 4) / CHASTE_MATH::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 + CHASTE_MATH::Pow(var_parameters__KmNaip, 4) / CHASTE_MATH::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_NaK__I_nak_converted = CHASTE_CAP() * var_I_NaK__I_nak; // uA_per_cm2 + const double var_parameters__Qpow = -31 + CHASTE_CONST(0.10000000000000001) * NV_Ith_S(mParameters, 24); // dimensionless + const double var_I_PCa__I_pca_junc = CHASTE_MATH::Pow(var_chaste_interface__Ca_Concentrations__Ca_j, CHASTE_CONST(1.6000000000000001)) * CHASTE_MATH::Pow(var_parameters__Q10SLCaP, var_parameters__Qpow) * var_parameters__Fjunc * var_parameters__IbarSLCaP / (CHASTE_MATH::Pow(var_chaste_interface__Ca_Concentrations__Ca_j, CHASTE_CONST(1.6000000000000001)) + CHASTE_MATH::Pow(var_parameters__KmPCa, CHASTE_CONST(1.6000000000000001))); // uA_per_uF + const double var_I_PCa__I_pca_sl = CHASTE_MATH::Pow(var_chaste_interface__Ca_Concentrations__Ca_sl, CHASTE_CONST(1.6000000000000001)) * CHASTE_MATH::Pow(var_parameters__Q10SLCaP, var_parameters__Qpow) * var_parameters__Fsl * var_parameters__IbarSLCaP / (CHASTE_MATH::Pow(var_chaste_interface__Ca_Concentrations__Ca_sl, CHASTE_CONST(1.6000000000000001)) + CHASTE_MATH::Pow(var_parameters__KmPCa, CHASTE_CONST(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(NV_Ith_S(mParameters, 4) / NV_Ith_S(mParameters, 6)) / var_parameters__FoRT; // mV - const double var_parameters__ek = 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_PCa__I_pca_converted = CHASTE_CAP() * var_I_PCa__I_pca; // uA_per_cm2 + const double var_parameters__ecl = CHASTE_MATH::Log(NV_Ith_S(mParameters, 4) / NV_Ith_S(mParameters, 6)) / var_parameters__FoRT; // mV + const double var_parameters__ek = CHASTE_MATH::Log(NV_Ith_S(mParameters, 7) / var_chaste_interface__K_Concentration__K_i) / var_parameters__FoRT; // mV + const double var_I_Ki__aki = CHASTE_CONST(1.02) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__membrane_potential__V_m - CHASTE_CONST(0.23849999999999999) * var_parameters__ek)); // dimensionless + const double var_I_Ki__bki = (CHASTE_CONST(0.49124000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.43983232) + CHASTE_CONST(0.080320000000000003) * var_chaste_interface__membrane_potential__V_m - CHASTE_CONST(0.080320000000000003) * var_parameters__ek) + CHASTE_MATH::Exp(-CHASTE_CONST(36.698642499999998) + CHASTE_CONST(0.061749999999999999) * var_chaste_interface__membrane_potential__V_m - CHASTE_CONST(0.061749999999999999) * var_parameters__ek)) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.4444678999999998) + CHASTE_CONST(0.51429999999999998) * var_parameters__ek - CHASTE_CONST(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_Ki__I_ki_converted = CHASTE_CAP() * 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(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 = 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_Kr__I_kr_converted = CHASTE_CAP() * var_I_Kr__I_kr; // uA_per_cm2 + const double var_parameters__ena_junc = CHASTE_MATH::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 = CHASTE_MATH::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 = CHASTE_MATH::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 = CHASTE_MATH::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_I_Na__I_Na_converted = CHASTE_CAP() * 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__GtoFast = ((var_parameters__epi == 1) ? (CHASTE_CONST(0.1144) * NV_Ith_S(mParameters, 16)) : (CHASTE_CONST(0.0014039999999999999) * NV_Ith_S(mParameters, 16))); // mS_per_uF + const double var_I_to__GtoSlow = ((var_parameters__epi == 1) ? (CHASTE_CONST(0.015599999999999999) * NV_Ith_S(mParameters, 20)) : (CHASTE_CONST(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_tof_converted = CHASTE_CAP() * 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_I_to__I_to_converted = CHASTE_CAP() * var_I_to__I_to; // uA_per_cm2 + const double var_I_to__I_tos_converted = CHASTE_CAP() * var_I_to__I_tos; // uA_per_cm2 + const double var_parameters__hillSRCaP = CHASTE_CONST(1.7869999999999999); // dimensionless + const double var_SR_Fluxes__J_serca = CHASTE_MATH::Pow(var_parameters__Q10SRCaP, var_parameters__Qpow) * (CHASTE_MATH::Pow((var_chaste_interface__Ca_Concentrations__Ca_i / var_parameters__Kmf), var_parameters__hillSRCaP) - CHASTE_MATH::Pow((var_chaste_interface__SR_Ca_Concentrations__Ca_sr / var_parameters__Kmr), var_parameters__hillSRCaP)) * NV_Ith_S(mParameters, 2) / (1 + CHASTE_MATH::Pow((var_chaste_interface__Ca_Concentrations__Ca_i / var_parameters__Kmf), var_parameters__hillSRCaP) + CHASTE_MATH::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 * 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_parameters__ksat = CHASTE_CONST(0.32000000000000001); // dimensionless + const double var_parameters__nu = CHASTE_CONST(0.27000000000000002); // dimensionless + const double var_I_NCX__s1_junc = CHASTE_MATH::Pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * NV_Ith_S(mParameters, 5) * CHASTE_MATH::Exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * var_parameters__nu); // mM4 + const double var_I_NCX__s1_sl = CHASTE_MATH::Pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * NV_Ith_S(mParameters, 5) * CHASTE_MATH::Exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * var_parameters__nu); // mM4 + const double var_I_NCX__s2_junc = CHASTE_MATH::Pow(NV_Ith_S(mParameters, 8), 3) * var_chaste_interface__Ca_Concentrations__Ca_j * CHASTE_MATH::Exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT); // mM4 + const double var_I_NCX__I_ncx_junc = CHASTE_MATH::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 * CHASTE_MATH::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 = CHASTE_MATH::Pow(NV_Ith_S(mParameters, 8), 3) * var_chaste_interface__Ca_Concentrations__Ca_sl * CHASTE_MATH::Exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT); // mM4 + const double var_I_NCX__I_ncx_sl = CHASTE_MATH::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 * CHASTE_MATH::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_NCX__I_ncx_converted = CHASTE_CAP() * var_I_NCX__I_ncx; // uA_per_cm2 + const double var_parameters__pCa = CHASTE_CONST(0.00054000000000000001) * NV_Ith_S(mParameters, 11); // cm_per_sec + const double var_I_Ca__ibarca_j = 4 * (-CHASTE_CONST(0.34100000000000003) * NV_Ith_S(mParameters, 5) + CHASTE_CONST(0.34100000000000003) * var_chaste_interface__Ca_Concentrations__Ca_j * CHASTE_MATH::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 + CHASTE_MATH::Exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_Ca_junc = CHASTE_CONST(0.45000000000000001) * CHASTE_MATH::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 * (-CHASTE_CONST(0.34100000000000003) * NV_Ith_S(mParameters, 5) + CHASTE_CONST(0.34100000000000003) * var_chaste_interface__Ca_Concentrations__Ca_sl * CHASTE_MATH::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 + CHASTE_MATH::Exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_Ca_sl = CHASTE_CONST(0.45000000000000001) * CHASTE_MATH::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((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 + const double var_I_Ca__I_Ca_converted = CHASTE_CAP() * var_I_Ca__I_Ca; // uA_per_cm2 + const double var_parameters__pNaK = CHASTE_CONST(0.018329999999999999); // dimensionless + const double var_I_Ks__eks = CHASTE_MATH::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 = CHASTE_MATH::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 = CHASTE_CAP() * var_I_Ks__I_ks; // uA_per_cm2 #if CHASTE_SUNDIALS_VERSION >= 60000 N_Vector dqs = N_VNew_Serial(27, CvodeContextManager::Instance()->GetSundialsContext()); @@ -1309,4 +1311,5 @@ void OdeSystemInformation #include "AbstractStimulusFunction.hpp" +#if USING_DEVICE_COMPILER +#include "StimulusEvaluatorCuda.hpp" +#endif #include "AbstractCvodeCellWithDataClamp.hpp" +#include "HostDeviceMacros.hpp" class Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClamp : public AbstractCvodeCellWithDataClamp { @@ -40,6 +44,10 @@ class Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClamp : public Abstra const bool is_concentration[39] = {false, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true, true, true, true, true, true}; const bool is_probability[39] = {false, false, true, true, true, false, false, false, false, false, false, true, true, false, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false}; public: + static constexpr unsigned TOTAL_SIZE = 39u; + static constexpr unsigned NNZ = 0u; + static inline const int sparse_rowptr[] = { }; + static inline const int sparse_colind[] = { }; boost::shared_ptr UseCellMLDefaultStimulus(); double GetIntracellularCalciumConcentration(); @@ -48,7 +56,19 @@ const bool is_probability[39] = {false, false, true, true, true, false, false, f void VerifyStateVariables(); double GetIIonic(const std::vector* pStateVariables=NULL); void EvaluateYDerivatives(double var_chaste_interface__environment__time, const N_Vector rY, N_Vector rDY); + N_Vector ComputeDerivedQuantities(double var_chaste_interface__environment__time, const N_Vector & rY); +#if USING_DEVICE_COMPILER + template + DEVICE + static void EvaluateYDerivativesDevice(ValueType var_chaste_interface__environment__time, const ValueType* rY, ValueType* rDY, const ValueType mSetVoltageDerivativeToZero, const ValueType mFixedVoltage, const ValueType* mParameters, const ValueType capacitance, const DeviceStimulusFunctor stim); + template + DEVICE + static void EvaluateAnalyticJacobianDevice(ValueType var_chaste_interface__environment__time, const ValueType *rY, ValueType *rDY, ValueType *rJacobian, ValueType *rTmp1, ValueType *rTmp2, ValueType *rTmp3, const unsigned nvars, const ValueType mSetVoltageDerivativeToZero, const ValueType mFixedVoltage, const ValueType *mParameters, const ValueType capacitance, const DeviceStimulusFunctor stim); + template + DEVICE + static void EvaluateSparseAnalyticJacobianDevice(ValueType var_chaste_interface__environment__time, const ValueType *rY, ValueType *rDY, ValueType *rJacobian, ValueType *rTmp1, ValueType *rTmp2, ValueType *rTmp3, const unsigned nvars, const ValueType mSetVoltageDerivativeToZero, const ValueType mFixedVoltage, const ValueType *mParameters, const ValueType capacitance, const DeviceStimulusFunctor stim); +#endif }; // Needs to be included last @@ -85,4 +105,10 @@ namespace boost } #endif // CELLGRANDI_PASQUALINI_BERS_2010_SSFROMCELLMLCVODEDATACLAMP_HPP_ + + + +#if USING_DEVICE_COMPILER + #include "grandi_pasqualini_bers_2010_ssCvodeDataClampKernels.hpp" +#endif #endif // CHASTE_CVODE \ No newline at end of file diff --git a/chaste_codegen/data/tests/chaste_reference_models/CVODE_DATA_CLAMP/hodgkin_huxley_squid_axon_model_1952_modified.cpp b/chaste_codegen/data/tests/chaste_reference_models/CVODE_DATA_CLAMP/hodgkin_huxley_squid_axon_model_1952_modified.cpp index 518f18b55..158299e58 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/CVODE_DATA_CLAMP/hodgkin_huxley_squid_axon_model_1952_modified.cpp +++ b/chaste_codegen/data/tests/chaste_reference_models/CVODE_DATA_CLAMP/hodgkin_huxley_squid_axon_model_1952_modified.cpp @@ -22,6 +22,8 @@ #include "HeartConfig.hpp" #include "IsNan.hpp" #include "MathsCustomFunctions.hpp" +#include "ChasteMathDeviceNamespaces.hpp" +#include "ChasteCpuMacros.hpp" #if CHASTE_SUNDIALS_VERSION >= 60000 #include "CvodeContextManager.hpp" @@ -35,7 +37,7 @@ { // 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_duration = CHASTE_CONST(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( @@ -66,7 +68,7 @@ NV_Ith_S(this->mParameters, 0) = 1; // (var_membrane__Cm) [microF_per_cm2] NV_Ith_S(this->mParameters, 1) = 0; // (var_membrane_data_clamp_current_conductance) [dimensionless] NV_Ith_S(this->mParameters, 2) = 120; // (var_sodium_channel__g_Na) [milliS_per_cm2] - NV_Ith_S(this->mParameters, 3) = 0.29999999999999999; // (var_leakage_current__g_L) [milliS_per_cm2] + NV_Ith_S(this->mParameters, 3) = CHASTE_CONST(0.29999999999999999); // (var_leakage_current__g_L) [milliS_per_cm2] NV_Ith_S(this->mParameters, 4) = 36; // (var_potassium_channel__g_K) [milliS_per_cm2] } @@ -123,7 +125,7 @@ made_new_cvode_vector = true; rY = MakeNVector(*pStateVariables); } - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -133,12 +135,12 @@ // 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__E_L = CHASTE_CONST(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, 3); // 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, 4); // microA_per_cm2 + const double var_potassium_channel__i_K = CHASTE_MATH::Pow(var_chaste_interface__potassium_channel_n_gate__n, 4) * (-var_potassium_channel__E_K + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 4); // 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, 2) * var_chaste_interface__sodium_channel_h_gate__h; // microA_per_cm2 + const double var_sodium_channel__i_Na = CHASTE_MATH::Pow(var_chaste_interface__sodium_channel_m_gate__m, 3) * (-var_sodium_channel__E_Na + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 2) * 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; @@ -154,7 +156,7 @@ { // Inputs: // Time units: millisecond - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -165,22 +167,22 @@ // 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__B = -CHASTE_CONST(0.10000000000000001); // per_millivolt + const double var_potassium_channel_n_gate__A = -CHASTE_CONST(0.01) / var_potassium_channel_n_gate__B; // per_millisecond + const double var_potassium_channel_n_gate__beta_n = CHASTE_CONST(0.125) * CHASTE_MATH::Exp(CHASTE_CONST(0.9375) + CHASTE_CONST(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_potassium_channel_n_gate__alpha_n = (((var_potassium_channel_n_gate__U >= -CHASTE_CONST(9.9999999999999995e-8)) && (var_potassium_channel_n_gate__U <= CHASTE_CONST(9.9999999999999995e-8))) ? ((1 - CHASTE_CONST(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 + CHASTE_MATH::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 var_sodium_channel_h_gate__alpha_h = CHASTE_CONST(0.070000000000000007) * CHASTE_MATH::Exp(-CHASTE_CONST(3.75) - CHASTE_CONST(0.050000000000000003) * var_chaste_interface__membrane__V); // per_millisecond + const double var_sodium_channel_h_gate__beta_h = 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(4.5) - CHASTE_CONST(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__B = -CHASTE_CONST(0.10000000000000001); // per_millivolt + const double var_sodium_channel_m_gate__A = -CHASTE_CONST(0.10000000000000001) / var_sodium_channel_m_gate__B; // per_millisecond + const double var_sodium_channel_m_gate__beta_m = 4 * CHASTE_MATH::Exp(-CHASTE_CONST(4.166666666666667) - CHASTE_CONST(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 var_sodium_channel_m_gate__alpha_m = (((var_sodium_channel_m_gate__U >= -CHASTE_CONST(9.9999999999999995e-8)) && (var_sodium_channel_m_gate__U <= CHASTE_CONST(9.9999999999999995e-8))) ? ((1 - CHASTE_CONST(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 + CHASTE_MATH::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) @@ -190,19 +192,19 @@ 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__E_L = CHASTE_CONST(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, 3); // microA_per_cm2 - const double var_membrane__i_Stim = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // microA_per_cm2 + const double var_membrane__i_Stim = CHASTE_STIM(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, 4); // microA_per_cm2 + const double var_potassium_channel__i_K = CHASTE_MATH::Pow(var_chaste_interface__potassium_channel_n_gate__n, 4) * (-var_potassium_channel__E_K + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 4); // 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, 2) * var_chaste_interface__sodium_channel_h_gate__h; // microA_per_cm2 + const double var_sodium_channel__i_Na = CHASTE_MATH::Pow(var_chaste_interface__sodium_channel_m_gate__m, 3) * (-var_sodium_channel__E_Na + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 2) * var_chaste_interface__sodium_channel_h_gate__h; // microA_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__membrane__V) * NV_Ith_S(mParameters, 1); // uA_per_cm2 + var_chaste_interface__membrane_data_clamp_current = (-CHASTE_EXP_VOLT(var_chaste_interface__environment__time) + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 1); // uA_per_cm2 } d_dt_chaste_interface_var_membrane__V = (-var_leakage_current__i_L - var_membrane__i_Stim - var_chaste_interface__membrane_data_clamp_current - var_potassium_channel__i_K - var_sodium_channel__i_Na) / NV_Ith_S(mParameters, 0); // millivolt / millisecond } @@ -217,7 +219,7 @@ { // Inputs: // Time units: millisecond - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -228,20 +230,20 @@ // 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__E_L = CHASTE_CONST(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, 3); // microA_per_cm2 - const double var_membrane__i_Stim = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // microA_per_cm2 + const double var_membrane__i_Stim = CHASTE_STIM(var_chaste_interface__environment__time); // microA_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__membrane__V) * NV_Ith_S(mParameters, 1); // uA_per_cm2 + var_chaste_interface__membrane_data_clamp_current = (-CHASTE_EXP_VOLT(var_chaste_interface__environment__time) + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 1); // uA_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, 4); // microA_per_cm2 + const double var_potassium_channel__i_K = CHASTE_MATH::Pow(var_chaste_interface__potassium_channel_n_gate__n, 4) * (-var_potassium_channel__E_K + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 4); // 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, 2) * var_chaste_interface__sodium_channel_h_gate__h; // microA_per_cm2 + const double var_sodium_channel__i_Na = CHASTE_MATH::Pow(var_chaste_interface__sodium_channel_m_gate__m, 3) * (-var_sodium_channel__E_Na + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 2) * var_chaste_interface__sodium_channel_h_gate__h; // microA_per_cm2 #if CHASTE_SUNDIALS_VERSION >= 60000 N_Vector dqs = N_VNew_Serial(6, CvodeContextManager::Instance()->GetSundialsContext()); @@ -335,4 +337,5 @@ void OdeSystemInformation #include "AbstractStimulusFunction.hpp" +#if USING_DEVICE_COMPILER +#include "StimulusEvaluatorCuda.hpp" +#endif #include "AbstractCvodeCellWithDataClamp.hpp" +#include "HostDeviceMacros.hpp" class Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLCvodeDataClamp : public AbstractCvodeCellWithDataClamp { @@ -38,6 +42,10 @@ class Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLCvodeDataClamp const bool is_concentration[4] = {false, false, false, false}; const bool is_probability[4] = {false, false, false, false}; public: + static constexpr unsigned TOTAL_SIZE = 4u; + static constexpr unsigned NNZ = 0u; + static inline const int sparse_rowptr[] = { }; + static inline const int sparse_colind[] = { }; boost::shared_ptr UseCellMLDefaultStimulus(); Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLCvodeDataClamp(boost::shared_ptr pOdeSolver /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus); @@ -45,7 +53,19 @@ const bool is_probability[4] = {false, false, false, false}; void VerifyStateVariables(); double GetIIonic(const std::vector* pStateVariables=NULL); void EvaluateYDerivatives(double var_chaste_interface__environment__time, const N_Vector rY, N_Vector rDY); + N_Vector ComputeDerivedQuantities(double var_chaste_interface__environment__time, const N_Vector & rY); +#if USING_DEVICE_COMPILER + template + DEVICE + static void EvaluateYDerivativesDevice(ValueType var_chaste_interface__environment__time, const ValueType* rY, ValueType* rDY, const ValueType mSetVoltageDerivativeToZero, const ValueType mFixedVoltage, const ValueType* mParameters, const ValueType capacitance, const DeviceStimulusFunctor stim); + template + DEVICE + static void EvaluateAnalyticJacobianDevice(ValueType var_chaste_interface__environment__time, const ValueType *rY, ValueType *rDY, ValueType *rJacobian, ValueType *rTmp1, ValueType *rTmp2, ValueType *rTmp3, const unsigned nvars, const ValueType mSetVoltageDerivativeToZero, const ValueType mFixedVoltage, const ValueType *mParameters, const ValueType capacitance, const DeviceStimulusFunctor stim); + template + DEVICE + static void EvaluateSparseAnalyticJacobianDevice(ValueType var_chaste_interface__environment__time, const ValueType *rY, ValueType *rDY, ValueType *rJacobian, ValueType *rTmp1, ValueType *rTmp2, ValueType *rTmp3, const unsigned nvars, const ValueType mSetVoltageDerivativeToZero, const ValueType mFixedVoltage, const ValueType *mParameters, const ValueType capacitance, const DeviceStimulusFunctor stim); +#endif }; // Needs to be included last @@ -82,4 +102,10 @@ namespace boost } #endif // CELLHODGKIN_HUXLEY_SQUID_AXON_MODEL_1952_MODIFIEDFROMCELLMLCVODEDATACLAMP_HPP_ + + + +#if USING_DEVICE_COMPILER + #include "hodgkin_huxley_squid_axon_model_1952_modifiedKernels.hpp" +#endif #endif // CHASTE_CVODE \ No newline at end of file diff --git a/chaste_codegen/data/tests/chaste_reference_models/CVODE_DATA_CLAMP_OPT/grandi_pasqualini_bers_2010_ssCvodeDataClampOpt.cpp b/chaste_codegen/data/tests/chaste_reference_models/CVODE_DATA_CLAMP_OPT/grandi_pasqualini_bers_2010_ssCvodeDataClampOpt.cpp index e42e23fd0..bf8422511 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/CVODE_DATA_CLAMP_OPT/grandi_pasqualini_bers_2010_ssCvodeDataClampOpt.cpp +++ b/chaste_codegen/data/tests/chaste_reference_models/CVODE_DATA_CLAMP_OPT/grandi_pasqualini_bers_2010_ssCvodeDataClampOpt.cpp @@ -22,6 +22,8 @@ #include "HeartConfig.hpp" #include "IsNan.hpp" #include "MathsCustomFunctions.hpp" +#include "ChasteMathDeviceNamespaces.hpp" +#include "ChasteCpuMacros.hpp" #if CHASTE_SUNDIALS_VERSION >= 60000 #include "CvodeContextManager.hpp" @@ -154,7 +156,7 @@ class Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClampOpt_LookupTables for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane_potential__V_m) { - return 1 / (1 + exp(7.4880000000000004 - 0.16722408026755853 * var_chaste_interface__membrane_potential__V_m)); + return 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(7.4880000000000004) - CHASTE_CONST(0.16722408026755853) * var_chaste_interface__membrane_potential__V_m)); }; const double var_chaste_interface__membrane_potential__V_m = mTableMins[0] + i*mTableSteps[0]; double val = f(var_chaste_interface__membrane_potential__V_m); @@ -165,7 +167,7 @@ class Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClampOpt_LookupTables for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane_potential__V_m) { - return 1 + exp(3.0833333333333335 + 0.041666666666666664 * var_chaste_interface__membrane_potential__V_m); + return 1 + CHASTE_MATH::Exp(CHASTE_CONST(3.0833333333333335) + CHASTE_CONST(0.041666666666666664) * var_chaste_interface__membrane_potential__V_m); }; const double var_chaste_interface__membrane_potential__V_m = mTableMins[0] + i*mTableSteps[0]; double val = f(var_chaste_interface__membrane_potential__V_m); @@ -176,7 +178,7 @@ class Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClampOpt_LookupTables for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane_potential__V_m) { - return 1 / (1 + exp(-0.83333333333333337 - 0.16666666666666666 * var_chaste_interface__membrane_potential__V_m)); + return 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.83333333333333337) - CHASTE_CONST(0.16666666666666666) * var_chaste_interface__membrane_potential__V_m)); }; const double var_chaste_interface__membrane_potential__V_m = mTableMins[0] + i*mTableSteps[0]; double val = f(var_chaste_interface__membrane_potential__V_m); @@ -187,7 +189,7 @@ class Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClampOpt_LookupTables for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane_potential__V_m) { - return 1 - exp(-0.83333333333333337 - 0.16666666666666666 * var_chaste_interface__membrane_potential__V_m); + return 1 - CHASTE_MATH::Exp(-CHASTE_CONST(0.83333333333333337) - CHASTE_CONST(0.16666666666666666) * var_chaste_interface__membrane_potential__V_m); }; const double var_chaste_interface__membrane_potential__V_m = mTableMins[0] + i*mTableSteps[0]; double val = f(var_chaste_interface__membrane_potential__V_m); @@ -198,7 +200,7 @@ class Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClampOpt_LookupTables for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane_potential__V_m) { - return 1 / (1 + exp(3.8888888888888888 + 0.1111111111111111 * var_chaste_interface__membrane_potential__V_m)); + return 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(3.8888888888888888) + CHASTE_CONST(0.1111111111111111) * var_chaste_interface__membrane_potential__V_m)); }; const double var_chaste_interface__membrane_potential__V_m = mTableMins[0] + i*mTableSteps[0]; double val = f(var_chaste_interface__membrane_potential__V_m); @@ -209,7 +211,7 @@ class Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClampOpt_LookupTables for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane_potential__V_m) { - return 0.59999999999999998 / (1 + exp(2.5 - 0.050000000000000003 * var_chaste_interface__membrane_potential__V_m)); + return CHASTE_CONST(0.59999999999999998) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(2.5) - CHASTE_CONST(0.050000000000000003) * var_chaste_interface__membrane_potential__V_m)); }; const double var_chaste_interface__membrane_potential__V_m = mTableMins[0] + i*mTableSteps[0]; double val = f(var_chaste_interface__membrane_potential__V_m); @@ -220,7 +222,7 @@ class Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClampOpt_LookupTables for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane_potential__V_m) { - return 0.02 + 0.019699999999999999 * exp(-0.23877882250000002 * pow((1 + 0.068965517241379309 * var_chaste_interface__membrane_potential__V_m), 2)); + return CHASTE_CONST(0.02) + CHASTE_CONST(0.019699999999999999) * CHASTE_MATH::Exp(-CHASTE_CONST(0.23877882250000002) * CHASTE_MATH::Pow((1 + CHASTE_CONST(0.068965517241379309) * var_chaste_interface__membrane_potential__V_m), 2)); }; const double var_chaste_interface__membrane_potential__V_m = mTableMins[0] + i*mTableSteps[0]; double val = f(var_chaste_interface__membrane_potential__V_m); @@ -231,7 +233,7 @@ class Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClampOpt_LookupTables for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane_potential__V_m) { - return 1 / (1 + exp(-2 - 0.20000000000000001 * var_chaste_interface__membrane_potential__V_m)); + return 1 / (1 + CHASTE_MATH::Exp(-2 - CHASTE_CONST(0.20000000000000001) * var_chaste_interface__membrane_potential__V_m)); }; const double var_chaste_interface__membrane_potential__V_m = mTableMins[0] + i*mTableSteps[0]; double val = f(var_chaste_interface__membrane_potential__V_m); @@ -242,7 +244,7 @@ class Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClampOpt_LookupTables for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane_potential__V_m) { - return 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))); + return 230 / (1 + CHASTE_MATH::Exp(2 + CHASTE_CONST(0.050000000000000003) * var_chaste_interface__membrane_potential__V_m)) + 3300 / ((1 + CHASTE_MATH::Exp(CHASTE_CONST(1.2222222222222223) + CHASTE_CONST(0.1111111111111111) * var_chaste_interface__membrane_potential__V_m)) * (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.4444444444444446) - CHASTE_CONST(0.1111111111111111) * var_chaste_interface__membrane_potential__V_m))); }; const double var_chaste_interface__membrane_potential__V_m = mTableMins[0] + i*mTableSteps[0]; double val = f(var_chaste_interface__membrane_potential__V_m); @@ -253,7 +255,7 @@ class Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClampOpt_LookupTables for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane_potential__V_m) { - return 1 / (1 + exp(-0.26666666666666666 - 0.070175438596491224 * var_chaste_interface__membrane_potential__V_m)); + return 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.26666666666666666) - CHASTE_CONST(0.070175438596491224) * var_chaste_interface__membrane_potential__V_m)); }; const double var_chaste_interface__membrane_potential__V_m = mTableMins[0] + i*mTableSteps[0]; double val = f(var_chaste_interface__membrane_potential__V_m); @@ -264,7 +266,7 @@ class Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClampOpt_LookupTables for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane_potential__V_m) { - return 0.00100999899000101 + 0.00100999899000101 * exp(-0.17252124645892353 - 0.070821529745042494 * var_chaste_interface__membrane_potential__V_m); + return CHASTE_CONST(0.00100999899000101) + CHASTE_CONST(0.00100999899000101) * CHASTE_MATH::Exp(-CHASTE_CONST(0.17252124645892353) - CHASTE_CONST(0.070821529745042494) * var_chaste_interface__membrane_potential__V_m); }; const double var_chaste_interface__membrane_potential__V_m = mTableMins[0] + i*mTableSteps[0]; double val = f(var_chaste_interface__membrane_potential__V_m); @@ -275,7 +277,7 @@ class Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClampOpt_LookupTables for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane_potential__V_m) { - return 1 / pow((1 + exp(-6.2967884828349945 - 0.11074197120708749 * var_chaste_interface__membrane_potential__V_m)), 2); + return 1 / CHASTE_MATH::Pow((1 + CHASTE_MATH::Exp(-CHASTE_CONST(6.2967884828349945) - CHASTE_CONST(0.11074197120708749) * var_chaste_interface__membrane_potential__V_m)), 2); }; const double var_chaste_interface__membrane_potential__V_m = mTableMins[0] + i*mTableSteps[0]; double val = f(var_chaste_interface__membrane_potential__V_m); @@ -286,7 +288,7 @@ class Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClampOpt_LookupTables for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane_potential__V_m) { - return 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)); + return CHASTE_CONST(0.12920000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(8.682389366752302) * CHASTE_MATH::Pow((1 + CHASTE_CONST(0.021838829438742085) * var_chaste_interface__membrane_potential__V_m), 2)) + CHASTE_CONST(0.064869999999999997) * CHASTE_MATH::Exp(-CHASTE_CONST(0.0089012876052174655) * CHASTE_MATH::Pow((-1 + CHASTE_CONST(0.2073398299813394) * var_chaste_interface__membrane_potential__V_m), 2)); }; const double var_chaste_interface__membrane_potential__V_m = mTableMins[0] + i*mTableSteps[0]; double val = f(var_chaste_interface__membrane_potential__V_m); @@ -297,7 +299,7 @@ class Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClampOpt_LookupTables for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane_potential__V_m) { - return 1 / (1 + exp(1.4615384615384615 - 0.076923076923076927 * var_chaste_interface__membrane_potential__V_m)); + return 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(1.4615384615384615) - CHASTE_CONST(0.076923076923076927) * var_chaste_interface__membrane_potential__V_m)); }; const double var_chaste_interface__membrane_potential__V_m = mTableMins[0] + i*mTableSteps[0]; double val = f(var_chaste_interface__membrane_potential__V_m); @@ -308,7 +310,7 @@ class Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClampOpt_LookupTables for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane_potential__V_m) { - return 0.5 + 8.5 * exp(-0.81000000000000005 * pow((1 + 0.022222222222222223 * var_chaste_interface__membrane_potential__V_m), 2)); + return CHASTE_CONST(0.5) + CHASTE_CONST(8.5) * CHASTE_MATH::Exp(-CHASTE_CONST(0.81000000000000005) * CHASTE_MATH::Pow((1 + CHASTE_CONST(0.022222222222222223) * var_chaste_interface__membrane_potential__V_m), 2)); }; const double var_chaste_interface__membrane_potential__V_m = mTableMins[0] + i*mTableSteps[0]; double val = f(var_chaste_interface__membrane_potential__V_m); @@ -319,7 +321,7 @@ class Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClampOpt_LookupTables for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane_potential__V_m) { - return 0.5 + 9 / (1 + exp(0.20000000000000001 + 0.066666666666666666 * var_chaste_interface__membrane_potential__V_m)); + return CHASTE_CONST(0.5) + 9 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(0.20000000000000001) + CHASTE_CONST(0.066666666666666666) * var_chaste_interface__membrane_potential__V_m)); }; const double var_chaste_interface__membrane_potential__V_m = mTableMins[0] + i*mTableSteps[0]; double val = f(var_chaste_interface__membrane_potential__V_m); @@ -330,7 +332,7 @@ class Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClampOpt_LookupTables for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane_potential__V_m) { - return 1 / (1 + exp(3.8999999999999999 + 0.20000000000000001 * var_chaste_interface__membrane_potential__V_m)); + return 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(3.8999999999999999) + CHASTE_CONST(0.20000000000000001) * var_chaste_interface__membrane_potential__V_m)); }; const double var_chaste_interface__membrane_potential__V_m = mTableMins[0] + i*mTableSteps[0]; double val = f(var_chaste_interface__membrane_potential__V_m); @@ -341,7 +343,7 @@ class Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClampOpt_LookupTables for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane_potential__V_m) { - return 7 + 85 * exp(-7.2727272727272725 * pow((1 + 0.025000000000000001 * var_chaste_interface__membrane_potential__V_m), 2)); + return 7 + 85 * CHASTE_MATH::Exp(-CHASTE_CONST(7.2727272727272725) * CHASTE_MATH::Pow((1 + CHASTE_CONST(0.025000000000000001) * var_chaste_interface__membrane_potential__V_m), 2)); }; const double var_chaste_interface__membrane_potential__V_m = mTableMins[0] + i*mTableSteps[0]; double val = f(var_chaste_interface__membrane_potential__V_m); @@ -352,7 +354,7 @@ class Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClampOpt_LookupTables for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane_potential__V_m) { - return 30 + 800 / (1 + exp(6 + 0.10000000000000001 * var_chaste_interface__membrane_potential__V_m)); + return 30 + 800 / (1 + CHASTE_MATH::Exp(6 + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane_potential__V_m)); }; const double var_chaste_interface__membrane_potential__V_m = mTableMins[0] + i*mTableSteps[0]; double val = f(var_chaste_interface__membrane_potential__V_m); @@ -385,7 +387,7 @@ std::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_amplitude_converted = -CHASTE_CONST(9.5) * CHASTE_CAP(); // 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 @@ -419,30 +421,30 @@ std::shared_ptrmHasDefaultStimulusFromCellML = true; - NV_Ith_S(this->mParameters, 0) = 5.3480000000000003e-6; // (var_SR_Fluxes__SR_leak_max) [per_msec] + NV_Ith_S(this->mParameters, 0) = CHASTE_CONST(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, 2) = CHASTE_CONST(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, 5) = CHASTE_CONST(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, 7) = CHASTE_CONST(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, 11) = CHASTE_CONST(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, 17) = CHASTE_CONST(0.34999999999999998); // (var_I_Ki__g_ki_factor) [mS_per_uF] + NV_Ith_S(this->mParameters, 18) = CHASTE_CONST(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, 21) = CHASTE_CONST(4.5); // (var_parameters__IbarNCX) [uA_per_uF] + NV_Ith_S(this->mParameters, 22) = CHASTE_CONST(1.8); // (var_parameters__IbarNaK) [uA_per_uF] + NV_Ith_S(this->mParameters, 23) = CHASTE_CONST(1.3809999999999999e-10); // (var_parameters__Cmem) [farad] NV_Ith_S(this->mParameters, 24) = 310; // (var_parameters__Temp) [kelvin] } @@ -503,7 +505,7 @@ std::shared_ptrmFixedVoltage : NV_Ith_S(rY, 0)); + double var_chaste_interface__membrane_potential__V_m = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -556,19 +558,19 @@ std::shared_ptrGetCapacitance() * var_membrane_potential__I_tot; // uA_per_cm2 + const double var_I_NaK__fnak = 1 / (1 + CHASTE_CONST(0.1245) * CHASTE_MATH::Exp(-CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT) + CHASTE_CONST(0.036499999999999998) * (-CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * CHASTE_MATH::Exp(CHASTE_CONST(0.01485884101040119) * NV_Ith_S(mParameters, 8))) * CHASTE_MATH::Exp(-var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // dimensionless + const double var_I_NaK__I_nak_junc = CHASTE_CONST(0.11) * var_I_NaK__fnak * NV_Ith_S(mParameters, 22) * NV_Ith_S(mParameters, 7) / ((1 + 14641 / CHASTE_MATH::Pow(var_chaste_interface__Na_Concentrations__Na_j, 4)) * (CHASTE_CONST(1.5) + NV_Ith_S(mParameters, 7))); // uA_per_uF + const double var_I_NaK__I_nak_sl = CHASTE_CONST(0.89000000000000001) * var_I_NaK__fnak * NV_Ith_S(mParameters, 22) * NV_Ith_S(mParameters, 7) / ((1 + 14641 / CHASTE_MATH::Pow(var_chaste_interface__Na_Concentrations__Na_sl, 4)) * (CHASTE_CONST(1.5) + NV_Ith_S(mParameters, 7))); // uA_per_uF + const double var_parameters__Qpow = -31 + CHASTE_CONST(0.10000000000000001) * NV_Ith_S(mParameters, 24); // dimensionless + const double var_parameters__ecl = CHASTE_MATH::Log(NV_Ith_S(mParameters, 4) / NV_Ith_S(mParameters, 6)) / var_parameters__FoRT; // mV + const double var_parameters__ek = CHASTE_MATH::Log(NV_Ith_S(mParameters, 7) / var_chaste_interface__K_Concentration__K_i) / var_parameters__FoRT; // mV + const double var_parameters__ena_junc = CHASTE_MATH::Log(NV_Ith_S(mParameters, 8) / var_chaste_interface__Na_Concentrations__Na_j) / var_parameters__FoRT; // mV + const double var_parameters__ena_sl = CHASTE_MATH::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 = CHASTE_CONST(0.11) * CHASTE_MATH::Pow(CHASTE_CONST(1.5700000000000001), var_parameters__Qpow) * (CHASTE_MATH::Pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * NV_Ith_S(mParameters, 5) * CHASTE_MATH::Exp(CHASTE_CONST(0.27000000000000002) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT) - CHASTE_MATH::Pow(NV_Ith_S(mParameters, 8), 3) * var_chaste_interface__Ca_Concentrations__Ca_j * CHASTE_MATH::Exp(-CHASTE_CONST(0.72999999999999998) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * NV_Ith_S(mParameters, 21) / ((1 + CHASTE_CONST(0.32000000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(0.72999999999999998) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * (1 + CHASTE_CONST(2.2499999999999996e-8) / CHASTE_MATH::Pow(var_chaste_interface__Ca_Concentrations__Ca_j, 2)) * (CHASTE_CONST(1.3) * CHASTE_MATH::Pow(var_chaste_interface__Na_Concentrations__Na_j, 3) + CHASTE_MATH::Pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * NV_Ith_S(mParameters, 5) + CHASTE_MATH::Pow(NV_Ith_S(mParameters, 8), 3) * var_chaste_interface__Ca_Concentrations__Ca_j + CHASTE_CONST(669921.875) * (1 + CHASTE_CONST(278.55153203342621) * var_chaste_interface__Ca_Concentrations__Ca_j) * var_chaste_interface__Ca_Concentrations__Ca_j + CHASTE_CONST(0.0035899999999999999) * CHASTE_MATH::Pow(NV_Ith_S(mParameters, 8), 3) * (1 + CHASTE_CONST(0.00053869674493876331) * CHASTE_MATH::Pow(var_chaste_interface__Na_Concentrations__Na_j, 3)))); // uA_per_uF + const double var_I_NCX__I_ncx_sl = CHASTE_CONST(0.89000000000000001) * CHASTE_MATH::Pow(CHASTE_CONST(1.5700000000000001), var_parameters__Qpow) * (CHASTE_MATH::Pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * NV_Ith_S(mParameters, 5) * CHASTE_MATH::Exp(CHASTE_CONST(0.27000000000000002) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT) - CHASTE_MATH::Pow(NV_Ith_S(mParameters, 8), 3) * var_chaste_interface__Ca_Concentrations__Ca_sl * CHASTE_MATH::Exp(-CHASTE_CONST(0.72999999999999998) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * NV_Ith_S(mParameters, 21) / ((1 + CHASTE_CONST(0.32000000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(0.72999999999999998) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * (1 + CHASTE_CONST(2.2499999999999996e-8) / CHASTE_MATH::Pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 2)) * (CHASTE_CONST(1.3) * CHASTE_MATH::Pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) + CHASTE_MATH::Pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * NV_Ith_S(mParameters, 5) + CHASTE_MATH::Pow(NV_Ith_S(mParameters, 8), 3) * var_chaste_interface__Ca_Concentrations__Ca_sl + CHASTE_CONST(669921.875) * (1 + CHASTE_CONST(278.55153203342621) * var_chaste_interface__Ca_Concentrations__Ca_sl) * var_chaste_interface__Ca_Concentrations__Ca_sl + CHASTE_CONST(0.0035899999999999999) * CHASTE_MATH::Pow(NV_Ith_S(mParameters, 8), 3) * (1 + CHASTE_CONST(0.00053869674493876331) * CHASTE_MATH::Pow(var_chaste_interface__Na_Concentrations__Na_sl, 3)))); // uA_per_uF + const double var_parameters__pCa = CHASTE_CONST(0.00054000000000000001) * NV_Ith_S(mParameters, 11); // cm_per_sec + const double var_membrane_potential__I_tot = var_I_NCX__I_ncx_junc + var_I_NCX__I_ncx_sl + var_I_NaK__I_nak_junc + var_I_NaK__I_nak_sl + CHASTE_CONST(0.010148299999999999) * var_chaste_interface__membrane_potential__V_m - CHASTE_CONST(0.0089999999999999993) * var_parameters__ecl - CHASTE_CONST(6.567e-5) * var_parameters__ena_junc - CHASTE_CONST(0.00053133) * var_parameters__ena_sl + CHASTE_CONST(0.002) * (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_Kp__kp_kp + CHASTE_CONST(0.006029375) * (-var_parameters__ecl + var_chaste_interface__membrane_potential__V_m) / (1 + CHASTE_CONST(0.10000000000000001) / var_chaste_interface__Ca_Concentrations__Ca_j) + CHASTE_CONST(0.048783124999999997) * (-var_parameters__ecl + var_chaste_interface__membrane_potential__V_m) / (1 + CHASTE_CONST(0.10000000000000001) / var_chaste_interface__Ca_Concentrations__Ca_sl) - CHASTE_CONST(3.0321500000000001e-5) * CHASTE_MATH::Log(NV_Ith_S(mParameters, 5) / var_chaste_interface__Ca_Concentrations__Ca_j) / var_parameters__FoRT - CHASTE_CONST(0.00024532850000000001) * CHASTE_MATH::Log(NV_Ith_S(mParameters, 5) / var_chaste_interface__Ca_Concentrations__Ca_sl) / var_parameters__FoRT + CHASTE_CONST(0.0035000000000000001) * CHASTE_MATH::Pow(var_chaste_interface__I_Ks__x_ks, 2) * (-CHASTE_MATH::Log((CHASTE_CONST(0.018329999999999999) * NV_Ith_S(mParameters, 8) + NV_Ith_S(mParameters, 7)) / (CHASTE_CONST(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) + CHASTE_CONST(0.0074029999999999999) * CHASTE_MATH::Pow(CHASTE_CONST(2.3500000000000001), var_parameters__Qpow) * CHASTE_MATH::Pow(var_chaste_interface__Ca_Concentrations__Ca_j, CHASTE_CONST(1.6000000000000001)) / (CHASTE_CONST(5.2281977629563632e-6) + CHASTE_MATH::Pow(var_chaste_interface__Ca_Concentrations__Ca_j, CHASTE_CONST(1.6000000000000001))) + CHASTE_CONST(0.059896999999999999) * CHASTE_MATH::Pow(CHASTE_CONST(2.3500000000000001), var_parameters__Qpow) * CHASTE_MATH::Pow(var_chaste_interface__Ca_Concentrations__Ca_sl, CHASTE_CONST(1.6000000000000001)) / (CHASTE_CONST(5.2281977629563632e-6) + CHASTE_MATH::Pow(var_chaste_interface__Ca_Concentrations__Ca_sl, CHASTE_CONST(1.6000000000000001))) + CHASTE_CONST(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 + CHASTE_CONST(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 + CHASTE_CONST(0.11) * CHASTE_MATH::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) + CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::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 / (_lt_0_row[1]) + CHASTE_CONST(0.89000000000000001) * CHASTE_MATH::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) + CHASTE_CONST(0.4389381125701739) * CHASTE_MATH::Sqrt(NV_Ith_S(mParameters, 7)) * (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * NV_Ith_S(mParameters, 17) / ((1 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__membrane_potential__V_m - CHASTE_CONST(0.23849999999999999) * var_parameters__ek)) * (CHASTE_CONST(1.02) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__membrane_potential__V_m - CHASTE_CONST(0.23849999999999999) * var_parameters__ek)) + (CHASTE_CONST(0.49124000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.43983232) + CHASTE_CONST(0.080320000000000003) * var_chaste_interface__membrane_potential__V_m - CHASTE_CONST(0.080320000000000003) * var_parameters__ek) + CHASTE_MATH::Exp(-CHASTE_CONST(36.698642499999998) + CHASTE_CONST(0.061749999999999999) * var_chaste_interface__membrane_potential__V_m - CHASTE_CONST(0.061749999999999999) * var_parameters__ek)) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.4444678999999998) + CHASTE_CONST(0.51429999999999998) * var_parameters__ek - CHASTE_CONST(0.51429999999999998) * var_chaste_interface__membrane_potential__V_m)))) + CHASTE_CONST(3.3749999999999992e-10) * CHASTE_MATH::Pow(CHASTE_CONST(1.8), var_parameters__Qpow) * (-CHASTE_CONST(0.75) * NV_Ith_S(mParameters, 8) + CHASTE_CONST(0.75) * var_chaste_interface__Na_Concentrations__Na_sl * CHASTE_MATH::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 + CHASTE_MATH::Exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) + CHASTE_CONST(6.0749999999999998e-8) * CHASTE_MATH::Pow(CHASTE_CONST(1.8), var_parameters__Qpow) * (-CHASTE_CONST(0.75) * NV_Ith_S(mParameters, 7) + CHASTE_CONST(0.75) * var_chaste_interface__K_Concentration__K_i * CHASTE_MATH::Exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * (1 + CHASTE_CONST(0.099999999999999978) * var_I_Ca__fcaCaMSL + CHASTE_CONST(0.90000000000000002) * var_I_Ca__fcaCaj - CHASTE_CONST(0.099999999999999978) * var_chaste_interface__I_Ca__f_Ca_Bsl - CHASTE_CONST(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 + CHASTE_MATH::Exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) + CHASTE_CONST(3.0374999999999999e-9) * CHASTE_MATH::Pow(CHASTE_CONST(1.8), var_parameters__Qpow) * (-CHASTE_CONST(0.75) * NV_Ith_S(mParameters, 8) + CHASTE_CONST(0.75) * var_chaste_interface__Na_Concentrations__Na_j * CHASTE_MATH::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 + CHASTE_MATH::Exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) + CHASTE_CONST(0.17999999999999997) * CHASTE_MATH::Pow(CHASTE_CONST(1.8), var_parameters__Qpow) * (-CHASTE_CONST(0.34100000000000003) * NV_Ith_S(mParameters, 5) + CHASTE_CONST(0.34100000000000003) * var_chaste_interface__Ca_Concentrations__Ca_sl * CHASTE_MATH::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 + CHASTE_MATH::Exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) + CHASTE_CONST(1.6200000000000001) * CHASTE_MATH::Pow(CHASTE_CONST(1.8), var_parameters__Qpow) * (-CHASTE_CONST(0.34100000000000003) * NV_Ith_S(mParameters, 5) + CHASTE_CONST(0.34100000000000003) * var_chaste_interface__Ca_Concentrations__Ca_j * CHASTE_MATH::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 + CHASTE_MATH::Exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_chaste_interface__i_ionic = CHASTE_CAP() * var_membrane_potential__I_tot; // uA_per_cm2 const double i_ionic = var_chaste_interface__i_ionic; if (made_new_cvode_vector) @@ -583,7 +585,7 @@ std::shared_ptrmFixedVoltage : NV_Ith_S(rY, 0)); + double var_chaste_interface__membrane_potential__V_m = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -673,19 +675,19 @@ std::shared_ptr= -40) ? (0) : (0.057000000000000002 * exp(-11.764705882352942 + 0.14705882352941177 * NV_Ith_S(mParameters, 15) - 0.14705882352941177 * var_chaste_interface__membrane_potential__V_m))) + ((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 - 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 = (((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))))) + ((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 - 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__h = (((var_chaste_interface__membrane_potential__V_m >= -40) ? (0) : (CHASTE_CONST(0.057000000000000002) * CHASTE_MATH::Exp(-CHASTE_CONST(11.764705882352942) + CHASTE_CONST(0.14705882352941177) * NV_Ith_S(mParameters, 15) - CHASTE_CONST(0.14705882352941177) * var_chaste_interface__membrane_potential__V_m))) + ((var_chaste_interface__membrane_potential__V_m >= -40) ? (CHASTE_CONST(5.9230769230769234) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.96036036036036043) + CHASTE_CONST(0.0900900900900901) * NV_Ith_S(mParameters, 15) - CHASTE_CONST(0.0900900900900901) * var_chaste_interface__membrane_potential__V_m))) : (310000 * CHASTE_MATH::Exp(CHASTE_CONST(0.34849999999999998) * var_chaste_interface__membrane_potential__V_m - CHASTE_CONST(0.34849999999999998) * NV_Ith_S(mParameters, 15)) + CHASTE_CONST(2.7000000000000002) * CHASTE_MATH::Exp(CHASTE_CONST(0.079000000000000001) * var_chaste_interface__membrane_potential__V_m - CHASTE_CONST(0.079000000000000001) * NV_Ith_S(mParameters, 15))))) * (-var_chaste_interface__I_Na__h + CHASTE_CONST(0.01) * NV_Ith_S(mParameters, 14) + (1 - CHASTE_CONST(0.01) * NV_Ith_S(mParameters, 14)) / CHASTE_MATH::Pow((1 + CHASTE_MATH::Exp(CHASTE_CONST(9.6298788694481825) + CHASTE_CONST(0.13458950201884254) * var_chaste_interface__membrane_potential__V_m - CHASTE_CONST(0.13458950201884254) * NV_Ith_S(mParameters, 15))), 2)); // 1 / msec + const double d_dt_chaste_interface_var_I_Na__j = (((var_chaste_interface__membrane_potential__V_m >= -40) ? (0) : ((CHASTE_CONST(37.780000000000001) + var_chaste_interface__membrane_potential__V_m) * (-25428 * CHASTE_MATH::Exp(CHASTE_CONST(0.24440000000000001) * var_chaste_interface__membrane_potential__V_m - CHASTE_CONST(0.24440000000000001) * NV_Ith_S(mParameters, 15)) - CHASTE_CONST(6.9480000000000002e-6) * CHASTE_MATH::Exp(CHASTE_CONST(0.043909999999999998) * NV_Ith_S(mParameters, 15) - CHASTE_CONST(0.043909999999999998) * var_chaste_interface__membrane_potential__V_m)) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(24.640530000000002) + CHASTE_CONST(0.311) * var_chaste_interface__membrane_potential__V_m - CHASTE_CONST(0.311) * NV_Ith_S(mParameters, 15))))) + ((var_chaste_interface__membrane_potential__V_m >= -40) ? (CHASTE_CONST(0.59999999999999998) * CHASTE_MATH::Exp(CHASTE_CONST(0.057000000000000002) * var_chaste_interface__membrane_potential__V_m - CHASTE_CONST(0.057000000000000002) * NV_Ith_S(mParameters, 15)) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(3.2000000000000002) + CHASTE_CONST(0.10000000000000001) * NV_Ith_S(mParameters, 15) - CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane_potential__V_m))) : (CHASTE_CONST(0.024240000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.01052) * NV_Ith_S(mParameters, 15) - CHASTE_CONST(0.01052) * var_chaste_interface__membrane_potential__V_m) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(5.5312920000000005) + CHASTE_CONST(0.13780000000000001) * NV_Ith_S(mParameters, 15) - CHASTE_CONST(0.13780000000000001) * var_chaste_interface__membrane_potential__V_m))))) * (-var_chaste_interface__I_Na__j + CHASTE_CONST(0.01) * NV_Ith_S(mParameters, 14) + (1 - CHASTE_CONST(0.01) * NV_Ith_S(mParameters, 14)) / CHASTE_MATH::Pow((1 + CHASTE_MATH::Exp(CHASTE_CONST(9.6298788694481825) + CHASTE_CONST(0.13458950201884254) * var_chaste_interface__membrane_potential__V_m - CHASTE_CONST(0.13458950201884254) * NV_Ith_S(mParameters, 15))), 2)); // 1 / msec const double d_dt_chaste_interface_var_I_Na__m = (-var_chaste_interface__I_Na__m + _lt_0_row[11]) / (_lt_0_row[12]); // 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 = (-var_chaste_interface__I_to__x_to_f + var_I_to__xtoss) / (_lt_0_row[14]); // 1 / msec @@ -694,60 +696,60 @@ std::shared_ptrGetCapacitance() - (-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) * (-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 * 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 / (_lt_0_row[1]) - 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 + const double var_parameters__ecl = CHASTE_MATH::Log(NV_Ith_S(mParameters, 4) / NV_Ith_S(mParameters, 6)) / var_parameters__FoRT; // mV + const double var_parameters__ek = CHASTE_MATH::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 + CHASTE_CONST(0.0089999999999999993) * var_parameters__ecl - CHASTE_CONST(0.0089999999999999993) * var_chaste_interface__membrane_potential__V_m - CHASTE_STIM(var_chaste_interface__environment__time) / CHASTE_CAP() - (-CHASTE_EXP_VOLT(var_chaste_interface__environment__time) + var_chaste_interface__membrane_potential__V_m) * NV_Ith_S(mParameters, 12) - CHASTE_CONST(0.002) * (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_Kp__kp_kp - CHASTE_CONST(0.006029375) * (-var_parameters__ecl + var_chaste_interface__membrane_potential__V_m) / (1 + CHASTE_CONST(0.10000000000000001) / var_chaste_interface__Ca_Concentrations__Ca_j) - CHASTE_CONST(0.048783124999999997) * (-var_parameters__ecl + var_chaste_interface__membrane_potential__V_m) / (1 + CHASTE_CONST(0.10000000000000001) / var_chaste_interface__Ca_Concentrations__Ca_sl) - CHASTE_CONST(0.0035000000000000001) * CHASTE_MATH::Pow(var_chaste_interface__I_Ks__x_ks, 2) * (-CHASTE_MATH::Log((CHASTE_CONST(0.018329999999999999) * NV_Ith_S(mParameters, 8) + NV_Ith_S(mParameters, 7)) / (CHASTE_CONST(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) - CHASTE_CONST(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 - CHASTE_CONST(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 - CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::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 / (_lt_0_row[1]) - CHASTE_CONST(0.4389381125701739) * CHASTE_MATH::Sqrt(NV_Ith_S(mParameters, 7)) * (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * NV_Ith_S(mParameters, 17) / ((1 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__membrane_potential__V_m - CHASTE_CONST(0.23849999999999999) * var_parameters__ek)) * (CHASTE_CONST(1.02) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__membrane_potential__V_m - CHASTE_CONST(0.23849999999999999) * var_parameters__ek)) + (CHASTE_CONST(0.49124000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.43983232) + CHASTE_CONST(0.080320000000000003) * var_chaste_interface__membrane_potential__V_m - CHASTE_CONST(0.080320000000000003) * var_parameters__ek) + CHASTE_MATH::Exp(-CHASTE_CONST(36.698642499999998) + CHASTE_CONST(0.061749999999999999) * var_chaste_interface__membrane_potential__V_m - CHASTE_CONST(0.061749999999999999) * var_parameters__ek)) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.4444678999999998) + CHASTE_CONST(0.51429999999999998) * var_parameters__ek - CHASTE_CONST(0.51429999999999998) * var_chaste_interface__membrane_potential__V_m)))) - CHASTE_CONST(6.0749999999999998e-8) * CHASTE_MATH::Pow(CHASTE_CONST(1.8), var_parameters__Qpow) * (-CHASTE_CONST(0.75) * NV_Ith_S(mParameters, 7) + CHASTE_CONST(0.75) * var_chaste_interface__K_Concentration__K_i * CHASTE_MATH::Exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * (1 + CHASTE_CONST(0.099999999999999978) * var_I_Ca__fcaCaMSL + CHASTE_CONST(0.90000000000000002) * var_I_Ca__fcaCaj - CHASTE_CONST(0.099999999999999978) * var_chaste_interface__I_Ca__f_Ca_Bsl - CHASTE_CONST(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 + CHASTE_MATH::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; @@ -806,7 +808,7 @@ std::shared_ptrmFixedVoltage : NV_Ith_S(rY, 0)); + double var_chaste_interface__membrane_potential__V_m = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -864,15 +866,15 @@ std::shared_ptr= -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__ah = ((var_chaste_interface__membrane_potential__V_m >= -40) ? (0) : (CHASTE_CONST(0.057000000000000002) * CHASTE_MATH::Exp(-CHASTE_CONST(11.764705882352942) + CHASTE_CONST(0.14705882352941177) * NV_Ith_S(mParameters, 15) - CHASTE_CONST(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) : ((CHASTE_CONST(37.780000000000001) + var_chaste_interface__membrane_potential__V_m) * (-25428 * CHASTE_MATH::Exp(CHASTE_CONST(0.24440000000000001) * var_chaste_interface__membrane_potential__V_m - CHASTE_CONST(0.24440000000000001) * NV_Ith_S(mParameters, 15)) - CHASTE_CONST(6.9480000000000002e-6) * CHASTE_MATH::Exp(CHASTE_CONST(0.043909999999999998) * NV_Ith_S(mParameters, 15) - CHASTE_CONST(0.043909999999999998) * var_chaste_interface__membrane_potential__V_m)) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(24.640530000000002) + CHASTE_CONST(0.311) * var_chaste_interface__membrane_potential__V_m - CHASTE_CONST(0.311) * NV_Ith_S(mParameters, 15))))); // dimensionless + const double var_I_Na__bh = ((var_chaste_interface__membrane_potential__V_m >= -40) ? (CHASTE_CONST(5.9230769230769234) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.96036036036036043) + CHASTE_CONST(0.0900900900900901) * NV_Ith_S(mParameters, 15) - CHASTE_CONST(0.0900900900900901) * var_chaste_interface__membrane_potential__V_m))) : (310000 * CHASTE_MATH::Exp(CHASTE_CONST(0.34849999999999998) * var_chaste_interface__membrane_potential__V_m - CHASTE_CONST(0.34849999999999998) * NV_Ith_S(mParameters, 15)) + CHASTE_CONST(2.7000000000000002) * CHASTE_MATH::Exp(CHASTE_CONST(0.079000000000000001) * var_chaste_interface__membrane_potential__V_m - CHASTE_CONST(0.079000000000000001) * NV_Ith_S(mParameters, 15)))); // dimensionless + const double var_I_Na__bj = ((var_chaste_interface__membrane_potential__V_m >= -40) ? (CHASTE_CONST(0.59999999999999998) * CHASTE_MATH::Exp(CHASTE_CONST(0.057000000000000002) * var_chaste_interface__membrane_potential__V_m - CHASTE_CONST(0.057000000000000002) * NV_Ith_S(mParameters, 15)) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(3.2000000000000002) + CHASTE_CONST(0.10000000000000001) * NV_Ith_S(mParameters, 15) - CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane_potential__V_m))) : (CHASTE_CONST(0.024240000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.01052) * NV_Ith_S(mParameters, 15) - CHASTE_CONST(0.01052) * var_chaste_interface__membrane_potential__V_m) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(5.5312920000000005) + CHASTE_CONST(0.13780000000000001) * NV_Ith_S(mParameters, 15) - CHASTE_CONST(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 @@ -880,96 +882,96 @@ std::shared_ptrGetCapacitance() * 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_NaK__I_nak_converted = CHASTE_CAP() * var_I_NaK__I_nak; // uA_per_cm2 + const double var_parameters__Qpow = -31 + CHASTE_CONST(0.10000000000000001) * NV_Ith_S(mParameters, 24); // dimensionless + const double var_I_PCa__I_pca_junc = CHASTE_MATH::Pow(var_chaste_interface__Ca_Concentrations__Ca_j, CHASTE_CONST(1.6000000000000001)) * CHASTE_MATH::Pow(var_parameters__Q10SLCaP, var_parameters__Qpow) * var_parameters__Fjunc * var_parameters__IbarSLCaP / (CHASTE_MATH::Pow(var_chaste_interface__Ca_Concentrations__Ca_j, CHASTE_CONST(1.6000000000000001)) + CHASTE_MATH::Pow(var_parameters__KmPCa, CHASTE_CONST(1.6000000000000001))); // uA_per_uF + const double var_I_PCa__I_pca_sl = CHASTE_MATH::Pow(var_chaste_interface__Ca_Concentrations__Ca_sl, CHASTE_CONST(1.6000000000000001)) * CHASTE_MATH::Pow(var_parameters__Q10SLCaP, var_parameters__Qpow) * var_parameters__Fsl * var_parameters__IbarSLCaP / (CHASTE_MATH::Pow(var_chaste_interface__Ca_Concentrations__Ca_sl, CHASTE_CONST(1.6000000000000001)) + CHASTE_MATH::Pow(var_parameters__KmPCa, CHASTE_CONST(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(NV_Ith_S(mParameters, 4) / NV_Ith_S(mParameters, 6)) / var_parameters__FoRT; // mV - const double var_parameters__ek = 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_PCa__I_pca_converted = CHASTE_CAP() * var_I_PCa__I_pca; // uA_per_cm2 + const double var_parameters__ecl = CHASTE_MATH::Log(NV_Ith_S(mParameters, 4) / NV_Ith_S(mParameters, 6)) / var_parameters__FoRT; // mV + const double var_parameters__ek = CHASTE_MATH::Log(NV_Ith_S(mParameters, 7) / var_chaste_interface__K_Concentration__K_i) / var_parameters__FoRT; // mV + const double var_I_Ki__aki = CHASTE_CONST(1.02) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__membrane_potential__V_m - CHASTE_CONST(0.23849999999999999) * var_parameters__ek)); // dimensionless + const double var_I_Ki__bki = (CHASTE_CONST(0.49124000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.43983232) + CHASTE_CONST(0.080320000000000003) * var_chaste_interface__membrane_potential__V_m - CHASTE_CONST(0.080320000000000003) * var_parameters__ek) + CHASTE_MATH::Exp(-CHASTE_CONST(36.698642499999998) + CHASTE_CONST(0.061749999999999999) * var_chaste_interface__membrane_potential__V_m - CHASTE_CONST(0.061749999999999999) * var_parameters__ek)) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.4444678999999998) + CHASTE_CONST(0.51429999999999998) * var_parameters__ek - CHASTE_CONST(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_Ki__I_ki_converted = CHASTE_CAP() * 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(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 = 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_Kr__I_kr_converted = CHASTE_CAP() * var_I_Kr__I_kr; // uA_per_cm2 + const double var_parameters__ena_junc = CHASTE_MATH::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 = CHASTE_MATH::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 = CHASTE_MATH::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 = CHASTE_MATH::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_I_Na__I_Na_converted = CHASTE_CAP() * 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__GtoFast = ((var_parameters__epi == 1) ? (CHASTE_CONST(0.1144) * NV_Ith_S(mParameters, 16)) : (CHASTE_CONST(0.0014039999999999999) * NV_Ith_S(mParameters, 16))); // mS_per_uF + const double var_I_to__GtoSlow = ((var_parameters__epi == 1) ? (CHASTE_CONST(0.015599999999999999) * NV_Ith_S(mParameters, 20)) : (CHASTE_CONST(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_tof_converted = CHASTE_CAP() * 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_I_to__I_to_converted = CHASTE_CAP() * var_I_to__I_to; // uA_per_cm2 + const double var_I_to__I_tos_converted = CHASTE_CAP() * var_I_to__I_tos; // uA_per_cm2 + const double var_parameters__hillSRCaP = CHASTE_CONST(1.7869999999999999); // dimensionless + const double var_SR_Fluxes__J_serca = CHASTE_MATH::Pow(var_parameters__Q10SRCaP, var_parameters__Qpow) * (CHASTE_MATH::Pow((var_chaste_interface__Ca_Concentrations__Ca_i / var_parameters__Kmf), var_parameters__hillSRCaP) - CHASTE_MATH::Pow((var_chaste_interface__SR_Ca_Concentrations__Ca_sr / var_parameters__Kmr), var_parameters__hillSRCaP)) * NV_Ith_S(mParameters, 2) / (1 + CHASTE_MATH::Pow((var_chaste_interface__Ca_Concentrations__Ca_i / var_parameters__Kmf), var_parameters__hillSRCaP) + CHASTE_MATH::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 * 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_parameters__ksat = CHASTE_CONST(0.32000000000000001); // dimensionless + const double var_parameters__nu = CHASTE_CONST(0.27000000000000002); // dimensionless + const double var_I_NCX__s1_junc = CHASTE_MATH::Pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * NV_Ith_S(mParameters, 5) * CHASTE_MATH::Exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * var_parameters__nu); // mM4 + const double var_I_NCX__s1_sl = CHASTE_MATH::Pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * NV_Ith_S(mParameters, 5) * CHASTE_MATH::Exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * var_parameters__nu); // mM4 + const double var_I_NCX__s2_junc = CHASTE_MATH::Pow(NV_Ith_S(mParameters, 8), 3) * var_chaste_interface__Ca_Concentrations__Ca_j * CHASTE_MATH::Exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT); // mM4 + const double var_I_NCX__I_ncx_junc = CHASTE_MATH::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 * CHASTE_MATH::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 = CHASTE_MATH::Pow(NV_Ith_S(mParameters, 8), 3) * var_chaste_interface__Ca_Concentrations__Ca_sl * CHASTE_MATH::Exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT); // mM4 + const double var_I_NCX__I_ncx_sl = CHASTE_MATH::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 * CHASTE_MATH::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_NCX__I_ncx_converted = CHASTE_CAP() * var_I_NCX__I_ncx; // uA_per_cm2 + const double var_parameters__pCa = CHASTE_CONST(0.00054000000000000001) * NV_Ith_S(mParameters, 11); // cm_per_sec + const double var_I_Ca__ibarca_j = 4 * (-CHASTE_CONST(0.34100000000000003) * NV_Ith_S(mParameters, 5) + CHASTE_CONST(0.34100000000000003) * var_chaste_interface__Ca_Concentrations__Ca_j * CHASTE_MATH::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 + CHASTE_MATH::Exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_Ca_junc = CHASTE_CONST(0.45000000000000001) * CHASTE_MATH::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 * (-CHASTE_CONST(0.34100000000000003) * NV_Ith_S(mParameters, 5) + CHASTE_CONST(0.34100000000000003) * var_chaste_interface__Ca_Concentrations__Ca_sl * CHASTE_MATH::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 + CHASTE_MATH::Exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_Ca_sl = CHASTE_CONST(0.45000000000000001) * CHASTE_MATH::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((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 + const double var_I_Ca__I_Ca_converted = CHASTE_CAP() * var_I_Ca__I_Ca; // uA_per_cm2 + const double var_parameters__pNaK = CHASTE_CONST(0.018329999999999999); // dimensionless + const double var_I_Ks__eks = CHASTE_MATH::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 = CHASTE_MATH::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 = CHASTE_CAP() * var_I_Ks__I_ks; // uA_per_cm2 #if CHASTE_SUNDIALS_VERSION >= 60000 N_Vector dqs = N_VNew_Serial(27, CvodeContextManager::Instance()->GetSundialsContext()); @@ -1423,4 +1425,5 @@ void OdeSystemInformation #include "AbstractStimulusFunction.hpp" +#if USING_DEVICE_COMPILER +#include "StimulusEvaluatorCuda.hpp" +#endif #include "AbstractCvodeCellWithDataClamp.hpp" +#include "HostDeviceMacros.hpp" class Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClampOpt : public AbstractCvodeCellWithDataClamp { @@ -40,6 +44,10 @@ class Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClampOpt : public Abs const bool is_concentration[39] = {false, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true, true, true, true, true, true}; const bool is_probability[39] = {false, false, true, true, true, false, false, false, false, false, false, true, true, false, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false}; public: + static constexpr unsigned TOTAL_SIZE = 39u; + static constexpr unsigned NNZ = 0u; + static inline const int sparse_rowptr[] = { }; + static inline const int sparse_colind[] = { }; boost::shared_ptr UseCellMLDefaultStimulus(); double GetIntracellularCalciumConcentration(); @@ -49,7 +57,11 @@ const bool is_probability[39] = {false, false, true, true, true, false, false, f AbstractLookupTableCollection* GetLookupTableCollection(); double GetIIonic(const std::vector* pStateVariables=NULL); void EvaluateYDerivatives(double var_chaste_interface__environment__time, const N_Vector rY, N_Vector rDY); + N_Vector ComputeDerivedQuantities(double var_chaste_interface__environment__time, const N_Vector & rY); +#if USING_DEVICE_COMPILER + +#endif }; // Needs to be included last @@ -86,4 +98,7 @@ namespace boost } #endif // CELLGRANDI_PASQUALINI_BERS_2010_SSFROMCELLMLCVODEDATACLAMPOPT_HPP_ + + + #endif // CHASTE_CVODE \ No newline at end of file diff --git a/chaste_codegen/data/tests/chaste_reference_models/CVODE_DATA_CLAMP_OPT/hodgkin_huxley_squid_axon_model_1952_modified.cpp b/chaste_codegen/data/tests/chaste_reference_models/CVODE_DATA_CLAMP_OPT/hodgkin_huxley_squid_axon_model_1952_modified.cpp index c1e38f90a..4e564317a 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/CVODE_DATA_CLAMP_OPT/hodgkin_huxley_squid_axon_model_1952_modified.cpp +++ b/chaste_codegen/data/tests/chaste_reference_models/CVODE_DATA_CLAMP_OPT/hodgkin_huxley_squid_axon_model_1952_modified.cpp @@ -22,6 +22,8 @@ #include "HeartConfig.hpp" #include "IsNan.hpp" #include "MathsCustomFunctions.hpp" +#include "ChasteMathDeviceNamespaces.hpp" +#include "ChasteCpuMacros.hpp" #if CHASTE_SUNDIALS_VERSION >= 60000 #include "CvodeContextManager.hpp" @@ -148,7 +150,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 (((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)))); + return (((CHASTE_CONST(6.5) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V >= -CHASTE_CONST(9.9999999999999995e-8)) && (CHASTE_CONST(6.5) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V <= CHASTE_CONST(9.9999999999999995e-8))) ? (CHASTE_CONST(0.42499999999999999) + CHASTE_CONST(0.0050000000000000001) * var_chaste_interface__membrane__V) : (-CHASTE_CONST(0.099999999999999992) * (CHASTE_CONST(6.5) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(6.5) - CHASTE_CONST(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); @@ -170,7 +172,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 exp(0.9375 + 0.012500000000000001 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(CHASTE_CONST(0.9375) + CHASTE_CONST(0.012500000000000001) * 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); @@ -181,7 +183,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 exp(-3.75 - 0.050000000000000003 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(-CHASTE_CONST(3.75) - CHASTE_CONST(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); @@ -192,7 +194,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 + CHASTE_MATH::Exp(-CHASTE_CONST(4.5) - CHASTE_CONST(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 +205,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 (((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)))); + return (((5 + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V >= -CHASTE_CONST(9.9999999999999995e-8)) && (5 + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V <= CHASTE_CONST(9.9999999999999995e-8))) ? (CHASTE_CONST(3.5) + CHASTE_CONST(0.050000000000000003) * var_chaste_interface__membrane__V) : (-(5 + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V) / (-1 + CHASTE_MATH::Exp(-5 - CHASTE_CONST(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); @@ -225,7 +227,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 exp(-4.166666666666667 - 0.055555555555555552 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(-CHASTE_CONST(4.166666666666667) - CHASTE_CONST(0.055555555555555552) * 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); @@ -259,7 +261,7 @@ std::shared_ptr p_cellml_stim(new RegularStimulus( @@ -290,7 +292,7 @@ std::shared_ptrmParameters, 0) = 1; // (var_membrane__Cm) [microF_per_cm2] NV_Ith_S(this->mParameters, 1) = 0; // (var_membrane_data_clamp_current_conductance) [dimensionless] NV_Ith_S(this->mParameters, 2) = 120; // (var_sodium_channel__g_Na) [milliS_per_cm2] - NV_Ith_S(this->mParameters, 3) = 0.29999999999999999; // (var_leakage_current__g_L) [milliS_per_cm2] + NV_Ith_S(this->mParameters, 3) = CHASTE_CONST(0.29999999999999999); // (var_leakage_current__g_L) [milliS_per_cm2] NV_Ith_S(this->mParameters, 4) = 36; // (var_potassium_channel__g_K) [milliS_per_cm2] } @@ -351,7 +353,7 @@ std::shared_ptrmFixedVoltage : NV_Ith_S(rY, 0)); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -361,9 +363,9 @@ std::shared_ptrmFixedVoltage : NV_Ith_S(rY, 0)); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -398,8 +400,8 @@ std::shared_ptrmFixedVoltage : NV_Ith_S(rY, 0)); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -433,20 +435,20 @@ std::shared_ptr= 60000 N_Vector dqs = N_VNew_Serial(6, CvodeContextManager::Instance()->GetSundialsContext()); @@ -540,4 +542,5 @@ void OdeSystemInformation #include "AbstractStimulusFunction.hpp" +#if USING_DEVICE_COMPILER +#include "StimulusEvaluatorCuda.hpp" +#endif #include "AbstractCvodeCellWithDataClamp.hpp" +#include "HostDeviceMacros.hpp" class Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLCvodeDataClampOpt : public AbstractCvodeCellWithDataClamp { @@ -38,6 +42,10 @@ class Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLCvodeDataClampO const bool is_concentration[4] = {false, false, false, false}; const bool is_probability[4] = {false, false, false, false}; public: + static constexpr unsigned TOTAL_SIZE = 4u; + static constexpr unsigned NNZ = 0u; + static inline const int sparse_rowptr[] = { }; + static inline const int sparse_colind[] = { }; boost::shared_ptr UseCellMLDefaultStimulus(); Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLCvodeDataClampOpt(boost::shared_ptr pOdeSolver /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus); @@ -46,7 +54,11 @@ const bool is_probability[4] = {false, false, false, false}; AbstractLookupTableCollection* GetLookupTableCollection(); double GetIIonic(const std::vector* pStateVariables=NULL); void EvaluateYDerivatives(double var_chaste_interface__environment__time, const N_Vector rY, N_Vector rDY); + N_Vector ComputeDerivedQuantities(double var_chaste_interface__environment__time, const N_Vector & rY); +#if USING_DEVICE_COMPILER + +#endif }; // Needs to be included last @@ -83,4 +95,7 @@ namespace boost } #endif // CELLHODGKIN_HUXLEY_SQUID_AXON_MODEL_1952_MODIFIEDFROMCELLMLCVODEDATACLAMPOPT_HPP_ + + + #endif // CHASTE_CVODE \ No newline at end of file diff --git a/chaste_codegen/data/tests/chaste_reference_models/Cvode/difrancesco_noble_model_1985.cpp b/chaste_codegen/data/tests/chaste_reference_models/Cvode/difrancesco_noble_model_1985.cpp index ec8ce516f..2d689b21f 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/Cvode/difrancesco_noble_model_1985.cpp +++ b/chaste_codegen/data/tests/chaste_reference_models/Cvode/difrancesco_noble_model_1985.cpp @@ -22,6 +22,8 @@ #include "HeartConfig.hpp" #include "IsNan.hpp" #include "MathsCustomFunctions.hpp" +#include "ChasteMathDeviceNamespaces.hpp" +#include "ChasteCpuMacros.hpp" #if CHASTE_SUNDIALS_VERSION >= 60000 #include "CvodeContextManager.hpp" @@ -34,7 +36,7 @@ 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_amplitude_converted = -CHASTE_CONST(0.5) * CHASTE_CAP() / 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 @@ -69,14 +71,14 @@ 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, 1) = CHASTE_CONST(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, 8) = CHASTE_CONST(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] @@ -84,8 +86,8 @@ 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] + NV_Ith_S(this->mParameters, 16) = CHASTE_CONST(0.02); // (var_Na_Ca_exchanger__K_NaCa) [nanoA] + NV_Ith_S(this->mParameters, 17) = CHASTE_CONST(0.28000000000000003); // (var_transient_outward_current__g_to) [microS_per_millimolar] } Celldifrancesco_noble_model_1985FromCellMLCvode::~Celldifrancesco_noble_model_1985FromCellMLCvode() @@ -141,7 +143,7 @@ made_new_cvode_vector = true; rY = MakeNVector(*pStateVariables); } - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -168,48 +170,48 @@ 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__d_NaCa = CHASTE_CONST(0.001); // dimensionless + const double var_Na_Ca_exchanger__gamma = CHASTE_CONST(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_calcium_background_current__g_Cab = CHASTE_CONST(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__F = CHASTE_CONST(96485.341499999995); // coulomb_per_mole + const double var_membrane__R = CHASTE_CONST(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((NV_Ith_S(mParameters, 6) + 0.12 * var_chaste_interface__extracellular_potassium_concentration__Kc) / (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__E_Ca = CHASTE_CONST(0.5) * var_membrane__RTONF * CHASTE_MATH::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 * CHASTE_MATH::Log((NV_Ith_S(mParameters, 6) + CHASTE_CONST(0.12) * var_chaste_interface__extracellular_potassium_concentration__Kc) / (var_chaste_interface__intracellular_sodium_concentration__Nai + CHASTE_CONST(0.12) * var_chaste_interface__intracellular_potassium_concentration__Ki)); // millivolt + const double var_hyperpolarising_activated_current__E_K = var_membrane__RTONF * CHASTE_MATH::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 * CHASTE_MATH::Log(NV_Ith_S(mParameters, 6) / var_chaste_interface__intracellular_sodium_concentration__Nai); // millivolt + const double var_Na_Ca_exchanger__i_NaCa = (CHASTE_MATH::Pow(var_chaste_interface__intracellular_sodium_concentration__Nai, var_Na_Ca_exchanger__n_NaCa) * NV_Ith_S(mParameters, 5) * CHASTE_MATH::Exp((-2 + var_Na_Ca_exchanger__n_NaCa) * var_Na_Ca_exchanger__gamma * var_chaste_interface__membrane__V / var_membrane__RTONF) - CHASTE_MATH::Pow(NV_Ith_S(mParameters, 6), var_Na_Ca_exchanger__n_NaCa) * var_chaste_interface__intracellular_calcium_concentration__Cai * CHASTE_MATH::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 + CHASTE_CONST(144.92753623188406) * var_chaste_interface__intracellular_calcium_concentration__Cai) * (1 + (CHASTE_MATH::Pow(NV_Ith_S(mParameters, 6), var_Na_Ca_exchanger__n_NaCa) * var_chaste_interface__intracellular_calcium_concentration__Cai + CHASTE_MATH::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 = CHASTE_CONST(0.001) * CHASTE_CAP() * 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_fast_sodium_current__i_Na = CHASTE_MATH::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 = CHASTE_CONST(0.001) * CHASTE_CAP() * 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_hyperpolarising_activated_current__i_f_converted = CHASTE_CONST(0.001) * CHASTE_CAP() * 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 >= CHASTE_CONST(49.999998664311967)) && (var_chaste_interface__membrane__V <= CHASTE_CONST(50.000001335688033))) ? (CHASTE_CONST(374338.90823576227) * (-CHASTE_CONST(49.999998664311967) + var_chaste_interface__membrane__V) * (CHASTE_CONST(1.9999999999556149e-7) * (var_chaste_interface__intracellular_calcium_concentration__Cai * CHASTE_MATH::Exp(CHASTE_CONST(3.7433890822745473)) - NV_Ith_S(mParameters, 5) * CHASTE_MATH::Exp(CHASTE_CONST(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 - CHASTE_MATH::Exp(CHASTE_CONST(9.9999999997780743e-8))) + CHASTE_CONST(1.9999999999556149e-7) * (var_chaste_interface__intracellular_calcium_concentration__Cai * CHASTE_MATH::Exp(CHASTE_CONST(3.7433890822745473)) - NV_Ith_S(mParameters, 5) * CHASTE_MATH::Exp(-CHASTE_CONST(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 - CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999997780743e-8)))) - CHASTE_CONST(1.9999999999556149e-7) * (var_chaste_interface__intracellular_calcium_concentration__Cai * CHASTE_MATH::Exp(CHASTE_CONST(3.7433890822745473)) - NV_Ith_S(mParameters, 5) * CHASTE_MATH::Exp(CHASTE_CONST(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 - CHASTE_MATH::Exp(CHASTE_CONST(9.9999999997780743e-8)))) : (CHASTE_CONST(0.14973556329098189) * (-50 + var_chaste_interface__membrane__V) * (var_chaste_interface__intracellular_calcium_concentration__Cai * CHASTE_MATH::Exp(CHASTE_CONST(3.7433890822745473)) - NV_Ith_S(mParameters, 5) * CHASTE_MATH::Exp(CHASTE_CONST(3.7433890822745473) - CHASTE_CONST(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 - CHASTE_MATH::Exp(CHASTE_CONST(3.7433890822745473) - CHASTE_CONST(0.074867781645490947) * var_chaste_interface__membrane__V)))); // nanoA + const double var_second_inward_current__i_siK = (((var_chaste_interface__membrane__V >= CHASTE_CONST(49.999997328623934)) && (var_chaste_interface__membrane__V <= CHASTE_CONST(50.000002671376066))) ? (CHASTE_CONST(187169.45411399176) * (-CHASTE_CONST(49.999997328623934) + var_chaste_interface__membrane__V) * (CHASTE_CONST(9.9999999999858744e-10) * (var_chaste_interface__intracellular_potassium_concentration__Ki * CHASTE_MATH::Exp(CHASTE_CONST(1.8716945411372736)) - var_chaste_interface__extracellular_potassium_concentration__Kc * CHASTE_MATH::Exp(CHASTE_CONST(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 - CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999858739e-8))) + CHASTE_CONST(9.9999999999858744e-10) * (var_chaste_interface__intracellular_potassium_concentration__Ki * CHASTE_MATH::Exp(CHASTE_CONST(1.8716945411372736)) - var_chaste_interface__extracellular_potassium_concentration__Kc * CHASTE_MATH::Exp(-CHASTE_CONST(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 - CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999858739e-8)))) - CHASTE_CONST(9.9999999999858744e-10) * (var_chaste_interface__intracellular_potassium_concentration__Ki * CHASTE_MATH::Exp(CHASTE_CONST(1.8716945411372736)) - var_chaste_interface__extracellular_potassium_concentration__Kc * CHASTE_MATH::Exp(CHASTE_CONST(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 - CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999858739e-8)))) : (CHASTE_CONST(0.00037433890822745472) * (-50 + var_chaste_interface__membrane__V) * (var_chaste_interface__intracellular_potassium_concentration__Ki * CHASTE_MATH::Exp(CHASTE_CONST(1.8716945411372736)) - var_chaste_interface__extracellular_potassium_concentration__Kc * CHASTE_MATH::Exp(CHASTE_CONST(1.8716945411372736) - CHASTE_CONST(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 - CHASTE_MATH::Exp(CHASTE_CONST(1.8716945411372736) - CHASTE_CONST(0.037433890822745473) * var_chaste_interface__membrane__V)))); // nanoA + const double var_second_inward_current__i_siNa = (((var_chaste_interface__membrane__V >= CHASTE_CONST(49.999997328623934)) && (var_chaste_interface__membrane__V <= CHASTE_CONST(50.000002671376066))) ? (CHASTE_CONST(187169.45411399176) * (-CHASTE_CONST(49.999997328623934) + var_chaste_interface__membrane__V) * (CHASTE_CONST(9.9999999999858744e-10) * (var_chaste_interface__intracellular_sodium_concentration__Nai * CHASTE_MATH::Exp(CHASTE_CONST(1.8716945411372736)) - NV_Ith_S(mParameters, 6) * CHASTE_MATH::Exp(CHASTE_CONST(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 - CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999858739e-8))) + CHASTE_CONST(9.9999999999858744e-10) * (var_chaste_interface__intracellular_sodium_concentration__Nai * CHASTE_MATH::Exp(CHASTE_CONST(1.8716945411372736)) - NV_Ith_S(mParameters, 6) * CHASTE_MATH::Exp(-CHASTE_CONST(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 - CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999858739e-8)))) - CHASTE_CONST(9.9999999999858744e-10) * (var_chaste_interface__intracellular_sodium_concentration__Nai * CHASTE_MATH::Exp(CHASTE_CONST(1.8716945411372736)) - NV_Ith_S(mParameters, 6) * CHASTE_MATH::Exp(CHASTE_CONST(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 - CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999858739e-8)))) : (CHASTE_CONST(0.00037433890822745472) * (-50 + var_chaste_interface__membrane__V) * (var_chaste_interface__intracellular_sodium_concentration__Nai * CHASTE_MATH::Exp(CHASTE_CONST(1.8716945411372736)) - NV_Ith_S(mParameters, 6) * CHASTE_MATH::Exp(CHASTE_CONST(1.8716945411372736) - CHASTE_CONST(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 - CHASTE_MATH::Exp(CHASTE_CONST(1.8716945411372736) - CHASTE_CONST(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_second_inward_current__i_si_converted = CHASTE_CONST(0.001) * CHASTE_CAP() * var_second_inward_current__i_si / NV_Ith_S(mParameters, 8); // uA_per_cm2 + const double var_sodium_background_current__g_Nab = CHASTE_CONST(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 = CHASTE_CONST(0.0071428571428571426) * (-var_chaste_interface__extracellular_potassium_concentration__Kc * CHASTE_MATH::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_dependent_potassium_current__i_K_converted = CHASTE_CONST(0.001) * CHASTE_CAP() * 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 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 + CHASTE_MATH::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 = CHASTE_CONST(0.001) * CHASTE_CAP() * 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 >= -CHASTE_CONST(10.000000500000001)) && (var_chaste_interface__membrane__V <= -CHASTE_CONST(9.9999994999999995))) ? (CHASTE_CONST(999999.99999899988) * (CHASTE_CONST(10.000000500000001) + var_chaste_interface__membrane__V) * (CHASTE_CONST(5.0000000000050004e-7) * (CHASTE_CONST(0.20000000000000001) + var_chaste_interface__extracellular_potassium_concentration__Kc / (10 + var_chaste_interface__extracellular_potassium_concentration__Kc)) * (var_chaste_interface__intracellular_potassium_concentration__Ki * CHASTE_MATH::Exp(-CHASTE_CONST(0.18716946347220006)) - var_chaste_interface__extracellular_potassium_concentration__Kc * CHASTE_MATH::Exp(CHASTE_CONST(0.18716946347220006))) * var_chaste_interface__intracellular_calcium_concentration__Cai * NV_Ith_S(mParameters, 17) * var_chaste_interface__transient_outward_current_s_gate__s / ((1 - CHASTE_MATH::Exp(CHASTE_CONST(1.0000000000010001e-7))) * (CHASTE_CONST(0.00050000000000000001) + var_chaste_interface__intracellular_calcium_concentration__Cai)) + CHASTE_CONST(5.0000000000050004e-7) * (CHASTE_CONST(0.20000000000000001) + var_chaste_interface__extracellular_potassium_concentration__Kc / (10 + var_chaste_interface__extracellular_potassium_concentration__Kc)) * (var_chaste_interface__intracellular_potassium_concentration__Ki * CHASTE_MATH::Exp(-CHASTE_CONST(0.18716944475525465)) - var_chaste_interface__extracellular_potassium_concentration__Kc * CHASTE_MATH::Exp(CHASTE_CONST(0.18716944475525465))) * var_chaste_interface__intracellular_calcium_concentration__Cai * NV_Ith_S(mParameters, 17) * var_chaste_interface__transient_outward_current_s_gate__s / ((1 - CHASTE_MATH::Exp(-CHASTE_CONST(1.0000000000010001e-7))) * (CHASTE_CONST(0.00050000000000000001) + var_chaste_interface__intracellular_calcium_concentration__Cai))) - CHASTE_CONST(5.0000000000050004e-7) * (CHASTE_CONST(0.20000000000000001) + var_chaste_interface__extracellular_potassium_concentration__Kc / (10 + var_chaste_interface__extracellular_potassium_concentration__Kc)) * (var_chaste_interface__intracellular_potassium_concentration__Ki * CHASTE_MATH::Exp(-CHASTE_CONST(0.18716946347220006)) - var_chaste_interface__extracellular_potassium_concentration__Kc * CHASTE_MATH::Exp(CHASTE_CONST(0.18716946347220006))) * var_chaste_interface__intracellular_calcium_concentration__Cai * NV_Ith_S(mParameters, 17) * var_chaste_interface__transient_outward_current_s_gate__s / ((1 - CHASTE_MATH::Exp(CHASTE_CONST(1.0000000000010001e-7))) * (CHASTE_CONST(0.00050000000000000001) + var_chaste_interface__intracellular_calcium_concentration__Cai))) : ((10 + var_chaste_interface__membrane__V) * (CHASTE_CONST(0.20000000000000001) + var_chaste_interface__extracellular_potassium_concentration__Kc / (10 + var_chaste_interface__extracellular_potassium_concentration__Kc)) * (var_chaste_interface__intracellular_potassium_concentration__Ki * CHASTE_MATH::Exp(CHASTE_CONST(0.018716945411372737) * var_chaste_interface__membrane__V) - var_chaste_interface__extracellular_potassium_concentration__Kc * CHASTE_MATH::Exp(-CHASTE_CONST(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 - CHASTE_MATH::Exp(-2 - CHASTE_CONST(0.20000000000000001) * var_chaste_interface__membrane__V)) * (CHASTE_CONST(0.00050000000000000001) + var_chaste_interface__intracellular_calcium_concentration__Cai)))); // nanoA + const double var_transient_outward_current__i_to_converted = CHASTE_CONST(0.001) * CHASTE_CAP() * 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) + CHASTE_CONST(0.001) * CHASTE_CAP() * var_calcium_background_current__i_Ca_b + CHASTE_CONST(0.001) * CHASTE_CAP() * var_sodium_background_current__i_Na_b + CHASTE_CONST(0.001) * CHASTE_CAP() * 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) @@ -224,7 +226,7 @@ { // Inputs: // Time units: millisecond - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -259,115 +261,115 @@ // 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__d_NaCa = CHASTE_CONST(0.001); // dimensionless + const double var_Na_Ca_exchanger__gamma = CHASTE_CONST(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_calcium_background_current__g_Cab = CHASTE_CONST(0.02); // microS + const double var_extracellular_potassium_concentration__Ve = CHASTE_CONST(0.00157); // micrometre3 + const double var_extracellular_potassium_concentration__pf = CHASTE_CONST(0.69999999999999996); // per_second + const double var_fast_sodium_current_m_gate__delta_m = CHASTE_CONST(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_hyperpolarising_activated_current_y_gate__delta_y = CHASTE_CONST(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_rel = CHASTE_CONST(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_calcium_concentration__tau_up = CHASTE_CONST(0.025000000000000001); // second + const double var_intracellular_sodium_concentration__V_e_ratio = CHASTE_CONST(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__radius = CHASTE_CONST(0.050000000000000003); // micrometre + const double var_intracellular_sodium_concentration__V_Cell = CHASTE_CONST(3.1415926540000001) * CHASTE_MATH::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__V_rel = CHASTE_CONST(0.02) * var_intracellular_sodium_concentration__Vi; // micrometre3 + const double var_intracellular_calcium_concentration__V_up = CHASTE_CONST(0.050000000000000003) * var_intracellular_sodium_concentration__Vi; // micrometre3 + const double var_membrane__F = CHASTE_CONST(96485.341499999995); // coulomb_per_mole + const double var_intracellular_calcium_concentration__i_rel = 2 * CHASTE_MATH::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 / ((CHASTE_MATH::Pow(var_chaste_interface__intracellular_calcium_concentration__Cai, var_intracellular_calcium_concentration__rCa) + CHASTE_MATH::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__Ca_rel_orig_deriv = CHASTE_CONST(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 = CHASTE_CONST(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_intracellular_calcium_concentration__Ca_up_orig_deriv = CHASTE_CONST(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 = CHASTE_CONST(0.001) * var_intracellular_calcium_concentration__Ca_up_orig_deriv; // millimolar / millisecond + const double var_membrane__R = CHASTE_CONST(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((NV_Ith_S(mParameters, 6) + 0.12 * var_chaste_interface__extracellular_potassium_concentration__Kc) / (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__E_Ca = CHASTE_CONST(0.5) * var_membrane__RTONF * CHASTE_MATH::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 * CHASTE_MATH::Log((NV_Ith_S(mParameters, 6) + CHASTE_CONST(0.12) * var_chaste_interface__extracellular_potassium_concentration__Kc) / (var_chaste_interface__intracellular_sodium_concentration__Nai + CHASTE_CONST(0.12) * var_chaste_interface__intracellular_potassium_concentration__Ki)); // millivolt + const double var_hyperpolarising_activated_current__E_K = var_membrane__RTONF * CHASTE_MATH::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 * CHASTE_MATH::Log(NV_Ith_S(mParameters, 6) / var_chaste_interface__intracellular_sodium_concentration__Nai); // millivolt + const double var_Na_Ca_exchanger__i_NaCa = (CHASTE_MATH::Pow(var_chaste_interface__intracellular_sodium_concentration__Nai, var_Na_Ca_exchanger__n_NaCa) * NV_Ith_S(mParameters, 5) * CHASTE_MATH::Exp((-2 + var_Na_Ca_exchanger__n_NaCa) * var_Na_Ca_exchanger__gamma * var_chaste_interface__membrane__V / var_membrane__RTONF) - CHASTE_MATH::Pow(NV_Ith_S(mParameters, 6), var_Na_Ca_exchanger__n_NaCa) * var_chaste_interface__intracellular_calcium_concentration__Cai * CHASTE_MATH::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 + CHASTE_CONST(144.92753623188406) * var_chaste_interface__intracellular_calcium_concentration__Cai) * (1 + (CHASTE_MATH::Pow(NV_Ith_S(mParameters, 6), var_Na_Ca_exchanger__n_NaCa) * var_chaste_interface__intracellular_calcium_concentration__Cai + CHASTE_MATH::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__i_Na = CHASTE_MATH::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 * CHASTE_MATH::Exp(-CHASTE_CONST(9.375) + CHASTE_CONST(0.125) * NV_Ith_S(mParameters, 12) - CHASTE_CONST(0.125) * var_chaste_interface__membrane__V); // per_second + const double var_fast_sodium_current_h_gate__beta_h = 2000 / (1 + 320 * CHASTE_MATH::Exp(-CHASTE_CONST(7.5) + CHASTE_CONST(0.10000000000000001) * NV_Ith_S(mParameters, 12) - CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V)); // per_second + const double var_fast_sodium_current_h_gate__h_inf = CHASTE_CONST(0.01) * NV_Ith_S(mParameters, 11) + (1 - CHASTE_CONST(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 d_dt_chaste_interface_var_fast_sodium_current_h_gate__h = CHASTE_CONST(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__alpha_m = ((var_fast_sodium_current_m_gate__delta_m > CHASTE_MATH::Abs(var_fast_sodium_current_m_gate__E0_m)) ? (2000) : (200 * var_fast_sodium_current_m_gate__E0_m / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(0.10000000000000001) * var_fast_sodium_current_m_gate__E0_m)))); // per_second + const double var_fast_sodium_current_m_gate__beta_m = 8000 * CHASTE_MATH::Exp(-CHASTE_CONST(3.6960000000000002) - CHASTE_CONST(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 d_dt_chaste_interface_var_fast_sodium_current_m_gate__m = CHASTE_CONST(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) : (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__alpha_y = CHASTE_CONST(0.050000000000000003) * CHASTE_MATH::Exp(-CHASTE_CONST(2.8140000000000001) - CHASTE_CONST(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 > CHASTE_MATH::Abs(var_hyperpolarising_activated_current_y_gate__E0_y)) ? (CHASTE_CONST(2.5)) : (var_hyperpolarising_activated_current_y_gate__E0_y / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(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 d_dt_chaste_interface_var_hyperpolarising_activated_current_y_gate__y = CHASTE_CONST(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 >= -CHASTE_CONST(34.000000399999998)) && (var_chaste_interface__membrane__V <= -CHASTE_CONST(33.999999600000002))) ? (-CHASTE_CONST(2.5000000000718892e-7) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(1.0000000000287557e-7))) + CHASTE_CONST(1249999.9999640554) * (CHASTE_CONST(34.000000399999998) + var_chaste_interface__membrane__V) * (CHASTE_CONST(2.5000000000718892e-7) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(1.0000000000287557e-7))) + CHASTE_CONST(2.5000000000718892e-7) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(1.0000000000287557e-7))))) : (CHASTE_CONST(0.625) * (34 + var_chaste_interface__membrane__V) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(8.5) + CHASTE_CONST(0.25) * var_chaste_interface__membrane__V)))); // per_second + const double var_intracellular_calcium_concentration__beta_p = 5 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(8.5) - CHASTE_CONST(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 d_dt_chaste_interface_var_intracellular_calcium_concentration__p = CHASTE_CONST(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__delta_d = CHASTE_CONST(0.0001); // millivolt + const double var_second_inward_current_d_gate__alpha_d = ((var_second_inward_current_d_gate__delta_d > CHASTE_MATH::Abs(var_second_inward_current_d_gate__E0_d)) ? (120) : (30 * var_second_inward_current_d_gate__E0_d / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(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 > CHASTE_MATH::Abs(var_second_inward_current_d_gate__E0_d)) ? (120) : (12 * var_second_inward_current_d_gate__E0_d / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(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 d_dt_chaste_interface_var_second_inward_current_d_gate__d = CHASTE_CONST(0.001) * var_second_inward_current_d_gate__d_orig_deriv; // 1 / millisecond + const double var_second_inward_current_f2_gate__K_mf2 = CHASTE_CONST(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 d_dt_chaste_interface_var_second_inward_current_f2_gate__f2 = CHASTE_CONST(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__beta_f = 50 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(8.5) - CHASTE_CONST(0.25) * var_chaste_interface__membrane__V)); // per_second + const double var_second_inward_current_f_gate__delta_f = CHASTE_CONST(0.0001); // millivolt + const double var_second_inward_current_f_gate__alpha_f = ((var_second_inward_current_f_gate__delta_f > CHASTE_MATH::Abs(var_second_inward_current_f_gate__E0_f)) ? (25) : (CHASTE_CONST(6.25) * var_second_inward_current_f_gate__E0_f / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(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 >= CHASTE_CONST(49.999998664311967)) && (var_chaste_interface__membrane__V <= CHASTE_CONST(50.000001335688033))) ? (CHASTE_CONST(374338.90823576227) * (-CHASTE_CONST(49.999998664311967) + var_chaste_interface__membrane__V) * (CHASTE_CONST(1.9999999999556149e-7) * (var_chaste_interface__intracellular_calcium_concentration__Cai * CHASTE_MATH::Exp(CHASTE_CONST(3.7433890822745473)) - NV_Ith_S(mParameters, 5) * CHASTE_MATH::Exp(CHASTE_CONST(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 - CHASTE_MATH::Exp(CHASTE_CONST(9.9999999997780743e-8))) + CHASTE_CONST(1.9999999999556149e-7) * (var_chaste_interface__intracellular_calcium_concentration__Cai * CHASTE_MATH::Exp(CHASTE_CONST(3.7433890822745473)) - NV_Ith_S(mParameters, 5) * CHASTE_MATH::Exp(-CHASTE_CONST(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 - CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999997780743e-8)))) - CHASTE_CONST(1.9999999999556149e-7) * (var_chaste_interface__intracellular_calcium_concentration__Cai * CHASTE_MATH::Exp(CHASTE_CONST(3.7433890822745473)) - NV_Ith_S(mParameters, 5) * CHASTE_MATH::Exp(CHASTE_CONST(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 - CHASTE_MATH::Exp(CHASTE_CONST(9.9999999997780743e-8)))) : (CHASTE_CONST(0.14973556329098189) * (-50 + var_chaste_interface__membrane__V) * (var_chaste_interface__intracellular_calcium_concentration__Cai * CHASTE_MATH::Exp(CHASTE_CONST(3.7433890822745473)) - NV_Ith_S(mParameters, 5) * CHASTE_MATH::Exp(CHASTE_CONST(3.7433890822745473) - CHASTE_CONST(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 - CHASTE_MATH::Exp(CHASTE_CONST(3.7433890822745473) - CHASTE_CONST(0.074867781645490947) * var_chaste_interface__membrane__V)))); // nanoA + const double var_intracellular_calcium_concentration__Cai_orig_deriv = -CHASTE_CONST(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 = CHASTE_CONST(0.001) * var_intracellular_calcium_concentration__Cai_orig_deriv; // millimolar / millisecond + const double var_second_inward_current__i_siK = (((var_chaste_interface__membrane__V >= CHASTE_CONST(49.999997328623934)) && (var_chaste_interface__membrane__V <= CHASTE_CONST(50.000002671376066))) ? (CHASTE_CONST(187169.45411399176) * (-CHASTE_CONST(49.999997328623934) + var_chaste_interface__membrane__V) * (CHASTE_CONST(9.9999999999858744e-10) * (var_chaste_interface__intracellular_potassium_concentration__Ki * CHASTE_MATH::Exp(CHASTE_CONST(1.8716945411372736)) - var_chaste_interface__extracellular_potassium_concentration__Kc * CHASTE_MATH::Exp(CHASTE_CONST(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 - CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999858739e-8))) + CHASTE_CONST(9.9999999999858744e-10) * (var_chaste_interface__intracellular_potassium_concentration__Ki * CHASTE_MATH::Exp(CHASTE_CONST(1.8716945411372736)) - var_chaste_interface__extracellular_potassium_concentration__Kc * CHASTE_MATH::Exp(-CHASTE_CONST(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 - CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999858739e-8)))) - CHASTE_CONST(9.9999999999858744e-10) * (var_chaste_interface__intracellular_potassium_concentration__Ki * CHASTE_MATH::Exp(CHASTE_CONST(1.8716945411372736)) - var_chaste_interface__extracellular_potassium_concentration__Kc * CHASTE_MATH::Exp(CHASTE_CONST(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 - CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999858739e-8)))) : (CHASTE_CONST(0.00037433890822745472) * (-50 + var_chaste_interface__membrane__V) * (var_chaste_interface__intracellular_potassium_concentration__Ki * CHASTE_MATH::Exp(CHASTE_CONST(1.8716945411372736)) - var_chaste_interface__extracellular_potassium_concentration__Kc * CHASTE_MATH::Exp(CHASTE_CONST(1.8716945411372736) - CHASTE_CONST(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 - CHASTE_MATH::Exp(CHASTE_CONST(1.8716945411372736) - CHASTE_CONST(0.037433890822745473) * var_chaste_interface__membrane__V)))); // nanoA + const double var_second_inward_current__i_siNa = (((var_chaste_interface__membrane__V >= CHASTE_CONST(49.999997328623934)) && (var_chaste_interface__membrane__V <= CHASTE_CONST(50.000002671376066))) ? (CHASTE_CONST(187169.45411399176) * (-CHASTE_CONST(49.999997328623934) + var_chaste_interface__membrane__V) * (CHASTE_CONST(9.9999999999858744e-10) * (var_chaste_interface__intracellular_sodium_concentration__Nai * CHASTE_MATH::Exp(CHASTE_CONST(1.8716945411372736)) - NV_Ith_S(mParameters, 6) * CHASTE_MATH::Exp(CHASTE_CONST(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 - CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999858739e-8))) + CHASTE_CONST(9.9999999999858744e-10) * (var_chaste_interface__intracellular_sodium_concentration__Nai * CHASTE_MATH::Exp(CHASTE_CONST(1.8716945411372736)) - NV_Ith_S(mParameters, 6) * CHASTE_MATH::Exp(-CHASTE_CONST(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 - CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999858739e-8)))) - CHASTE_CONST(9.9999999999858744e-10) * (var_chaste_interface__intracellular_sodium_concentration__Nai * CHASTE_MATH::Exp(CHASTE_CONST(1.8716945411372736)) - NV_Ith_S(mParameters, 6) * CHASTE_MATH::Exp(CHASTE_CONST(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 - CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999858739e-8)))) : (CHASTE_CONST(0.00037433890822745472) * (-50 + var_chaste_interface__membrane__V) * (var_chaste_interface__intracellular_sodium_concentration__Nai * CHASTE_MATH::Exp(CHASTE_CONST(1.8716945411372736)) - NV_Ith_S(mParameters, 6) * CHASTE_MATH::Exp(CHASTE_CONST(1.8716945411372736) - CHASTE_CONST(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 - CHASTE_MATH::Exp(CHASTE_CONST(1.8716945411372736) - CHASTE_CONST(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 d_dt_chaste_interface_var_second_inward_current_f_gate__f = CHASTE_CONST(0.001) * var_second_inward_current_f_gate__f_orig_deriv; // 1 / millisecond + const double var_sodium_background_current__g_Nab = CHASTE_CONST(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 = -(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 d_dt_chaste_interface_var_intracellular_sodium_concentration__Nai = CHASTE_CONST(0.001) * var_intracellular_sodium_concentration__Nai_orig_deriv; // millimolar / millisecond + const double var_time_dependent_potassium_current__I_K = CHASTE_CONST(0.0071428571428571426) * (-var_chaste_interface__extracellular_potassium_concentration__Kc * CHASTE_MATH::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 = CHASTE_CONST(0.5) * CHASTE_MATH::Exp(CHASTE_CONST(4.1300000000000008) + CHASTE_CONST(0.082600000000000007) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(2.8500000000000001) + CHASTE_CONST(0.057000000000000002) * var_chaste_interface__membrane__V)); // per_second + const double var_time_dependent_potassium_current_x_gate__beta_x = CHASTE_CONST(1.3) * CHASTE_MATH::Exp(-CHASTE_CONST(1.2) - CHASTE_CONST(0.059999999999999998) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.80000000000000004) - CHASTE_CONST(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 d_dt_chaste_interface_var_time_dependent_potassium_current_x_gate__x = CHASTE_CONST(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_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 + CHASTE_MATH::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 = CHASTE_CONST(0.033000000000000002) * CHASTE_MATH::Exp(-CHASTE_CONST(0.058823529411764705) * var_chaste_interface__membrane__V); // per_second + const double var_transient_outward_current_s_gate__beta_s = 33 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(1.25) - CHASTE_CONST(0.125) * var_chaste_interface__membrane__V)); // per_second + const double var_transient_outward_current__i_to = (((var_chaste_interface__membrane__V >= -CHASTE_CONST(10.000000500000001)) && (var_chaste_interface__membrane__V <= -CHASTE_CONST(9.9999994999999995))) ? (CHASTE_CONST(999999.99999899988) * (CHASTE_CONST(10.000000500000001) + var_chaste_interface__membrane__V) * (CHASTE_CONST(5.0000000000050004e-7) * (CHASTE_CONST(0.20000000000000001) + var_chaste_interface__extracellular_potassium_concentration__Kc / (10 + var_chaste_interface__extracellular_potassium_concentration__Kc)) * (var_chaste_interface__intracellular_potassium_concentration__Ki * CHASTE_MATH::Exp(-CHASTE_CONST(0.18716946347220006)) - var_chaste_interface__extracellular_potassium_concentration__Kc * CHASTE_MATH::Exp(CHASTE_CONST(0.18716946347220006))) * var_chaste_interface__intracellular_calcium_concentration__Cai * NV_Ith_S(mParameters, 17) * var_chaste_interface__transient_outward_current_s_gate__s / ((1 - CHASTE_MATH::Exp(CHASTE_CONST(1.0000000000010001e-7))) * (CHASTE_CONST(0.00050000000000000001) + var_chaste_interface__intracellular_calcium_concentration__Cai)) + CHASTE_CONST(5.0000000000050004e-7) * (CHASTE_CONST(0.20000000000000001) + var_chaste_interface__extracellular_potassium_concentration__Kc / (10 + var_chaste_interface__extracellular_potassium_concentration__Kc)) * (var_chaste_interface__intracellular_potassium_concentration__Ki * CHASTE_MATH::Exp(-CHASTE_CONST(0.18716944475525465)) - var_chaste_interface__extracellular_potassium_concentration__Kc * CHASTE_MATH::Exp(CHASTE_CONST(0.18716944475525465))) * var_chaste_interface__intracellular_calcium_concentration__Cai * NV_Ith_S(mParameters, 17) * var_chaste_interface__transient_outward_current_s_gate__s / ((1 - CHASTE_MATH::Exp(-CHASTE_CONST(1.0000000000010001e-7))) * (CHASTE_CONST(0.00050000000000000001) + var_chaste_interface__intracellular_calcium_concentration__Cai))) - CHASTE_CONST(5.0000000000050004e-7) * (CHASTE_CONST(0.20000000000000001) + var_chaste_interface__extracellular_potassium_concentration__Kc / (10 + var_chaste_interface__extracellular_potassium_concentration__Kc)) * (var_chaste_interface__intracellular_potassium_concentration__Ki * CHASTE_MATH::Exp(-CHASTE_CONST(0.18716946347220006)) - var_chaste_interface__extracellular_potassium_concentration__Kc * CHASTE_MATH::Exp(CHASTE_CONST(0.18716946347220006))) * var_chaste_interface__intracellular_calcium_concentration__Cai * NV_Ith_S(mParameters, 17) * var_chaste_interface__transient_outward_current_s_gate__s / ((1 - CHASTE_MATH::Exp(CHASTE_CONST(1.0000000000010001e-7))) * (CHASTE_CONST(0.00050000000000000001) + var_chaste_interface__intracellular_calcium_concentration__Cai))) : ((10 + var_chaste_interface__membrane__V) * (CHASTE_CONST(0.20000000000000001) + var_chaste_interface__extracellular_potassium_concentration__Kc / (10 + var_chaste_interface__extracellular_potassium_concentration__Kc)) * (var_chaste_interface__intracellular_potassium_concentration__Ki * CHASTE_MATH::Exp(CHASTE_CONST(0.018716945411372737) * var_chaste_interface__membrane__V) - var_chaste_interface__extracellular_potassium_concentration__Kc * CHASTE_MATH::Exp(-CHASTE_CONST(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 - CHASTE_MATH::Exp(-2 - CHASTE_CONST(0.20000000000000001) * var_chaste_interface__membrane__V)) * (CHASTE_CONST(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 + 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 d_dt_chaste_interface_var_extracellular_potassium_concentration__Kc = CHASTE_CONST(0.001) * var_extracellular_potassium_concentration__Kc_orig_deriv; // millimolar / millisecond const double var_intracellular_potassium_concentration__Ki_orig_deriv = -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 d_dt_chaste_interface_var_intracellular_potassium_concentration__Ki = CHASTE_CONST(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 + const double d_dt_chaste_interface_var_transient_outward_current_s_gate__s = CHASTE_CONST(0.001) * var_transient_outward_current_s_gate__s_orig_deriv; // 1 / millisecond if (mSetVoltageDerivativeToZero) { @@ -377,10 +379,10 @@ { 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_stimulus__i_pulse_converted = CHASTE_STIM(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 / CHASTE_CAP(); // 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 + d_dt_chaste_interface_var_membrane__V = CHASTE_CONST(0.001) * var_membrane__V_orig_deriv; // millivolt / millisecond } NV_Ith_S(rDY,0) = d_dt_chaste_interface_var_membrane__V; @@ -405,7 +407,7 @@ { // Inputs: // Time units: millisecond - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -435,60 +437,60 @@ // 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__d_NaCa = CHASTE_CONST(0.001); // dimensionless + const double var_Na_Ca_exchanger__gamma = CHASTE_CONST(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_calcium_concentration__tau_rel = CHASTE_CONST(0.050000000000000003); // second + const double var_intracellular_sodium_concentration__V_e_ratio = CHASTE_CONST(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__radius = CHASTE_CONST(0.050000000000000003); // micrometre + const double var_intracellular_sodium_concentration__V_Cell = CHASTE_CONST(3.1415926540000001) * CHASTE_MATH::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_intracellular_calcium_concentration__V_rel = CHASTE_CONST(0.02) * var_intracellular_sodium_concentration__Vi; // micrometre3 + const double var_membrane__F = CHASTE_CONST(96485.341499999995); // coulomb_per_mole + const double var_intracellular_calcium_concentration__i_rel = 2 * CHASTE_MATH::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 / ((CHASTE_MATH::Pow(var_chaste_interface__intracellular_calcium_concentration__Cai, var_intracellular_calcium_concentration__rCa) + CHASTE_MATH::Pow(NV_Ith_S(mParameters, 1), var_intracellular_calcium_concentration__rCa)) * var_intracellular_calcium_concentration__tau_rel); // nanoA + const double var_membrane__R = CHASTE_CONST(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((NV_Ith_S(mParameters, 6) + 0.12 * var_chaste_interface__extracellular_potassium_concentration__Kc) / (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__E_mh = var_membrane__RTONF * CHASTE_MATH::Log((NV_Ith_S(mParameters, 6) + CHASTE_CONST(0.12) * var_chaste_interface__extracellular_potassium_concentration__Kc) / (var_chaste_interface__intracellular_sodium_concentration__Nai + CHASTE_CONST(0.12) * var_chaste_interface__intracellular_potassium_concentration__Ki)); // millivolt + const double var_hyperpolarising_activated_current__E_K = var_membrane__RTONF * CHASTE_MATH::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 * CHASTE_MATH::Log(NV_Ith_S(mParameters, 6) / var_chaste_interface__intracellular_sodium_concentration__Nai); // millivolt + const double var_Na_Ca_exchanger__i_NaCa = (CHASTE_MATH::Pow(var_chaste_interface__intracellular_sodium_concentration__Nai, var_Na_Ca_exchanger__n_NaCa) * NV_Ith_S(mParameters, 5) * CHASTE_MATH::Exp((-2 + var_Na_Ca_exchanger__n_NaCa) * var_Na_Ca_exchanger__gamma * var_chaste_interface__membrane__V / var_membrane__RTONF) - CHASTE_MATH::Pow(NV_Ith_S(mParameters, 6), var_Na_Ca_exchanger__n_NaCa) * var_chaste_interface__intracellular_calcium_concentration__Cai * CHASTE_MATH::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 + CHASTE_CONST(144.92753623188406) * var_chaste_interface__intracellular_calcium_concentration__Cai) * (1 + (CHASTE_MATH::Pow(NV_Ith_S(mParameters, 6), var_Na_Ca_exchanger__n_NaCa) * var_chaste_interface__intracellular_calcium_concentration__Cai + CHASTE_MATH::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 = CHASTE_CONST(0.001) * CHASTE_CAP() * var_Na_Ca_exchanger__i_NaCa / NV_Ith_S(mParameters, 8); // uA_per_cm2 + const double var_fast_sodium_current__i_Na = CHASTE_MATH::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 = CHASTE_CONST(0.001) * CHASTE_CAP() * 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 * CHASTE_MATH::Exp(-CHASTE_CONST(9.375) + CHASTE_CONST(0.125) * NV_Ith_S(mParameters, 12) - CHASTE_CONST(0.125) * var_chaste_interface__membrane__V); // per_second + const double var_fast_sodium_current_h_gate__beta_h = 2000 / (1 + 320 * CHASTE_MATH::Exp(-CHASTE_CONST(7.5) + CHASTE_CONST(0.10000000000000001) * NV_Ith_S(mParameters, 12) - CHASTE_CONST(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_hyperpolarising_activated_current__i_f_converted = CHASTE_CONST(0.001) * CHASTE_CAP() * var_hyperpolarising_activated_current__i_f / NV_Ith_S(mParameters, 8); // uA_per_cm2 + const double var_second_inward_current_f2_gate__K_mf2 = CHASTE_CONST(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_f_gate__beta_f = 50 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(8.5) - CHASTE_CONST(0.25) * var_chaste_interface__membrane__V)); // per_second + const double var_second_inward_current_f_gate__delta_f = CHASTE_CONST(0.0001); // millivolt + const double var_second_inward_current_f_gate__alpha_f = ((var_second_inward_current_f_gate__delta_f > CHASTE_MATH::Abs(var_second_inward_current_f_gate__E0_f)) ? (25) : (CHASTE_CONST(6.25) * var_second_inward_current_f_gate__E0_f / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(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 >= CHASTE_CONST(49.999998664311967)) && (var_chaste_interface__membrane__V <= CHASTE_CONST(50.000001335688033))) ? (CHASTE_CONST(374338.90823576227) * (-CHASTE_CONST(49.999998664311967) + var_chaste_interface__membrane__V) * (CHASTE_CONST(1.9999999999556149e-7) * (var_chaste_interface__intracellular_calcium_concentration__Cai * CHASTE_MATH::Exp(CHASTE_CONST(3.7433890822745473)) - NV_Ith_S(mParameters, 5) * CHASTE_MATH::Exp(CHASTE_CONST(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 - CHASTE_MATH::Exp(CHASTE_CONST(9.9999999997780743e-8))) + CHASTE_CONST(1.9999999999556149e-7) * (var_chaste_interface__intracellular_calcium_concentration__Cai * CHASTE_MATH::Exp(CHASTE_CONST(3.7433890822745473)) - NV_Ith_S(mParameters, 5) * CHASTE_MATH::Exp(-CHASTE_CONST(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 - CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999997780743e-8)))) - CHASTE_CONST(1.9999999999556149e-7) * (var_chaste_interface__intracellular_calcium_concentration__Cai * CHASTE_MATH::Exp(CHASTE_CONST(3.7433890822745473)) - NV_Ith_S(mParameters, 5) * CHASTE_MATH::Exp(CHASTE_CONST(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 - CHASTE_MATH::Exp(CHASTE_CONST(9.9999999997780743e-8)))) : (CHASTE_CONST(0.14973556329098189) * (-50 + var_chaste_interface__membrane__V) * (var_chaste_interface__intracellular_calcium_concentration__Cai * CHASTE_MATH::Exp(CHASTE_CONST(3.7433890822745473)) - NV_Ith_S(mParameters, 5) * CHASTE_MATH::Exp(CHASTE_CONST(3.7433890822745473) - CHASTE_CONST(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 - CHASTE_MATH::Exp(CHASTE_CONST(3.7433890822745473) - CHASTE_CONST(0.074867781645490947) * var_chaste_interface__membrane__V)))); // nanoA + const double var_second_inward_current__i_siK = (((var_chaste_interface__membrane__V >= CHASTE_CONST(49.999997328623934)) && (var_chaste_interface__membrane__V <= CHASTE_CONST(50.000002671376066))) ? (CHASTE_CONST(187169.45411399176) * (-CHASTE_CONST(49.999997328623934) + var_chaste_interface__membrane__V) * (CHASTE_CONST(9.9999999999858744e-10) * (var_chaste_interface__intracellular_potassium_concentration__Ki * CHASTE_MATH::Exp(CHASTE_CONST(1.8716945411372736)) - var_chaste_interface__extracellular_potassium_concentration__Kc * CHASTE_MATH::Exp(CHASTE_CONST(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 - CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999858739e-8))) + CHASTE_CONST(9.9999999999858744e-10) * (var_chaste_interface__intracellular_potassium_concentration__Ki * CHASTE_MATH::Exp(CHASTE_CONST(1.8716945411372736)) - var_chaste_interface__extracellular_potassium_concentration__Kc * CHASTE_MATH::Exp(-CHASTE_CONST(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 - CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999858739e-8)))) - CHASTE_CONST(9.9999999999858744e-10) * (var_chaste_interface__intracellular_potassium_concentration__Ki * CHASTE_MATH::Exp(CHASTE_CONST(1.8716945411372736)) - var_chaste_interface__extracellular_potassium_concentration__Kc * CHASTE_MATH::Exp(CHASTE_CONST(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 - CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999858739e-8)))) : (CHASTE_CONST(0.00037433890822745472) * (-50 + var_chaste_interface__membrane__V) * (var_chaste_interface__intracellular_potassium_concentration__Ki * CHASTE_MATH::Exp(CHASTE_CONST(1.8716945411372736)) - var_chaste_interface__extracellular_potassium_concentration__Kc * CHASTE_MATH::Exp(CHASTE_CONST(1.8716945411372736) - CHASTE_CONST(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 - CHASTE_MATH::Exp(CHASTE_CONST(1.8716945411372736) - CHASTE_CONST(0.037433890822745473) * var_chaste_interface__membrane__V)))); // nanoA + const double var_second_inward_current__i_siNa = (((var_chaste_interface__membrane__V >= CHASTE_CONST(49.999997328623934)) && (var_chaste_interface__membrane__V <= CHASTE_CONST(50.000002671376066))) ? (CHASTE_CONST(187169.45411399176) * (-CHASTE_CONST(49.999997328623934) + var_chaste_interface__membrane__V) * (CHASTE_CONST(9.9999999999858744e-10) * (var_chaste_interface__intracellular_sodium_concentration__Nai * CHASTE_MATH::Exp(CHASTE_CONST(1.8716945411372736)) - NV_Ith_S(mParameters, 6) * CHASTE_MATH::Exp(CHASTE_CONST(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 - CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999858739e-8))) + CHASTE_CONST(9.9999999999858744e-10) * (var_chaste_interface__intracellular_sodium_concentration__Nai * CHASTE_MATH::Exp(CHASTE_CONST(1.8716945411372736)) - NV_Ith_S(mParameters, 6) * CHASTE_MATH::Exp(-CHASTE_CONST(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 - CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999858739e-8)))) - CHASTE_CONST(9.9999999999858744e-10) * (var_chaste_interface__intracellular_sodium_concentration__Nai * CHASTE_MATH::Exp(CHASTE_CONST(1.8716945411372736)) - NV_Ith_S(mParameters, 6) * CHASTE_MATH::Exp(CHASTE_CONST(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 - CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999858739e-8)))) : (CHASTE_CONST(0.00037433890822745472) * (-50 + var_chaste_interface__membrane__V) * (var_chaste_interface__intracellular_sodium_concentration__Nai * CHASTE_MATH::Exp(CHASTE_CONST(1.8716945411372736)) - NV_Ith_S(mParameters, 6) * CHASTE_MATH::Exp(CHASTE_CONST(1.8716945411372736) - CHASTE_CONST(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 - CHASTE_MATH::Exp(CHASTE_CONST(1.8716945411372736) - CHASTE_CONST(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__i_si_converted = CHASTE_CONST(0.001) * CHASTE_CAP() * 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_stimulus__i_pulse_converted = CHASTE_STIM(var_chaste_interface__environment__time_converted); // uA_per_cm2 + const double var_time_dependent_potassium_current__I_K = CHASTE_CONST(0.0071428571428571426) * (-var_chaste_interface__extracellular_potassium_concentration__Kc * CHASTE_MATH::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_dependent_potassium_current__i_K_converted = CHASTE_CONST(0.001) * CHASTE_CAP() * 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_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 + CHASTE_MATH::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 = CHASTE_CONST(0.001) * CHASTE_CAP() * 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 >= -CHASTE_CONST(10.000000500000001)) && (var_chaste_interface__membrane__V <= -CHASTE_CONST(9.9999994999999995))) ? (CHASTE_CONST(999999.99999899988) * (CHASTE_CONST(10.000000500000001) + var_chaste_interface__membrane__V) * (CHASTE_CONST(5.0000000000050004e-7) * (CHASTE_CONST(0.20000000000000001) + var_chaste_interface__extracellular_potassium_concentration__Kc / (10 + var_chaste_interface__extracellular_potassium_concentration__Kc)) * (var_chaste_interface__intracellular_potassium_concentration__Ki * CHASTE_MATH::Exp(-CHASTE_CONST(0.18716946347220006)) - var_chaste_interface__extracellular_potassium_concentration__Kc * CHASTE_MATH::Exp(CHASTE_CONST(0.18716946347220006))) * var_chaste_interface__intracellular_calcium_concentration__Cai * NV_Ith_S(mParameters, 17) * var_chaste_interface__transient_outward_current_s_gate__s / ((1 - CHASTE_MATH::Exp(CHASTE_CONST(1.0000000000010001e-7))) * (CHASTE_CONST(0.00050000000000000001) + var_chaste_interface__intracellular_calcium_concentration__Cai)) + CHASTE_CONST(5.0000000000050004e-7) * (CHASTE_CONST(0.20000000000000001) + var_chaste_interface__extracellular_potassium_concentration__Kc / (10 + var_chaste_interface__extracellular_potassium_concentration__Kc)) * (var_chaste_interface__intracellular_potassium_concentration__Ki * CHASTE_MATH::Exp(-CHASTE_CONST(0.18716944475525465)) - var_chaste_interface__extracellular_potassium_concentration__Kc * CHASTE_MATH::Exp(CHASTE_CONST(0.18716944475525465))) * var_chaste_interface__intracellular_calcium_concentration__Cai * NV_Ith_S(mParameters, 17) * var_chaste_interface__transient_outward_current_s_gate__s / ((1 - CHASTE_MATH::Exp(-CHASTE_CONST(1.0000000000010001e-7))) * (CHASTE_CONST(0.00050000000000000001) + var_chaste_interface__intracellular_calcium_concentration__Cai))) - CHASTE_CONST(5.0000000000050004e-7) * (CHASTE_CONST(0.20000000000000001) + var_chaste_interface__extracellular_potassium_concentration__Kc / (10 + var_chaste_interface__extracellular_potassium_concentration__Kc)) * (var_chaste_interface__intracellular_potassium_concentration__Ki * CHASTE_MATH::Exp(-CHASTE_CONST(0.18716946347220006)) - var_chaste_interface__extracellular_potassium_concentration__Kc * CHASTE_MATH::Exp(CHASTE_CONST(0.18716946347220006))) * var_chaste_interface__intracellular_calcium_concentration__Cai * NV_Ith_S(mParameters, 17) * var_chaste_interface__transient_outward_current_s_gate__s / ((1 - CHASTE_MATH::Exp(CHASTE_CONST(1.0000000000010001e-7))) * (CHASTE_CONST(0.00050000000000000001) + var_chaste_interface__intracellular_calcium_concentration__Cai))) : ((10 + var_chaste_interface__membrane__V) * (CHASTE_CONST(0.20000000000000001) + var_chaste_interface__extracellular_potassium_concentration__Kc / (10 + var_chaste_interface__extracellular_potassium_concentration__Kc)) * (var_chaste_interface__intracellular_potassium_concentration__Ki * CHASTE_MATH::Exp(CHASTE_CONST(0.018716945411372737) * var_chaste_interface__membrane__V) - var_chaste_interface__extracellular_potassium_concentration__Kc * CHASTE_MATH::Exp(-CHASTE_CONST(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 - CHASTE_MATH::Exp(-2 - CHASTE_CONST(0.20000000000000001) * var_chaste_interface__membrane__V)) * (CHASTE_CONST(0.00050000000000000001) + var_chaste_interface__intracellular_calcium_concentration__Cai)))); // nanoA + const double var_transient_outward_current__i_to_converted = CHASTE_CONST(0.001) * CHASTE_CAP() * 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()); @@ -741,4 +743,5 @@ void OdeSystemInformation::Init #include "SerializationExportWrapperForCpp.hpp" CHASTE_CLASS_EXPORT(Celldifrancesco_noble_model_1985FromCellMLCvode) + #endif // CHASTE_CVODE diff --git a/chaste_codegen/data/tests/chaste_reference_models/Cvode/difrancesco_noble_model_1985.hpp b/chaste_codegen/data/tests/chaste_reference_models/Cvode/difrancesco_noble_model_1985.hpp index c9a0a09cf..36bee9fa5 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/Cvode/difrancesco_noble_model_1985.hpp +++ b/chaste_codegen/data/tests/chaste_reference_models/Cvode/difrancesco_noble_model_1985.hpp @@ -17,7 +17,11 @@ #include "ChasteSerialization.hpp" #include #include "AbstractStimulusFunction.hpp" +#if USING_DEVICE_COMPILER +#include "StimulusEvaluatorCuda.hpp" +#endif #include "AbstractCvodeCell.hpp" +#include "HostDeviceMacros.hpp" class Celldifrancesco_noble_model_1985FromCellMLCvode : public AbstractCvodeCell { @@ -38,6 +42,10 @@ class Celldifrancesco_noble_model_1985FromCellMLCvode : public AbstractCvodeCell const bool is_concentration[16] = {false, true, false, false, false, false, false, false, false, false, true, false, true, false, true, true}; const bool is_probability[16] = {false, false, false, false, false, true, true, true, true, true, false, false, false, false, false, false}; public: + static constexpr unsigned TOTAL_SIZE = 16u; + static constexpr unsigned NNZ = 0u; + static inline const int sparse_rowptr[] = { }; + static inline const int sparse_colind[] = { }; boost::shared_ptr UseCellMLDefaultStimulus(); double GetIntracellularCalciumConcentration(); @@ -46,7 +54,19 @@ const bool is_probability[16] = {false, false, false, false, false, true, true, void VerifyStateVariables(); double GetIIonic(const std::vector* pStateVariables=NULL); void EvaluateYDerivatives(double var_chaste_interface__environment__time_converted, const N_Vector rY, N_Vector rDY); + N_Vector ComputeDerivedQuantities(double var_chaste_interface__environment__time_converted, const N_Vector & rY); +#if USING_DEVICE_COMPILER + template + DEVICE + static void EvaluateYDerivativesDevice(ValueType var_chaste_interface__environment__time_converted, const ValueType* rY, ValueType* rDY, const ValueType mSetVoltageDerivativeToZero, const ValueType mFixedVoltage, const ValueType* mParameters, const ValueType capacitance, const DeviceStimulusFunctor stim); + template + DEVICE + static void EvaluateAnalyticJacobianDevice(ValueType var_chaste_interface__environment__time_converted, const ValueType *rY, ValueType *rDY, ValueType *rJacobian, ValueType *rTmp1, ValueType *rTmp2, ValueType *rTmp3, const unsigned nvars, const ValueType mSetVoltageDerivativeToZero, const ValueType mFixedVoltage, const ValueType *mParameters, const ValueType capacitance, const DeviceStimulusFunctor stim); + template + DEVICE + static void EvaluateSparseAnalyticJacobianDevice(ValueType var_chaste_interface__environment__time_converted, const ValueType *rY, ValueType *rDY, ValueType *rJacobian, ValueType *rTmp1, ValueType *rTmp2, ValueType *rTmp3, const unsigned nvars, const ValueType mSetVoltageDerivativeToZero, const ValueType mFixedVoltage, const ValueType *mParameters, const ValueType capacitance, const DeviceStimulusFunctor stim); +#endif }; // Needs to be included last @@ -83,4 +103,10 @@ namespace boost } #endif // CELLDIFRANCESCO_NOBLE_MODEL_1985FROMCELLMLCVODE_HPP_ + + + +#if USING_DEVICE_COMPILER + #include "difrancesco_noble_model_1985Kernels.hpp" +#endif #endif // CHASTE_CVODE \ No newline at end of file diff --git a/chaste_codegen/data/tests/chaste_reference_models/Cvode/difrancesco_noble_model_1985Kernels.hpp b/chaste_codegen/data/tests/chaste_reference_models/Cvode/difrancesco_noble_model_1985Kernels.hpp new file mode 100644 index 000000000..42c99778b --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/Cvode/difrancesco_noble_model_1985Kernels.hpp @@ -0,0 +1,200 @@ +#ifndef CELLDIFRANCESCO_NOBLE_MODEL_1985FROMCELLMLCVODEKERNELS_HPP_ +#define CELLDIFRANCESCO_NOBLE_MODEL_1985FROMCELLMLCVODEKERNELS_HPP_ + +//! @file +//! +//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) +//! +//! Model: difrancesco_noble_model_1985 +//! +//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen +//! (translator: chaste_codegen, model type: NumericCvode) +//! on (date omitted as unimportant) +//! +//! +#include "MathsCustomFunctions.hpp" +#include "ChasteDeviceMacros.hpp" + +template +DEVICE +void Celldifrancesco_noble_model_1985FromCellMLCvode::EvaluateYDerivativesDevice(ValueType var_chaste_interface__environment__time_converted, const ValueType *rY, ValueType *rDY, const ValueType mSetVoltageDerivativeToZero, const ValueType mFixedVoltage, const ValueType *mParameters, const ValueType capacitance, const DeviceStimulusFunctor stim) +{ + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); + // Units: millivolt; Initial value: -87.0 + double var_chaste_interface__intracellular_calcium_concentration__Cai = rY[1]; + // Units: millimolar; Initial value: 5e-05 + double var_chaste_interface__hyperpolarising_activated_current_y_gate__y = rY[2]; + // Units: dimensionless; Initial value: 0.2 + double var_chaste_interface__time_dependent_potassium_current_x_gate__x = rY[3]; + // Units: dimensionless; Initial value: 0.01 + double var_chaste_interface__transient_outward_current_s_gate__s = rY[4]; + // Units: dimensionless; Initial value: 1.0 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[5]; + // Units: dimensionless; Initial value: 0.01 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[6]; + // Units: dimensionless; Initial value: 0.8 + double var_chaste_interface__second_inward_current_d_gate__d = rY[7]; + // Units: dimensionless; Initial value: 0.005 + double var_chaste_interface__second_inward_current_f_gate__f = rY[8]; + // Units: dimensionless; Initial value: 1.0 + double var_chaste_interface__second_inward_current_f2_gate__f2 = rY[9]; + // Units: dimensionless; Initial value: 1.0 + double var_chaste_interface__intracellular_sodium_concentration__Nai = rY[10]; + // Units: millimolar; Initial value: 8.0 + double var_chaste_interface__intracellular_calcium_concentration__Ca_up = rY[11]; + // Units: millimolar; Initial value: 2.0 + double var_chaste_interface__intracellular_calcium_concentration__Ca_rel = rY[12]; + // Units: millimolar; Initial value: 1.0 + double var_chaste_interface__intracellular_calcium_concentration__p = rY[13]; + // Units: dimensionless; Initial value: 1.0 + double var_chaste_interface__extracellular_potassium_concentration__Kc = rY[14]; + // Units: millimolar; Initial value: 4.0 + double var_chaste_interface__intracellular_potassium_concentration__Ki = 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 = CHASTE_CONST(0.001); // dimensionless + const double var_Na_Ca_exchanger__gamma = CHASTE_CONST(0.5); // dimensionless + const double var_Na_Ca_exchanger__n_NaCa = 3; // dimensionless + const double var_calcium_background_current__g_Cab = CHASTE_CONST(0.02); // microS + const double var_extracellular_potassium_concentration__Ve = CHASTE_CONST(0.00157); // micrometre3 + const double var_extracellular_potassium_concentration__pf = CHASTE_CONST(0.69999999999999996); // per_second + const double var_fast_sodium_current_m_gate__delta_m = CHASTE_CONST(1.0000000000000001e-5); // millivolt + const double var_hyperpolarising_activated_current__Km_f = 45; // millimolar + const double var_hyperpolarising_activated_current_y_gate__delta_y = CHASTE_CONST(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 = CHASTE_CONST(0.050000000000000003); // second + const double var_intracellular_calcium_concentration__tau_rep = 2; // second + const double var_intracellular_calcium_concentration__tau_up = CHASTE_CONST(0.025000000000000001); // second + const double var_intracellular_sodium_concentration__V_e_ratio = CHASTE_CONST(0.10000000000000001); // dimensionless + const double var_intracellular_sodium_concentration__length = 2; // micrometre + const double var_intracellular_sodium_concentration__radius = CHASTE_CONST(0.050000000000000003); // micrometre + const double var_intracellular_sodium_concentration__V_Cell = CHASTE_CONST(3.1415926540000001) * CHASTE_MATH::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 = CHASTE_CONST(0.02) * var_intracellular_sodium_concentration__Vi; // micrometre3 + const double var_intracellular_calcium_concentration__V_up = CHASTE_CONST(0.050000000000000003) * var_intracellular_sodium_concentration__Vi; // micrometre3 + const double var_membrane__F = CHASTE_CONST(96485.341499999995); // coulomb_per_mole + const double var_intracellular_calcium_concentration__i_rel = 2 * CHASTE_MATH::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 * mParameters[0] * var_membrane__F / ((CHASTE_MATH::Pow(var_chaste_interface__intracellular_calcium_concentration__Cai, var_intracellular_calcium_concentration__rCa) + CHASTE_MATH::Pow(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 = CHASTE_CONST(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 = CHASTE_CONST(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 * 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 = CHASTE_CONST(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 = CHASTE_CONST(0.001) * var_intracellular_calcium_concentration__Ca_up_orig_deriv; // millimolar / millisecond + const double var_membrane__R = CHASTE_CONST(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 = CHASTE_CONST(0.5) * var_membrane__RTONF * CHASTE_MATH::Log(mParameters[5] / var_chaste_interface__intracellular_calcium_concentration__Cai); // millivolt + const double var_fast_sodium_current__E_mh = var_membrane__RTONF * CHASTE_MATH::Log((mParameters[6] + CHASTE_CONST(0.12) * var_chaste_interface__extracellular_potassium_concentration__Kc) / (var_chaste_interface__intracellular_sodium_concentration__Nai + CHASTE_CONST(0.12) * var_chaste_interface__intracellular_potassium_concentration__Ki)); // millivolt + const double var_hyperpolarising_activated_current__E_K = var_membrane__RTONF * CHASTE_MATH::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 * CHASTE_MATH::Log(mParameters[6] / var_chaste_interface__intracellular_sodium_concentration__Nai); // millivolt + const double var_Na_Ca_exchanger__i_NaCa = (CHASTE_MATH::Pow(var_chaste_interface__intracellular_sodium_concentration__Nai, var_Na_Ca_exchanger__n_NaCa) * mParameters[5] * CHASTE_MATH::Exp((-2 + var_Na_Ca_exchanger__n_NaCa) * var_Na_Ca_exchanger__gamma * var_chaste_interface__membrane__V / var_membrane__RTONF) - CHASTE_MATH::Pow(mParameters[6], var_Na_Ca_exchanger__n_NaCa) * var_chaste_interface__intracellular_calcium_concentration__Cai * CHASTE_MATH::Exp((-1 + var_Na_Ca_exchanger__gamma) * (-2 + var_Na_Ca_exchanger__n_NaCa) * var_chaste_interface__membrane__V / var_membrane__RTONF)) * mParameters[16] / ((1 + CHASTE_CONST(144.92753623188406) * var_chaste_interface__intracellular_calcium_concentration__Cai) * (1 + (CHASTE_MATH::Pow(mParameters[6], var_Na_Ca_exchanger__n_NaCa) * var_chaste_interface__intracellular_calcium_concentration__Cai + CHASTE_MATH::Pow(var_chaste_interface__intracellular_sodium_concentration__Nai, var_Na_Ca_exchanger__n_NaCa) * 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 = CHASTE_MATH::Pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_mh + var_chaste_interface__membrane__V) * mParameters[10] * var_chaste_interface__fast_sodium_current_h_gate__h; // nanoA + const double var_fast_sodium_current_h_gate__alpha_h = 20 * CHASTE_MATH::Exp(-CHASTE_CONST(9.375) + CHASTE_CONST(0.125) * mParameters[12] - CHASTE_CONST(0.125) * var_chaste_interface__membrane__V); // per_second + const double var_fast_sodium_current_h_gate__beta_h = 2000 / (1 + 320 * CHASTE_MATH::Exp(-CHASTE_CONST(7.5) + CHASTE_CONST(0.10000000000000001) * mParameters[12] - CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V)); // per_second + const double var_fast_sodium_current_h_gate__h_inf = CHASTE_CONST(0.01) * mParameters[11] + (1 - CHASTE_CONST(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); // 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 = CHASTE_CONST(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 > CHASTE_MATH::Abs(var_fast_sodium_current_m_gate__E0_m)) ? (2000) : (200 * var_fast_sodium_current_m_gate__E0_m / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(0.10000000000000001) * var_fast_sodium_current_m_gate__E0_m)))); // per_second + const double var_fast_sodium_current_m_gate__beta_m = 8000 * CHASTE_MATH::Exp(-CHASTE_CONST(3.6960000000000002) - CHASTE_CONST(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 = CHASTE_CONST(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 * 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 * 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 = CHASTE_CONST(0.050000000000000003) * CHASTE_MATH::Exp(-CHASTE_CONST(2.8140000000000001) - CHASTE_CONST(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 > CHASTE_MATH::Abs(var_hyperpolarising_activated_current_y_gate__E0_y)) ? (CHASTE_CONST(2.5)) : (var_hyperpolarising_activated_current_y_gate__E0_y / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(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 = CHASTE_CONST(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 >= -CHASTE_CONST(34.000000399999998)) && (var_chaste_interface__membrane__V <= -CHASTE_CONST(33.999999600000002))) ? (-CHASTE_CONST(2.5000000000718892e-7) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(1.0000000000287557e-7))) + CHASTE_CONST(1249999.9999640554) * (CHASTE_CONST(34.000000399999998) + var_chaste_interface__membrane__V) * (CHASTE_CONST(2.5000000000718892e-7) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(1.0000000000287557e-7))) + CHASTE_CONST(2.5000000000718892e-7) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(1.0000000000287557e-7))))) : (CHASTE_CONST(0.625) * (34 + var_chaste_interface__membrane__V) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(8.5) + CHASTE_CONST(0.25) * var_chaste_interface__membrane__V)))); // per_second + const double var_intracellular_calcium_concentration__beta_p = 5 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(8.5) - CHASTE_CONST(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 = CHASTE_CONST(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 = CHASTE_CONST(0.0001); // millivolt + const double var_second_inward_current_d_gate__alpha_d = ((var_second_inward_current_d_gate__delta_d > CHASTE_MATH::Abs(var_second_inward_current_d_gate__E0_d)) ? (120) : (30 * var_second_inward_current_d_gate__E0_d / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(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 > CHASTE_MATH::Abs(var_second_inward_current_d_gate__E0_d)) ? (120) : (12 * var_second_inward_current_d_gate__E0_d / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(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 = CHASTE_CONST(0.001) * var_second_inward_current_d_gate__d_orig_deriv; // 1 / millisecond + const double var_second_inward_current_f2_gate__K_mf2 = CHASTE_CONST(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 = CHASTE_CONST(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 + CHASTE_MATH::Exp(-CHASTE_CONST(8.5) - CHASTE_CONST(0.25) * var_chaste_interface__membrane__V)); // per_second + const double var_second_inward_current_f_gate__delta_f = CHASTE_CONST(0.0001); // millivolt + const double var_second_inward_current_f_gate__alpha_f = ((var_second_inward_current_f_gate__delta_f > CHASTE_MATH::Abs(var_second_inward_current_f_gate__E0_f)) ? (25) : (CHASTE_CONST(6.25) * var_second_inward_current_f_gate__E0_f / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(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 >= CHASTE_CONST(49.999998664311967)) && (var_chaste_interface__membrane__V <= CHASTE_CONST(50.000001335688033))) ? (CHASTE_CONST(374338.90823576227) * (-CHASTE_CONST(49.999998664311967) + var_chaste_interface__membrane__V) * (CHASTE_CONST(1.9999999999556149e-7) * (var_chaste_interface__intracellular_calcium_concentration__Cai * CHASTE_MATH::Exp(CHASTE_CONST(3.7433890822745473)) - mParameters[5] * CHASTE_MATH::Exp(CHASTE_CONST(9.9999999997780743e-8))) * 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 - CHASTE_MATH::Exp(CHASTE_CONST(9.9999999997780743e-8))) + CHASTE_CONST(1.9999999999556149e-7) * (var_chaste_interface__intracellular_calcium_concentration__Cai * CHASTE_MATH::Exp(CHASTE_CONST(3.7433890822745473)) - mParameters[5] * CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999997780743e-8))) * 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 - CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999997780743e-8)))) - CHASTE_CONST(1.9999999999556149e-7) * (var_chaste_interface__intracellular_calcium_concentration__Cai * CHASTE_MATH::Exp(CHASTE_CONST(3.7433890822745473)) - mParameters[5] * CHASTE_MATH::Exp(CHASTE_CONST(9.9999999997780743e-8))) * 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 - CHASTE_MATH::Exp(CHASTE_CONST(9.9999999997780743e-8)))) : (CHASTE_CONST(0.14973556329098189) * (-50 + var_chaste_interface__membrane__V) * (var_chaste_interface__intracellular_calcium_concentration__Cai * CHASTE_MATH::Exp(CHASTE_CONST(3.7433890822745473)) - mParameters[5] * CHASTE_MATH::Exp(CHASTE_CONST(3.7433890822745473) - CHASTE_CONST(0.074867781645490947) * var_chaste_interface__membrane__V)) * 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 - CHASTE_MATH::Exp(CHASTE_CONST(3.7433890822745473) - CHASTE_CONST(0.074867781645490947) * var_chaste_interface__membrane__V)))); // nanoA + const double var_intracellular_calcium_concentration__Cai_orig_deriv = -CHASTE_CONST(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 = CHASTE_CONST(0.001) * var_intracellular_calcium_concentration__Cai_orig_deriv; // millimolar / millisecond + const double var_second_inward_current__i_siK = (((var_chaste_interface__membrane__V >= CHASTE_CONST(49.999997328623934)) && (var_chaste_interface__membrane__V <= CHASTE_CONST(50.000002671376066))) ? (CHASTE_CONST(187169.45411399176) * (-CHASTE_CONST(49.999997328623934) + var_chaste_interface__membrane__V) * (CHASTE_CONST(9.9999999999858744e-10) * (var_chaste_interface__intracellular_potassium_concentration__Ki * CHASTE_MATH::Exp(CHASTE_CONST(1.8716945411372736)) - var_chaste_interface__extracellular_potassium_concentration__Kc * CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999858739e-8))) * 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 - CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999858739e-8))) + CHASTE_CONST(9.9999999999858744e-10) * (var_chaste_interface__intracellular_potassium_concentration__Ki * CHASTE_MATH::Exp(CHASTE_CONST(1.8716945411372736)) - var_chaste_interface__extracellular_potassium_concentration__Kc * CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999858739e-8))) * 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 - CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999858739e-8)))) - CHASTE_CONST(9.9999999999858744e-10) * (var_chaste_interface__intracellular_potassium_concentration__Ki * CHASTE_MATH::Exp(CHASTE_CONST(1.8716945411372736)) - var_chaste_interface__extracellular_potassium_concentration__Kc * CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999858739e-8))) * 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 - CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999858739e-8)))) : (CHASTE_CONST(0.00037433890822745472) * (-50 + var_chaste_interface__membrane__V) * (var_chaste_interface__intracellular_potassium_concentration__Ki * CHASTE_MATH::Exp(CHASTE_CONST(1.8716945411372736)) - var_chaste_interface__extracellular_potassium_concentration__Kc * CHASTE_MATH::Exp(CHASTE_CONST(1.8716945411372736) - CHASTE_CONST(0.037433890822745473) * var_chaste_interface__membrane__V)) * 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 - CHASTE_MATH::Exp(CHASTE_CONST(1.8716945411372736) - CHASTE_CONST(0.037433890822745473) * var_chaste_interface__membrane__V)))); // nanoA + const double var_second_inward_current__i_siNa = (((var_chaste_interface__membrane__V >= CHASTE_CONST(49.999997328623934)) && (var_chaste_interface__membrane__V <= CHASTE_CONST(50.000002671376066))) ? (CHASTE_CONST(187169.45411399176) * (-CHASTE_CONST(49.999997328623934) + var_chaste_interface__membrane__V) * (CHASTE_CONST(9.9999999999858744e-10) * (var_chaste_interface__intracellular_sodium_concentration__Nai * CHASTE_MATH::Exp(CHASTE_CONST(1.8716945411372736)) - mParameters[6] * CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999858739e-8))) * 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 - CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999858739e-8))) + CHASTE_CONST(9.9999999999858744e-10) * (var_chaste_interface__intracellular_sodium_concentration__Nai * CHASTE_MATH::Exp(CHASTE_CONST(1.8716945411372736)) - mParameters[6] * CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999858739e-8))) * 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 - CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999858739e-8)))) - CHASTE_CONST(9.9999999999858744e-10) * (var_chaste_interface__intracellular_sodium_concentration__Nai * CHASTE_MATH::Exp(CHASTE_CONST(1.8716945411372736)) - mParameters[6] * CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999858739e-8))) * 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 - CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999858739e-8)))) : (CHASTE_CONST(0.00037433890822745472) * (-50 + var_chaste_interface__membrane__V) * (var_chaste_interface__intracellular_sodium_concentration__Nai * CHASTE_MATH::Exp(CHASTE_CONST(1.8716945411372736)) - mParameters[6] * CHASTE_MATH::Exp(CHASTE_CONST(1.8716945411372736) - CHASTE_CONST(0.037433890822745473) * var_chaste_interface__membrane__V)) * 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 - CHASTE_MATH::Exp(CHASTE_CONST(1.8716945411372736) - CHASTE_CONST(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 = CHASTE_CONST(0.001) * var_second_inward_current_f_gate__f_orig_deriv; // 1 / millisecond + const double var_sodium_background_current__g_Nab = CHASTE_CONST(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 = -(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) * mParameters[4] / (var_intracellular_sodium_concentration__Vi * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_intracellular_sodium_concentration__Nai = CHASTE_CONST(0.001) * var_intracellular_sodium_concentration__Nai_orig_deriv; // millimolar / millisecond + const double var_time_dependent_potassium_current__I_K = CHASTE_CONST(0.0071428571428571426) * (-var_chaste_interface__extracellular_potassium_concentration__Kc * CHASTE_MATH::Exp(-var_chaste_interface__membrane__V / var_membrane__RTONF) + var_chaste_interface__intracellular_potassium_concentration__Ki) * mParameters[9]; // nanoA + const double var_time_dependent_potassium_current_x_gate__alpha_x = CHASTE_CONST(0.5) * CHASTE_MATH::Exp(CHASTE_CONST(4.1300000000000008) + CHASTE_CONST(0.082600000000000007) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(2.8500000000000001) + CHASTE_CONST(0.057000000000000002) * var_chaste_interface__membrane__V)); // per_second + const double var_time_dependent_potassium_current_x_gate__beta_x = CHASTE_CONST(1.3) * CHASTE_MATH::Exp(-CHASTE_CONST(1.2) - CHASTE_CONST(0.059999999999999998) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.80000000000000004) - CHASTE_CONST(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 = CHASTE_CONST(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 * mParameters[15] / ((1 + CHASTE_MATH::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 = CHASTE_CONST(0.033000000000000002) * CHASTE_MATH::Exp(-CHASTE_CONST(0.058823529411764705) * var_chaste_interface__membrane__V); // per_second + const double var_transient_outward_current_s_gate__beta_s = 33 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(1.25) - CHASTE_CONST(0.125) * var_chaste_interface__membrane__V)); // per_second + const double var_transient_outward_current__i_to = (((var_chaste_interface__membrane__V >= -CHASTE_CONST(10.000000500000001)) && (var_chaste_interface__membrane__V <= -CHASTE_CONST(9.9999994999999995))) ? (CHASTE_CONST(999999.99999899988) * (CHASTE_CONST(10.000000500000001) + var_chaste_interface__membrane__V) * (CHASTE_CONST(5.0000000000050004e-7) * (CHASTE_CONST(0.20000000000000001) + var_chaste_interface__extracellular_potassium_concentration__Kc / (10 + var_chaste_interface__extracellular_potassium_concentration__Kc)) * (var_chaste_interface__intracellular_potassium_concentration__Ki * CHASTE_MATH::Exp(-CHASTE_CONST(0.18716946347220006)) - var_chaste_interface__extracellular_potassium_concentration__Kc * CHASTE_MATH::Exp(CHASTE_CONST(0.18716946347220006))) * var_chaste_interface__intracellular_calcium_concentration__Cai * mParameters[17] * var_chaste_interface__transient_outward_current_s_gate__s / ((1 - CHASTE_MATH::Exp(CHASTE_CONST(1.0000000000010001e-7))) * (CHASTE_CONST(0.00050000000000000001) + var_chaste_interface__intracellular_calcium_concentration__Cai)) + CHASTE_CONST(5.0000000000050004e-7) * (CHASTE_CONST(0.20000000000000001) + var_chaste_interface__extracellular_potassium_concentration__Kc / (10 + var_chaste_interface__extracellular_potassium_concentration__Kc)) * (var_chaste_interface__intracellular_potassium_concentration__Ki * CHASTE_MATH::Exp(-CHASTE_CONST(0.18716944475525465)) - var_chaste_interface__extracellular_potassium_concentration__Kc * CHASTE_MATH::Exp(CHASTE_CONST(0.18716944475525465))) * var_chaste_interface__intracellular_calcium_concentration__Cai * mParameters[17] * var_chaste_interface__transient_outward_current_s_gate__s / ((1 - CHASTE_MATH::Exp(-CHASTE_CONST(1.0000000000010001e-7))) * (CHASTE_CONST(0.00050000000000000001) + var_chaste_interface__intracellular_calcium_concentration__Cai))) - CHASTE_CONST(5.0000000000050004e-7) * (CHASTE_CONST(0.20000000000000001) + var_chaste_interface__extracellular_potassium_concentration__Kc / (10 + var_chaste_interface__extracellular_potassium_concentration__Kc)) * (var_chaste_interface__intracellular_potassium_concentration__Ki * CHASTE_MATH::Exp(-CHASTE_CONST(0.18716946347220006)) - var_chaste_interface__extracellular_potassium_concentration__Kc * CHASTE_MATH::Exp(CHASTE_CONST(0.18716946347220006))) * var_chaste_interface__intracellular_calcium_concentration__Cai * mParameters[17] * var_chaste_interface__transient_outward_current_s_gate__s / ((1 - CHASTE_MATH::Exp(CHASTE_CONST(1.0000000000010001e-7))) * (CHASTE_CONST(0.00050000000000000001) + var_chaste_interface__intracellular_calcium_concentration__Cai))) : ((10 + var_chaste_interface__membrane__V) * (CHASTE_CONST(0.20000000000000001) + var_chaste_interface__extracellular_potassium_concentration__Kc / (10 + var_chaste_interface__extracellular_potassium_concentration__Kc)) * (var_chaste_interface__intracellular_potassium_concentration__Ki * CHASTE_MATH::Exp(CHASTE_CONST(0.018716945411372737) * var_chaste_interface__membrane__V) - var_chaste_interface__extracellular_potassium_concentration__Kc * CHASTE_MATH::Exp(-CHASTE_CONST(0.018716945411372737) * var_chaste_interface__membrane__V)) * var_chaste_interface__intracellular_calcium_concentration__Cai * mParameters[17] * var_chaste_interface__transient_outward_current_s_gate__s / ((1 - CHASTE_MATH::Exp(-2 - CHASTE_CONST(0.20000000000000001) * var_chaste_interface__membrane__V)) * (CHASTE_CONST(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 = (-(-mParameters[3] + var_chaste_interface__extracellular_potassium_concentration__Kc) * var_extracellular_potassium_concentration__pf + var_extracellular_potassium_concentration__i_mK / (var_extracellular_potassium_concentration__Ve * var_membrane__F)) * mParameters[4]; // millimolar / second + const double d_dt_chaste_interface_var_extracellular_potassium_concentration__Kc = CHASTE_CONST(0.001) * var_extracellular_potassium_concentration__Kc_orig_deriv; // millimolar / millisecond + const double var_intracellular_potassium_concentration__Ki_orig_deriv = -var_extracellular_potassium_concentration__i_mK * mParameters[4] / (var_intracellular_sodium_concentration__Vi * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_intracellular_potassium_concentration__Ki = CHASTE_CONST(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 = CHASTE_CONST(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;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;const double var_stimulus__i_pulse_converted = CHASTE_STIM(var_chaste_interface__environment__time_converted);const double var_stimulus__i_pulse = 1000 * mParameters[8] * var_stimulus__i_pulse_converted / CHASTE_CAP();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) / mParameters[8];d_dt_chaste_interface_var_membrane__V = CHASTE_CONST(0.001) * var_membrane__V_orig_deriv; + } + + rDY[0] = d_dt_chaste_interface_var_membrane__V; + rDY[1] = d_dt_chaste_interface_var_intracellular_calcium_concentration__Cai; + rDY[2] = d_dt_chaste_interface_var_hyperpolarising_activated_current_y_gate__y; + rDY[3] = d_dt_chaste_interface_var_time_dependent_potassium_current_x_gate__x; + rDY[4] = d_dt_chaste_interface_var_transient_outward_current_s_gate__s; + 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_second_inward_current_d_gate__d; + rDY[8] = d_dt_chaste_interface_var_second_inward_current_f_gate__f; + rDY[9] = d_dt_chaste_interface_var_second_inward_current_f2_gate__f2; + rDY[10] = d_dt_chaste_interface_var_intracellular_sodium_concentration__Nai; + rDY[11] = d_dt_chaste_interface_var_intracellular_calcium_concentration__Ca_up; + rDY[12] = d_dt_chaste_interface_var_intracellular_calcium_concentration__Ca_rel; + rDY[13] = d_dt_chaste_interface_var_intracellular_calcium_concentration__p; + rDY[14] = d_dt_chaste_interface_var_extracellular_potassium_concentration__Kc; + rDY[15] = d_dt_chaste_interface_var_intracellular_potassium_concentration__Ki; +} + + + + + +#include "ChasteCpuMacros.hpp" +#endif // CELLDIFRANCESCO_NOBLE_MODEL_1985FROMCELLMLCVODEKERNELS_HPP_ \ No newline at end of file diff --git a/chaste_codegen/data/tests/chaste_reference_models/Cvode/dynamic_mahajan_shiferaw_2008.cpp b/chaste_codegen/data/tests/chaste_reference_models/Cvode/dynamic_mahajan_shiferaw_2008.cpp index 1320099a2..997bccc38 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/Cvode/dynamic_mahajan_shiferaw_2008.cpp +++ b/chaste_codegen/data/tests/chaste_reference_models/Cvode/dynamic_mahajan_shiferaw_2008.cpp @@ -22,6 +22,8 @@ #include "HeartConfig.hpp" #include "IsNan.hpp" #include "MathsCustomFunctions.hpp" +#include "ChasteMathDeviceNamespaces.hpp" +#include "ChasteCpuMacros.hpp" #if CHASTE_SUNDIALS_VERSION >= 60000 #include "CvodeContextManager.hpp" @@ -34,7 +36,7 @@ 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_amplitude_converted = -CHASTE_CONST(14.999999999999998) * CHASTE_CAP(); // 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 @@ -68,26 +70,26 @@ // 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, 0) = CHASTE_CONST(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, 2) = CHASTE_CONST(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, 5) = CHASTE_CONST(1.8); // (var_Environment__Ca_o) [mM] + NV_Ith_S(this->mParameters, 6) = CHASTE_CONST(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, 8) = CHASTE_CONST(96.485341500000004); // (var_Environment__F) [coulomb_per_mmole] + NV_Ith_S(this->mParameters, 9) = CHASTE_CONST(8.3144720000000003); // (var_Environment__R) [J_per_moleK] + NV_Ith_S(this->mParameters, 10) = CHASTE_CONST(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, 14) = CHASTE_CONST(0.11); // (var_Ito__gtof) [uS_per_nF] + NV_Ith_S(this->mParameters, 15) = CHASTE_CONST(0.29999999999999999); // (var_IK1__gkix) [uS_per_nF] + NV_Ith_S(this->mParameters, 16) = CHASTE_CONST(0.012500000000000001); // (var_IKr__gkr) [uS_per_nF] + NV_Ith_S(this->mParameters, 17) = CHASTE_CONST(0.1386); // (var_IKs__gks) [uS_per_nF] + NV_Ith_S(this->mParameters, 18) = CHASTE_CONST(0.040000000000000001); // (var_Ito__gtos) [uS_per_nF] + NV_Ith_S(this->mParameters, 19) = CHASTE_CONST(0.83999999999999997); // (var_INaCa__gNaCa) [uM_per_ms] NV_Ith_S(this->mParameters, 20) = 308; // (var_Environment__T) [kelvin] } @@ -144,7 +146,7 @@ made_new_cvode_vector = true; rY = MakeNVector(*pStateVariables); } - double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -186,60 +188,60 @@ // 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_Ca__csm = CHASTE_CONST(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_IK1__gkix_total = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::Sqrt(NV_Ith_S(mParameters, 6)) * NV_Ith_S(mParameters, 15); // uS_per_nF + const double var_IKr__gkr_total = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::Sqrt(NV_Ith_S(mParameters, 6)) * NV_Ith_S(mParameters, 16); // uS_per_nF + const double var_IKs__gksx = 1 + CHASTE_CONST(0.80000000000000004) / (1 + CHASTE_CONST(0.125) / CHASTE_MATH::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_INaCa__xkdna = CHASTE_CONST(0.29999999999999999); // uM + const double var_INaCa__aloss = 1 / (1 + CHASTE_MATH::Pow(var_INaCa__xkdna, 3) / CHASTE_MATH::Pow(var_chaste_interface__Ca__Ca_submem, 3)); // dimensionless + const double var_INaCa__xmcai = CHASTE_CONST(0.0035999999999999999); // mM + const double var_INaCa__xmcao = CHASTE_CONST(1.3); // mM + const double var_INaCa__xmnai = CHASTE_CONST(12.300000000000001); // mM + const double var_INaCa__xmnao = CHASTE_CONST(87.5); // mM + const double var_INaCa__yz2 = CHASTE_MATH::Pow(var_INaCa__xmnai, 3) * (1 + var_Ca__csm / var_INaCa__xmcai) * NV_Ith_S(mParameters, 5); // mM4 + const double var_INaK__gNaK = CHASTE_CONST(1.5); // nA_per_nF + const double var_INaK__sigma = -CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * CHASTE_MATH::Exp(CHASTE_CONST(0.01485884101040119) * NV_Ith_S(mParameters, 7)); // dimensionless + const double var_INaK__xkmko = CHASTE_CONST(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__yz1 = CHASTE_MATH::Pow(var_INaCa__xmnao, 3) * var_Ca__csm + CHASTE_MATH::Pow(var_chaste_interface__Na__Na_i, 3) * var_INaCa__xmcao; // mM4 + const double var_INaCa__yz3 = CHASTE_MATH::Pow(NV_Ith_S(mParameters, 7), 3) * (1 + CHASTE_MATH::Pow(var_chaste_interface__Na__Na_i, 3) / CHASTE_MATH::Pow(var_INaCa__xmnai, 3)) * var_INaCa__xmcai; // mM4 + const double var_INaCa__yz4 = CHASTE_MATH::Pow(NV_Ith_S(mParameters, 7), 3) * var_Ca__csm + CHASTE_MATH::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__rxa = ((CHASTE_MATH::Abs(var_ICaL__za) < CHASTE_CONST(0.001)) ? (2 * (-CHASTE_CONST(0.34100000000000003) * NV_Ith_S(mParameters, 5) + var_Ca__csm * CHASTE_MATH::Exp(var_ICaL__za)) * NV_Ith_S(mParameters, 8) * NV_Ith_S(mParameters, 10)) : (4 * (-CHASTE_CONST(0.34100000000000003) * NV_Ith_S(mParameters, 5) + var_Ca__csm * CHASTE_MATH::Exp(var_ICaL__za)) * NV_Ith_S(mParameters, 8) * var_Environment__FonRT * NV_Ith_S(mParameters, 10) * var_chaste_interface__cell__V / (-1 + CHASTE_MATH::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_IKr__rg = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(1.4732142857142858) + CHASTE_CONST(0.044642857142857144) * var_chaste_interface__cell__V)); // dimensionless + const double var_INaCa__zw3 = CHASTE_MATH::Pow(var_chaste_interface__Na__Na_i, 3) * NV_Ith_S(mParameters, 5) * CHASTE_MATH::Exp(CHASTE_CONST(0.34999999999999998) * var_Environment__FonRT * var_chaste_interface__cell__V) - CHASTE_MATH::Pow(NV_Ith_S(mParameters, 7), 3) * var_Ca__csm * CHASTE_MATH::Exp(-CHASTE_CONST(0.65000000000000002) * var_Environment__FonRT * var_chaste_interface__cell__V); // mM4 + const double var_INaCa__zw4 = 1 + CHASTE_CONST(0.20000000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(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__fNaK = 1 / (1 + CHASTE_CONST(0.1245) * CHASTE_MATH::Exp(-CHASTE_CONST(0.10000000000000001) * var_Environment__FonRT * var_chaste_interface__cell__V) + CHASTE_CONST(0.036499999999999998) * var_INaK__sigma * CHASTE_MATH::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_Ito__rt2 = CHASTE_CONST(3.3500000000000001) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__cell__V; // dimensionless + const double var_Ito__rs_inf = 1 / (1 + CHASTE_MATH::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 = 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 = (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_reversal_potentials__ek = CHASTE_MATH::Log(NV_Ith_S(mParameters, 6) / NV_Ith_S(mParameters, 4)) / var_Environment__FonRT; // mV + const double var_IK1__aki = CHASTE_CONST(1.02) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__cell__V - CHASTE_CONST(0.23849999999999999) * var_reversal_potentials__ek)); // per_ms + const double var_IK1__bki = (CHASTE_MATH::Exp(-CHASTE_CONST(36.698642499999998) + CHASTE_CONST(0.061749999999999999) * var_chaste_interface__cell__V - CHASTE_CONST(0.061749999999999999) * var_reversal_potentials__ek) + CHASTE_CONST(0.49124000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.43983232) + CHASTE_CONST(0.080320000000000003) * var_chaste_interface__cell__V - CHASTE_CONST(0.080320000000000003) * var_reversal_potentials__ek)) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.4444678999999998) + CHASTE_CONST(0.51429999999999998) * var_reversal_potentials__ek - CHASTE_CONST(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__xitos = (-var_reversal_potentials__ek + var_chaste_interface__cell__V) * (CHASTE_CONST(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 = 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 = 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_reversal_potentials__ena = CHASTE_MATH::Log(NV_Ith_S(mParameters, 7) / var_chaste_interface__Na__Na_i) / var_Environment__FonRT; // mV + const double var_INa__xina = CHASTE_MATH::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 = CHASTE_CONST(0.018329999999999999); // dimensionless + const double var_reversal_potentials__eks = CHASTE_MATH::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 var_chaste_interface__i_ionic = -CHASTE_CONST(0.99999999999999989) * CHASTE_CAP() * var_cell__Itotal; // uA_per_cm2 const double i_ionic = var_chaste_interface__i_ionic; if (made_new_cvode_vector) @@ -254,7 +256,7 @@ { // Inputs: // Time units: millisecond - double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -314,105 +316,105 @@ 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__csm = CHASTE_CONST(0.001) * var_chaste_interface__Ca__Ca_submem; // mM + const double var_Ca__kmem = CHASTE_CONST(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__mempxi = var_Ca__bmem * var_Ca__kmem / CHASTE_MATH::Pow((var_Ca__Ca_i + var_Ca__kmem), 2); // dimensionless + const double var_Ca__mempxs = var_Ca__bmem * var_Ca__kmem / CHASTE_MATH::Pow((var_chaste_interface__Ca__Ca_submem + var_Ca__kmem), 2); // dimensionless + const double var_Ca__sarpxi = var_Ca__bsar * var_Ca__ksar / CHASTE_MATH::Pow((var_Ca__Ca_i + var_Ca__ksar), 2); // dimensionless + const double var_Ca__sarpxs = var_Ca__bsar * var_Ca__ksar / CHASTE_MATH::Pow((var_chaste_interface__Ca__Ca_submem + var_Ca__ksar), 2); // dimensionless + const double var_Ca__srkd = CHASTE_CONST(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__spxi = var_Ca__srkd * var_Ca__srmax / CHASTE_MATH::Pow((var_Ca__Ca_i + var_Ca__srkd), 2); // dimensionless + const double var_Ca__spxs = var_Ca__srkd * var_Ca__srmax / CHASTE_MATH::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__taups = CHASTE_CONST(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__bpxi = var_Ca__bcal * var_Ca__xkcal / CHASTE_MATH::Pow((var_Ca__Ca_i + var_Ca__xkcal), 2); // dimensionless + const double var_Ca__bpxs = var_Ca__bcal * var_Ca__xkcal / CHASTE_MATH::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__xkoff = CHASTE_CONST(0.019599999999999999); // per_ms + const double var_Ca__xkon = CHASTE_CONST(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__cpt = CHASTE_CONST(6.0936500000000002); // uM + const double var_ICaL__fca = 1 / (1 + CHASTE_MATH::Pow(var_ICaL__cat, 3) / CHASTE_MATH::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__k1 = CHASTE_CONST(0.024167999999999999) * var_ICaL__fca; // per_ms + const double var_ICaL__k1t = CHASTE_CONST(0.00413); // per_ms + const double var_ICaL__k2 = CHASTE_CONST(0.000103615); // per_ms + const double var_ICaL__k2t = CHASTE_CONST(0.0022399999999999998); // per_ms + const double var_ICaL__r1 = CHASTE_CONST(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__s1 = CHASTE_CONST(0.018268800000000002) * var_ICaL__fca; // per_ms + const double var_ICaL__s1t = CHASTE_CONST(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__syr = CHASTE_CONST(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__tca = CHASTE_CONST(78.032899999999998); // ms + const double var_ICaL__tau_ca = CHASTE_CONST(0.10000000000000001) + var_ICaL__tca / (1 + CHASTE_MATH::Pow(var_chaste_interface__Ca__Ca_dyad, 4) / CHASTE_MATH::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_INaCa__xkdna = CHASTE_CONST(0.29999999999999999); // uM + const double var_INaCa__aloss = 1 / (1 + CHASTE_MATH::Pow(var_INaCa__xkdna, 3) / CHASTE_MATH::Pow(var_chaste_interface__Ca__Ca_submem, 3)); // dimensionless + const double var_INaCa__xmcai = CHASTE_CONST(0.0035999999999999999); // mM + const double var_INaCa__xmcao = CHASTE_CONST(1.3); // mM + const double var_INaCa__xmnai = CHASTE_CONST(12.300000000000001); // mM + const double var_INaCa__xmnao = CHASTE_CONST(87.5); // mM + const double var_INaCa__yz2 = CHASTE_MATH::Pow(var_INaCa__xmnai, 3) * (1 + var_Ca__csm / var_INaCa__xmcai) * NV_Ith_S(mParameters, 5); // mM4 + const double var_INaK__gNaK = CHASTE_CONST(1.5); // nA_per_nF + const double var_INaK__sigma = -CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * CHASTE_MATH::Exp(CHASTE_CONST(0.01485884101040119) * NV_Ith_S(mParameters, 7)); // dimensionless + const double var_INaK__xkmko = CHASTE_CONST(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__cup = CHASTE_CONST(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_Ileak_Iup_Ixfer__jleak = CHASTE_MATH::Pow(var_chaste_interface__Ca__Ca_NSR, 2) * (-var_Ca__Ca_i + CHASTE_CONST(16.667000000000002) * var_chaste_interface__Ca__Ca_NSR) * NV_Ith_S(mParameters, 0) / (CHASTE_MATH::Pow(var_chaste_interface__Ca__Ca_NSR, 2) + CHASTE_MATH::Pow(var_Ileak_Iup_Ixfer__kj, 2)); // uM_per_ms + const double var_Ileak_Iup_Ixfer__jup = CHASTE_MATH::Pow(var_Ca__Ca_i, 2) * NV_Ith_S(mParameters, 2) / (CHASTE_MATH::Pow(var_Ca__Ca_i, 2) + CHASTE_MATH::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 d_dt_chaste_interface_var_Ca__Ca_i_converted = CHASTE_CONST(0.001) * var_Ca__Ca_i_orig_deriv; // millimolar / ms + const double var_Irel__av = CHASTE_CONST(11.300000000000001); // per_ms + const double var_Irel__ax = CHASTE_CONST(0.35759999999999997); // per_mV + const double var_Irel__ay = CHASTE_CONST(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 + 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__gbarsr = CHASTE_CONST(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__gryr = CHASTE_CONST(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__yz1 = CHASTE_MATH::Pow(var_INaCa__xmnao, 3) * var_Ca__csm + CHASTE_MATH::Pow(var_chaste_interface__Na__Na_i, 3) * var_INaCa__xmcao; // mM4 + const double var_INaCa__yz3 = CHASTE_MATH::Pow(NV_Ith_S(mParameters, 7), 3) * (1 + CHASTE_MATH::Pow(var_chaste_interface__Na__Na_i, 3) / CHASTE_MATH::Pow(var_INaCa__xmnai, 3)) * var_INaCa__xmcai; // mM4 + const double var_INaCa__yz4 = CHASTE_MATH::Pow(NV_Ith_S(mParameters, 7), 3) * var_Ca__csm + CHASTE_MATH::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__Pr = 1 - 1 / (1 + CHASTE_MATH::Exp((-var_chaste_interface__cell__V + var_ICaL__vy) / var_ICaL__sy)); // dimensionless + const double var_ICaL__Ps = 1 / (1 + CHASTE_MATH::Exp((-var_chaste_interface__cell__V + var_ICaL__vyr) / var_ICaL__syr)); // dimensionless + const double var_ICaL__poi = 1 / (1 + CHASTE_MATH::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__poinf = 1 / (1 + CHASTE_MATH::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__recov = 10 + 4954 * CHASTE_MATH::Exp(CHASTE_CONST(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 @@ -427,67 +429,67 @@ 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__rxa = ((CHASTE_MATH::Abs(var_ICaL__za) < CHASTE_CONST(0.001)) ? (2 * (-CHASTE_CONST(0.34100000000000003) * NV_Ith_S(mParameters, 5) + var_Ca__csm * CHASTE_MATH::Exp(var_ICaL__za)) * NV_Ith_S(mParameters, 8) * NV_Ith_S(mParameters, 10)) : (4 * (-CHASTE_CONST(0.34100000000000003) * NV_Ith_S(mParameters, 5) + var_Ca__csm * CHASTE_MATH::Exp(var_ICaL__za)) * NV_Ith_S(mParameters, 8) * var_Environment__FonRT * NV_Ith_S(mParameters, 10) * var_chaste_interface__cell__V / (-1 + CHASTE_MATH::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__xkrinf = 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(6.666666666666667) - CHASTE_CONST(0.13333333333333333) * var_chaste_interface__cell__V)); // dimensionless + const double var_IKr__xkrv1 = ((CHASTE_MATH::Abs(7 + var_chaste_interface__cell__V) > CHASTE_CONST(0.001)) ? (CHASTE_CONST(0.0013799999999999999) * (7 + var_chaste_interface__cell__V) / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(0.86099999999999999) - CHASTE_CONST(0.123) * var_chaste_interface__cell__V))) : (CHASTE_CONST(0.011219512195121951))); // per_ms + const double var_IKr__xkrv2 = ((CHASTE_MATH::Abs(10 + var_chaste_interface__cell__V) > CHASTE_CONST(0.001)) ? (CHASTE_CONST(0.00060999999999999997) * (10 + var_chaste_interface__cell__V) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(1.45) + CHASTE_CONST(0.14499999999999999) * var_chaste_interface__cell__V))) : (CHASTE_CONST(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__tauxs1 = ((CHASTE_MATH::Abs(30 + var_chaste_interface__cell__V) < CHASTE_CONST(0.014556040756914121)) ? (CHASTE_CONST(417.94625266107982)) : (1 / (CHASTE_CONST(0.00013100000000000001) * (30 + var_chaste_interface__cell__V) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(2.0609999999999999) + CHASTE_CONST(0.068699999999999997) * var_chaste_interface__cell__V)) + CHASTE_CONST(7.1899999999999999e-5) * (30 + var_chaste_interface__cell__V) / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(4.4399999999999995) - CHASTE_CONST(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 var_IKs__xs1ss = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(0.089820359281437126) - CHASTE_CONST(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) ? ((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 var_INa__ah = ((var_chaste_interface__cell__V < -40) ? (CHASTE_CONST(0.13500000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(11.764705882352942) + CHASTE_CONST(0.14705882352941177) * NV_Ith_S(mParameters, 13) - CHASTE_CONST(0.14705882352941177) * var_chaste_interface__cell__V)) : (0)); // per_ms + const double var_INa__aj = ((var_chaste_interface__cell__V < -40) ? ((CHASTE_CONST(37.780000000000001) + var_chaste_interface__cell__V) * (-127140 * CHASTE_MATH::Exp(CHASTE_CONST(0.24440000000000001) * var_chaste_interface__cell__V - CHASTE_CONST(0.24440000000000001) * NV_Ith_S(mParameters, 13)) - CHASTE_CONST(3.4740000000000003e-5) * CHASTE_MATH::Exp(CHASTE_CONST(0.043909999999999998) * NV_Ith_S(mParameters, 13) - CHASTE_CONST(0.043909999999999998) * var_chaste_interface__cell__V)) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(24.640530000000002) + CHASTE_CONST(0.311) * var_chaste_interface__cell__V))) : (0)); // per_ms + const double var_INa__am = ((CHASTE_MATH::Abs(CHASTE_CONST(47.130000000000003) + var_chaste_interface__cell__V) > CHASTE_CONST(0.001)) ? (CHASTE_CONST(0.32000000000000001) * (CHASTE_CONST(47.130000000000003) + var_chaste_interface__cell__V) / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(4.7130000000000001) - CHASTE_CONST(0.10000000000000001) * var_chaste_interface__cell__V))) : (CHASTE_CONST(3.2000000000000002))); // per_ms + const double var_INa__bh = ((var_chaste_interface__cell__V < -40) ? (310000 * CHASTE_MATH::Exp(CHASTE_CONST(0.34999999999999998) * var_chaste_interface__cell__V - CHASTE_CONST(0.34999999999999998) * NV_Ith_S(mParameters, 13)) + CHASTE_CONST(3.5600000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.079000000000000001) * var_chaste_interface__cell__V - CHASTE_CONST(0.079000000000000001) * NV_Ith_S(mParameters, 13))) : (CHASTE_CONST(7.6923076923076916) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.96036036036036043) + CHASTE_CONST(0.0900900900900901) * NV_Ith_S(mParameters, 13) - CHASTE_CONST(0.0900900900900901) * var_chaste_interface__cell__V)))); // per_ms + const double var_INa__bj = ((var_chaste_interface__cell__V < -40) ? (CHASTE_CONST(0.1212) * CHASTE_MATH::Exp(CHASTE_CONST(0.01052) * NV_Ith_S(mParameters, 13) - CHASTE_CONST(0.01052) * var_chaste_interface__cell__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(5.5312920000000005) - CHASTE_CONST(0.13780000000000001) * var_chaste_interface__cell__V))) : (CHASTE_CONST(0.29999999999999999) * CHASTE_MATH::Exp(CHASTE_CONST(2.5349999999999999e-7) * NV_Ith_S(mParameters, 13) - CHASTE_CONST(2.5349999999999999e-7) * var_chaste_interface__cell__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(3.2000000000000002) - CHASTE_CONST(0.10000000000000001) * var_chaste_interface__cell__V)))); // per_ms + const double var_INa__bm = CHASTE_CONST(0.080000000000000002) * CHASTE_MATH::Exp(-CHASTE_CONST(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__h_inf = CHASTE_CONST(0.01) * NV_Ith_S(mParameters, 12) + (1 - CHASTE_CONST(0.01) * NV_Ith_S(mParameters, 12)) * var_INa__ah / (var_INa__ah + var_INa__bh); // dimensionless + const double var_INa__j_inf = CHASTE_CONST(0.01) * NV_Ith_S(mParameters, 12) + (1 - CHASTE_CONST(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__zw3 = CHASTE_MATH::Pow(var_chaste_interface__Na__Na_i, 3) * NV_Ith_S(mParameters, 5) * CHASTE_MATH::Exp(CHASTE_CONST(0.34999999999999998) * var_Environment__FonRT * var_chaste_interface__cell__V) - CHASTE_MATH::Pow(NV_Ith_S(mParameters, 7), 3) * var_Ca__csm * CHASTE_MATH::Exp(-CHASTE_CONST(0.65000000000000002) * var_Environment__FonRT * var_chaste_interface__cell__V); // mM4 + const double var_INaCa__zw4 = 1 + CHASTE_CONST(0.20000000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(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__fNaK = 1 / (1 + CHASTE_CONST(0.1245) * CHASTE_MATH::Exp(-CHASTE_CONST(0.10000000000000001) * var_Environment__FonRT * var_chaste_interface__cell__V) + CHASTE_CONST(0.036499999999999998) * var_INaK__sigma * CHASTE_MATH::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 = var_ICaL__po * var_Irel__gryr * var_Irel__sparkV * fabs(var_ICaL__rxa); // per_ms + const double var_Irel__sparkV = CHASTE_MATH::Exp(-(30 + var_chaste_interface__cell__V) * var_Irel__ay) / (1 + CHASTE_MATH::Exp(-(30 + var_chaste_interface__cell__V) * var_Irel__ay)); // dimensionless + const double var_Irel__spark_rate = var_ICaL__po * var_Irel__gryr * var_Irel__sparkV * CHASTE_MATH::Abs(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 = 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__xicap = var_ICaL__po * var_Irel__gdyad * CHASTE_MATH::Abs(var_ICaL__rxa); // uM_per_ms + const double var_Irel__xirp = var_ICaL__po * var_Irel__Qr * var_Irel__gbarsr * CHASTE_MATH::Abs(var_ICaL__rxa) * CHASTE_MATH::Exp(-(30 + var_chaste_interface__cell__V) * var_Irel__ax) / (1 + CHASTE_MATH::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 var_Ito__rt1 = -CHASTE_CONST(0.20000000000000001) - CHASTE_CONST(0.066666666666666666) * var_chaste_interface__cell__V; // dimensionless + const double var_Ito__rt2 = CHASTE_CONST(3.3500000000000001) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__cell__V; // dimensionless + const double var_Ito__rt3 = 6 + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__cell__V; // dimensionless + const double var_Ito__rt4 = -CHASTE_CONST(0.0011111111111111111) * CHASTE_MATH::Pow(var_chaste_interface__cell__V, 2); // dimensionless + const double var_Ito__rt5 = CHASTE_CONST(3.3500000000000001) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__cell__V; // dimensionless + const double var_Ito__txf = CHASTE_CONST(1.5) + CHASTE_CONST(3.5) * CHASTE_MATH::Exp(var_Ito__rt4); // ms + const double var_Ito__txs = CHASTE_CONST(0.5) + 9 / (1 + CHASTE_MATH::Exp(-var_Ito__rt1)); // ms + const double var_Ito__tyf = 20 + 20 / (1 + CHASTE_MATH::Exp(var_Ito__rt5)); // ms + const double var_Ito__tys = 30 + 3000 / (1 + CHASTE_MATH::Exp(var_Ito__rt3)); // ms + const double var_Ito__xtos_inf = 1 / (1 + CHASTE_MATH::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 var_Ito__ytos_inf = 1 / (1 + CHASTE_MATH::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 = 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 + const double var_reversal_potentials__ena = CHASTE_MATH::Log(NV_Ith_S(mParameters, 7) / var_chaste_interface__Na__Na_i) / var_Environment__FonRT; // mV + const double var_INa__xina = CHASTE_MATH::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 = -CHASTE_CONST(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) { @@ -495,26 +497,26 @@ } 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_IK1__gkix_total = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::Sqrt(NV_Ith_S(mParameters, 6)) * NV_Ith_S(mParameters, 15); // uS_per_nF + const double var_IKr__gkr_total = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::Sqrt(NV_Ith_S(mParameters, 6)) * NV_Ith_S(mParameters, 16); // uS_per_nF + const double var_IKs__gksx = 1 + CHASTE_CONST(0.80000000000000004) / (1 + CHASTE_CONST(0.125) / CHASTE_MATH::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_IKr__rg = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(1.4732142857142858) + CHASTE_CONST(0.044642857142857144) * var_chaste_interface__cell__V)); // dimensionless + const double var_Ito__rs_inf = 1 / (1 + CHASTE_MATH::Exp(var_Ito__rt2)); // dimensionless + const double var_cell__i_Stim_converted = CHASTE_STIM(var_chaste_interface__Environment__time); // uA_per_cm2 + const double var_cell__i_Stim = CHASTE_CONST(1.0000000000000002) * var_cell__i_Stim_converted / CHASTE_CAP(); // nA_per_nF const double var_ICaL__xica = 2 * var_ICaL__jca * var_cell__wca; // nA_per_nF - const double var_reversal_potentials__ek = 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 = (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_reversal_potentials__ek = CHASTE_MATH::Log(NV_Ith_S(mParameters, 6) / NV_Ith_S(mParameters, 4)) / var_Environment__FonRT; // mV + const double var_IK1__aki = CHASTE_CONST(1.02) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__cell__V - CHASTE_CONST(0.23849999999999999) * var_reversal_potentials__ek)); // per_ms + const double var_IK1__bki = (CHASTE_MATH::Exp(-CHASTE_CONST(36.698642499999998) + CHASTE_CONST(0.061749999999999999) * var_chaste_interface__cell__V - CHASTE_CONST(0.061749999999999999) * var_reversal_potentials__ek) + CHASTE_CONST(0.49124000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.43983232) + CHASTE_CONST(0.080320000000000003) * var_chaste_interface__cell__V - CHASTE_CONST(0.080320000000000003) * var_reversal_potentials__ek)) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.4444678999999998) + CHASTE_CONST(0.51429999999999998) * var_reversal_potentials__ek - CHASTE_CONST(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__xitos = (-var_reversal_potentials__ek + var_chaste_interface__cell__V) * (CHASTE_CONST(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 = 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_reversal_potentials__prNaK = CHASTE_CONST(0.018329999999999999); // dimensionless + const double var_reversal_potentials__eks = CHASTE_MATH::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 @@ -552,7 +554,7 @@ { // Inputs: // Time units: millisecond - double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -602,95 +604,95 @@ 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__csm = CHASTE_CONST(0.001) * var_chaste_interface__Ca__Ca_submem; // mM + const double var_Ca__kmem = CHASTE_CONST(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__mempxi = var_Ca__bmem * var_Ca__kmem / CHASTE_MATH::Pow((var_Ca__Ca_i + var_Ca__kmem), 2); // dimensionless + const double var_Ca__mempxs = var_Ca__bmem * var_Ca__kmem / CHASTE_MATH::Pow((var_chaste_interface__Ca__Ca_submem + var_Ca__kmem), 2); // dimensionless + const double var_Ca__sarpxi = var_Ca__bsar * var_Ca__ksar / CHASTE_MATH::Pow((var_Ca__Ca_i + var_Ca__ksar), 2); // dimensionless + const double var_Ca__sarpxs = var_Ca__bsar * var_Ca__ksar / CHASTE_MATH::Pow((var_chaste_interface__Ca__Ca_submem + var_Ca__ksar), 2); // dimensionless + const double var_Ca__srkd = CHASTE_CONST(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__spxi = var_Ca__srkd * var_Ca__srmax / CHASTE_MATH::Pow((var_Ca__Ca_i + var_Ca__srkd), 2); // dimensionless + const double var_Ca__spxs = var_Ca__srkd * var_Ca__srmax / CHASTE_MATH::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__bpxi = var_Ca__bcal * var_Ca__xkcal / CHASTE_MATH::Pow((var_Ca__Ca_i + var_Ca__xkcal), 2); // dimensionless + const double var_Ca__bpxs = var_Ca__bcal * var_Ca__xkcal / CHASTE_MATH::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_IK1__gkix_total = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::Sqrt(NV_Ith_S(mParameters, 6)) * NV_Ith_S(mParameters, 15); // uS_per_nF + const double var_IKr__gkr_total = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::Sqrt(NV_Ith_S(mParameters, 6)) * NV_Ith_S(mParameters, 16); // uS_per_nF + const double var_IKs__gksx = 1 + CHASTE_CONST(0.80000000000000004) / (1 + CHASTE_CONST(0.125) / CHASTE_MATH::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_INaCa__xkdna = CHASTE_CONST(0.29999999999999999); // uM + const double var_INaCa__aloss = 1 / (1 + CHASTE_MATH::Pow(var_INaCa__xkdna, 3) / CHASTE_MATH::Pow(var_chaste_interface__Ca__Ca_submem, 3)); // dimensionless + const double var_INaCa__xmcai = CHASTE_CONST(0.0035999999999999999); // mM + const double var_INaCa__xmcao = CHASTE_CONST(1.3); // mM + const double var_INaCa__xmnai = CHASTE_CONST(12.300000000000001); // mM + const double var_INaCa__xmnao = CHASTE_CONST(87.5); // mM + const double var_INaCa__yz2 = CHASTE_MATH::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 = CHASTE_CONST(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_Ileak_Iup_Ixfer__jleak = CHASTE_MATH::Pow(var_chaste_interface__Ca__Ca_NSR, 2) * (-var_Ca__Ca_i + CHASTE_CONST(16.667000000000002) * var_chaste_interface__Ca__Ca_NSR) * NV_Ith_S(mParameters, 0) / (CHASTE_MATH::Pow(var_chaste_interface__Ca__Ca_NSR, 2) + CHASTE_MATH::Pow(var_Ileak_Iup_Ixfer__kj, 2)); // uM_per_ms + const double var_Ileak_Iup_Ixfer__jup = CHASTE_MATH::Pow(var_Ca__Ca_i, 2) * NV_Ith_S(mParameters, 2) / (CHASTE_MATH::Pow(var_Ca__Ca_i, 2) + CHASTE_MATH::Pow(var_Ileak_Iup_Ixfer__cup, 2)); // uM_per_ms + const double var_Irel__av = CHASTE_CONST(11.300000000000001); // per_ms + const double var_Irel__ax = CHASTE_CONST(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 + 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__gbarsr = CHASTE_CONST(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__yz1 = CHASTE_MATH::Pow(var_INaCa__xmnao, 3) * var_Ca__csm + CHASTE_MATH::Pow(var_chaste_interface__Na__Na_i, 3) * var_INaCa__xmcao; // mM4 + const double var_INaCa__yz3 = CHASTE_MATH::Pow(NV_Ith_S(mParameters, 7), 3) * (1 + CHASTE_MATH::Pow(var_chaste_interface__Na__Na_i, 3) / CHASTE_MATH::Pow(var_INaCa__xmnai, 3)) * var_INaCa__xmcai; // mM4 + const double var_INaCa__yz4 = CHASTE_MATH::Pow(NV_Ith_S(mParameters, 7), 3) * var_Ca__csm + CHASTE_MATH::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__rxa = ((CHASTE_MATH::Abs(var_ICaL__za) < CHASTE_CONST(0.001)) ? (2 * (-CHASTE_CONST(0.34100000000000003) * NV_Ith_S(mParameters, 5) + var_Ca__csm * CHASTE_MATH::Exp(var_ICaL__za)) * NV_Ith_S(mParameters, 8) * NV_Ith_S(mParameters, 10)) : (4 * (-CHASTE_CONST(0.34100000000000003) * NV_Ith_S(mParameters, 5) + var_Ca__csm * CHASTE_MATH::Exp(var_ICaL__za)) * NV_Ith_S(mParameters, 8) * var_Environment__FonRT * NV_Ith_S(mParameters, 10) * var_chaste_interface__cell__V / (-1 + CHASTE_MATH::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) ? ((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_IKr__rg = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(1.4732142857142858) + CHASTE_CONST(0.044642857142857144) * var_chaste_interface__cell__V)); // dimensionless + const double var_INa__ah = ((var_chaste_interface__cell__V < -40) ? (CHASTE_CONST(0.13500000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(11.764705882352942) + CHASTE_CONST(0.14705882352941177) * NV_Ith_S(mParameters, 13) - CHASTE_CONST(0.14705882352941177) * var_chaste_interface__cell__V)) : (0)); // per_ms + const double var_INa__aj = ((var_chaste_interface__cell__V < -40) ? ((CHASTE_CONST(37.780000000000001) + var_chaste_interface__cell__V) * (-127140 * CHASTE_MATH::Exp(CHASTE_CONST(0.24440000000000001) * var_chaste_interface__cell__V - CHASTE_CONST(0.24440000000000001) * NV_Ith_S(mParameters, 13)) - CHASTE_CONST(3.4740000000000003e-5) * CHASTE_MATH::Exp(CHASTE_CONST(0.043909999999999998) * NV_Ith_S(mParameters, 13) - CHASTE_CONST(0.043909999999999998) * var_chaste_interface__cell__V)) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(24.640530000000002) + CHASTE_CONST(0.311) * var_chaste_interface__cell__V))) : (0)); // per_ms + const double var_INa__bh = ((var_chaste_interface__cell__V < -40) ? (310000 * CHASTE_MATH::Exp(CHASTE_CONST(0.34999999999999998) * var_chaste_interface__cell__V - CHASTE_CONST(0.34999999999999998) * NV_Ith_S(mParameters, 13)) + CHASTE_CONST(3.5600000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.079000000000000001) * var_chaste_interface__cell__V - CHASTE_CONST(0.079000000000000001) * NV_Ith_S(mParameters, 13))) : (CHASTE_CONST(7.6923076923076916) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.96036036036036043) + CHASTE_CONST(0.0900900900900901) * NV_Ith_S(mParameters, 13) - CHASTE_CONST(0.0900900900900901) * var_chaste_interface__cell__V)))); // per_ms + const double var_INa__bj = ((var_chaste_interface__cell__V < -40) ? (CHASTE_CONST(0.1212) * CHASTE_MATH::Exp(CHASTE_CONST(0.01052) * NV_Ith_S(mParameters, 13) - CHASTE_CONST(0.01052) * var_chaste_interface__cell__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(5.5312920000000005) - CHASTE_CONST(0.13780000000000001) * var_chaste_interface__cell__V))) : (CHASTE_CONST(0.29999999999999999) * CHASTE_MATH::Exp(CHASTE_CONST(2.5349999999999999e-7) * NV_Ith_S(mParameters, 13) - CHASTE_CONST(2.5349999999999999e-7) * var_chaste_interface__cell__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(3.2000000000000002) - CHASTE_CONST(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__zw3 = CHASTE_MATH::Pow(var_chaste_interface__Na__Na_i, 3) * NV_Ith_S(mParameters, 5) * CHASTE_MATH::Exp(CHASTE_CONST(0.34999999999999998) * var_Environment__FonRT * var_chaste_interface__cell__V) - CHASTE_MATH::Pow(NV_Ith_S(mParameters, 7), 3) * var_Ca__csm * CHASTE_MATH::Exp(-CHASTE_CONST(0.65000000000000002) * var_Environment__FonRT * var_chaste_interface__cell__V); // mM4 + const double var_INaCa__zw4 = 1 + CHASTE_CONST(0.20000000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(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 = 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__xicap = var_ICaL__po * var_Irel__gdyad * CHASTE_MATH::Abs(var_ICaL__rxa); // uM_per_ms + const double var_Irel__xirp = var_ICaL__po * var_Irel__Qr * var_Irel__gbarsr * CHASTE_MATH::Abs(var_ICaL__rxa) * CHASTE_MATH::Exp(-(30 + var_chaste_interface__cell__V) * var_Irel__ax) / (1 + CHASTE_MATH::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_Ito__rt2 = CHASTE_CONST(3.3500000000000001) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__cell__V; // dimensionless + const double var_Ito__rs_inf = 1 / (1 + CHASTE_MATH::Exp(var_Ito__rt2)); // dimensionless + const double var_cell__i_Stim_converted = CHASTE_STIM(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_ICaL__xica_converted = CHASTE_CONST(0.99999999999999989) * CHASTE_CAP() * 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 = 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 = (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_INaCa__xiNaCa_converted = CHASTE_CONST(0.99999999999999989) * CHASTE_CAP() * var_INaCa__xiNaCa; // uA_per_cm2 + const double var_reversal_potentials__ek = CHASTE_MATH::Log(NV_Ith_S(mParameters, 6) / NV_Ith_S(mParameters, 4)) / var_Environment__FonRT; // mV + const double var_IK1__aki = CHASTE_CONST(1.02) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__cell__V - CHASTE_CONST(0.23849999999999999) * var_reversal_potentials__ek)); // per_ms + const double var_IK1__bki = (CHASTE_MATH::Exp(-CHASTE_CONST(36.698642499999998) + CHASTE_CONST(0.061749999999999999) * var_chaste_interface__cell__V - CHASTE_CONST(0.061749999999999999) * var_reversal_potentials__ek) + CHASTE_CONST(0.49124000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.43983232) + CHASTE_CONST(0.080320000000000003) * var_chaste_interface__cell__V - CHASTE_CONST(0.080320000000000003) * var_reversal_potentials__ek)) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.4444678999999998) + CHASTE_CONST(0.51429999999999998) * var_reversal_potentials__ek - CHASTE_CONST(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_IK1__xik1_converted = CHASTE_CONST(0.99999999999999989) * CHASTE_CAP() * 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_IKr__xikr_converted = CHASTE_CONST(0.99999999999999989) * CHASTE_CAP() * 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__xitos = (-var_reversal_potentials__ek + var_chaste_interface__cell__V) * (CHASTE_CONST(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 = 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 = 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_Ito__xito_converted = CHASTE_CONST(0.99999999999999989) * CHASTE_CAP() * var_Ito__xito; // uA_per_cm2 + const double var_reversal_potentials__ena = CHASTE_MATH::Log(NV_Ith_S(mParameters, 7) / var_chaste_interface__Na__Na_i) / var_Environment__FonRT; // mV + const double var_INa__xina = CHASTE_MATH::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 = CHASTE_CONST(0.99999999999999989) * CHASTE_CAP() * var_INa__xina; // uA_per_cm2 + const double var_reversal_potentials__prNaK = CHASTE_CONST(0.018329999999999999); // dimensionless + const double var_reversal_potentials__eks = CHASTE_MATH::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 + const double var_IKs__xiks_converted = CHASTE_CONST(0.99999999999999989) * CHASTE_CAP() * var_IKs__xiks; // uA_per_cm2 #if CHASTE_SUNDIALS_VERSION >= 60000 N_Vector dqs = N_VNew_Serial(22, CvodeContextManager::Instance()->GetSundialsContext()); @@ -1047,4 +1049,5 @@ extern "C" } } + #endif // CHASTE_CVODE diff --git a/chaste_codegen/data/tests/chaste_reference_models/Cvode/dynamic_mahajan_shiferaw_2008.hpp b/chaste_codegen/data/tests/chaste_reference_models/Cvode/dynamic_mahajan_shiferaw_2008.hpp index 18b61b672..687e1b6e1 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/Cvode/dynamic_mahajan_shiferaw_2008.hpp +++ b/chaste_codegen/data/tests/chaste_reference_models/Cvode/dynamic_mahajan_shiferaw_2008.hpp @@ -18,7 +18,11 @@ #include #include "AbstractDynamicallyLoadableEntity.hpp" #include "AbstractStimulusFunction.hpp" +#if USING_DEVICE_COMPILER +#include "StimulusEvaluatorCuda.hpp" +#endif #include "AbstractCvodeCell.hpp" +#include "HostDeviceMacros.hpp" class Dynamicmahajan_shiferaw_2008FromCellMLCvode : public AbstractCvodeCell, public AbstractDynamicallyLoadableEntity { @@ -39,6 +43,10 @@ class Dynamicmahajan_shiferaw_2008FromCellMLCvode : public AbstractCvodeCell, pu const bool is_concentration[26] = {false, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, false, true, true, true, true, false, false}; const bool is_probability[26] = {false, false, true, true, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false}; public: + static constexpr unsigned TOTAL_SIZE = 26u; + static constexpr unsigned NNZ = 0u; + static inline const int sparse_rowptr[] = { }; + static inline const int sparse_colind[] = { }; boost::shared_ptr UseCellMLDefaultStimulus(); double GetIntracellularCalciumConcentration(); @@ -47,7 +55,19 @@ const bool is_probability[26] = {false, false, true, true, true, false, false, f void VerifyStateVariables(); double GetIIonic(const std::vector* pStateVariables=NULL); void EvaluateYDerivatives(double var_chaste_interface__Environment__time, const N_Vector rY, N_Vector rDY); + N_Vector ComputeDerivedQuantities(double var_chaste_interface__Environment__time, const N_Vector & rY); +#if USING_DEVICE_COMPILER + template + DEVICE + static void EvaluateYDerivativesDevice(ValueType var_chaste_interface__Environment__time, const ValueType* rY, ValueType* rDY, const ValueType mSetVoltageDerivativeToZero, const ValueType mFixedVoltage, const ValueType* mParameters, const ValueType capacitance, const DeviceStimulusFunctor stim); + template + DEVICE + static void EvaluateAnalyticJacobianDevice(ValueType var_chaste_interface__Environment__time, const ValueType *rY, ValueType *rDY, ValueType *rJacobian, ValueType *rTmp1, ValueType *rTmp2, ValueType *rTmp3, const unsigned nvars, const ValueType mSetVoltageDerivativeToZero, const ValueType mFixedVoltage, const ValueType *mParameters, const ValueType capacitance, const DeviceStimulusFunctor stim); + template + DEVICE + static void EvaluateSparseAnalyticJacobianDevice(ValueType var_chaste_interface__Environment__time, const ValueType *rY, ValueType *rDY, ValueType *rJacobian, ValueType *rTmp1, ValueType *rTmp2, ValueType *rTmp3, const unsigned nvars, const ValueType mSetVoltageDerivativeToZero, const ValueType mFixedVoltage, const ValueType *mParameters, const ValueType capacitance, const DeviceStimulusFunctor stim); +#endif }; // Needs to be included last @@ -84,4 +104,10 @@ namespace boost } #endif // DYNAMICMAHAJAN_SHIFERAW_2008FROMCELLMLCVODE_HPP_ + + + +#if USING_DEVICE_COMPILER + #include "dynamic_mahajan_shiferaw_2008Kernels.hpp" +#endif #endif // CHASTE_CVODE \ No newline at end of file diff --git a/chaste_codegen/data/tests/chaste_reference_models/Cvode/faber_rudy_2000.cpp b/chaste_codegen/data/tests/chaste_reference_models/Cvode/faber_rudy_2000.cpp index 6395932d6..92729d7e4 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/Cvode/faber_rudy_2000.cpp +++ b/chaste_codegen/data/tests/chaste_reference_models/Cvode/faber_rudy_2000.cpp @@ -22,6 +22,8 @@ #include "HeartConfig.hpp" #include "IsNan.hpp" #include "MathsCustomFunctions.hpp" +#include "ChasteMathDeviceNamespaces.hpp" +#include "ChasteCpuMacros.hpp" #if CHASTE_SUNDIALS_VERSION >= 60000 #include "CvodeContextManager.hpp" @@ -34,7 +36,7 @@ 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_amplitude_converted = -CHASTE_CONST(25.5) * CHASTE_CAP(); // 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 @@ -70,21 +72,21 @@ 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, 2) = CHASTE_CONST(0.00080000000000000004); // (var_calcium_dynamics__K_mrel) [millimolar] + NV_Ith_S(this->mParameters, 3) = CHASTE_CONST(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, 5) = CHASTE_CONST(1.8); // (var_calcium_dynamics__Cao) [millimolar] + NV_Ith_S(this->mParameters, 6) = CHASTE_CONST(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, 8) = CHASTE_CONST(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] + NV_Ith_S(this->mParameters, 12) = CHASTE_CONST(0.75); // (var_time_independent_potassium_current__G_K1) [milliS_per_microF] + NV_Ith_S(this->mParameters, 13) = CHASTE_CONST(0.02614); // (var_rapid_delayed_rectifier_potassium_current__G_Kr) [milliS_per_microF] + NV_Ith_S(this->mParameters, 14) = CHASTE_CONST(0.433); // (var_slow_delayed_rectifier_potassium_current__G_Ks) [milliS_per_microF] + NV_Ith_S(this->mParameters, 15) = CHASTE_CONST(0.00025000000000000001); // (var_Na_Ca_exchanger__c1) [microA_per_microF] + NV_Ith_S(this->mParameters, 16) = CHASTE_CONST(0.5); // (var_transient_outward_current__g_to) [milliS_per_microF] } Cellfaber_rudy_2000FromCellMLCvode::~Cellfaber_rudy_2000FromCellMLCvode() @@ -140,7 +142,7 @@ made_new_cvode_vector = true; rY = MakeNVector(*pStateVariables); } - double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -176,84 +178,84 @@ 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_ATP_sensitive_potassium_current__kATP = CHASTE_CONST(0.00025000000000000001); // millimolar + const double var_ATP_sensitive_potassium_current__nATP = CHASTE_CONST(0.23999999999999999); // dimensionless + const double var_ATP_sensitive_potassium_current__nicholsarea = CHASTE_CONST(5.0000000000000002e-5); // dimensionless + const double var_ATP_sensitive_potassium_current__g_K_ATP = CHASTE_CONST(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 + CHASTE_MATH::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 = CHASTE_CONST(0.00059999999999999995); // millimolar + const double var_Na_Ca_exchanger__c2 = CHASTE_CONST(0.0001); // dimensionless + const double var_Na_Ca_exchanger__gamma = CHASTE_CONST(0.14999999999999999); // dimensionless + const double var_T_type_Ca_channel__g_CaT = CHASTE_CONST(0.050000000000000003); // milliS_per_microF + const double var_calcium_background_current__g_Cab = CHASTE_CONST(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) + 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) + 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) + 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) + 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_calcium_background_current__E_Ca = CHASTE_CONST(0.5) * var_cell__R * var_cell__T * CHASTE_MATH::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 >= -CHASTE_CONST(1.3356169352749131e-6)) && (var_chaste_interface__cell__V <= CHASTE_CONST(1.3356169352749131e-6))) ? (CHASTE_CONST(374358.83507802623) * (CHASTE_CONST(1.3356169352749131e-6) + var_chaste_interface__cell__V) * (CHASTE_CONST(0.019296999999999998) * (-CHASTE_CONST(0.34100000000000003) * NV_Ith_S(mParameters, 5) + var_chaste_interface__calcium_dynamics__Cai * CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) * NV_Ith_S(mParameters, 8) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) + CHASTE_CONST(0.019296999999999998) * (-CHASTE_CONST(0.34100000000000003) * NV_Ith_S(mParameters, 5) + var_chaste_interface__calcium_dynamics__Cai * CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8))) * NV_Ith_S(mParameters, 8) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)))) - CHASTE_CONST(0.019296999999999998) * (-CHASTE_CONST(0.34100000000000003) * NV_Ith_S(mParameters, 5) + var_chaste_interface__calcium_dynamics__Cai * CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8))) * NV_Ith_S(mParameters, 8) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)))) : (CHASTE_CONST(14448.004881001343) * (-CHASTE_CONST(0.34100000000000003) * NV_Ith_S(mParameters, 5) + var_chaste_interface__calcium_dynamics__Cai * CHASTE_MATH::Exp(CHASTE_CONST(0.074871767015605231) * var_chaste_interface__cell__V)) * NV_Ith_S(mParameters, 8) * var_chaste_interface__cell__V / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(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_T_type_Ca_channel__i_Ca_T = CHASTE_MATH::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_ATP_sensitive_potassium_current__GKbaraATP = CHASTE_MATH::Pow((CHASTE_CONST(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 >= -CHASTE_CONST(2.6712338705498262e-6)) && (var_chaste_interface__cell__V <= CHASTE_CONST(2.6712338705498262e-6))) ? (CHASTE_CONST(187179.41753901311) * (CHASTE_CONST(2.6712338705498262e-6) + var_chaste_interface__cell__V) * (CHASTE_CONST(1.8621604999999999e-9) * (-CHASTE_CONST(0.75) * NV_Ith_S(mParameters, 6) + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Ki * CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) + CHASTE_CONST(1.8621604999999999e-9) * (-CHASTE_CONST(0.75) * NV_Ith_S(mParameters, 6) + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Ki * CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8))) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)))) - CHASTE_CONST(1.8621604999999999e-9) * (-CHASTE_CONST(0.75) * NV_Ith_S(mParameters, 6) + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Ki * CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8))) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)))) : (CHASTE_CONST(0.00069711623550831479) * (-CHASTE_CONST(0.75) * NV_Ith_S(mParameters, 6) + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Ki * CHASTE_MATH::Exp(CHASTE_CONST(0.037435883507802616) * var_chaste_interface__cell__V)) * var_chaste_interface__cell__V / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(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_chaste_interface__cell__V >= -CHASTE_CONST(2.6712338705498262e-6)) && (var_chaste_interface__cell__V <= CHASTE_CONST(2.6712338705498262e-6))) ? (CHASTE_CONST(187179.41753901311) * (CHASTE_CONST(2.6712338705498262e-6) + var_chaste_interface__cell__V) * (CHASTE_CONST(6.5127375e-9) * (-CHASTE_CONST(0.75) * NV_Ith_S(mParameters, 7) + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Nai * CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) + CHASTE_CONST(6.5127375e-9) * (-CHASTE_CONST(0.75) * NV_Ith_S(mParameters, 7) + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Nai * CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8))) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)))) - CHASTE_CONST(6.5127375e-9) * (-CHASTE_CONST(0.75) * NV_Ith_S(mParameters, 7) + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Nai * CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8))) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)))) : (CHASTE_CONST(0.0024381008236689767) * (-CHASTE_CONST(0.75) * NV_Ith_S(mParameters, 7) + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Nai * CHASTE_MATH::Exp(CHASTE_CONST(0.037435883507802616) * var_chaste_interface__cell__V)) * var_chaste_interface__cell__V / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(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 = 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 = 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_L_type_Ca_channel__i_Ca_L_converted = CHASTE_CAP() * var_L_type_Ca_channel__i_Ca_L; // uA_per_cm2 + const double var_Na_Ca_exchanger__i_NaCa = (-CHASTE_MATH::Pow(NV_Ith_S(mParameters, 7), 3) * var_chaste_interface__calcium_dynamics__Cai + CHASTE_MATH::Pow(var_chaste_interface__ionic_concentrations__Nai, 3) * NV_Ith_S(mParameters, 5) * CHASTE_MATH::Exp(var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T))) * NV_Ith_S(mParameters, 15) * CHASTE_MATH::Exp((-1 + var_Na_Ca_exchanger__gamma) * var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T)) / (1 + (CHASTE_MATH::Pow(NV_Ith_S(mParameters, 7), 3) * var_chaste_interface__calcium_dynamics__Cai + CHASTE_MATH::Pow(var_chaste_interface__ionic_concentrations__Nai, 3) * NV_Ith_S(mParameters, 5) * CHASTE_MATH::Exp(var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T))) * var_Na_Ca_exchanger__c2 * CHASTE_MATH::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 = CHASTE_CAP() * var_Na_Ca_exchanger__i_NaCa; // uA_per_cm2 + const double var_fast_sodium_current__E_Na = var_cell__R * var_cell__T * CHASTE_MATH::Log(NV_Ith_S(mParameters, 7) / var_chaste_interface__ionic_concentrations__Nai) / var_cell__F; // millivolt + const double var_fast_sodium_current__i_Na = CHASTE_MATH::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 = CHASTE_CAP() * 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 >= -CHASTE_CONST(2.6712338705498262e-6)) && (var_chaste_interface__cell__V <= CHASTE_CONST(2.6712338705498262e-6))) ? (CHASTE_CONST(187179.41753901311) * (CHASTE_CONST(2.6712338705498262e-6) + var_chaste_interface__cell__V) * (CHASTE_CONST(1.6884874999999999e-9) * (-CHASTE_CONST(0.75) * NV_Ith_S(mParameters, 6) + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Ki * CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) + CHASTE_CONST(1.6884874999999999e-9) * (-CHASTE_CONST(0.75) * NV_Ith_S(mParameters, 6) + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Ki * CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8))) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)))) - CHASTE_CONST(1.6884874999999999e-9) * (-CHASTE_CONST(0.75) * NV_Ith_S(mParameters, 6) + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Ki * CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8))) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)))) : (CHASTE_CONST(0.00063210021354380874) * (-CHASTE_CONST(0.75) * NV_Ith_S(mParameters, 6) + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Ki * CHASTE_MATH::Exp(CHASTE_CONST(0.037435883507802616) * var_chaste_interface__cell__V)) * var_chaste_interface__cell__V / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(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 >= -CHASTE_CONST(2.6712338705498262e-6)) && (var_chaste_interface__cell__V <= CHASTE_CONST(2.6712338705498262e-6))) ? (CHASTE_CONST(187179.41753901311) * (CHASTE_CONST(2.6712338705498262e-6) + var_chaste_interface__cell__V) * (CHASTE_CONST(1.6884874999999999e-9) * (-CHASTE_CONST(0.75) * NV_Ith_S(mParameters, 7) + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Nai * CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) + CHASTE_CONST(1.6884874999999999e-9) * (-CHASTE_CONST(0.75) * NV_Ith_S(mParameters, 7) + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Nai * CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8))) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)))) - CHASTE_CONST(1.6884874999999999e-9) * (-CHASTE_CONST(0.75) * NV_Ith_S(mParameters, 7) + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Nai * CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8))) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)))) : (CHASTE_CONST(0.00063210021354380874) * (-CHASTE_CONST(0.75) * NV_Ith_S(mParameters, 7) + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Nai * CHASTE_MATH::Exp(CHASTE_CONST(0.037435883507802616) * var_chaste_interface__cell__V)) * var_chaste_interface__cell__V / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(0.037435883507802616) * var_chaste_interface__cell__V)))); // microA_per_microF + const double var_non_specific_calcium_activated_current__K_m_ns_Ca = CHASTE_CONST(0.0011999999999999999); // millimolar + const double var_non_specific_calcium_activated_current__i_ns_K = var_non_specific_calcium_activated_current__I_ns_K / (1 + CHASTE_MATH::Pow(var_non_specific_calcium_activated_current__K_m_ns_Ca, 3) / CHASTE_MATH::Pow(var_chaste_interface__calcium_dynamics__Cai, 3)); // microA_per_microF + const double var_non_specific_calcium_activated_current__i_ns_Na = var_non_specific_calcium_activated_current__I_ns_Na / (1 + CHASTE_MATH::Pow(var_non_specific_calcium_activated_current__K_m_ns_Ca, 3) / CHASTE_MATH::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_plateau_potassium_current__Kp = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(1.2521739130434781) - CHASTE_CONST(0.16722408026755853) * var_chaste_interface__cell__V)); // dimensionless + const double var_plateau_potassium_current__g_Kp = CHASTE_CONST(0.0055199999999999997); // milliS_per_microF + const double var_rapid_delayed_rectifier_potassium_current__Rect = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(0.4017857142857143) + CHASTE_CONST(0.044642857142857144) * var_chaste_interface__cell__V)); // dimensionless + const double var_rapid_delayed_rectifier_potassium_current__g_Kr = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::Sqrt(NV_Ith_S(mParameters, 6)) * NV_Ith_S(mParameters, 13); // milliS_per_microF + const double var_sarcolemmal_calcium_pump__I_pCa = CHASTE_CONST(1.1499999999999999); // microA_per_microF + const double var_sarcolemmal_calcium_pump__K_mpCa = CHASTE_CONST(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__PNaK = CHASTE_CONST(0.018329999999999999); // dimensionless + const double var_slow_delayed_rectifier_potassium_current__E_Ks = var_cell__R * var_cell__T * CHASTE_MATH::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 + CHASTE_CONST(0.59999999999999998) / (1 + CHASTE_CONST(6.4818210260626455e-7) * CHASTE_MATH::Pow((1 / var_chaste_interface__calcium_dynamics__Cai), CHASTE_CONST(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_slow_delayed_rectifier_potassium_current__i_Ks_converted = CHASTE_CAP() * var_slow_delayed_rectifier_potassium_current__i_Ks; // uA_per_cm2 + const double var_sodium_activated_potassium_current__g_K_Na = CHASTE_CONST(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_activated_potassium_current__nKNa = CHASTE_CONST(2.7999999999999998); // dimensionless + const double var_sodium_activated_potassium_current__pona = CHASTE_CONST(0.84999999999999998) / (1 + CHASTE_MATH::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 = CHASTE_CONST(0.80000000000000004) - CHASTE_CONST(0.65000000000000002) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(8.3333333333333339) + CHASTE_CONST(0.066666666666666666) * var_chaste_interface__cell__V)); // dimensionless + const double var_sodium_background_current__g_Nab = CHASTE_CONST(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__I_NaK = CHASTE_CONST(2.25); // microA_per_microF + const double var_sodium_potassium_pump__K_mKo = CHASTE_CONST(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 = 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_sodium_potassium_pump__sigma = -CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * CHASTE_MATH::Exp(CHASTE_CONST(0.01485884101040119) * NV_Ith_S(mParameters, 7)); // dimensionless + const double var_sodium_potassium_pump__f_NaK = 1 / (1 + CHASTE_CONST(0.1245) * CHASTE_MATH::Exp(-CHASTE_CONST(0.10000000000000001) * var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T)) + CHASTE_CONST(0.036499999999999998) * var_sodium_potassium_pump__sigma * CHASTE_MATH::Exp(-var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T))); // dimensionless + const double var_sodium_potassium_pump__i_NaK = NV_Ith_S(mParameters, 6) * var_sodium_potassium_pump__I_NaK * var_sodium_potassium_pump__f_NaK / ((1 + CHASTE_MATH::Pow(var_sodium_potassium_pump__K_mNai, 2) / CHASTE_MATH::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 * CHASTE_MATH::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_rapid_delayed_rectifier_potassium_current__i_Kr_converted = CHASTE_CAP() * 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 = (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__g_K1 = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::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 = CHASTE_CONST(1.02) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__cell__V - CHASTE_CONST(0.23849999999999999) * var_time_independent_potassium_current__E_K)); // per_ms + const double var_time_independent_potassium_current_K1_gate__beta_K1 = (CHASTE_CONST(0.49124000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.43983232) + CHASTE_CONST(0.080320000000000003) * var_chaste_interface__cell__V - CHASTE_CONST(0.080320000000000003) * var_time_independent_potassium_current__E_K) + CHASTE_MATH::Exp(-CHASTE_CONST(36.698642499999998) + CHASTE_CONST(0.061749999999999999) * var_chaste_interface__cell__V - CHASTE_CONST(0.061749999999999999) * var_time_independent_potassium_current__E_K)) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.4444678999999998) + CHASTE_CONST(0.51429999999999998) * var_time_independent_potassium_current__E_K - CHASTE_CONST(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 var_time_independent_potassium_current__i_K1_converted = CHASTE_CAP() * var_time_independent_potassium_current__i_K1; // uA_per_cm2 + const double var_transient_outward_current__rvdv = CHASTE_MATH::Exp(CHASTE_CONST(0.01) * var_chaste_interface__cell__V); // dimensionless + const double var_transient_outward_current__i_to = CHASTE_MATH::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 = CHASTE_CAP() * var_transient_outward_current__i_to; // uA_per_cm2 + const double var_chaste_interface__i_ionic = CHASTE_CAP() * var_ATP_sensitive_potassium_current__i_K_ATP + CHASTE_CAP() * var_T_type_Ca_channel__i_Ca_T + CHASTE_CAP() * var_calcium_background_current__i_Ca_b + CHASTE_CAP() * var_non_specific_calcium_activated_current__i_ns_Ca + CHASTE_CAP() * var_plateau_potassium_current__i_Kp + CHASTE_CAP() * var_sarcolemmal_calcium_pump__i_p_Ca + CHASTE_CAP() * var_sodium_activated_potassium_current__i_K_Na + CHASTE_CAP() * var_sodium_background_current__i_Na_b + CHASTE_CAP() * 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) @@ -268,7 +270,7 @@ { // Inputs: // Time units: millisecond - double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -324,34 +326,34 @@ 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_ATP_sensitive_potassium_current__kATP = CHASTE_CONST(0.00025000000000000001); // millimolar + const double var_ATP_sensitive_potassium_current__nATP = CHASTE_CONST(0.23999999999999999); // dimensionless + const double var_ATP_sensitive_potassium_current__nicholsarea = CHASTE_CONST(5.0000000000000002e-5); // dimensionless + const double var_ATP_sensitive_potassium_current__g_K_ATP = CHASTE_CONST(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 + CHASTE_MATH::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 = CHASTE_CONST(0.00059999999999999995); // millimolar + const double var_Na_Ca_exchanger__c2 = CHASTE_CONST(0.0001); // dimensionless + const double var_Na_Ca_exchanger__gamma = CHASTE_CONST(0.14999999999999999); // dimensionless + const double var_T_type_Ca_channel__g_CaT = CHASTE_CONST(0.050000000000000003); // milliS_per_microF + const double var_calcium_background_current__g_Cab = CHASTE_CONST(0.003016); // milliS_per_microF + const double d_dt_chaste_interface_var_calcium_dynamics__APtrack2 = (((var_chaste_interface__calcium_dynamics__APtrack > CHASTE_CONST(0.17999999999999999)) && (var_chaste_interface__calcium_dynamics__APtrack < CHASTE_CONST(0.20000000000000001))) ? (100 - CHASTE_CONST(100.5) * var_chaste_interface__calcium_dynamics__APtrack2) : (-CHASTE_CONST(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 > CHASTE_CONST(0.17999999999999999)) && (var_chaste_interface__calcium_dynamics__APtrack < CHASTE_CONST(0.20000000000000001))) ? (100 - CHASTE_CONST(100.5) * var_chaste_interface__calcium_dynamics__APtrack3) : (-CHASTE_CONST(0.01) * var_chaste_interface__calcium_dynamics__APtrack3)); // 1 / ms + const double var_calcium_dynamics__CMDN_max = CHASTE_CONST(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__CSQNthresh = CHASTE_CONST(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__K_mCMDN = CHASTE_CONST(0.0023800000000000002); // millimolar + const double var_calcium_dynamics__K_mCSQN = CHASTE_CONST(0.80000000000000004); // millimolar + const double var_calcium_dynamics__K_mTn = CHASTE_CONST(0.00050000000000000001); // millimolar + const double var_calcium_dynamics__K_mup = CHASTE_CONST(0.00092000000000000003); // millimolar + const double var_calcium_dynamics__Logicthresh = CHASTE_CONST(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) : (-CHASTE_CONST(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 < CHASTE_CONST(0.37)) && (var_chaste_interface__calcium_dynamics__OVRLDtrack3 < CHASTE_CONST(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) : (-CHASTE_CONST(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) : (-CHASTE_CONST(0.01) * var_chaste_interface__calcium_dynamics__OVRLDtrack3)); // 1 / ms + const double var_calcium_dynamics__RyRopen = 1 / (1 + var_chaste_interface__calcium_dynamics__APtrack2 * CHASTE_MATH::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__Tn_max = CHASTE_CONST(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 @@ -360,130 +362,130 @@ 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) + 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) + 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) + 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) + 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_calcium_background_current__E_Ca = CHASTE_CONST(0.5) * var_cell__R * var_cell__T * CHASTE_MATH::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 >= -CHASTE_CONST(1.3356169352749131e-6)) && (var_chaste_interface__cell__V <= CHASTE_CONST(1.3356169352749131e-6))) ? (CHASTE_CONST(374358.83507802623) * (CHASTE_CONST(1.3356169352749131e-6) + var_chaste_interface__cell__V) * (CHASTE_CONST(0.019296999999999998) * (-CHASTE_CONST(0.34100000000000003) * NV_Ith_S(mParameters, 5) + var_chaste_interface__calcium_dynamics__Cai * CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) * NV_Ith_S(mParameters, 8) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) + CHASTE_CONST(0.019296999999999998) * (-CHASTE_CONST(0.34100000000000003) * NV_Ith_S(mParameters, 5) + var_chaste_interface__calcium_dynamics__Cai * CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8))) * NV_Ith_S(mParameters, 8) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)))) - CHASTE_CONST(0.019296999999999998) * (-CHASTE_CONST(0.34100000000000003) * NV_Ith_S(mParameters, 5) + var_chaste_interface__calcium_dynamics__Cai * CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8))) * NV_Ith_S(mParameters, 8) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)))) : (CHASTE_CONST(14448.004881001343) * (-CHASTE_CONST(0.34100000000000003) * NV_Ith_S(mParameters, 5) + var_chaste_interface__calcium_dynamics__Cai * CHASTE_MATH::Exp(CHASTE_CONST(0.074871767015605231) * var_chaste_interface__cell__V)) * NV_Ith_S(mParameters, 8) * var_chaste_interface__cell__V / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(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__d_infinity = 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.16025641025641024) * var_L_type_Ca_channel_d_gate__E0_d)); // dimensionless + const double var_L_type_Ca_channel_d_gate__tau_d = ((CHASTE_MATH::Abs(var_L_type_Ca_channel_d_gate__E0_d) < CHASTE_CONST(1.0000000000000001e-5)) ? (CHASTE_CONST(2.2893772893772892)) : (CHASTE_CONST(28.571428571428569) * (1 - CHASTE_MATH::Exp(-CHASTE_CONST(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__f_infinity = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(4.0767441860465121) + CHASTE_CONST(0.11627906976744186) * var_chaste_interface__cell__V)) + CHASTE_CONST(0.59999999999999998) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(2.5) - CHASTE_CONST(0.050000000000000003) * var_chaste_interface__cell__V)); // dimensionless + const double var_L_type_Ca_channel_f_gate__tau_f = 1 / (CHASTE_CONST(0.02) + CHASTE_CONST(0.019699999999999999) * CHASTE_MATH::Exp(-CHASTE_CONST(0.113569) * CHASTE_MATH::Pow((1 + CHASTE_CONST(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 var_T_type_Ca_channel__i_Ca_T = CHASTE_MATH::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 + CHASTE_MATH::Exp(-CHASTE_CONST(1.2962962962962963) - CHASTE_CONST(0.092592592592592587) * var_chaste_interface__cell__V)); // dimensionless + const double var_T_type_Ca_channel_b_gate__tau_b = CHASTE_CONST(3.7000000000000002) + CHASTE_CONST(6.0999999999999996) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(5.5555555555555554) + CHASTE_CONST(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 var_T_type_Ca_channel_g_gate__g_inf = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(10.714285714285715) + CHASTE_CONST(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 - CHASTE_CONST(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_cell__I_st_converted = CHASTE_STIM(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_cell__I_st = var_cell__I_st_converted / CHASTE_CAP(); // microA_per_microF + const double var_fast_sodium_current_h_gate__alpha_h = ((var_chaste_interface__cell__V < -40) ? (CHASTE_CONST(0.13500000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(11.764705882352942) + CHASTE_CONST(0.14705882352941177) * NV_Ith_S(mParameters, 11) - CHASTE_CONST(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 * CHASTE_MATH::Exp(CHASTE_CONST(0.34999999999999998) * var_chaste_interface__cell__V - CHASTE_CONST(0.34999999999999998) * NV_Ith_S(mParameters, 11)) + CHASTE_CONST(3.5600000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.079000000000000001) * var_chaste_interface__cell__V - CHASTE_CONST(0.079000000000000001) * NV_Ith_S(mParameters, 11))) : (CHASTE_CONST(7.6923076923076916) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.96036036036036043) + CHASTE_CONST(0.0900900900900901) * NV_Ith_S(mParameters, 11) - CHASTE_CONST(0.0900900900900901) * var_chaste_interface__cell__V)))); // per_ms + const double var_fast_sodium_current_h_gate__h_inf = CHASTE_CONST(0.01) * NV_Ith_S(mParameters, 10) + (1 - CHASTE_CONST(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__alpha_j = ((var_chaste_interface__cell__V < -40) ? ((CHASTE_CONST(37.780000000000001) + var_chaste_interface__cell__V) * (-127140 * CHASTE_MATH::Exp(CHASTE_CONST(0.24440000000000001) * var_chaste_interface__cell__V - CHASTE_CONST(0.24440000000000001) * NV_Ith_S(mParameters, 11)) - CHASTE_CONST(3.4740000000000003e-5) * CHASTE_MATH::Exp(CHASTE_CONST(0.043909999999999998) * NV_Ith_S(mParameters, 11) - CHASTE_CONST(0.043909999999999998) * var_chaste_interface__cell__V)) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(24.640530000000002) + CHASTE_CONST(0.311) * var_chaste_interface__cell__V - CHASTE_CONST(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) ? (CHASTE_CONST(0.1212) * CHASTE_MATH::Exp(CHASTE_CONST(0.01052) * NV_Ith_S(mParameters, 11) - CHASTE_CONST(0.01052) * var_chaste_interface__cell__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(5.5312920000000005) + CHASTE_CONST(0.13780000000000001) * NV_Ith_S(mParameters, 11) - CHASTE_CONST(0.13780000000000001) * var_chaste_interface__cell__V))) : (CHASTE_CONST(0.29999999999999999) * CHASTE_MATH::Exp(CHASTE_CONST(2.5349999999999999e-7) * NV_Ith_S(mParameters, 11) - CHASTE_CONST(2.5349999999999999e-7) * var_chaste_interface__cell__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(3.2000000000000002) + CHASTE_CONST(0.10000000000000001) * NV_Ith_S(mParameters, 11) - CHASTE_CONST(0.10000000000000001) * var_chaste_interface__cell__V)))); // per_ms + const double var_fast_sodium_current_j_gate__j_inf = CHASTE_CONST(0.01) * NV_Ith_S(mParameters, 10) + (1 - CHASTE_CONST(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 var_fast_sodium_current_m_gate__E0_m = CHASTE_CONST(47.130000000000003) + var_chaste_interface__cell__V; // millivolt + const double var_fast_sodium_current_m_gate__beta_m = CHASTE_CONST(0.080000000000000002) * CHASTE_MATH::Exp(-CHASTE_CONST(0.090909090909090912) * var_chaste_interface__cell__V); // per_ms + const double var_fast_sodium_current_m_gate__delta_m = CHASTE_CONST(1.0000000000000001e-5); // millivolt + const double var_fast_sodium_current_m_gate__alpha_m = ((var_fast_sodium_current_m_gate__delta_m <= CHASTE_MATH::Abs(var_fast_sodium_current_m_gate__E0_m)) ? (CHASTE_CONST(0.32000000000000001) * var_fast_sodium_current_m_gate__E0_m / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(0.10000000000000001) * var_fast_sodium_current_m_gate__E0_m))) : (CHASTE_CONST(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 var_geometry__A_cap = CHASTE_CONST(0.00015339999999999999); // cm2 + const double var_geometry__preplength = CHASTE_CONST(0.10000000000000001); // mm + const double var_geometry__radius = CHASTE_CONST(0.010999999999999999); // mm + const double var_geometry__volume = CHASTE_CONST(CHASTE_MATH::Pi) * CHASTE_MATH::Pow(var_geometry__radius, 2) * var_geometry__preplength; // micro_litre + const double var_geometry__V_JSR = CHASTE_CONST(0.0047999999999999996) * var_geometry__volume; // micro_litre + const double var_geometry__V_NSR = CHASTE_CONST(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_geometry__V_myo = CHASTE_CONST(0.68000000000000005) * var_geometry__volume; // micro_litre + const double var_ATP_sensitive_potassium_current__GKbaraATP = CHASTE_MATH::Pow((CHASTE_CONST(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 >= -CHASTE_CONST(2.6712338705498262e-6)) && (var_chaste_interface__cell__V <= CHASTE_CONST(2.6712338705498262e-6))) ? (CHASTE_CONST(187179.41753901311) * (CHASTE_CONST(2.6712338705498262e-6) + var_chaste_interface__cell__V) * (CHASTE_CONST(1.8621604999999999e-9) * (-CHASTE_CONST(0.75) * NV_Ith_S(mParameters, 6) + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Ki * CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) + CHASTE_CONST(1.8621604999999999e-9) * (-CHASTE_CONST(0.75) * NV_Ith_S(mParameters, 6) + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Ki * CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8))) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)))) - CHASTE_CONST(1.8621604999999999e-9) * (-CHASTE_CONST(0.75) * NV_Ith_S(mParameters, 6) + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Ki * CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8))) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)))) : (CHASTE_CONST(0.00069711623550831479) * (-CHASTE_CONST(0.75) * NV_Ith_S(mParameters, 6) + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Ki * CHASTE_MATH::Exp(CHASTE_CONST(0.037435883507802616) * var_chaste_interface__cell__V)) * var_chaste_interface__cell__V / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(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_chaste_interface__cell__V >= -CHASTE_CONST(2.6712338705498262e-6)) && (var_chaste_interface__cell__V <= CHASTE_CONST(2.6712338705498262e-6))) ? (CHASTE_CONST(187179.41753901311) * (CHASTE_CONST(2.6712338705498262e-6) + var_chaste_interface__cell__V) * (CHASTE_CONST(6.5127375e-9) * (-CHASTE_CONST(0.75) * NV_Ith_S(mParameters, 7) + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Nai * CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) + CHASTE_CONST(6.5127375e-9) * (-CHASTE_CONST(0.75) * NV_Ith_S(mParameters, 7) + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Nai * CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8))) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)))) - CHASTE_CONST(6.5127375e-9) * (-CHASTE_CONST(0.75) * NV_Ith_S(mParameters, 7) + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Nai * CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8))) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)))) : (CHASTE_CONST(0.0024381008236689767) * (-CHASTE_CONST(0.75) * NV_Ith_S(mParameters, 7) + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Nai * CHASTE_MATH::Exp(CHASTE_CONST(0.037435883507802616) * var_chaste_interface__cell__V)) * var_chaste_interface__cell__V / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(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 = 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 = 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_Na_Ca_exchanger__i_NaCa = (-CHASTE_MATH::Pow(NV_Ith_S(mParameters, 7), 3) * var_chaste_interface__calcium_dynamics__Cai + CHASTE_MATH::Pow(var_chaste_interface__ionic_concentrations__Nai, 3) * NV_Ith_S(mParameters, 5) * CHASTE_MATH::Exp(var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T))) * NV_Ith_S(mParameters, 15) * CHASTE_MATH::Exp((-1 + var_Na_Ca_exchanger__gamma) * var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T)) / (1 + (CHASTE_MATH::Pow(NV_Ith_S(mParameters, 7), 3) * var_chaste_interface__calcium_dynamics__Cai + CHASTE_MATH::Pow(var_chaste_interface__ionic_concentrations__Nai, 3) * NV_Ith_S(mParameters, 5) * CHASTE_MATH::Exp(var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T))) * var_Na_Ca_exchanger__c2 * CHASTE_MATH::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 * CHASTE_MATH::Log(NV_Ith_S(mParameters, 7) / var_chaste_interface__ionic_concentrations__Nai) / var_cell__F; // millivolt + const double var_fast_sodium_current__i_Na = CHASTE_MATH::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 >= -CHASTE_CONST(2.6712338705498262e-6)) && (var_chaste_interface__cell__V <= CHASTE_CONST(2.6712338705498262e-6))) ? (CHASTE_CONST(187179.41753901311) * (CHASTE_CONST(2.6712338705498262e-6) + var_chaste_interface__cell__V) * (CHASTE_CONST(1.6884874999999999e-9) * (-CHASTE_CONST(0.75) * NV_Ith_S(mParameters, 6) + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Ki * CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) + CHASTE_CONST(1.6884874999999999e-9) * (-CHASTE_CONST(0.75) * NV_Ith_S(mParameters, 6) + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Ki * CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8))) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)))) - CHASTE_CONST(1.6884874999999999e-9) * (-CHASTE_CONST(0.75) * NV_Ith_S(mParameters, 6) + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Ki * CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8))) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)))) : (CHASTE_CONST(0.00063210021354380874) * (-CHASTE_CONST(0.75) * NV_Ith_S(mParameters, 6) + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Ki * CHASTE_MATH::Exp(CHASTE_CONST(0.037435883507802616) * var_chaste_interface__cell__V)) * var_chaste_interface__cell__V / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(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 >= -CHASTE_CONST(2.6712338705498262e-6)) && (var_chaste_interface__cell__V <= CHASTE_CONST(2.6712338705498262e-6))) ? (CHASTE_CONST(187179.41753901311) * (CHASTE_CONST(2.6712338705498262e-6) + var_chaste_interface__cell__V) * (CHASTE_CONST(1.6884874999999999e-9) * (-CHASTE_CONST(0.75) * NV_Ith_S(mParameters, 7) + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Nai * CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) + CHASTE_CONST(1.6884874999999999e-9) * (-CHASTE_CONST(0.75) * NV_Ith_S(mParameters, 7) + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Nai * CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8))) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)))) - CHASTE_CONST(1.6884874999999999e-9) * (-CHASTE_CONST(0.75) * NV_Ith_S(mParameters, 7) + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Nai * CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8))) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)))) : (CHASTE_CONST(0.00063210021354380874) * (-CHASTE_CONST(0.75) * NV_Ith_S(mParameters, 7) + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Nai * CHASTE_MATH::Exp(CHASTE_CONST(0.037435883507802616) * var_chaste_interface__cell__V)) * var_chaste_interface__cell__V / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(0.037435883507802616) * var_chaste_interface__cell__V)))); // microA_per_microF + const double var_non_specific_calcium_activated_current__K_m_ns_Ca = CHASTE_CONST(0.0011999999999999999); // millimolar + const double var_non_specific_calcium_activated_current__i_ns_K = var_non_specific_calcium_activated_current__I_ns_K / (1 + CHASTE_MATH::Pow(var_non_specific_calcium_activated_current__K_m_ns_Ca, 3) / CHASTE_MATH::Pow(var_chaste_interface__calcium_dynamics__Cai, 3)); // microA_per_microF + const double var_non_specific_calcium_activated_current__i_ns_Na = var_non_specific_calcium_activated_current__I_ns_Na / (1 + CHASTE_MATH::Pow(var_non_specific_calcium_activated_current__K_m_ns_Ca, 3) / CHASTE_MATH::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 var_plateau_potassium_current__Kp = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(1.2521739130434781) - CHASTE_CONST(0.16722408026755853) * var_chaste_interface__cell__V)); // dimensionless + const double var_plateau_potassium_current__g_Kp = CHASTE_CONST(0.0055199999999999997); // milliS_per_microF + const double var_rapid_delayed_rectifier_potassium_current__Rect = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(0.4017857142857143) + CHASTE_CONST(0.044642857142857144) * var_chaste_interface__cell__V)); // dimensionless + const double var_rapid_delayed_rectifier_potassium_current__g_Kr = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::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 >= -CHASTE_CONST(14.200000813008129)) && (var_chaste_interface__cell__V <= -CHASTE_CONST(14.199999186991869))) ? (-CHASTE_CONST(1.1219512194943214e-9) / (1 - CHASTE_MATH::Exp(CHASTE_CONST(9.9999999998406912e-8))) + CHASTE_CONST(615000.00000454858) * (CHASTE_CONST(14.200000813008129) + var_chaste_interface__cell__V) * (CHASTE_CONST(1.1219512194943214e-9) / (1 - CHASTE_MATH::Exp(CHASTE_CONST(9.9999999998406912e-8))) + CHASTE_CONST(1.1219512195134727e-9) / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(1.0000000000011388e-7))))) : (CHASTE_CONST(0.0013799999999999999) * (CHASTE_CONST(14.199999999999999) + var_chaste_interface__cell__V) / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(1.7465999999999999) - CHASTE_CONST(0.123) * var_chaste_interface__cell__V)))) + (((var_chaste_interface__cell__V >= -CHASTE_CONST(38.900000689655172)) && (var_chaste_interface__cell__V <= -CHASTE_CONST(38.899999310344825))) ? (-CHASTE_CONST(4.2068965517283451e-10) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(1.000000000001e-7))) + CHASTE_CONST(724999.99997009686) * (CHASTE_CONST(38.900000689655172) + var_chaste_interface__cell__V) * (CHASTE_CONST(4.2068965517283451e-10) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(1.000000000001e-7))) + CHASTE_CONST(4.2068965520669629e-10) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(1.0000000000814911e-7))))) : (CHASTE_CONST(0.00060999999999999997) * (CHASTE_CONST(38.899999999999999) + var_chaste_interface__cell__V) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(5.6404999999999994) + CHASTE_CONST(0.14499999999999999) * var_chaste_interface__cell__V))))); // ms + const double var_rapid_delayed_rectifier_potassium_current_xr_gate__xr_infinity = 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.8666666666666667) - CHASTE_CONST(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_pCa = CHASTE_CONST(1.1499999999999999); // microA_per_microF + const double var_sarcolemmal_calcium_pump__K_mpCa = CHASTE_CONST(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 d_dt_chaste_interface_var_calcium_dynamics__Cainfluxtrack = ((var_chaste_interface__calcium_dynamics__APtrack > CHASTE_CONST(0.20000000000000001)) ? (-CHASTE_CONST(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 > CHASTE_CONST(0.01)) ? (0) : (-CHASTE_CONST(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 + CHASTE_MATH::Exp(CHASTE_CONST(5.5555555555555554) + CHASTE_CONST(1.1111111111111112) * var_L_type_Ca_channel__i_CaCa + CHASTE_CONST(1.1111111111111112) * var_T_type_Ca_channel__i_Ca_T + CHASTE_CONST(1.1111111111111112) * var_calcium_background_current__i_Ca_b + CHASTE_CONST(1.1111111111111112) * var_sarcolemmal_calcium_pump__i_p_Ca - CHASTE_CONST(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 = (-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 = ((-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 = (((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_calcium_dynamics__Ca_JSR = (-var_calcium_dynamics__i_rel + var_calcium_dynamics__i_tr) / (1 + var_calcium_dynamics__CSQN_max * var_calcium_dynamics__K_mCSQN / CHASTE_MATH::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 = ((-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 - CHASTE_CONST(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 / CHASTE_MATH::Pow((var_chaste_interface__calcium_dynamics__Cai + var_calcium_dynamics__K_mCMDN), 2) + var_calcium_dynamics__K_mTn * var_calcium_dynamics__Tn_max / CHASTE_MATH::Pow((var_chaste_interface__calcium_dynamics__Cai + var_calcium_dynamics__K_mTn), 2)); // millimolar / ms + const double var_slow_delayed_rectifier_potassium_current__PNaK = CHASTE_CONST(0.018329999999999999); // dimensionless + const double var_slow_delayed_rectifier_potassium_current__E_Ks = var_cell__R * var_cell__T * CHASTE_MATH::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 + CHASTE_CONST(0.59999999999999998) / (1 + CHASTE_CONST(6.4818210260626455e-7) * CHASTE_MATH::Pow((1 / var_chaste_interface__calcium_dynamics__Cai), CHASTE_CONST(1.3999999999999999)))) * NV_Ith_S(mParameters, 14); // milliS_per_microF + const double var_slow_delayed_rectifier_potassium_current_xs1_gate__tau_xs1 = (((var_chaste_interface__cell__V >= -CHASTE_CONST(30.000001455604075)) && (var_chaste_interface__cell__V <= -CHASTE_CONST(29.999998544395925))) ? (1 / (-CHASTE_CONST(1.0465793304208771e-10) / (1 - CHASTE_MATH::Exp(CHASTE_CONST(2.1542940320207204e-7))) - CHASTE_CONST(1.9068413391534758e-10) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999880736e-8))) + CHASTE_CONST(343500.00000040967) * (CHASTE_CONST(30.000001455604075) + var_chaste_interface__cell__V) * (CHASTE_CONST(1.0465793304208771e-10) / (1 - CHASTE_MATH::Exp(CHASTE_CONST(2.1542940320207204e-7))) + CHASTE_CONST(1.0465793304208771e-10) / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(2.1542940320207204e-7))) + CHASTE_CONST(1.9068413391534758e-10) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999880736e-8))) + CHASTE_CONST(1.9068413391534758e-10) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999880736e-8)))))) : (1 / (CHASTE_CONST(0.00013100000000000001) * (30 + var_chaste_interface__cell__V) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(2.0609999999999999) + CHASTE_CONST(0.068699999999999997) * var_chaste_interface__cell__V)) + CHASTE_CONST(7.1899999999999999e-5) * (30 + var_chaste_interface__cell__V) / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(4.4399999999999995) - CHASTE_CONST(0.14799999999999999) * var_chaste_interface__cell__V))))); // ms + const double var_slow_delayed_rectifier_potassium_current_xs1_gate__xs1_infinity = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(0.089820359281437126) - CHASTE_CONST(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_xs2_gate__tau_xs2 = 4 * (((var_chaste_interface__cell__V >= -CHASTE_CONST(30.000001455604075)) && (var_chaste_interface__cell__V <= -CHASTE_CONST(29.999998544395925))) ? (1 / (-CHASTE_CONST(1.0465793304208771e-10) / (1 - CHASTE_MATH::Exp(CHASTE_CONST(2.1542940320207204e-7))) - CHASTE_CONST(1.9068413391534758e-10) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999880736e-8))) + CHASTE_CONST(343500.00000040967) * (CHASTE_CONST(30.000001455604075) + var_chaste_interface__cell__V) * (CHASTE_CONST(1.0465793304208771e-10) / (1 - CHASTE_MATH::Exp(CHASTE_CONST(2.1542940320207204e-7))) + CHASTE_CONST(1.0465793304208771e-10) / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(2.1542940320207204e-7))) + CHASTE_CONST(1.9068413391534758e-10) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999880736e-8))) + CHASTE_CONST(1.9068413391534758e-10) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999880736e-8)))))) : (1 / (CHASTE_CONST(0.00013100000000000001) * (30 + var_chaste_interface__cell__V) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(2.0609999999999999) + CHASTE_CONST(0.068699999999999997) * var_chaste_interface__cell__V)) + CHASTE_CONST(7.1899999999999999e-5) * (30 + var_chaste_interface__cell__V) / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(4.4399999999999995) - CHASTE_CONST(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 var_slow_delayed_rectifier_potassium_current_xs2_gate__xs2_infinity = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(0.089820359281437126) - CHASTE_CONST(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__g_K_Na = CHASTE_CONST(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_activated_potassium_current__nKNa = CHASTE_CONST(2.7999999999999998); // dimensionless + const double var_sodium_activated_potassium_current__pona = CHASTE_CONST(0.84999999999999998) / (1 + CHASTE_MATH::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 = CHASTE_CONST(0.80000000000000004) - CHASTE_CONST(0.65000000000000002) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(8.3333333333333339) + CHASTE_CONST(0.066666666666666666) * var_chaste_interface__cell__V)); // dimensionless + const double var_sodium_background_current__g_Nab = CHASTE_CONST(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__I_NaK = CHASTE_CONST(2.25); // microA_per_microF + const double var_sodium_potassium_pump__K_mKo = CHASTE_CONST(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 = 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_sodium_potassium_pump__sigma = -CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * CHASTE_MATH::Exp(CHASTE_CONST(0.01485884101040119) * NV_Ith_S(mParameters, 7)); // dimensionless + const double var_sodium_potassium_pump__f_NaK = 1 / (1 + CHASTE_CONST(0.1245) * CHASTE_MATH::Exp(-CHASTE_CONST(0.10000000000000001) * var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T)) + CHASTE_CONST(0.036499999999999998) * var_sodium_potassium_pump__sigma * CHASTE_MATH::Exp(-var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T))); // dimensionless + const double var_sodium_potassium_pump__i_NaK = NV_Ith_S(mParameters, 6) * var_sodium_potassium_pump__I_NaK * var_sodium_potassium_pump__f_NaK / ((1 + CHASTE_MATH::Pow(var_sodium_potassium_pump__K_mNai, 2) / CHASTE_MATH::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 = -(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_time_independent_potassium_current__E_K = var_cell__R * var_cell__T * CHASTE_MATH::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 = (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__g_K1 = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::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 = CHASTE_CONST(1.02) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__cell__V - CHASTE_CONST(0.23849999999999999) * var_time_independent_potassium_current__E_K)); // per_ms + const double var_time_independent_potassium_current_K1_gate__beta_K1 = (CHASTE_CONST(0.49124000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.43983232) + CHASTE_CONST(0.080320000000000003) * var_chaste_interface__cell__V - CHASTE_CONST(0.080320000000000003) * var_time_independent_potassium_current__E_K) + CHASTE_MATH::Exp(-CHASTE_CONST(36.698642499999998) + CHASTE_CONST(0.061749999999999999) * var_chaste_interface__cell__V - CHASTE_CONST(0.061749999999999999) * var_time_independent_potassium_current__E_K)) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.4444678999999998) + CHASTE_CONST(0.51429999999999998) * var_time_independent_potassium_current__E_K - CHASTE_CONST(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__rvdv = CHASTE_MATH::Exp(CHASTE_CONST(0.01) * var_chaste_interface__cell__V); // dimensionless + const double var_transient_outward_current_ydv_gate__alpha_ydv = CHASTE_CONST(0.014999999999999999) / (1 + CHASTE_MATH::Exp(12 + CHASTE_CONST(0.20000000000000001) * var_chaste_interface__cell__V)); // per_ms + const double var_transient_outward_current_ydv_gate__beta_ydv = CHASTE_CONST(0.10000000000000001) * CHASTE_MATH::Exp(5 + CHASTE_CONST(0.20000000000000001) * var_chaste_interface__cell__V) / (1 + CHASTE_MATH::Exp(5 + CHASTE_CONST(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__alpha_zdv = 10 * CHASTE_MATH::Exp(-CHASTE_CONST(1.6000000000000001) + CHASTE_CONST(0.040000000000000001) * var_chaste_interface__cell__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(1.6000000000000001) + CHASTE_CONST(0.040000000000000001) * var_chaste_interface__cell__V)); // per_ms + const double var_transient_outward_current_zdv_gate__beta_zdv = 10 * CHASTE_MATH::Exp(-CHASTE_CONST(3.6000000000000001) - CHASTE_CONST(0.040000000000000001) * var_chaste_interface__cell__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(3.6000000000000001) - CHASTE_CONST(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 var_transient_outward_current__i_to = CHASTE_MATH::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 = -(-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 d_dt_chaste_interface_var_calcium_dynamics__APtrack = ((var_cell__dVdt > 150) ? (100 - CHASTE_CONST(100.5) * var_chaste_interface__calcium_dynamics__APtrack) : (-CHASTE_CONST(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 @@ -527,7 +529,7 @@ { // Inputs: // Time units: millisecond - double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -565,65 +567,65 @@ // 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__Km_Ca = CHASTE_CONST(0.00059999999999999995); // millimolar + const double var_Na_Ca_exchanger__c2 = CHASTE_CONST(0.0001); // dimensionless + const double var_Na_Ca_exchanger__gamma = CHASTE_CONST(0.14999999999999999); // dimensionless + const double var_T_type_Ca_channel__g_CaT = CHASTE_CONST(0.050000000000000003); // milliS_per_microF + const double var_calcium_background_current__g_Cab = CHASTE_CONST(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__RyRopen = 1 / (1 + var_chaste_interface__calcium_dynamics__APtrack2 * CHASTE_MATH::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) + 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) + 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) + 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) + 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_calcium_background_current__E_Ca = CHASTE_CONST(0.5) * var_cell__R * var_cell__T * CHASTE_MATH::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 >= -CHASTE_CONST(1.3356169352749131e-6)) && (var_chaste_interface__cell__V <= CHASTE_CONST(1.3356169352749131e-6))) ? (CHASTE_CONST(374358.83507802623) * (CHASTE_CONST(1.3356169352749131e-6) + var_chaste_interface__cell__V) * (CHASTE_CONST(0.019296999999999998) * (-CHASTE_CONST(0.34100000000000003) * NV_Ith_S(mParameters, 5) + var_chaste_interface__calcium_dynamics__Cai * CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) * NV_Ith_S(mParameters, 8) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) + CHASTE_CONST(0.019296999999999998) * (-CHASTE_CONST(0.34100000000000003) * NV_Ith_S(mParameters, 5) + var_chaste_interface__calcium_dynamics__Cai * CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8))) * NV_Ith_S(mParameters, 8) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)))) - CHASTE_CONST(0.019296999999999998) * (-CHASTE_CONST(0.34100000000000003) * NV_Ith_S(mParameters, 5) + var_chaste_interface__calcium_dynamics__Cai * CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8))) * NV_Ith_S(mParameters, 8) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)))) : (CHASTE_CONST(14448.004881001343) * (-CHASTE_CONST(0.34100000000000003) * NV_Ith_S(mParameters, 5) + var_chaste_interface__calcium_dynamics__Cai * CHASTE_MATH::Exp(CHASTE_CONST(0.074871767015605231) * var_chaste_interface__cell__V)) * NV_Ith_S(mParameters, 8) * var_chaste_interface__cell__V / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(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_L_type_Ca_channel_f_gate__tau_f = 1 / (CHASTE_CONST(0.02) + CHASTE_CONST(0.019699999999999999) * CHASTE_MATH::Exp(-CHASTE_CONST(0.113569) * CHASTE_MATH::Pow((1 + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__cell__V), 2))); // ms + const double var_T_type_Ca_channel__i_Ca_T = CHASTE_MATH::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_cell__I_st_converted = CHASTE_STIM(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_fast_sodium_current_h_gate__alpha_h = ((var_chaste_interface__cell__V < -40) ? (CHASTE_CONST(0.13500000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(11.764705882352942) + CHASTE_CONST(0.14705882352941177) * NV_Ith_S(mParameters, 11) - CHASTE_CONST(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 * CHASTE_MATH::Exp(CHASTE_CONST(0.34999999999999998) * var_chaste_interface__cell__V - CHASTE_CONST(0.34999999999999998) * NV_Ith_S(mParameters, 11)) + CHASTE_CONST(3.5600000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.079000000000000001) * var_chaste_interface__cell__V - CHASTE_CONST(0.079000000000000001) * NV_Ith_S(mParameters, 11))) : (CHASTE_CONST(7.6923076923076916) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.96036036036036043) + CHASTE_CONST(0.0900900900900901) * NV_Ith_S(mParameters, 11) - CHASTE_CONST(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__alpha_j = ((var_chaste_interface__cell__V < -40) ? ((CHASTE_CONST(37.780000000000001) + var_chaste_interface__cell__V) * (-127140 * CHASTE_MATH::Exp(CHASTE_CONST(0.24440000000000001) * var_chaste_interface__cell__V - CHASTE_CONST(0.24440000000000001) * NV_Ith_S(mParameters, 11)) - CHASTE_CONST(3.4740000000000003e-5) * CHASTE_MATH::Exp(CHASTE_CONST(0.043909999999999998) * NV_Ith_S(mParameters, 11) - CHASTE_CONST(0.043909999999999998) * var_chaste_interface__cell__V)) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(24.640530000000002) + CHASTE_CONST(0.311) * var_chaste_interface__cell__V - CHASTE_CONST(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) ? (CHASTE_CONST(0.1212) * CHASTE_MATH::Exp(CHASTE_CONST(0.01052) * NV_Ith_S(mParameters, 11) - CHASTE_CONST(0.01052) * var_chaste_interface__cell__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(5.5312920000000005) + CHASTE_CONST(0.13780000000000001) * NV_Ith_S(mParameters, 11) - CHASTE_CONST(0.13780000000000001) * var_chaste_interface__cell__V))) : (CHASTE_CONST(0.29999999999999999) * CHASTE_MATH::Exp(CHASTE_CONST(2.5349999999999999e-7) * NV_Ith_S(mParameters, 11) - CHASTE_CONST(2.5349999999999999e-7) * var_chaste_interface__cell__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(3.2000000000000002) + CHASTE_CONST(0.10000000000000001) * NV_Ith_S(mParameters, 11) - CHASTE_CONST(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_chaste_interface__cell__V >= -CHASTE_CONST(2.6712338705498262e-6)) && (var_chaste_interface__cell__V <= CHASTE_CONST(2.6712338705498262e-6))) ? (CHASTE_CONST(187179.41753901311) * (CHASTE_CONST(2.6712338705498262e-6) + var_chaste_interface__cell__V) * (CHASTE_CONST(1.8621604999999999e-9) * (-CHASTE_CONST(0.75) * NV_Ith_S(mParameters, 6) + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Ki * CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) + CHASTE_CONST(1.8621604999999999e-9) * (-CHASTE_CONST(0.75) * NV_Ith_S(mParameters, 6) + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Ki * CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8))) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)))) - CHASTE_CONST(1.8621604999999999e-9) * (-CHASTE_CONST(0.75) * NV_Ith_S(mParameters, 6) + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Ki * CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8))) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)))) : (CHASTE_CONST(0.00069711623550831479) * (-CHASTE_CONST(0.75) * NV_Ith_S(mParameters, 6) + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Ki * CHASTE_MATH::Exp(CHASTE_CONST(0.037435883507802616) * var_chaste_interface__cell__V)) * var_chaste_interface__cell__V / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(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_chaste_interface__cell__V >= -CHASTE_CONST(2.6712338705498262e-6)) && (var_chaste_interface__cell__V <= CHASTE_CONST(2.6712338705498262e-6))) ? (CHASTE_CONST(187179.41753901311) * (CHASTE_CONST(2.6712338705498262e-6) + var_chaste_interface__cell__V) * (CHASTE_CONST(6.5127375e-9) * (-CHASTE_CONST(0.75) * NV_Ith_S(mParameters, 7) + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Nai * CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) + CHASTE_CONST(6.5127375e-9) * (-CHASTE_CONST(0.75) * NV_Ith_S(mParameters, 7) + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Nai * CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8))) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)))) - CHASTE_CONST(6.5127375e-9) * (-CHASTE_CONST(0.75) * NV_Ith_S(mParameters, 7) + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Nai * CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8))) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)))) : (CHASTE_CONST(0.0024381008236689767) * (-CHASTE_CONST(0.75) * NV_Ith_S(mParameters, 7) + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Nai * CHASTE_MATH::Exp(CHASTE_CONST(0.037435883507802616) * var_chaste_interface__cell__V)) * var_chaste_interface__cell__V / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(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_L_type_Ca_channel__i_Ca_L_converted = CHASTE_CAP() * var_L_type_Ca_channel__i_Ca_L; // uA_per_cm2 + const double var_Na_Ca_exchanger__i_NaCa = (-CHASTE_MATH::Pow(NV_Ith_S(mParameters, 7), 3) * var_chaste_interface__calcium_dynamics__Cai + CHASTE_MATH::Pow(var_chaste_interface__ionic_concentrations__Nai, 3) * NV_Ith_S(mParameters, 5) * CHASTE_MATH::Exp(var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T))) * NV_Ith_S(mParameters, 15) * CHASTE_MATH::Exp((-1 + var_Na_Ca_exchanger__gamma) * var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T)) / (1 + (CHASTE_MATH::Pow(NV_Ith_S(mParameters, 7), 3) * var_chaste_interface__calcium_dynamics__Cai + CHASTE_MATH::Pow(var_chaste_interface__ionic_concentrations__Nai, 3) * NV_Ith_S(mParameters, 5) * CHASTE_MATH::Exp(var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T))) * var_Na_Ca_exchanger__c2 * CHASTE_MATH::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 = CHASTE_CAP() * var_Na_Ca_exchanger__i_NaCa; // uA_per_cm2 + const double var_fast_sodium_current__E_Na = var_cell__R * var_cell__T * CHASTE_MATH::Log(NV_Ith_S(mParameters, 7) / var_chaste_interface__ionic_concentrations__Nai) / var_cell__F; // millivolt + const double var_fast_sodium_current__i_Na = CHASTE_MATH::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 = CHASTE_CAP() * var_fast_sodium_current__i_Na; // uA_per_cm2 + const double var_rapid_delayed_rectifier_potassium_current__Rect = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(0.4017857142857143) + CHASTE_CONST(0.044642857142857144) * var_chaste_interface__cell__V)); // dimensionless + const double var_rapid_delayed_rectifier_potassium_current__g_Kr = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::Sqrt(NV_Ith_S(mParameters, 6)) * NV_Ith_S(mParameters, 13); // milliS_per_microF + const double var_sarcolemmal_calcium_pump__I_pCa = CHASTE_CONST(1.1499999999999999); // microA_per_microF + const double var_sarcolemmal_calcium_pump__K_mpCa = CHASTE_CONST(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__G_rel = 150 * var_calcium_dynamics__RyRclose * var_calcium_dynamics__RyRopen / (1 + CHASTE_MATH::Exp(CHASTE_CONST(5.5555555555555554) + CHASTE_CONST(1.1111111111111112) * var_L_type_Ca_channel__i_CaCa + CHASTE_CONST(1.1111111111111112) * var_T_type_Ca_channel__i_Ca_T + CHASTE_CONST(1.1111111111111112) * var_calcium_background_current__i_Ca_b + CHASTE_CONST(1.1111111111111112) * var_sarcolemmal_calcium_pump__i_p_Ca - CHASTE_CONST(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__PNaK = CHASTE_CONST(0.018329999999999999); // dimensionless + const double var_slow_delayed_rectifier_potassium_current__E_Ks = var_cell__R * var_cell__T * CHASTE_MATH::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 + CHASTE_CONST(0.59999999999999998) / (1 + CHASTE_CONST(6.4818210260626455e-7) * CHASTE_MATH::Pow((1 / var_chaste_interface__calcium_dynamics__Cai), CHASTE_CONST(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_slow_delayed_rectifier_potassium_current__i_Ks_converted = CHASTE_CAP() * 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 * CHASTE_MATH::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 = (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_rapid_delayed_rectifier_potassium_current__i_Kr_converted = CHASTE_CAP() * var_rapid_delayed_rectifier_potassium_current__i_Kr; // uA_per_cm2 + const double var_time_independent_potassium_current__g_K1 = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::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 = CHASTE_CONST(1.02) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__cell__V - CHASTE_CONST(0.23849999999999999) * var_time_independent_potassium_current__E_K)); // per_ms + const double var_time_independent_potassium_current_K1_gate__beta_K1 = (CHASTE_CONST(0.49124000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.43983232) + CHASTE_CONST(0.080320000000000003) * var_chaste_interface__cell__V - CHASTE_CONST(0.080320000000000003) * var_time_independent_potassium_current__E_K) + CHASTE_MATH::Exp(-CHASTE_CONST(36.698642499999998) + CHASTE_CONST(0.061749999999999999) * var_chaste_interface__cell__V - CHASTE_CONST(0.061749999999999999) * var_time_independent_potassium_current__E_K)) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.4444678999999998) + CHASTE_CONST(0.51429999999999998) * var_time_independent_potassium_current__E_K - CHASTE_CONST(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_time_independent_potassium_current__i_K1_converted = CHASTE_CAP() * var_time_independent_potassium_current__i_K1; // uA_per_cm2 + const double var_transient_outward_current__rvdv = CHASTE_MATH::Exp(CHASTE_CONST(0.01) * var_chaste_interface__cell__V); // dimensionless + const double var_transient_outward_current__i_to = CHASTE_MATH::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 = CHASTE_CAP() * var_transient_outward_current__i_to; // uA_per_cm2 #if CHASTE_SUNDIALS_VERSION >= 60000 N_Vector dqs = N_VNew_Serial(17, CvodeContextManager::Instance()->GetSundialsContext()); @@ -925,4 +927,5 @@ void OdeSystemInformation::Initialise(void) #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.hpp b/chaste_codegen/data/tests/chaste_reference_models/Cvode/faber_rudy_2000.hpp index 7b50be6c8..9a184e252 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/Cvode/faber_rudy_2000.hpp +++ b/chaste_codegen/data/tests/chaste_reference_models/Cvode/faber_rudy_2000.hpp @@ -17,7 +17,11 @@ #include "ChasteSerialization.hpp" #include #include "AbstractStimulusFunction.hpp" +#if USING_DEVICE_COMPILER +#include "StimulusEvaluatorCuda.hpp" +#endif #include "AbstractCvodeCell.hpp" +#include "HostDeviceMacros.hpp" class Cellfaber_rudy_2000FromCellMLCvode : public AbstractCvodeCell { @@ -38,6 +42,10 @@ class Cellfaber_rudy_2000FromCellMLCvode : public AbstractCvodeCell const bool is_concentration[25] = {false, true, false, false, false, false, false, false, false, false, false, false, false, false, true, false, false, false, false, false, false, false, false, true, true}; const bool is_probability[25] = {false, false, true, true, true, true, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false}; public: + static constexpr unsigned TOTAL_SIZE = 25u; + static constexpr unsigned NNZ = 0u; + static inline const int sparse_rowptr[] = { }; + static inline const int sparse_colind[] = { }; boost::shared_ptr UseCellMLDefaultStimulus(); double GetIntracellularCalciumConcentration(); @@ -46,7 +54,19 @@ const bool is_probability[25] = {false, false, true, true, true, true, true, fal void VerifyStateVariables(); double GetIIonic(const std::vector* pStateVariables=NULL); void EvaluateYDerivatives(double var_chaste_interface__environment__time, const N_Vector rY, N_Vector rDY); + N_Vector ComputeDerivedQuantities(double var_chaste_interface__environment__time, const N_Vector & rY); +#if USING_DEVICE_COMPILER + template + DEVICE + static void EvaluateYDerivativesDevice(ValueType var_chaste_interface__environment__time, const ValueType* rY, ValueType* rDY, const ValueType mSetVoltageDerivativeToZero, const ValueType mFixedVoltage, const ValueType* mParameters, const ValueType capacitance, const DeviceStimulusFunctor stim); + template + DEVICE + static void EvaluateAnalyticJacobianDevice(ValueType var_chaste_interface__environment__time, const ValueType *rY, ValueType *rDY, ValueType *rJacobian, ValueType *rTmp1, ValueType *rTmp2, ValueType *rTmp3, const unsigned nvars, const ValueType mSetVoltageDerivativeToZero, const ValueType mFixedVoltage, const ValueType *mParameters, const ValueType capacitance, const DeviceStimulusFunctor stim); + template + DEVICE + static void EvaluateSparseAnalyticJacobianDevice(ValueType var_chaste_interface__environment__time, const ValueType *rY, ValueType *rDY, ValueType *rJacobian, ValueType *rTmp1, ValueType *rTmp2, ValueType *rTmp3, const unsigned nvars, const ValueType mSetVoltageDerivativeToZero, const ValueType mFixedVoltage, const ValueType *mParameters, const ValueType capacitance, const DeviceStimulusFunctor stim); +#endif }; // Needs to be included last @@ -83,4 +103,10 @@ namespace boost } #endif // CELLFABER_RUDY_2000FROMCELLMLCVODE_HPP_ + + + +#if USING_DEVICE_COMPILER + #include "faber_rudy_2000Kernels.hpp" +#endif #endif // CHASTE_CVODE \ No newline at end of file diff --git a/chaste_codegen/data/tests/chaste_reference_models/Cvode/faber_rudy_2000Kernels.hpp b/chaste_codegen/data/tests/chaste_reference_models/Cvode/faber_rudy_2000Kernels.hpp new file mode 100644 index 000000000..ee4f79df7 --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/Cvode/faber_rudy_2000Kernels.hpp @@ -0,0 +1,283 @@ +#ifndef CELLFABER_RUDY_2000FROMCELLMLCVODEKERNELS_HPP_ +#define CELLFABER_RUDY_2000FROMCELLMLCVODEKERNELS_HPP_ + +//! @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 "MathsCustomFunctions.hpp" +#include "ChasteDeviceMacros.hpp" + +template +DEVICE +void Cellfaber_rudy_2000FromCellMLCvode::EvaluateYDerivativesDevice(ValueType var_chaste_interface__environment__time, const ValueType *rY, ValueType *rDY, const ValueType mSetVoltageDerivativeToZero, const ValueType mFixedVoltage, const ValueType *mParameters, const ValueType capacitance, const DeviceStimulusFunctor stim) +{ + // Inputs: + // Time units: millisecond + double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); + // Units: millivolt; Initial value: -85.2119207874627 + double var_chaste_interface__calcium_dynamics__Cai = rY[1]; + // Units: millimolar; Initial value: 0.000117482029668194 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.00149183115674257 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.985596581239651 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.990898461370389 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[5]; + // Units: dimensionless; Initial value: 5.82597094505446e-06 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[6]; + // Units: dimensionless; Initial value: 0.997765362821995 + double var_chaste_interface__T_type_Ca_channel_b_gate__b = rY[7]; + // Units: dimensionless; Initial value: 0.00136737866785149 + double var_chaste_interface__T_type_Ca_channel_g_gate__g = rY[8]; + // Units: dimensionless; Initial value: 0.98881442877378 + double var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr = rY[9]; + // Units: dimensionless; Initial value: 0.000204700363126417 + double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 = rY[10]; + // Units: dimensionless; Initial value: 0.00660746743356887 + double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2 = rY[11]; + // Units: dimensionless; Initial value: 0.0303768241233812 + double var_chaste_interface__transient_outward_current_zdv_gate__zdv = rY[12]; + // Units: dimensionless; Initial value: 0.0144622472219576 + double var_chaste_interface__transient_outward_current_ydv_gate__ydv = rY[13]; + // Units: dimensionless; Initial value: 0.999945568566232 + double var_chaste_interface__calcium_dynamics__Ca_JSR = rY[14]; + // Units: millimolar; Initial value: 1.12791401197882 + double var_chaste_interface__calcium_dynamics__Ca_NSR = rY[15]; + // Units: millimolar; Initial value: 1.76731003671612 + double var_chaste_interface__calcium_dynamics__APtrack = rY[16]; + // Units: dimensionless; Initial value: 9.65910542308504e-196 + double var_chaste_interface__calcium_dynamics__APtrack2 = rY[17]; + // Units: dimensionless; Initial value: 5.33944967562997e-195 + double var_chaste_interface__calcium_dynamics__APtrack3 = rY[18]; + // Units: dimensionless; Initial value: 0.000129515197402902 + double var_chaste_interface__calcium_dynamics__Cainfluxtrack = rY[19]; + // Units: millimolar; Initial value: 2.69380318286645e-196 + 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: 13.3649235394859 + double var_chaste_interface__ionic_concentrations__Ki = 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 = CHASTE_CONST(0.00025000000000000001); // millimolar + const double var_ATP_sensitive_potassium_current__nATP = CHASTE_CONST(0.23999999999999999); // dimensionless + const double var_ATP_sensitive_potassium_current__nicholsarea = CHASTE_CONST(5.0000000000000002e-5); // dimensionless + const double var_ATP_sensitive_potassium_current__g_K_ATP = CHASTE_CONST(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 + CHASTE_MATH::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 = CHASTE_CONST(0.00059999999999999995); // millimolar + const double var_Na_Ca_exchanger__c2 = CHASTE_CONST(0.0001); // dimensionless + const double var_Na_Ca_exchanger__gamma = CHASTE_CONST(0.14999999999999999); // dimensionless + const double var_T_type_Ca_channel__g_CaT = CHASTE_CONST(0.050000000000000003); // milliS_per_microF + const double var_calcium_background_current__g_Cab = CHASTE_CONST(0.003016); // milliS_per_microF + const double d_dt_chaste_interface_var_calcium_dynamics__APtrack2 = (((var_chaste_interface__calcium_dynamics__APtrack > CHASTE_CONST(0.17999999999999999)) && (var_chaste_interface__calcium_dynamics__APtrack < CHASTE_CONST(0.20000000000000001))) ? (100 - CHASTE_CONST(100.5) * var_chaste_interface__calcium_dynamics__APtrack2) : (-CHASTE_CONST(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 > CHASTE_CONST(0.17999999999999999)) && (var_chaste_interface__calcium_dynamics__APtrack < CHASTE_CONST(0.20000000000000001))) ? (100 - CHASTE_CONST(100.5) * var_chaste_interface__calcium_dynamics__APtrack3) : (-CHASTE_CONST(0.01) * var_chaste_interface__calcium_dynamics__APtrack3)); // 1 / ms + const double var_calcium_dynamics__CMDN_max = CHASTE_CONST(0.050000000000000003); // millimolar + const double var_calcium_dynamics__CSQN_max = 10; // millimolar + const double var_calcium_dynamics__CSQNthresh = CHASTE_CONST(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 = CHASTE_CONST(0.0023800000000000002); // millimolar + const double var_calcium_dynamics__K_mCSQN = CHASTE_CONST(0.80000000000000004); // millimolar + const double var_calcium_dynamics__K_mTn = CHASTE_CONST(0.00050000000000000001); // millimolar + const double var_calcium_dynamics__K_mup = CHASTE_CONST(0.00092000000000000003); // millimolar + const double var_calcium_dynamics__Logicthresh = CHASTE_CONST(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) : (-CHASTE_CONST(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 < CHASTE_CONST(0.37)) && (var_chaste_interface__calcium_dynamics__OVRLDtrack3 < CHASTE_CONST(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) : (-CHASTE_CONST(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) : (-CHASTE_CONST(0.01) * var_chaste_interface__calcium_dynamics__OVRLDtrack3)); // 1 / ms + const double var_calcium_dynamics__RyRopen = 1 / (1 + var_chaste_interface__calcium_dynamics__APtrack2 * CHASTE_MATH::Exp(2)); // dimensionless + const double var_calcium_dynamics__RyRclose = 1 - var_calcium_dynamics__RyRopen; // dimensionless + const double var_calcium_dynamics__Tn_max = CHASTE_CONST(0.070000000000000007); // millimolar + const double var_calcium_dynamics__i_up = var_chaste_interface__calcium_dynamics__Cai * mParameters[3] / (var_chaste_interface__calcium_dynamics__Cai + var_calcium_dynamics__K_mup); // millimolar_per_ms + const double var_calcium_dynamics__K_leak = mParameters[3] * 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 = CHASTE_CONST(0.5) * var_cell__R * var_cell__T * CHASTE_MATH::Log(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 >= -CHASTE_CONST(1.3356169352749131e-6)) && (var_chaste_interface__cell__V <= CHASTE_CONST(1.3356169352749131e-6))) ? (CHASTE_CONST(374358.83507802623) * (CHASTE_CONST(1.3356169352749131e-6) + var_chaste_interface__cell__V) * (CHASTE_CONST(0.019296999999999998) * (-CHASTE_CONST(0.34100000000000003) * mParameters[5] + var_chaste_interface__calcium_dynamics__Cai * CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) * mParameters[8] / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) + CHASTE_CONST(0.019296999999999998) * (-CHASTE_CONST(0.34100000000000003) * mParameters[5] + var_chaste_interface__calcium_dynamics__Cai * CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8))) * mParameters[8] / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)))) - CHASTE_CONST(0.019296999999999998) * (-CHASTE_CONST(0.34100000000000003) * mParameters[5] + var_chaste_interface__calcium_dynamics__Cai * CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8))) * mParameters[8] / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)))) : (CHASTE_CONST(14448.004881001343) * (-CHASTE_CONST(0.34100000000000003) * mParameters[5] + var_chaste_interface__calcium_dynamics__Cai * CHASTE_MATH::Exp(CHASTE_CONST(0.074871767015605231) * var_chaste_interface__cell__V)) * mParameters[8] * var_chaste_interface__cell__V / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(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 + CHASTE_MATH::Exp(-CHASTE_CONST(0.16025641025641024) * var_L_type_Ca_channel_d_gate__E0_d)); // dimensionless + const double var_L_type_Ca_channel_d_gate__tau_d = ((CHASTE_MATH::Abs(var_L_type_Ca_channel_d_gate__E0_d) < CHASTE_CONST(1.0000000000000001e-5)) ? (CHASTE_CONST(2.2893772893772892)) : (CHASTE_CONST(28.571428571428569) * (1 - CHASTE_MATH::Exp(-CHASTE_CONST(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 + CHASTE_MATH::Exp(CHASTE_CONST(4.0767441860465121) + CHASTE_CONST(0.11627906976744186) * var_chaste_interface__cell__V)) + CHASTE_CONST(0.59999999999999998) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(2.5) - CHASTE_CONST(0.050000000000000003) * var_chaste_interface__cell__V)); // dimensionless + const double var_L_type_Ca_channel_f_gate__tau_f = 1 / (CHASTE_CONST(0.02) + CHASTE_CONST(0.019699999999999999) * CHASTE_MATH::Exp(-CHASTE_CONST(0.113569) * CHASTE_MATH::Pow((1 + CHASTE_CONST(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 = CHASTE_MATH::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 + CHASTE_MATH::Exp(-CHASTE_CONST(1.2962962962962963) - CHASTE_CONST(0.092592592592592587) * var_chaste_interface__cell__V)); // dimensionless + const double var_T_type_Ca_channel_b_gate__tau_b = CHASTE_CONST(3.7000000000000002) + CHASTE_CONST(6.0999999999999996) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(5.5555555555555554) + CHASTE_CONST(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 + CHASTE_MATH::Exp(CHASTE_CONST(10.714285714285715) + CHASTE_CONST(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 - CHASTE_CONST(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 = CHASTE_STIM(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_cell__I_st = var_cell__I_st_converted / CHASTE_CAP(); // microA_per_microF + const double var_fast_sodium_current_h_gate__alpha_h = ((var_chaste_interface__cell__V < -40) ? (CHASTE_CONST(0.13500000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(11.764705882352942) + CHASTE_CONST(0.14705882352941177) * mParameters[11] - CHASTE_CONST(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 * CHASTE_MATH::Exp(CHASTE_CONST(0.34999999999999998) * var_chaste_interface__cell__V - CHASTE_CONST(0.34999999999999998) * mParameters[11]) + CHASTE_CONST(3.5600000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.079000000000000001) * var_chaste_interface__cell__V - CHASTE_CONST(0.079000000000000001) * mParameters[11])) : (CHASTE_CONST(7.6923076923076916) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.96036036036036043) + CHASTE_CONST(0.0900900900900901) * mParameters[11] - CHASTE_CONST(0.0900900900900901) * var_chaste_interface__cell__V)))); // per_ms + const double var_fast_sodium_current_h_gate__h_inf = CHASTE_CONST(0.01) * mParameters[10] + (1 - CHASTE_CONST(0.01) * 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) ? ((CHASTE_CONST(37.780000000000001) + var_chaste_interface__cell__V) * (-127140 * CHASTE_MATH::Exp(CHASTE_CONST(0.24440000000000001) * var_chaste_interface__cell__V - CHASTE_CONST(0.24440000000000001) * mParameters[11]) - CHASTE_CONST(3.4740000000000003e-5) * CHASTE_MATH::Exp(CHASTE_CONST(0.043909999999999998) * mParameters[11] - CHASTE_CONST(0.043909999999999998) * var_chaste_interface__cell__V)) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(24.640530000000002) + CHASTE_CONST(0.311) * var_chaste_interface__cell__V - CHASTE_CONST(0.311) * mParameters[11]))) : (0)); // per_ms + const double var_fast_sodium_current_j_gate__beta_j = ((var_chaste_interface__cell__V < -40) ? (CHASTE_CONST(0.1212) * CHASTE_MATH::Exp(CHASTE_CONST(0.01052) * mParameters[11] - CHASTE_CONST(0.01052) * var_chaste_interface__cell__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(5.5312920000000005) + CHASTE_CONST(0.13780000000000001) * mParameters[11] - CHASTE_CONST(0.13780000000000001) * var_chaste_interface__cell__V))) : (CHASTE_CONST(0.29999999999999999) * CHASTE_MATH::Exp(CHASTE_CONST(2.5349999999999999e-7) * mParameters[11] - CHASTE_CONST(2.5349999999999999e-7) * var_chaste_interface__cell__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(3.2000000000000002) + CHASTE_CONST(0.10000000000000001) * mParameters[11] - CHASTE_CONST(0.10000000000000001) * var_chaste_interface__cell__V)))); // per_ms + const double var_fast_sodium_current_j_gate__j_inf = CHASTE_CONST(0.01) * mParameters[10] + (1 - CHASTE_CONST(0.01) * 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 = CHASTE_CONST(47.130000000000003) + var_chaste_interface__cell__V; // millivolt + const double var_fast_sodium_current_m_gate__beta_m = CHASTE_CONST(0.080000000000000002) * CHASTE_MATH::Exp(-CHASTE_CONST(0.090909090909090912) * var_chaste_interface__cell__V); // per_ms + const double var_fast_sodium_current_m_gate__delta_m = CHASTE_CONST(1.0000000000000001e-5); // millivolt + const double var_fast_sodium_current_m_gate__alpha_m = ((var_fast_sodium_current_m_gate__delta_m <= CHASTE_MATH::Abs(var_fast_sodium_current_m_gate__E0_m)) ? (CHASTE_CONST(0.32000000000000001) * var_fast_sodium_current_m_gate__E0_m / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(0.10000000000000001) * var_fast_sodium_current_m_gate__E0_m))) : (CHASTE_CONST(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 = CHASTE_CONST(0.00015339999999999999); // cm2 + const double var_geometry__preplength = CHASTE_CONST(0.10000000000000001); // mm + const double var_geometry__radius = CHASTE_CONST(0.010999999999999999); // mm + const double var_geometry__volume = CHASTE_CONST(CHASTE_MATH::Pi) * CHASTE_MATH::Pow(var_geometry__radius, 2) * var_geometry__preplength; // micro_litre + const double var_geometry__V_JSR = CHASTE_CONST(0.0047999999999999996) * var_geometry__volume; // micro_litre + const double var_geometry__V_NSR = CHASTE_CONST(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 = CHASTE_CONST(0.68000000000000005) * var_geometry__volume; // micro_litre + const double var_ATP_sensitive_potassium_current__GKbaraATP = CHASTE_MATH::Pow((CHASTE_CONST(0.25) * 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 >= -CHASTE_CONST(2.6712338705498262e-6)) && (var_chaste_interface__cell__V <= CHASTE_CONST(2.6712338705498262e-6))) ? (CHASTE_CONST(187179.41753901311) * (CHASTE_CONST(2.6712338705498262e-6) + var_chaste_interface__cell__V) * (CHASTE_CONST(1.8621604999999999e-9) * (-CHASTE_CONST(0.75) * mParameters[6] + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Ki * CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) + CHASTE_CONST(1.8621604999999999e-9) * (-CHASTE_CONST(0.75) * mParameters[6] + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Ki * CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8))) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)))) - CHASTE_CONST(1.8621604999999999e-9) * (-CHASTE_CONST(0.75) * mParameters[6] + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Ki * CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8))) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)))) : (CHASTE_CONST(0.00069711623550831479) * (-CHASTE_CONST(0.75) * mParameters[6] + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Ki * CHASTE_MATH::Exp(CHASTE_CONST(0.037435883507802616) * var_chaste_interface__cell__V)) * var_chaste_interface__cell__V / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(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 >= -CHASTE_CONST(2.6712338705498262e-6)) && (var_chaste_interface__cell__V <= CHASTE_CONST(2.6712338705498262e-6))) ? (CHASTE_CONST(187179.41753901311) * (CHASTE_CONST(2.6712338705498262e-6) + var_chaste_interface__cell__V) * (CHASTE_CONST(6.5127375e-9) * (-CHASTE_CONST(0.75) * mParameters[7] + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Nai * CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) + CHASTE_CONST(6.5127375e-9) * (-CHASTE_CONST(0.75) * mParameters[7] + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Nai * CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8))) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)))) - CHASTE_CONST(6.5127375e-9) * (-CHASTE_CONST(0.75) * mParameters[7] + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Nai * CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8))) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)))) : (CHASTE_CONST(0.0024381008236689767) * (-CHASTE_CONST(0.75) * mParameters[7] + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Nai * CHASTE_MATH::Exp(CHASTE_CONST(0.037435883507802616) * var_chaste_interface__cell__V)) * var_chaste_interface__cell__V / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(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 = (-CHASTE_MATH::Pow(mParameters[7], 3) * var_chaste_interface__calcium_dynamics__Cai + CHASTE_MATH::Pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[5] * CHASTE_MATH::Exp(var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T))) * mParameters[15] * CHASTE_MATH::Exp((-1 + var_Na_Ca_exchanger__gamma) * var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T)) / (1 + (CHASTE_MATH::Pow(mParameters[7], 3) * var_chaste_interface__calcium_dynamics__Cai + CHASTE_MATH::Pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[5] * CHASTE_MATH::Exp(var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T))) * var_Na_Ca_exchanger__c2 * CHASTE_MATH::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 * CHASTE_MATH::Log(mParameters[7] / var_chaste_interface__ionic_concentrations__Nai) / var_cell__F; // millivolt + const double var_fast_sodium_current__i_Na = CHASTE_MATH::Pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__cell__V) * 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 >= -CHASTE_CONST(2.6712338705498262e-6)) && (var_chaste_interface__cell__V <= CHASTE_CONST(2.6712338705498262e-6))) ? (CHASTE_CONST(187179.41753901311) * (CHASTE_CONST(2.6712338705498262e-6) + var_chaste_interface__cell__V) * (CHASTE_CONST(1.6884874999999999e-9) * (-CHASTE_CONST(0.75) * mParameters[6] + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Ki * CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) + CHASTE_CONST(1.6884874999999999e-9) * (-CHASTE_CONST(0.75) * mParameters[6] + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Ki * CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8))) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)))) - CHASTE_CONST(1.6884874999999999e-9) * (-CHASTE_CONST(0.75) * mParameters[6] + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Ki * CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8))) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)))) : (CHASTE_CONST(0.00063210021354380874) * (-CHASTE_CONST(0.75) * mParameters[6] + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Ki * CHASTE_MATH::Exp(CHASTE_CONST(0.037435883507802616) * var_chaste_interface__cell__V)) * var_chaste_interface__cell__V / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(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 >= -CHASTE_CONST(2.6712338705498262e-6)) && (var_chaste_interface__cell__V <= CHASTE_CONST(2.6712338705498262e-6))) ? (CHASTE_CONST(187179.41753901311) * (CHASTE_CONST(2.6712338705498262e-6) + var_chaste_interface__cell__V) * (CHASTE_CONST(1.6884874999999999e-9) * (-CHASTE_CONST(0.75) * mParameters[7] + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Nai * CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) + CHASTE_CONST(1.6884874999999999e-9) * (-CHASTE_CONST(0.75) * mParameters[7] + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Nai * CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8))) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)))) - CHASTE_CONST(1.6884874999999999e-9) * (-CHASTE_CONST(0.75) * mParameters[7] + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Nai * CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8))) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)))) : (CHASTE_CONST(0.00063210021354380874) * (-CHASTE_CONST(0.75) * mParameters[7] + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Nai * CHASTE_MATH::Exp(CHASTE_CONST(0.037435883507802616) * var_chaste_interface__cell__V)) * var_chaste_interface__cell__V / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(0.037435883507802616) * var_chaste_interface__cell__V)))); // microA_per_microF + const double var_non_specific_calcium_activated_current__K_m_ns_Ca = CHASTE_CONST(0.0011999999999999999); // millimolar + const double var_non_specific_calcium_activated_current__i_ns_K = var_non_specific_calcium_activated_current__I_ns_K / (1 + CHASTE_MATH::Pow(var_non_specific_calcium_activated_current__K_m_ns_Ca, 3) / CHASTE_MATH::Pow(var_chaste_interface__calcium_dynamics__Cai, 3)); // microA_per_microF + const double var_non_specific_calcium_activated_current__i_ns_Na = var_non_specific_calcium_activated_current__I_ns_Na / (1 + CHASTE_MATH::Pow(var_non_specific_calcium_activated_current__K_m_ns_Ca, 3) / CHASTE_MATH::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 + CHASTE_MATH::Exp(CHASTE_CONST(1.2521739130434781) - CHASTE_CONST(0.16722408026755853) * var_chaste_interface__cell__V)); // dimensionless + const double var_plateau_potassium_current__g_Kp = CHASTE_CONST(0.0055199999999999997); // milliS_per_microF + const double var_rapid_delayed_rectifier_potassium_current__Rect = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(0.4017857142857143) + CHASTE_CONST(0.044642857142857144) * var_chaste_interface__cell__V)); // dimensionless + const double var_rapid_delayed_rectifier_potassium_current__g_Kr = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::Sqrt(mParameters[6]) * mParameters[13]; // milliS_per_microF + const double var_rapid_delayed_rectifier_potassium_current_xr_gate__tau_xr = 1 / ((((var_chaste_interface__cell__V >= -CHASTE_CONST(14.200000813008129)) && (var_chaste_interface__cell__V <= -CHASTE_CONST(14.199999186991869))) ? (-CHASTE_CONST(1.1219512194943214e-9) / (1 - CHASTE_MATH::Exp(CHASTE_CONST(9.9999999998406912e-8))) + CHASTE_CONST(615000.00000454858) * (CHASTE_CONST(14.200000813008129) + var_chaste_interface__cell__V) * (CHASTE_CONST(1.1219512194943214e-9) / (1 - CHASTE_MATH::Exp(CHASTE_CONST(9.9999999998406912e-8))) + CHASTE_CONST(1.1219512195134727e-9) / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(1.0000000000011388e-7))))) : (CHASTE_CONST(0.0013799999999999999) * (CHASTE_CONST(14.199999999999999) + var_chaste_interface__cell__V) / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(1.7465999999999999) - CHASTE_CONST(0.123) * var_chaste_interface__cell__V)))) + (((var_chaste_interface__cell__V >= -CHASTE_CONST(38.900000689655172)) && (var_chaste_interface__cell__V <= -CHASTE_CONST(38.899999310344825))) ? (-CHASTE_CONST(4.2068965517283451e-10) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(1.000000000001e-7))) + CHASTE_CONST(724999.99997009686) * (CHASTE_CONST(38.900000689655172) + var_chaste_interface__cell__V) * (CHASTE_CONST(4.2068965517283451e-10) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(1.000000000001e-7))) + CHASTE_CONST(4.2068965520669629e-10) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(1.0000000000814911e-7))))) : (CHASTE_CONST(0.00060999999999999997) * (CHASTE_CONST(38.899999999999999) + var_chaste_interface__cell__V) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(5.6404999999999994) + CHASTE_CONST(0.14499999999999999) * var_chaste_interface__cell__V))))); // ms + const double var_rapid_delayed_rectifier_potassium_current_xr_gate__xr_infinity = 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.8666666666666667) - CHASTE_CONST(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 = CHASTE_CONST(1.1499999999999999); // microA_per_microF + const double var_sarcolemmal_calcium_pump__K_mpCa = CHASTE_CONST(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 > CHASTE_CONST(0.20000000000000001)) ? (-CHASTE_CONST(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 > CHASTE_CONST(0.01)) ? (0) : (-CHASTE_CONST(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 + CHASTE_MATH::Exp(CHASTE_CONST(5.5555555555555554) + CHASTE_CONST(1.1111111111111112) * var_L_type_Ca_channel__i_CaCa + CHASTE_CONST(1.1111111111111112) * var_T_type_Ca_channel__i_Ca_T + CHASTE_CONST(1.1111111111111112) * var_calcium_background_current__i_Ca_b + CHASTE_CONST(1.1111111111111112) * var_sarcolemmal_calcium_pump__i_p_Ca - CHASTE_CONST(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 = (-var_calcium_dynamics__i_rel + var_calcium_dynamics__i_tr) / (1 + var_calcium_dynamics__CSQN_max * var_calcium_dynamics__K_mCSQN / CHASTE_MATH::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 = ((-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 - CHASTE_CONST(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 / CHASTE_MATH::Pow((var_chaste_interface__calcium_dynamics__Cai + var_calcium_dynamics__K_mCMDN), 2) + var_calcium_dynamics__K_mTn * var_calcium_dynamics__Tn_max / CHASTE_MATH::Pow((var_chaste_interface__calcium_dynamics__Cai + var_calcium_dynamics__K_mTn), 2)); // millimolar / ms + const double var_slow_delayed_rectifier_potassium_current__PNaK = CHASTE_CONST(0.018329999999999999); // dimensionless + const double var_slow_delayed_rectifier_potassium_current__E_Ks = var_cell__R * var_cell__T * CHASTE_MATH::Log((mParameters[7] * var_slow_delayed_rectifier_potassium_current__PNaK + 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 + CHASTE_CONST(0.59999999999999998) / (1 + CHASTE_CONST(6.4818210260626455e-7) * CHASTE_MATH::Pow((1 / var_chaste_interface__calcium_dynamics__Cai), CHASTE_CONST(1.3999999999999999)))) * mParameters[14]; // milliS_per_microF + const double var_slow_delayed_rectifier_potassium_current_xs1_gate__tau_xs1 = (((var_chaste_interface__cell__V >= -CHASTE_CONST(30.000001455604075)) && (var_chaste_interface__cell__V <= -CHASTE_CONST(29.999998544395925))) ? (1 / (-CHASTE_CONST(1.0465793304208771e-10) / (1 - CHASTE_MATH::Exp(CHASTE_CONST(2.1542940320207204e-7))) - CHASTE_CONST(1.9068413391534758e-10) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999880736e-8))) + CHASTE_CONST(343500.00000040967) * (CHASTE_CONST(30.000001455604075) + var_chaste_interface__cell__V) * (CHASTE_CONST(1.0465793304208771e-10) / (1 - CHASTE_MATH::Exp(CHASTE_CONST(2.1542940320207204e-7))) + CHASTE_CONST(1.0465793304208771e-10) / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(2.1542940320207204e-7))) + CHASTE_CONST(1.9068413391534758e-10) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999880736e-8))) + CHASTE_CONST(1.9068413391534758e-10) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999880736e-8)))))) : (1 / (CHASTE_CONST(0.00013100000000000001) * (30 + var_chaste_interface__cell__V) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(2.0609999999999999) + CHASTE_CONST(0.068699999999999997) * var_chaste_interface__cell__V)) + CHASTE_CONST(7.1899999999999999e-5) * (30 + var_chaste_interface__cell__V) / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(4.4399999999999995) - CHASTE_CONST(0.14799999999999999) * var_chaste_interface__cell__V))))); // ms + const double var_slow_delayed_rectifier_potassium_current_xs1_gate__xs1_infinity = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(0.089820359281437126) - CHASTE_CONST(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 >= -CHASTE_CONST(30.000001455604075)) && (var_chaste_interface__cell__V <= -CHASTE_CONST(29.999998544395925))) ? (1 / (-CHASTE_CONST(1.0465793304208771e-10) / (1 - CHASTE_MATH::Exp(CHASTE_CONST(2.1542940320207204e-7))) - CHASTE_CONST(1.9068413391534758e-10) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999880736e-8))) + CHASTE_CONST(343500.00000040967) * (CHASTE_CONST(30.000001455604075) + var_chaste_interface__cell__V) * (CHASTE_CONST(1.0465793304208771e-10) / (1 - CHASTE_MATH::Exp(CHASTE_CONST(2.1542940320207204e-7))) + CHASTE_CONST(1.0465793304208771e-10) / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(2.1542940320207204e-7))) + CHASTE_CONST(1.9068413391534758e-10) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999880736e-8))) + CHASTE_CONST(1.9068413391534758e-10) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999880736e-8)))))) : (1 / (CHASTE_CONST(0.00013100000000000001) * (30 + var_chaste_interface__cell__V) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(2.0609999999999999) + CHASTE_CONST(0.068699999999999997) * var_chaste_interface__cell__V)) + CHASTE_CONST(7.1899999999999999e-5) * (30 + var_chaste_interface__cell__V) / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(4.4399999999999995) - CHASTE_CONST(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 + CHASTE_MATH::Exp(CHASTE_CONST(0.089820359281437126) - CHASTE_CONST(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 = CHASTE_CONST(0.12848000000000001); // milliS_per_microF + const double var_sodium_activated_potassium_current__kdKNa = 66; // millimolar + const double var_sodium_activated_potassium_current__nKNa = CHASTE_CONST(2.7999999999999998); // dimensionless + const double var_sodium_activated_potassium_current__pona = CHASTE_CONST(0.84999999999999998) / (1 + CHASTE_MATH::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 = CHASTE_CONST(0.80000000000000004) - CHASTE_CONST(0.65000000000000002) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(8.3333333333333339) + CHASTE_CONST(0.066666666666666666) * var_chaste_interface__cell__V)); // dimensionless + const double var_sodium_background_current__g_Nab = CHASTE_CONST(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 = CHASTE_CONST(2.25); // microA_per_microF + const double var_sodium_potassium_pump__K_mKo = CHASTE_CONST(1.5); // millimolar + const double var_sodium_potassium_pump__K_mNai = 10; // millimolar + const double var_sodium_potassium_pump__sigma = -CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * CHASTE_MATH::Exp(CHASTE_CONST(0.01485884101040119) * mParameters[7]); // dimensionless + const double var_sodium_potassium_pump__f_NaK = 1 / (1 + CHASTE_CONST(0.1245) * CHASTE_MATH::Exp(-CHASTE_CONST(0.10000000000000001) * var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T)) + CHASTE_CONST(0.036499999999999998) * var_sodium_potassium_pump__sigma * CHASTE_MATH::Exp(-var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T))); // dimensionless + const double var_sodium_potassium_pump__i_NaK = mParameters[6] * var_sodium_potassium_pump__I_NaK * var_sodium_potassium_pump__f_NaK / ((1 + CHASTE_MATH::Pow(var_sodium_potassium_pump__K_mNai, 2) / CHASTE_MATH::Pow(var_chaste_interface__ionic_concentrations__Nai, 2)) * (mParameters[6] + var_sodium_potassium_pump__K_mKo)); // microA_per_microF + const double d_dt_chaste_interface_var_ionic_concentrations__Nai = -(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 * 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 * CHASTE_MATH::Log(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 = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::Sqrt(mParameters[6]) * mParameters[12]; // milliS_per_microF + const double var_time_independent_potassium_current_K1_gate__alpha_K1 = CHASTE_CONST(1.02) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__cell__V - CHASTE_CONST(0.23849999999999999) * var_time_independent_potassium_current__E_K)); // per_ms + const double var_time_independent_potassium_current_K1_gate__beta_K1 = (CHASTE_CONST(0.49124000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.43983232) + CHASTE_CONST(0.080320000000000003) * var_chaste_interface__cell__V - CHASTE_CONST(0.080320000000000003) * var_time_independent_potassium_current__E_K) + CHASTE_MATH::Exp(-CHASTE_CONST(36.698642499999998) + CHASTE_CONST(0.061749999999999999) * var_chaste_interface__cell__V - CHASTE_CONST(0.061749999999999999) * var_time_independent_potassium_current__E_K)) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.4444678999999998) + CHASTE_CONST(0.51429999999999998) * var_time_independent_potassium_current__E_K - CHASTE_CONST(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 = CHASTE_MATH::Exp(CHASTE_CONST(0.01) * var_chaste_interface__cell__V); // dimensionless + const double var_transient_outward_current_ydv_gate__alpha_ydv = CHASTE_CONST(0.014999999999999999) / (1 + CHASTE_MATH::Exp(12 + CHASTE_CONST(0.20000000000000001) * var_chaste_interface__cell__V)); // per_ms + const double var_transient_outward_current_ydv_gate__beta_ydv = CHASTE_CONST(0.10000000000000001) * CHASTE_MATH::Exp(5 + CHASTE_CONST(0.20000000000000001) * var_chaste_interface__cell__V) / (1 + CHASTE_MATH::Exp(5 + CHASTE_CONST(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 * CHASTE_MATH::Exp(-CHASTE_CONST(1.6000000000000001) + CHASTE_CONST(0.040000000000000001) * var_chaste_interface__cell__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(1.6000000000000001) + CHASTE_CONST(0.040000000000000001) * var_chaste_interface__cell__V)); // per_ms + const double var_transient_outward_current_zdv_gate__beta_zdv = 10 * CHASTE_MATH::Exp(-CHASTE_CONST(3.6000000000000001) - CHASTE_CONST(0.040000000000000001) * var_chaste_interface__cell__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(3.6000000000000001) - CHASTE_CONST(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 = CHASTE_MATH::Pow(var_chaste_interface__transient_outward_current_zdv_gate__zdv, 3) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__cell__V) * 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 = -(-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 * 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 - CHASTE_CONST(100.5) * var_chaste_interface__calcium_dynamics__APtrack) : (-CHASTE_CONST(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; + } + + rDY[0] = d_dt_chaste_interface_var_cell__V; + rDY[1] = d_dt_chaste_interface_var_calcium_dynamics__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_T_type_Ca_channel_b_gate__b; + rDY[8] = d_dt_chaste_interface_var_T_type_Ca_channel_g_gate__g; + rDY[9] = d_dt_chaste_interface_var_rapid_delayed_rectifier_potassium_current_xr_gate__xr; + rDY[10] = d_dt_chaste_interface_var_slow_delayed_rectifier_potassium_current_xs1_gate__xs1; + rDY[11] = d_dt_chaste_interface_var_slow_delayed_rectifier_potassium_current_xs2_gate__xs2; + rDY[12] = d_dt_chaste_interface_var_transient_outward_current_zdv_gate__zdv; + rDY[13] = d_dt_chaste_interface_var_transient_outward_current_ydv_gate__ydv; + rDY[14] = d_dt_chaste_interface_var_calcium_dynamics__Ca_JSR; + rDY[15] = d_dt_chaste_interface_var_calcium_dynamics__Ca_NSR; + rDY[16] = d_dt_chaste_interface_var_calcium_dynamics__APtrack; + rDY[17] = d_dt_chaste_interface_var_calcium_dynamics__APtrack2; + rDY[18] = d_dt_chaste_interface_var_calcium_dynamics__APtrack3; + rDY[19] = d_dt_chaste_interface_var_calcium_dynamics__Cainfluxtrack; + rDY[20] = d_dt_chaste_interface_var_calcium_dynamics__OVRLDtrack; + rDY[21] = d_dt_chaste_interface_var_calcium_dynamics__OVRLDtrack2; + rDY[22] = d_dt_chaste_interface_var_calcium_dynamics__OVRLDtrack3; + rDY[23] = d_dt_chaste_interface_var_ionic_concentrations__Nai; + rDY[24] = d_dt_chaste_interface_var_ionic_concentrations__Ki; +} + + + + + +#include "ChasteCpuMacros.hpp" +#endif // CELLFABER_RUDY_2000FROMCELLMLCVODEKERNELS_HPP_ \ No newline at end of file diff --git a/chaste_codegen/data/tests/chaste_reference_models/Cvode/hodgkin_huxley_squid_axon_model_1952_modified.cpp b/chaste_codegen/data/tests/chaste_reference_models/Cvode/hodgkin_huxley_squid_axon_model_1952_modified.cpp index 28dcdb822..4653c8de2 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/Cvode/hodgkin_huxley_squid_axon_model_1952_modified.cpp +++ b/chaste_codegen/data/tests/chaste_reference_models/Cvode/hodgkin_huxley_squid_axon_model_1952_modified.cpp @@ -22,6 +22,8 @@ #include "HeartConfig.hpp" #include "IsNan.hpp" #include "MathsCustomFunctions.hpp" +#include "ChasteMathDeviceNamespaces.hpp" +#include "ChasteCpuMacros.hpp" #if CHASTE_SUNDIALS_VERSION >= 60000 #include "CvodeContextManager.hpp" @@ -35,7 +37,7 @@ { // 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_duration = CHASTE_CONST(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( @@ -65,7 +67,7 @@ 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, 2) = CHASTE_CONST(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] } @@ -122,7 +124,7 @@ made_new_cvode_vector = true; rY = MakeNVector(*pStateVariables); } - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -132,12 +134,12 @@ // 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__E_L = CHASTE_CONST(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_potassium_channel__i_K = CHASTE_MATH::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_sodium_channel__i_Na = CHASTE_MATH::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; @@ -153,7 +155,7 @@ { // Inputs: // Time units: millisecond - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -164,22 +166,22 @@ // 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__B = -CHASTE_CONST(0.10000000000000001); // per_millivolt + const double var_potassium_channel_n_gate__A = -CHASTE_CONST(0.01) / var_potassium_channel_n_gate__B; // per_millisecond + const double var_potassium_channel_n_gate__beta_n = CHASTE_CONST(0.125) * CHASTE_MATH::Exp(CHASTE_CONST(0.9375) + CHASTE_CONST(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_potassium_channel_n_gate__alpha_n = (((var_potassium_channel_n_gate__U >= -CHASTE_CONST(9.9999999999999995e-8)) && (var_potassium_channel_n_gate__U <= CHASTE_CONST(9.9999999999999995e-8))) ? ((1 - CHASTE_CONST(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 + CHASTE_MATH::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 var_sodium_channel_h_gate__alpha_h = CHASTE_CONST(0.070000000000000007) * CHASTE_MATH::Exp(-CHASTE_CONST(3.75) - CHASTE_CONST(0.050000000000000003) * var_chaste_interface__membrane__V); // per_millisecond + const double var_sodium_channel_h_gate__beta_h = 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(4.5) - CHASTE_CONST(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__B = -CHASTE_CONST(0.10000000000000001); // per_millivolt + const double var_sodium_channel_m_gate__A = -CHASTE_CONST(0.10000000000000001) / var_sodium_channel_m_gate__B; // per_millisecond + const double var_sodium_channel_m_gate__beta_m = 4 * CHASTE_MATH::Exp(-CHASTE_CONST(4.166666666666667) - CHASTE_CONST(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 var_sodium_channel_m_gate__alpha_m = (((var_sodium_channel_m_gate__U >= -CHASTE_CONST(9.9999999999999995e-8)) && (var_sodium_channel_m_gate__U <= CHASTE_CONST(9.9999999999999995e-8))) ? ((1 - CHASTE_CONST(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 + CHASTE_MATH::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) @@ -189,13 +191,13 @@ 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__E_L = CHASTE_CONST(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_membrane__i_Stim = CHASTE_STIM(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_potassium_channel__i_K = CHASTE_MATH::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_sodium_channel__i_Na = CHASTE_MATH::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 } @@ -209,7 +211,7 @@ { // Inputs: // Time units: millisecond - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -220,13 +222,13 @@ // 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__E_L = CHASTE_CONST(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_membrane__i_Stim = CHASTE_STIM(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_potassium_channel__i_K = CHASTE_MATH::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_sodium_channel__i_Na = CHASTE_MATH::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()); @@ -311,4 +313,5 @@ void OdeSystemInformation #include "AbstractStimulusFunction.hpp" +#if USING_DEVICE_COMPILER +#include "StimulusEvaluatorCuda.hpp" +#endif #include "AbstractCvodeCell.hpp" +#include "HostDeviceMacros.hpp" class Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLCvode : public AbstractCvodeCell { @@ -38,6 +42,10 @@ class Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLCvode : public const bool is_concentration[4] = {false, false, false, false}; const bool is_probability[4] = {false, false, false, false}; public: + static constexpr unsigned TOTAL_SIZE = 4u; + static constexpr unsigned NNZ = 0u; + static inline const int sparse_rowptr[] = { }; + static inline const int sparse_colind[] = { }; boost::shared_ptr UseCellMLDefaultStimulus(); Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLCvode(boost::shared_ptr pOdeSolver /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus); @@ -45,7 +53,19 @@ const bool is_probability[4] = {false, false, false, false}; void VerifyStateVariables(); double GetIIonic(const std::vector* pStateVariables=NULL); void EvaluateYDerivatives(double var_chaste_interface__environment__time, const N_Vector rY, N_Vector rDY); + N_Vector ComputeDerivedQuantities(double var_chaste_interface__environment__time, const N_Vector & rY); +#if USING_DEVICE_COMPILER + template + DEVICE + static void EvaluateYDerivativesDevice(ValueType var_chaste_interface__environment__time, const ValueType* rY, ValueType* rDY, const ValueType mSetVoltageDerivativeToZero, const ValueType mFixedVoltage, const ValueType* mParameters, const ValueType capacitance, const DeviceStimulusFunctor stim); + template + DEVICE + static void EvaluateAnalyticJacobianDevice(ValueType var_chaste_interface__environment__time, const ValueType *rY, ValueType *rDY, ValueType *rJacobian, ValueType *rTmp1, ValueType *rTmp2, ValueType *rTmp3, const unsigned nvars, const ValueType mSetVoltageDerivativeToZero, const ValueType mFixedVoltage, const ValueType *mParameters, const ValueType capacitance, const DeviceStimulusFunctor stim); + template + DEVICE + static void EvaluateSparseAnalyticJacobianDevice(ValueType var_chaste_interface__environment__time, const ValueType *rY, ValueType *rDY, ValueType *rJacobian, ValueType *rTmp1, ValueType *rTmp2, ValueType *rTmp3, const unsigned nvars, const ValueType mSetVoltageDerivativeToZero, const ValueType mFixedVoltage, const ValueType *mParameters, const ValueType capacitance, const DeviceStimulusFunctor stim); +#endif }; // Needs to be included last @@ -82,4 +102,10 @@ namespace boost } #endif // CELLHODGKIN_HUXLEY_SQUID_AXON_MODEL_1952_MODIFIEDFROMCELLMLCVODE_HPP_ + + + +#if USING_DEVICE_COMPILER + #include "hodgkin_huxley_squid_axon_model_1952_modifiedKernels.hpp" +#endif #endif // CHASTE_CVODE \ No newline at end of file diff --git a/chaste_codegen/data/tests/chaste_reference_models/Cvode/hodgkin_huxley_squid_axon_model_1952_modifiedKernels.hpp b/chaste_codegen/data/tests/chaste_reference_models/Cvode/hodgkin_huxley_squid_axon_model_1952_modifiedKernels.hpp new file mode 100644 index 000000000..6780e409e --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/Cvode/hodgkin_huxley_squid_axon_model_1952_modifiedKernels.hpp @@ -0,0 +1,72 @@ +#ifndef CELLHODGKIN_HUXLEY_SQUID_AXON_MODEL_1952_MODIFIEDFROMCELLMLCVODEKERNELS_HPP_ +#define CELLHODGKIN_HUXLEY_SQUID_AXON_MODEL_1952_MODIFIEDFROMCELLMLCVODEKERNELS_HPP_ + +//! @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: NumericCvode) +//! on (date omitted as unimportant) +//! +//! +#include "MathsCustomFunctions.hpp" +#include "ChasteDeviceMacros.hpp" + +template +DEVICE +void Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLCvode::EvaluateYDerivativesDevice(ValueType var_chaste_interface__environment__time, const ValueType *rY, ValueType *rDY, const ValueType mSetVoltageDerivativeToZero, const ValueType mFixedVoltage, const ValueType *mParameters, const ValueType capacitance, const DeviceStimulusFunctor stim) +{ + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 = -CHASTE_CONST(0.10000000000000001); // per_millivolt + const double var_potassium_channel_n_gate__A = -CHASTE_CONST(0.01) / var_potassium_channel_n_gate__B; // per_millisecond + const double var_potassium_channel_n_gate__beta_n = CHASTE_CONST(0.125) * CHASTE_MATH::Exp(CHASTE_CONST(0.9375) + CHASTE_CONST(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 >= -CHASTE_CONST(9.9999999999999995e-8)) && (var_potassium_channel_n_gate__U <= CHASTE_CONST(9.9999999999999995e-8))) ? ((1 - CHASTE_CONST(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 + CHASTE_MATH::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 = CHASTE_CONST(0.070000000000000007) * CHASTE_MATH::Exp(-CHASTE_CONST(3.75) - CHASTE_CONST(0.050000000000000003) * var_chaste_interface__membrane__V); // per_millisecond + const double var_sodium_channel_h_gate__beta_h = 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(4.5) - CHASTE_CONST(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 = -CHASTE_CONST(0.10000000000000001); // per_millivolt + const double var_sodium_channel_m_gate__A = -CHASTE_CONST(0.10000000000000001) / var_sodium_channel_m_gate__B; // per_millisecond + const double var_sodium_channel_m_gate__beta_m = 4 * CHASTE_MATH::Exp(-CHASTE_CONST(4.166666666666667) - CHASTE_CONST(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 >= -CHASTE_CONST(9.9999999999999995e-8)) && (var_sodium_channel_m_gate__U <= CHASTE_CONST(9.9999999999999995e-8))) ? ((1 - CHASTE_CONST(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 + CHASTE_MATH::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;const double var_leakage_current__E_L = CHASTE_CONST(10.613) + var_membrane__E_R;const double var_leakage_current__i_L = (-var_leakage_current__E_L + var_chaste_interface__membrane__V) * mParameters[2];const double var_membrane__i_Stim = CHASTE_STIM(var_chaste_interface__environment__time);const double var_potassium_channel__E_K = -12 + var_membrane__E_R;const double var_potassium_channel__i_K = CHASTE_MATH::Pow(var_chaste_interface__potassium_channel_n_gate__n, 4) * (-var_potassium_channel__E_K + var_chaste_interface__membrane__V) * mParameters[3];const double var_sodium_channel__E_Na = 115 + var_membrane__E_R;const double var_sodium_channel__i_Na = CHASTE_MATH::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;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]; + } + + rDY[0] = d_dt_chaste_interface_var_membrane__V; + rDY[1] = d_dt_chaste_interface_var_sodium_channel_m_gate__m; + rDY[2] = d_dt_chaste_interface_var_sodium_channel_h_gate__h; + rDY[3] = d_dt_chaste_interface_var_potassium_channel_n_gate__n; +} + + + + + +#include "ChasteCpuMacros.hpp" +#endif // CELLHODGKIN_HUXLEY_SQUID_AXON_MODEL_1952_MODIFIEDFROMCELLMLCVODEKERNELS_HPP_ \ No newline at end of file diff --git a/chaste_codegen/data/tests/chaste_reference_models/Cvode/paci_hyttinen_aaltosetala_severi_ventricularVersion.cpp b/chaste_codegen/data/tests/chaste_reference_models/Cvode/paci_hyttinen_aaltosetala_severi_ventricularVersion.cpp index fc4f4a6fe..df79f97dc 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/Cvode/paci_hyttinen_aaltosetala_severi_ventricularVersion.cpp +++ b/chaste_codegen/data/tests/chaste_reference_models/Cvode/paci_hyttinen_aaltosetala_severi_ventricularVersion.cpp @@ -22,6 +22,8 @@ #include "HeartConfig.hpp" #include "IsNan.hpp" #include "MathsCustomFunctions.hpp" +#include "ChasteMathDeviceNamespaces.hpp" +#include "ChasteCpuMacros.hpp" #if CHASTE_SUNDIALS_VERSION >= 60000 #include "CvodeContextManager.hpp" @@ -34,7 +36,7 @@ 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_Amplitude_converted = CHASTE_CONST(5.5718264182641404) * CHASTE_CAP(); // 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 @@ -69,17 +71,17 @@ 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, 1) = CHASTE_CONST(1.8); // (var_model_parameters__Cao) [millimolar] + NV_Ith_S(this->mParameters, 2) = CHASTE_CONST(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, 4) = CHASTE_CONST(8.6357020000000001e-5); // (var_i_CaL__g_CaL) [metre_cube_per_F_per_s] + NV_Ith_S(this->mParameters, 5) = CHASTE_CONST(3671.2302); // (var_i_Na__g_Na) [S_per_F] + NV_Ith_S(this->mParameters, 6) = CHASTE_CONST(30.103120000000001); // (var_i_f__g_f) [S_per_F] + NV_Ith_S(this->mParameters, 7) = CHASTE_CONST(28.1492); // (var_i_K1__g_K1) [S_per_F] + NV_Ith_S(this->mParameters, 8) = CHASTE_CONST(29.866700000000002); // (var_i_Kr__g_Kr) [S_per_F] + NV_Ith_S(this->mParameters, 9) = CHASTE_CONST(2.0409999999999999); // (var_i_Ks__g_Ks) [S_per_F] + NV_Ith_S(this->mParameters, 10) = CHASTE_CONST(29.9038); // (var_i_to__g_to) [S_per_F] + NV_Ith_S(this->mParameters, 11) = CHASTE_CONST(9.8710900000000003e-11); // (var_model_parameters__Cm) [farad] NV_Ith_S(this->mParameters, 12) = 310; // (var_model_parameters__T) [kelvin] } @@ -136,7 +138,7 @@ made_new_cvode_vector = true; rY = MakeNVector(*pStateVariables); } - double var_chaste_interface__Membrane__Vm_converted = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + double var_chaste_interface__Membrane__Vm_converted = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -169,7 +171,7 @@ 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_Membrane__Vm = CHASTE_CONST(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 @@ -179,59 +181,59 @@ 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_electric_potentials__PkNa = CHASTE_CONST(0.029999999999999999); // dimensionless + const double var_i_Kr__E4031_coeff = ((var_current_blockers__E4031_30nM == 1) ? (CHASTE_CONST(0.77000000000000002)) : ((var_current_blockers__E4031_100nM == 1) ? (CHASTE_CONST(0.5)) : (1))); // dimensionless + const double var_i_Ks__Chromanol_coeff = ((var_current_blockers__Chromanol_iKs30 == 1) ? (CHASTE_CONST(0.69999999999999996)) : ((var_current_blockers__Chromanol_iKs50 == 1) ? (CHASTE_CONST(0.5)) : ((var_current_blockers__Chromanol_iKs70 == 1) ? (CHASTE_CONST(0.29999999999999999)) : ((var_current_blockers__Chromanol_iKs90 == 1) ? (CHASTE_CONST(0.10000000000000001)) : (1))))); // dimensionless + const double var_i_Ks__g_Ks_total = (1 + CHASTE_CONST(0.59999999999999998) / (1 + CHASTE_CONST(6.4818210260626455e-7) * CHASTE_MATH::Pow((1 / var_chaste_interface__calcium_dynamics__Cai), CHASTE_CONST(1.3999999999999999)))) * NV_Ith_S(mParameters, 9); // S_per_F + const double var_i_Na__TTX_coeff = ((var_current_blockers__TTX_3uM == 1) ? (CHASTE_CONST(0.17999999999999999)) : ((var_current_blockers__TTX_10uM == 1) ? (CHASTE_CONST(0.059999999999999998)) : ((var_current_blockers__TTX_30uM == 1) ? (CHASTE_CONST(0.02)) : (1)))); // dimensionless + const double var_i_NaCa__KmCa = CHASTE_CONST(1.3799999999999999); // millimolar + const double var_i_NaCa__KmNai = CHASTE_CONST(87.5); // millimolar + const double var_i_NaCa__Ksat = CHASTE_CONST(0.10000000000000001); // dimensionless + const double var_i_NaCa__alpha = CHASTE_CONST(2.8571431999999999); // dimensionless + const double var_i_NaCa__gamma = CHASTE_CONST(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_NaK__PNaK = CHASTE_CONST(1.8414239999999999); // A_per_F + const double var_i_PCa__KPCa = CHASTE_CONST(0.00050000000000000001); // millimolar + const double var_i_PCa__g_PCa = CHASTE_CONST(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_PCa__i_PCa_converted = CHASTE_CAP() * var_i_PCa__i_PCa; // uA_per_cm2 + const double var_i_b_Ca__g_b_Ca = CHASTE_CONST(0.69264000000000003); // S_per_F + const double var_i_b_Na__g_b_Na = CHASTE_CONST(0.90000000000000002); // S_per_F + const double var_i_f__E_f = -CHASTE_CONST(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_f__i_f_converted = CHASTE_CAP() * var_i_f__i_f; // uA_per_cm2 + const double var_model_parameters__F = CHASTE_CONST(96485.341499999995); // coulomb_per_mole + const double var_i_K1__g_K1_total = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::Sqrt(NV_Ith_S(mParameters, 2)) * NV_Ith_S(mParameters, 7); // S_per_F + const double var_i_Kr__g_Kr_total = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::Sqrt(NV_Ith_S(mParameters, 2)) * NV_Ith_S(mParameters, 8); // S_per_F + const double var_model_parameters__R = CHASTE_CONST(8.3144720000000003); // joule_per_mole_kelvin + const double var_electric_potentials__E_Ca = CHASTE_CONST(0.5) * var_model_parameters__R * NV_Ith_S(mParameters, 12) * CHASTE_MATH::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) * CHASTE_MATH::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 >= -CHASTE_CONST(4.3086710741444596e-12) * NV_Ith_S(mParameters, 12)) && (var_Membrane__Vm <= CHASTE_CONST(4.3086710741444596e-12) * NV_Ith_S(mParameters, 12))) || ((var_Membrane__Vm >= CHASTE_CONST(4.3086710741444596e-12) * NV_Ith_S(mParameters, 12)) && (var_Membrane__Vm <= -CHASTE_CONST(4.3086710741444596e-12) * NV_Ith_S(mParameters, 12)))) ? (-CHASTE_CONST(116045061550.51096) * (-CHASTE_CONST(4.3086710741444596e-12) * NV_Ith_S(mParameters, 12) + var_Membrane__Vm) * (-CHASTE_CONST(0.019297068299999998) * (-CHASTE_CONST(0.34100000000000003) * NV_Ith_S(mParameters, 1) + var_chaste_interface__calcium_dynamics__Cai * CHASTE_MATH::Exp(CHASTE_CONST(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 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) - CHASTE_CONST(0.019297068299999998) * (-CHASTE_CONST(0.34100000000000003) * NV_Ith_S(mParameters, 1) + var_chaste_interface__calcium_dynamics__Cai * CHASTE_MATH::Exp(-CHASTE_CONST(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 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)))) / NV_Ith_S(mParameters, 12) + CHASTE_CONST(0.019297068299999998) * (-CHASTE_CONST(0.34100000000000003) * NV_Ith_S(mParameters, 1) + var_chaste_interface__calcium_dynamics__Cai * CHASTE_MATH::Exp(CHASTE_CONST(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 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8)))) : (CHASTE_CONST(4478658957.2358274) * (-CHASTE_CONST(0.34100000000000003) * NV_Ith_S(mParameters, 1) + var_chaste_interface__calcium_dynamics__Cai * CHASTE_MATH::Exp(CHASTE_CONST(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 + CHASTE_MATH::Exp(CHASTE_CONST(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 = CHASTE_CAP() * var_i_CaL__i_CaL; // uA_per_cm2 + const double var_i_K1__alpha_K1 = CHASTE_CONST(3.9100000000000001) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(118.83999999999999) + CHASTE_CONST(594.19999999999993) * var_Membrane__Vm - CHASTE_CONST(594.19999999999993) * var_electric_potentials__E_K)); // dimensionless + const double var_i_K1__beta_K1 = (-CHASTE_CONST(1.5089999999999999) * CHASTE_MATH::Exp(CHASTE_CONST(0.02) + CHASTE_CONST(0.20000000000000001) * var_Membrane__Vm - CHASTE_CONST(0.20000000000000001) * var_electric_potentials__E_K) + CHASTE_MATH::Exp(-CHASTE_CONST(5.8860000000000001) + CHASTE_CONST(588.60000000000002) * var_Membrane__Vm - CHASTE_CONST(588.60000000000002) * var_electric_potentials__E_K)) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(454.69999999999999) * var_Membrane__Vm - CHASTE_CONST(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_K1__i_K1_converted = CHASTE_CAP() * 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_Kr__i_Kr_converted = CHASTE_CAP() * 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_to__i_to_converted = CHASTE_CAP() * var_i_to__i_to; // uA_per_cm2 + const double var_electric_potentials__E_Ks = var_model_parameters__R * NV_Ith_S(mParameters, 12) * CHASTE_MATH::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) * CHASTE_MATH::Log(NV_Ith_S(mParameters, 3) / var_chaste_interface__sodium_dynamics__Nai) / var_model_parameters__F; // volt + const double var_i_Ks__i_Ks = CHASTE_MATH::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 = CHASTE_CAP() * var_i_Ks__i_Ks; // uA_per_cm2 + const double var_i_Na__i_Na = CHASTE_MATH::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 = CHASTE_CAP() * var_i_Na__i_Na; // uA_per_cm2 + const double var_i_NaCa__i_NaCa = (CHASTE_MATH::Pow(var_chaste_interface__sodium_dynamics__Nai, 3) * NV_Ith_S(mParameters, 1) * CHASTE_MATH::Exp(var_Membrane__Vm * var_i_NaCa__gamma * var_model_parameters__F / (var_model_parameters__R * NV_Ith_S(mParameters, 12))) - CHASTE_MATH::Pow(NV_Ith_S(mParameters, 3), 3) * var_chaste_interface__calcium_dynamics__Cai * var_i_NaCa__alpha * CHASTE_MATH::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 * CHASTE_MATH::Exp((-1 + var_i_NaCa__gamma) * var_Membrane__Vm * var_model_parameters__F / (var_model_parameters__R * NV_Ith_S(mParameters, 12)))) * (CHASTE_MATH::Pow(var_i_NaCa__KmNai, 3) + CHASTE_MATH::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 = CHASTE_CAP() * 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 + CHASTE_CONST(0.035299999999999998) * CHASTE_MATH::Exp(-var_Membrane__Vm * var_model_parameters__F / (var_model_parameters__R * NV_Ith_S(mParameters, 12))) + CHASTE_CONST(0.1245) * CHASTE_MATH::Exp(-CHASTE_CONST(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 = CHASTE_CAP() * 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 var_chaste_interface__i_ionic = CHASTE_CAP() * var_i_b_Ca__i_b_Ca + CHASTE_CAP() * 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) @@ -246,7 +248,7 @@ { // Inputs: // Time units: millisecond - double var_chaste_interface__Membrane__Vm_converted = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + double var_chaste_interface__Membrane__Vm_converted = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -285,139 +287,139 @@ // 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_Membrane__Vm = CHASTE_CONST(0.001) * var_chaste_interface__Membrane__Vm_converted; // volt + const double var_calcium_dynamics__Buf_C = CHASTE_CONST(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__Kbuf_C = CHASTE_CONST(0.001); // millimolar + const double var_calcium_dynamics__Cai_bufc = 1 / (1 + var_calcium_dynamics__Buf_C * var_calcium_dynamics__Kbuf_C / CHASTE_MATH::Pow((var_chaste_interface__calcium_dynamics__Cai + var_calcium_dynamics__Kbuf_C), 2)); // dimensionless + const double var_calcium_dynamics__Kbuf_SR = CHASTE_CONST(0.29999999999999999); // millimolar + const double var_calcium_dynamics__Ca_SR_bufSR = 1 / (1 + var_calcium_dynamics__Buf_SR * var_calcium_dynamics__Kbuf_SR / CHASTE_MATH::Pow((var_chaste_interface__calcium_dynamics__Ca_SR + var_calcium_dynamics__Kbuf_SR), 2)); // dimensionless + const double var_calcium_dynamics__Kup = CHASTE_CONST(0.00025000000000000001); // millimolar + const double var_calcium_dynamics__V_leak = CHASTE_CONST(0.00044443999999999999); // per_second + const double var_calcium_dynamics__VmaxUp = CHASTE_CONST(0.56064000000000003); // millimolar_per_second + const double var_calcium_dynamics__a_rel = CHASTE_CONST(16.463999999999999); // millimolar_per_second + const double var_calcium_dynamics__b_rel = CHASTE_CONST(0.25); // millimolar + const double var_calcium_dynamics__c_rel = CHASTE_CONST(8.2319999999999993); // millimolar_per_second + const double var_calcium_dynamics__g_inf = ((var_chaste_interface__calcium_dynamics__Cai <= CHASTE_CONST(0.00035)) ? (1 / (1 + CHASTE_CONST(5.439910241481016e+20) * CHASTE_MATH::Pow(var_chaste_interface__calcium_dynamics__Cai, 6))) : (1 / (1 + CHASTE_CONST(1.9720198874049176e+55) * CHASTE_MATH::Pow(var_chaste_interface__calcium_dynamics__Cai, 16)))); // dimensionless + const double var_calcium_dynamics__const2 = (((var_Membrane__Vm > -CHASTE_CONST(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__i_up = var_calcium_dynamics__VmaxUp / (1 + CHASTE_MATH::Pow(var_calcium_dynamics__Kup, 2) / CHASTE_MATH::Pow(var_chaste_interface__calcium_dynamics__Cai, 2)); // millimolar_per_second + const double var_calcium_dynamics__tau_g = CHASTE_CONST(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 d_dt_chaste_interface_var_calcium_dynamics__g = CHASTE_CONST(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__alpha_d = CHASTE_CONST(0.25) + CHASTE_CONST(1.3999999999999999) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.6923076923076925) - CHASTE_CONST(76.92307692307692) * var_Membrane__Vm)); // dimensionless + const double var_i_CaL_d_gate__beta_d = CHASTE_CONST(1.3999999999999999) / (1 + CHASTE_MATH::Exp(1 + 200 * var_Membrane__Vm)); // dimensionless + const double var_calcium_dynamics__i_rel = CHASTE_CONST(0.041099999999999998) * (CHASTE_MATH::Pow(var_chaste_interface__calcium_dynamics__Ca_SR, 2) * var_calcium_dynamics__a_rel / (CHASTE_MATH::Pow(var_chaste_interface__calcium_dynamics__Ca_SR, 2) + CHASTE_MATH::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 + CHASTE_MATH::Exp(-CHASTE_CONST(1.3) - CHASTE_CONST(142.85714285714286) * var_Membrane__Vm)); // dimensionless + const double var_i_CaL_d_gate__gamma_d = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(2.5) - 50 * var_Membrane__Vm)); // dimensionless + const double var_i_CaL_d_gate__tau_d = CHASTE_CONST(0.001) * var_i_CaL_d_gate__gamma_d + CHASTE_CONST(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 d_dt_chaste_interface_var_i_CaL_d_gate__d = CHASTE_CONST(0.001) * var_i_CaL_d_gate__d_orig_deriv; // 1 / millisecond + const double var_i_CaL_f1_gate__f1_inf = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(8.6666666666666661) + CHASTE_CONST(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) ? (CHASTE_CONST(0.92835000000000001) + 1433 * var_chaste_interface__calcium_dynamics__Cai) : (1)); // dimensionless + const double var_i_CaL_f1_gate__tau_f1 = CHASTE_CONST(0.001) * (20 + 200 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(1.3) - 100 * var_Membrane__Vm)) + 180 / (1 + CHASTE_MATH::Exp(3 + 100 * var_Membrane__Vm)) + CHASTE_CONST(1102.5) * CHASTE_MATH::Exp(-CHASTE_CONST(4444444444.4444447) * CHASTE_MATH::Pow((CHASTE_CONST(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 d_dt_chaste_interface_var_i_CaL_f1_gate__f1 = CHASTE_CONST(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_inf = CHASTE_CONST(0.33000000000000002) + CHASTE_CONST(0.67000000000000004) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(8.75) + 250 * var_Membrane__Vm)); // dimensionless + const double var_i_CaL_f2_gate__tau_f2 = CHASTE_CONST(0.001) * (16 / (1 + CHASTE_MATH::Exp(3 + 100 * var_Membrane__Vm)) + 31 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(2.5) - 100 * var_Membrane__Vm)) + 600 * CHASTE_MATH::Exp(-CHASTE_CONST(5882.3529411764703) * CHASTE_MATH::Pow((CHASTE_CONST(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 d_dt_chaste_interface_var_i_CaL_f2_gate__f2 = CHASTE_CONST(0.001) * var_i_CaL_f2_gate__f2_orig_deriv; // 1 / millisecond + const double var_i_CaL_fCa_gate__alpha_fCa = 1 / (1 + CHASTE_CONST(5.9537418076512766e+25) * CHASTE_MATH::Pow(var_chaste_interface__calcium_dynamics__Cai, 8)); // dimensionless + const double var_i_CaL_fCa_gate__beta_fCa = CHASTE_CONST(0.10000000000000001) / (1 + CHASTE_MATH::Exp(-9 + 10000 * var_chaste_interface__calcium_dynamics__Cai)); // dimensionless + const double var_i_CaL_fCa_gate__gamma_fCa = CHASTE_CONST(0.29999999999999999) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.9375) + 1250 * var_chaste_interface__calcium_dynamics__Cai)); // dimensionless + const double var_i_CaL_fCa_gate__fCa_inf = CHASTE_CONST(0.76010945576162958) * var_i_CaL_fCa_gate__alpha_fCa + CHASTE_CONST(0.76010945576162958) * var_i_CaL_fCa_gate__beta_fCa + CHASTE_CONST(0.76010945576162958) * var_i_CaL_fCa_gate__gamma_fCa; // dimensionless + const double var_i_CaL_fCa_gate__constfCa = (((var_Membrane__Vm > -CHASTE_CONST(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 = CHASTE_CONST(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 d_dt_chaste_interface_var_i_CaL_fCa_gate__fCa = CHASTE_CONST(0.001) * var_i_CaL_fCa_gate__fCa_orig_deriv; // 1 / millisecond + const double var_i_Kr_Xr1_gate__L0 = CHASTE_CONST(0.025000000000000001); // dimensionless + const double var_i_Kr_Xr1_gate__Q = CHASTE_CONST(2.2999999999999998); // dimensionless + const double var_i_Kr_Xr1_gate__alpha_Xr1 = 450 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(4.5) - 100 * var_Membrane__Vm)); // dimensionless + const double var_i_Kr_Xr1_gate__beta_Xr1 = 6 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(2.6086956521739131) + CHASTE_CONST(86.956521739130437) * var_Membrane__Vm)); // dimensionless + const double var_i_Kr_Xr1_gate__tau_Xr1 = CHASTE_CONST(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 + CHASTE_MATH::Exp(CHASTE_CONST(1.76) + 20 * var_Membrane__Vm)); // dimensionless + const double var_i_Kr_Xr2_gate__alpha_Xr2 = 3 / (1 + CHASTE_MATH::Exp(-3 - 50 * var_Membrane__Vm)); // dimensionless + const double var_i_Kr_Xr2_gate__beta_Xr2 = CHASTE_CONST(1.1200000000000001) / (1 + CHASTE_MATH::Exp(-3 + 50 * var_Membrane__Vm)); // dimensionless + const double var_i_Kr_Xr2_gate__tau_Xr2 = CHASTE_CONST(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 d_dt_chaste_interface_var_i_Kr_Xr2_gate__Xr2 = CHASTE_CONST(0.001) * var_i_Kr_Xr2_gate__Xr2_orig_deriv; // 1 / millisecond + const double var_i_Ks_Xs_gate__Xs_infinity = 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(1.25) - CHASTE_CONST(62.5) * var_Membrane__Vm)); // dimensionless + const double var_i_Ks_Xs_gate__alpha_Xs = 1100 / CHASTE_MATH::Sqrt(1 + CHASTE_MATH::Exp(-CHASTE_CONST(1.6666666666666667) - CHASTE_CONST(166.66666666666666) * var_Membrane__Vm)); // dimensionless + const double var_i_Ks_Xs_gate__beta_Xs = 1 / (1 + CHASTE_MATH::Exp(-3 + 50 * var_Membrane__Vm)); // dimensionless + const double var_i_Ks_Xs_gate__tau_Xs = CHASTE_CONST(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 d_dt_chaste_interface_var_i_Ks_Xs_gate__Xs = CHASTE_CONST(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) ? (CHASTE_CONST(0.17999999999999999)) : ((var_current_blockers__TTX_10uM == 1) ? (CHASTE_CONST(0.059999999999999998)) : ((var_current_blockers__TTX_30uM == 1) ? (CHASTE_CONST(0.02)) : (1)))); // dimensionless + const double var_i_NaCa__KmCa = CHASTE_CONST(1.3799999999999999); // millimolar + const double var_i_NaCa__KmNai = CHASTE_CONST(87.5); // millimolar + const double var_i_NaCa__Ksat = CHASTE_CONST(0.10000000000000001); // dimensionless + const double var_i_NaCa__alpha = CHASTE_CONST(2.8571431999999999); // dimensionless + const double var_i_NaCa__gamma = CHASTE_CONST(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_NaK__PNaK = CHASTE_CONST(1.8414239999999999); // A_per_F + const double var_i_Na_h_gate__alpha_h = ((var_Membrane__Vm < -CHASTE_CONST(0.040000000000000001)) ? (CHASTE_CONST(0.057000000000000002) * CHASTE_MATH::Exp(-CHASTE_CONST(11.764705882352942) - CHASTE_CONST(147.05882352941177) * var_Membrane__Vm)) : (0)); // dimensionless + const double var_i_Na_h_gate__beta_h = ((var_Membrane__Vm < -CHASTE_CONST(0.040000000000000001)) ? (CHASTE_CONST(2.7000000000000002) * CHASTE_MATH::Exp(79 * var_Membrane__Vm) + 310000 * CHASTE_MATH::Exp(CHASTE_CONST(348.5) * var_Membrane__Vm)) : (CHASTE_CONST(5.9230769230769234) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.96036036036036043) - CHASTE_CONST(90.090090090090087) * var_Membrane__Vm)))); // dimensionless + const double var_i_Na_h_gate__h_inf = 1 / CHASTE_MATH::Sqrt(1 + CHASTE_MATH::Exp(CHASTE_CONST(12.649122807017543) + CHASTE_CONST(175.43859649122805) * var_Membrane__Vm)); // dimensionless + const double var_i_Na_h_gate__tau_h = ((var_Membrane__Vm < -CHASTE_CONST(0.040000000000000001)) ? (CHASTE_CONST(0.0015) / (var_i_Na_h_gate__alpha_h + var_i_Na_h_gate__beta_h)) : (CHASTE_CONST(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 d_dt_chaste_interface_var_i_Na_h_gate__h = CHASTE_CONST(0.001) * var_i_Na_h_gate__h_orig_deriv; // 1 / millisecond + const double var_i_Na_j_gate__alpha_j = ((var_Membrane__Vm < -CHASTE_CONST(0.040000000000000001)) ? ((CHASTE_CONST(37.780000000000001) + 1000 * var_Membrane__Vm) * (-25428 * CHASTE_MATH::Exp(CHASTE_CONST(244.40000000000001) * var_Membrane__Vm) - CHASTE_CONST(6.9480000000000002e-6) * CHASTE_MATH::Exp(-CHASTE_CONST(43.909999999999997) * var_Membrane__Vm)) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(24.640530000000002) + 311 * var_Membrane__Vm))) : (0)); // dimensionless + const double var_i_Na_j_gate__beta_j = ((var_Membrane__Vm < -CHASTE_CONST(0.040000000000000001)) ? (CHASTE_CONST(0.024240000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(10.52) * var_Membrane__Vm) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(5.5312920000000005) - CHASTE_CONST(137.80000000000001) * var_Membrane__Vm))) : (CHASTE_CONST(0.59999999999999998) * CHASTE_MATH::Exp(57 * var_Membrane__Vm) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(3.2000000000000002) - 100 * var_Membrane__Vm)))); // dimensionless + const double var_i_Na_j_gate__j_inf = 1 / CHASTE_MATH::Sqrt(1 + CHASTE_MATH::Exp(CHASTE_CONST(12.649122807017543) + CHASTE_CONST(175.43859649122805) * var_Membrane__Vm)); // dimensionless + const double var_i_Na_j_gate__tau_j = CHASTE_CONST(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 = 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 d_dt_chaste_interface_var_i_Na_j_gate__j = CHASTE_CONST(0.001) * var_i_Na_j_gate__j_orig_deriv; // 1 / millisecond + const double var_i_Na_m_gate__alpha_m = 1 / (1 + CHASTE_MATH::Exp(-12 - 200 * var_Membrane__Vm)); // dimensionless + const double var_i_Na_m_gate__beta_m = CHASTE_CONST(0.10000000000000001) / (1 + CHASTE_MATH::Exp(7 + 200 * var_Membrane__Vm)) + CHASTE_CONST(0.10000000000000001) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.25) + 5 * var_Membrane__Vm)); // dimensionless + const double var_i_Na_m_gate__m_inf = CHASTE_MATH::Pow((1 + CHASTE_MATH::Exp(-CHASTE_CONST(5.7796610169491522) - CHASTE_CONST(169.4915254237288) * var_Membrane__Vm)), (-CHASTE_CONST(0.33333333333333331))); // dimensionless + const double var_i_Na_m_gate__tau_m = CHASTE_CONST(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 d_dt_chaste_interface_var_i_Na_m_gate__m = CHASTE_CONST(0.001) * var_i_Na_m_gate__m_orig_deriv; // 1 / millisecond + const double var_i_PCa__KPCa = CHASTE_CONST(0.00050000000000000001); // millimolar + const double var_i_PCa__g_PCa = CHASTE_CONST(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_b_Ca__g_b_Ca = CHASTE_CONST(0.69264000000000003); // S_per_F + const double var_i_b_Na__g_b_Na = CHASTE_CONST(0.90000000000000002); // S_per_F + const double var_i_f_Xf_gate__Xf_infinity = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(15.569999999999999) + 200 * var_Membrane__Vm)); // dimensionless + const double var_i_f_Xf_gate__tau_Xf = CHASTE_CONST(1.8999999999999999) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(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 d_dt_chaste_interface_var_i_f_Xf_gate__Xf = CHASTE_CONST(0.001) * var_i_f_Xf_gate__Xf_orig_deriv; // 1 / millisecond + const double var_i_to_q_gate__q_inf = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(4.0769230769230766) + CHASTE_CONST(76.92307692307692) * var_Membrane__Vm)); // dimensionless + const double var_i_to_q_gate__tau_q = CHASTE_CONST(0.0060599999999999994) + CHASTE_CONST(0.039101999999999998) / (CHASTE_CONST(0.065000000000000002) * CHASTE_MATH::Exp(CHASTE_CONST(4.593) + 100 * var_Membrane__Vm) + CHASTE_CONST(0.56999999999999995) * CHASTE_MATH::Exp(-CHASTE_CONST(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 d_dt_chaste_interface_var_i_to_q_gate__q = CHASTE_CONST(0.001) * var_i_to_q_gate__q_orig_deriv; // 1 / millisecond + const double var_i_to_r_gate__r_inf = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(1.1893333333333334) - CHASTE_CONST(53.333333333333336) * var_Membrane__Vm)); // dimensionless + const double var_i_to_r_gate__tau_r = CHASTE_CONST(0.0027535199999999998) + CHASTE_CONST(0.01440516) / (CHASTE_CONST(1.0369999999999999) * CHASTE_MATH::Exp(CHASTE_CONST(2.7548999999999997) + 90 * var_Membrane__Vm) + CHASTE_CONST(0.36899999999999999) * CHASTE_MATH::Exp(-CHASTE_CONST(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 + 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 d_dt_chaste_interface_var_i_to_r_gate__r = CHASTE_CONST(0.001) * var_i_to_r_gate__r_orig_deriv; // 1 / millisecond + const double var_model_parameters__F = CHASTE_CONST(96485.341499999995); // coulomb_per_mole + const double var_model_parameters__R = CHASTE_CONST(8.3144720000000003); // joule_per_mole_kelvin + const double var_electric_potentials__E_Ca = CHASTE_CONST(0.5) * var_model_parameters__R * NV_Ith_S(mParameters, 12) * CHASTE_MATH::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 >= -CHASTE_CONST(4.3086710741444596e-12) * NV_Ith_S(mParameters, 12)) && (var_Membrane__Vm <= CHASTE_CONST(4.3086710741444596e-12) * NV_Ith_S(mParameters, 12))) || ((var_Membrane__Vm >= CHASTE_CONST(4.3086710741444596e-12) * NV_Ith_S(mParameters, 12)) && (var_Membrane__Vm <= -CHASTE_CONST(4.3086710741444596e-12) * NV_Ith_S(mParameters, 12)))) ? (-CHASTE_CONST(116045061550.51096) * (-CHASTE_CONST(4.3086710741444596e-12) * NV_Ith_S(mParameters, 12) + var_Membrane__Vm) * (-CHASTE_CONST(0.019297068299999998) * (-CHASTE_CONST(0.34100000000000003) * NV_Ith_S(mParameters, 1) + var_chaste_interface__calcium_dynamics__Cai * CHASTE_MATH::Exp(CHASTE_CONST(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 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) - CHASTE_CONST(0.019297068299999998) * (-CHASTE_CONST(0.34100000000000003) * NV_Ith_S(mParameters, 1) + var_chaste_interface__calcium_dynamics__Cai * CHASTE_MATH::Exp(-CHASTE_CONST(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 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)))) / NV_Ith_S(mParameters, 12) + CHASTE_CONST(0.019297068299999998) * (-CHASTE_CONST(0.34100000000000003) * NV_Ith_S(mParameters, 1) + var_chaste_interface__calcium_dynamics__Cai * CHASTE_MATH::Exp(CHASTE_CONST(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 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8)))) : (CHASTE_CONST(4478658957.2358274) * (-CHASTE_CONST(0.34100000000000003) * NV_Ith_S(mParameters, 1) + var_chaste_interface__calcium_dynamics__Cai * CHASTE_MATH::Exp(CHASTE_CONST(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 + CHASTE_MATH::Exp(CHASTE_CONST(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 * (-CHASTE_CONST(2.1789087017666886) + CHASTE_MATH::Log(CHASTE_MATH::Pow((1 + CHASTE_CONST(0.38461538461538458) * NV_Ith_S(mParameters, 1)), 4) / (CHASTE_MATH::Pow((CHASTE_CONST(0.57999999999999996) + 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 + CHASTE_MATH::Exp(CHASTE_CONST(0.2040816326530612) * var_i_Kr_Xr1_gate__V_half - CHASTE_CONST(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 d_dt_chaste_interface_var_i_Kr_Xr1_gate__Xr1 = CHASTE_CONST(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__V_SR = CHASTE_CONST(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 d_dt_chaste_interface_var_calcium_dynamics__Ca_SR = CHASTE_CONST(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) * CHASTE_MATH::Log(NV_Ith_S(mParameters, 3) / var_chaste_interface__sodium_dynamics__Nai) / var_model_parameters__F; // volt + const double var_i_Na__i_Na = CHASTE_MATH::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 = (CHASTE_MATH::Pow(var_chaste_interface__sodium_dynamics__Nai, 3) * NV_Ith_S(mParameters, 1) * CHASTE_MATH::Exp(var_Membrane__Vm * var_i_NaCa__gamma * var_model_parameters__F / (var_model_parameters__R * NV_Ith_S(mParameters, 12))) - CHASTE_MATH::Pow(NV_Ith_S(mParameters, 3), 3) * var_chaste_interface__calcium_dynamics__Cai * var_i_NaCa__alpha * CHASTE_MATH::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 * CHASTE_MATH::Exp((-1 + var_i_NaCa__gamma) * var_Membrane__Vm * var_model_parameters__F / (var_model_parameters__R * NV_Ith_S(mParameters, 12)))) * (CHASTE_MATH::Pow(var_i_NaCa__KmNai, 3) + CHASTE_MATH::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 - CHASTE_CONST(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 = CHASTE_CONST(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 + CHASTE_CONST(0.035299999999999998) * CHASTE_MATH::Exp(-var_Membrane__Vm * var_model_parameters__F / (var_model_parameters__R * NV_Ith_S(mParameters, 12))) + CHASTE_CONST(0.1245) * CHASTE_MATH::Exp(-CHASTE_CONST(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 + const double var_sodium_dynamics__Nai_orig_deriv = -CHASTE_CONST(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 = CHASTE_CONST(0.001) * var_sodium_dynamics__Nai_orig_deriv; // millimolar / millisecond if (mSetVoltageDerivativeToZero) { @@ -431,27 +433,27 @@ 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_electric_potentials__PkNa = CHASTE_CONST(0.029999999999999999); // dimensionless + const double var_i_Kr__E4031_coeff = ((var_current_blockers__E4031_30nM == 1) ? (CHASTE_CONST(0.77000000000000002)) : ((var_current_blockers__E4031_100nM == 1) ? (CHASTE_CONST(0.5)) : (1))); // dimensionless + const double var_i_Ks__Chromanol_coeff = ((var_current_blockers__Chromanol_iKs30 == 1) ? (CHASTE_CONST(0.69999999999999996)) : ((var_current_blockers__Chromanol_iKs50 == 1) ? (CHASTE_CONST(0.5)) : ((var_current_blockers__Chromanol_iKs70 == 1) ? (CHASTE_CONST(0.29999999999999999)) : ((var_current_blockers__Chromanol_iKs90 == 1) ? (CHASTE_CONST(0.10000000000000001)) : (1))))); // dimensionless + const double var_i_Ks__g_Ks_total = (1 + CHASTE_CONST(0.59999999999999998) / (1 + CHASTE_CONST(6.4818210260626455e-7) * CHASTE_MATH::Pow((1 / var_chaste_interface__calcium_dynamics__Cai), CHASTE_CONST(1.3999999999999999)))) * NV_Ith_S(mParameters, 9); // S_per_F + const double var_i_f__E_f = -CHASTE_CONST(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__g_K1_total = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::Sqrt(NV_Ith_S(mParameters, 2)) * NV_Ith_S(mParameters, 7); // S_per_F + const double var_i_Kr__g_Kr_total = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::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) * CHASTE_MATH::Log(NV_Ith_S(mParameters, 2) / NV_Ith_S(mParameters, 0)) / var_model_parameters__F; // volt + const double var_i_K1__alpha_K1 = CHASTE_CONST(3.9100000000000001) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(118.83999999999999) + CHASTE_CONST(594.19999999999993) * var_Membrane__Vm - CHASTE_CONST(594.19999999999993) * var_electric_potentials__E_K)); // dimensionless + const double var_i_K1__beta_K1 = (-CHASTE_CONST(1.5089999999999999) * CHASTE_MATH::Exp(CHASTE_CONST(0.02) + CHASTE_CONST(0.20000000000000001) * var_Membrane__Vm - CHASTE_CONST(0.20000000000000001) * var_electric_potentials__E_K) + CHASTE_MATH::Exp(-CHASTE_CONST(5.8860000000000001) + CHASTE_CONST(588.60000000000002) * var_Membrane__Vm - CHASTE_CONST(588.60000000000002) * var_electric_potentials__E_K)) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(454.69999999999999) * var_Membrane__Vm - CHASTE_CONST(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_electric_potentials__E_Ks = var_model_parameters__R * NV_Ith_S(mParameters, 12) * CHASTE_MATH::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 = CHASTE_MATH::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 = -CHASTE_STIM(var_chaste_interface__environment__time_converted); // uA_per_cm2 + const double var_stim_mode__i_stim = var_stim_mode__i_stim_converted / CHASTE_CAP(); // 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 + const double var_Membrane__Vm_orig_deriv_a = CHASTE_CONST(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 } @@ -479,7 +481,7 @@ { // Inputs: // Time units: millisecond - double var_chaste_interface__Membrane__Vm_converted = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + double var_chaste_interface__Membrane__Vm_converted = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -513,10 +515,10 @@ // 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_Membrane__Vm = CHASTE_CONST(0.001) * var_chaste_interface__Membrane__Vm_converted; // volt + const double var_calcium_dynamics__Buf_C = CHASTE_CONST(0.25); // millimolar + const double var_calcium_dynamics__Kbuf_C = CHASTE_CONST(0.001); // millimolar + const double var_calcium_dynamics__Cai_bufc = 1 / (1 + var_calcium_dynamics__Buf_C * var_calcium_dynamics__Kbuf_C / CHASTE_MATH::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 @@ -526,55 +528,55 @@ 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_electric_potentials__PkNa = CHASTE_CONST(0.029999999999999999); // dimensionless + const double var_i_Kr__E4031_coeff = ((var_current_blockers__E4031_30nM == 1) ? (CHASTE_CONST(0.77000000000000002)) : ((var_current_blockers__E4031_100nM == 1) ? (CHASTE_CONST(0.5)) : (1))); // dimensionless + const double var_i_Ks__Chromanol_coeff = ((var_current_blockers__Chromanol_iKs30 == 1) ? (CHASTE_CONST(0.69999999999999996)) : ((var_current_blockers__Chromanol_iKs50 == 1) ? (CHASTE_CONST(0.5)) : ((var_current_blockers__Chromanol_iKs70 == 1) ? (CHASTE_CONST(0.29999999999999999)) : ((var_current_blockers__Chromanol_iKs90 == 1) ? (CHASTE_CONST(0.10000000000000001)) : (1))))); // dimensionless + const double var_i_Ks__g_Ks_total = (1 + CHASTE_CONST(0.59999999999999998) / (1 + CHASTE_CONST(6.4818210260626455e-7) * CHASTE_MATH::Pow((1 / var_chaste_interface__calcium_dynamics__Cai), CHASTE_CONST(1.3999999999999999)))) * NV_Ith_S(mParameters, 9); // S_per_F + const double var_i_Na__TTX_coeff = ((var_current_blockers__TTX_3uM == 1) ? (CHASTE_CONST(0.17999999999999999)) : ((var_current_blockers__TTX_10uM == 1) ? (CHASTE_CONST(0.059999999999999998)) : ((var_current_blockers__TTX_30uM == 1) ? (CHASTE_CONST(0.02)) : (1)))); // dimensionless + const double var_i_NaCa__KmCa = CHASTE_CONST(1.3799999999999999); // millimolar + const double var_i_NaCa__KmNai = CHASTE_CONST(87.5); // millimolar + const double var_i_NaCa__Ksat = CHASTE_CONST(0.10000000000000001); // dimensionless + const double var_i_NaCa__alpha = CHASTE_CONST(2.8571431999999999); // dimensionless + const double var_i_NaCa__gamma = CHASTE_CONST(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_NaK__PNaK = CHASTE_CONST(1.8414239999999999); // A_per_F + const double var_i_PCa__KPCa = CHASTE_CONST(0.00050000000000000001); // millimolar + const double var_i_PCa__g_PCa = CHASTE_CONST(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_PCa__i_PCa_converted = CHASTE_CAP() * var_i_PCa__i_PCa; // uA_per_cm2 + const double var_i_f__E_f = -CHASTE_CONST(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_i_f__i_f_converted = CHASTE_CAP() * 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_model_parameters__F = CHASTE_CONST(96485.341499999995); // coulomb_per_mole + const double var_i_K1__g_K1_total = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::Sqrt(NV_Ith_S(mParameters, 2)) * NV_Ith_S(mParameters, 7); // S_per_F + const double var_i_Kr__g_Kr_total = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::Sqrt(NV_Ith_S(mParameters, 2)) * NV_Ith_S(mParameters, 8); // S_per_F + const double var_model_parameters__R = CHASTE_CONST(8.3144720000000003); // joule_per_mole_kelvin + const double var_electric_potentials__E_K = var_model_parameters__R * NV_Ith_S(mParameters, 12) * CHASTE_MATH::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 >= -CHASTE_CONST(4.3086710741444596e-12) * NV_Ith_S(mParameters, 12)) && (var_Membrane__Vm <= CHASTE_CONST(4.3086710741444596e-12) * NV_Ith_S(mParameters, 12))) || ((var_Membrane__Vm >= CHASTE_CONST(4.3086710741444596e-12) * NV_Ith_S(mParameters, 12)) && (var_Membrane__Vm <= -CHASTE_CONST(4.3086710741444596e-12) * NV_Ith_S(mParameters, 12)))) ? (-CHASTE_CONST(116045061550.51096) * (-CHASTE_CONST(4.3086710741444596e-12) * NV_Ith_S(mParameters, 12) + var_Membrane__Vm) * (-CHASTE_CONST(0.019297068299999998) * (-CHASTE_CONST(0.34100000000000003) * NV_Ith_S(mParameters, 1) + var_chaste_interface__calcium_dynamics__Cai * CHASTE_MATH::Exp(CHASTE_CONST(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 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) - CHASTE_CONST(0.019297068299999998) * (-CHASTE_CONST(0.34100000000000003) * NV_Ith_S(mParameters, 1) + var_chaste_interface__calcium_dynamics__Cai * CHASTE_MATH::Exp(-CHASTE_CONST(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 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)))) / NV_Ith_S(mParameters, 12) + CHASTE_CONST(0.019297068299999998) * (-CHASTE_CONST(0.34100000000000003) * NV_Ith_S(mParameters, 1) + var_chaste_interface__calcium_dynamics__Cai * CHASTE_MATH::Exp(CHASTE_CONST(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 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8)))) : (CHASTE_CONST(4478658957.2358274) * (-CHASTE_CONST(0.34100000000000003) * NV_Ith_S(mParameters, 1) + var_chaste_interface__calcium_dynamics__Cai * CHASTE_MATH::Exp(CHASTE_CONST(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 + CHASTE_MATH::Exp(CHASTE_CONST(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 = CHASTE_CAP() * var_i_CaL__i_CaL; // uA_per_cm2 + const double var_i_K1__alpha_K1 = CHASTE_CONST(3.9100000000000001) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(118.83999999999999) + CHASTE_CONST(594.19999999999993) * var_Membrane__Vm - CHASTE_CONST(594.19999999999993) * var_electric_potentials__E_K)); // dimensionless + const double var_i_K1__beta_K1 = (-CHASTE_CONST(1.5089999999999999) * CHASTE_MATH::Exp(CHASTE_CONST(0.02) + CHASTE_CONST(0.20000000000000001) * var_Membrane__Vm - CHASTE_CONST(0.20000000000000001) * var_electric_potentials__E_K) + CHASTE_MATH::Exp(-CHASTE_CONST(5.8860000000000001) + CHASTE_CONST(588.60000000000002) * var_Membrane__Vm - CHASTE_CONST(588.60000000000002) * var_electric_potentials__E_K)) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(454.69999999999999) * var_Membrane__Vm - CHASTE_CONST(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_K1__i_K1_converted = CHASTE_CAP() * 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_Kr__i_Kr_converted = CHASTE_CAP() * 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 + const double var_i_to__i_to_converted = CHASTE_CAP() * var_i_to__i_to; // uA_per_cm2 + const double var_electric_potentials__E_Ks = var_model_parameters__R * NV_Ith_S(mParameters, 12) * CHASTE_MATH::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) * CHASTE_MATH::Log(NV_Ith_S(mParameters, 3) / var_chaste_interface__sodium_dynamics__Nai) / var_model_parameters__F; // volt + const double var_i_Ks__i_Ks = CHASTE_MATH::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 = CHASTE_CAP() * var_i_Ks__i_Ks; // uA_per_cm2 + const double var_i_Na__i_Na = CHASTE_MATH::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 = CHASTE_CAP() * var_i_Na__i_Na; // uA_per_cm2 + const double var_i_NaCa__i_NaCa = (CHASTE_MATH::Pow(var_chaste_interface__sodium_dynamics__Nai, 3) * NV_Ith_S(mParameters, 1) * CHASTE_MATH::Exp(var_Membrane__Vm * var_i_NaCa__gamma * var_model_parameters__F / (var_model_parameters__R * NV_Ith_S(mParameters, 12))) - CHASTE_MATH::Pow(NV_Ith_S(mParameters, 3), 3) * var_chaste_interface__calcium_dynamics__Cai * var_i_NaCa__alpha * CHASTE_MATH::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 * CHASTE_MATH::Exp((-1 + var_i_NaCa__gamma) * var_Membrane__Vm * var_model_parameters__F / (var_model_parameters__R * NV_Ith_S(mParameters, 12)))) * (CHASTE_MATH::Pow(var_i_NaCa__KmNai, 3) + CHASTE_MATH::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 = CHASTE_CAP() * 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 + CHASTE_CONST(0.035299999999999998) * CHASTE_MATH::Exp(-var_Membrane__Vm * var_model_parameters__F / (var_model_parameters__R * NV_Ith_S(mParameters, 12))) + CHASTE_CONST(0.1245) * CHASTE_MATH::Exp(-CHASTE_CONST(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 = CHASTE_CAP() * var_i_NaK__i_NaK; // uA_per_cm2 + const double var_stim_mode__i_stim_converted = -CHASTE_STIM(var_chaste_interface__environment__time_converted); // uA_per_cm2 #if CHASTE_SUNDIALS_VERSION >= 60000 N_Vector dqs = N_VNew_Serial(18, CvodeContextManager::Instance()->GetSundialsContext()); @@ -830,4 +832,5 @@ void OdeSystemInformation #include "AbstractStimulusFunction.hpp" +#if USING_DEVICE_COMPILER +#include "StimulusEvaluatorCuda.hpp" +#endif #include "AbstractCvodeCell.hpp" +#include "HostDeviceMacros.hpp" class Cellpaci_hyttinen_aaltosetala_severi_ventricularVersionFromCellMLCvode : public AbstractCvodeCell { @@ -38,6 +42,10 @@ class Cellpaci_hyttinen_aaltosetala_severi_ventricularVersionFromCellMLCvode : p const bool is_concentration[18] = {false, true, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true, false}; const bool is_probability[18] = {false, false, true, true, true, true, true, true, true, false, false, false, true, false, false, false, false, false}; public: + static constexpr unsigned TOTAL_SIZE = 18u; + static constexpr unsigned NNZ = 0u; + static inline const int sparse_rowptr[] = { }; + static inline const int sparse_colind[] = { }; boost::shared_ptr UseCellMLDefaultStimulus(); double GetIntracellularCalciumConcentration(); @@ -46,7 +54,19 @@ const bool is_probability[18] = {false, false, true, true, true, true, true, tru void VerifyStateVariables(); double GetIIonic(const std::vector* pStateVariables=NULL); void EvaluateYDerivatives(double var_chaste_interface__environment__time_converted, const N_Vector rY, N_Vector rDY); + N_Vector ComputeDerivedQuantities(double var_chaste_interface__environment__time_converted, const N_Vector & rY); +#if USING_DEVICE_COMPILER + template + DEVICE + static void EvaluateYDerivativesDevice(ValueType var_chaste_interface__environment__time_converted, const ValueType* rY, ValueType* rDY, const ValueType mSetVoltageDerivativeToZero, const ValueType mFixedVoltage, const ValueType* mParameters, const ValueType capacitance, const DeviceStimulusFunctor stim); + template + DEVICE + static void EvaluateAnalyticJacobianDevice(ValueType var_chaste_interface__environment__time_converted, const ValueType *rY, ValueType *rDY, ValueType *rJacobian, ValueType *rTmp1, ValueType *rTmp2, ValueType *rTmp3, const unsigned nvars, const ValueType mSetVoltageDerivativeToZero, const ValueType mFixedVoltage, const ValueType *mParameters, const ValueType capacitance, const DeviceStimulusFunctor stim); + template + DEVICE + static void EvaluateSparseAnalyticJacobianDevice(ValueType var_chaste_interface__environment__time_converted, const ValueType *rY, ValueType *rDY, ValueType *rJacobian, ValueType *rTmp1, ValueType *rTmp2, ValueType *rTmp3, const unsigned nvars, const ValueType mSetVoltageDerivativeToZero, const ValueType mFixedVoltage, const ValueType *mParameters, const ValueType capacitance, const DeviceStimulusFunctor stim); +#endif }; // Needs to be included last @@ -83,4 +103,10 @@ namespace boost } #endif // CELLPACI_HYTTINEN_AALTOSETALA_SEVERI_VENTRICULARVERSIONFROMCELLMLCVODE_HPP_ + + + +#if USING_DEVICE_COMPILER + #include "paci_hyttinen_aaltosetala_severi_ventricularVersionKernels.hpp" +#endif #endif // CHASTE_CVODE \ No newline at end of file diff --git a/chaste_codegen/data/tests/chaste_reference_models/Cvode/paci_hyttinen_aaltosetala_severi_ventricularVersionKernels.hpp b/chaste_codegen/data/tests/chaste_reference_models/Cvode/paci_hyttinen_aaltosetala_severi_ventricularVersionKernels.hpp new file mode 100644 index 000000000..8dc676382 --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/Cvode/paci_hyttinen_aaltosetala_severi_ventricularVersionKernels.hpp @@ -0,0 +1,230 @@ +#ifndef CELLPACI_HYTTINEN_AALTOSETALA_SEVERI_VENTRICULARVERSIONFROMCELLMLCVODEKERNELS_HPP_ +#define CELLPACI_HYTTINEN_AALTOSETALA_SEVERI_VENTRICULARVERSIONFROMCELLMLCVODEKERNELS_HPP_ + +//! @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 "MathsCustomFunctions.hpp" +#include "ChasteDeviceMacros.hpp" + +template +DEVICE +void Cellpaci_hyttinen_aaltosetala_severi_ventricularVersionFromCellMLCvode::EvaluateYDerivativesDevice(ValueType var_chaste_interface__environment__time_converted, const ValueType *rY, ValueType *rDY, const ValueType mSetVoltageDerivativeToZero, const ValueType mFixedVoltage, const ValueType *mParameters, const ValueType capacitance, const DeviceStimulusFunctor stim) +{ + // Inputs: + // Time units: millisecond + double var_chaste_interface__Membrane__Vm_converted = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); + // Units: millivolt; Initial value: -74.3340057623841 + double var_chaste_interface__calcium_dynamics__Cai = rY[1]; + // Units: millimolar; Initial value: 1.80773974140477e-05 + double var_chaste_interface__i_Na_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.102953468725004 + double var_chaste_interface__i_Na_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.786926637881461 + double var_chaste_interface__i_Na_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.253943221774722 + double var_chaste_interface__i_CaL_d_gate__d = rY[5]; + // Units: dimensionless; Initial value: 8.96088425225182e-05 + double var_chaste_interface__i_CaL_f1_gate__f1 = rY[6]; + // Units: dimensionless; Initial value: 0.970411811263976 + double var_chaste_interface__i_CaL_f2_gate__f2 = rY[7]; + // Units: dimensionless; Initial value: 0.999965815466749 + double var_chaste_interface__i_CaL_fCa_gate__fCa = rY[8]; + // Units: dimensionless; Initial value: 0.998925296531804 + double var_chaste_interface__i_Kr_Xr1_gate__Xr1 = rY[9]; + // Units: dimensionless; Initial value: 0.00778547011240132 + double var_chaste_interface__i_Kr_Xr2_gate__Xr2 = rY[10]; + // Units: dimensionless; Initial value: 0.432162576531617 + double var_chaste_interface__i_Ks_Xs_gate__Xs = rY[11]; + // Units: dimensionless; Initial value: 0.0322944866983666 + double var_chaste_interface__i_f_Xf_gate__Xf = rY[12]; + // Units: dimensionless; Initial value: 0.100615100568753 + double var_chaste_interface__i_to_q_gate__q = rY[13]; + // Units: dimensionless; Initial value: 0.839295925773219 + double var_chaste_interface__i_to_r_gate__r = rY[14]; + // Units: dimensionless; Initial value: 0.00573289893326379 + double var_chaste_interface__sodium_dynamics__Nai = rY[15]; + // Units: millimolar; Initial value: 10.9248496211574 + double var_chaste_interface__calcium_dynamics__Ca_SR = rY[16]; + // Units: millimolar; Initial value: 0.2734234751931 + double var_chaste_interface__calcium_dynamics__g = rY[17]; + // Units: dimensionless; Initial value: 0.999999981028517 + // Mathematics + double d_dt_chaste_interface_var_Membrane__Vm_converted; + const double var_Membrane__Vm = CHASTE_CONST(0.001) * var_chaste_interface__Membrane__Vm_converted; // volt + const double var_calcium_dynamics__Buf_C = CHASTE_CONST(0.25); // millimolar + const double var_calcium_dynamics__Buf_SR = 10; // millimolar + const double var_calcium_dynamics__Kbuf_C = CHASTE_CONST(0.001); // millimolar + const double var_calcium_dynamics__Cai_bufc = 1 / (1 + var_calcium_dynamics__Buf_C * var_calcium_dynamics__Kbuf_C / CHASTE_MATH::Pow((var_chaste_interface__calcium_dynamics__Cai + var_calcium_dynamics__Kbuf_C), 2)); // dimensionless + const double var_calcium_dynamics__Kbuf_SR = CHASTE_CONST(0.29999999999999999); // millimolar + const double var_calcium_dynamics__Ca_SR_bufSR = 1 / (1 + var_calcium_dynamics__Buf_SR * var_calcium_dynamics__Kbuf_SR / CHASTE_MATH::Pow((var_chaste_interface__calcium_dynamics__Ca_SR + var_calcium_dynamics__Kbuf_SR), 2)); // dimensionless + const double var_calcium_dynamics__Kup = CHASTE_CONST(0.00025000000000000001); // millimolar + const double var_calcium_dynamics__V_leak = CHASTE_CONST(0.00044443999999999999); // per_second + const double var_calcium_dynamics__VmaxUp = CHASTE_CONST(0.56064000000000003); // millimolar_per_second + const double var_calcium_dynamics__a_rel = CHASTE_CONST(16.463999999999999); // millimolar_per_second + const double var_calcium_dynamics__b_rel = CHASTE_CONST(0.25); // millimolar + const double var_calcium_dynamics__c_rel = CHASTE_CONST(8.2319999999999993); // millimolar_per_second + const double var_calcium_dynamics__g_inf = ((var_chaste_interface__calcium_dynamics__Cai <= CHASTE_CONST(0.00035)) ? (1 / (1 + CHASTE_CONST(5.439910241481016e+20) * CHASTE_MATH::Pow(var_chaste_interface__calcium_dynamics__Cai, 6))) : (1 / (1 + CHASTE_CONST(1.9720198874049176e+55) * CHASTE_MATH::Pow(var_chaste_interface__calcium_dynamics__Cai, 16)))); // dimensionless + const double var_calcium_dynamics__const2 = (((var_Membrane__Vm > -CHASTE_CONST(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 + CHASTE_MATH::Pow(var_calcium_dynamics__Kup, 2) / CHASTE_MATH::Pow(var_chaste_interface__calcium_dynamics__Cai, 2)); // millimolar_per_second + const double var_calcium_dynamics__tau_g = CHASTE_CONST(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 = CHASTE_CONST(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 = CHASTE_CONST(0.25) + CHASTE_CONST(1.3999999999999999) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.6923076923076925) - CHASTE_CONST(76.92307692307692) * var_Membrane__Vm)); // dimensionless + const double var_i_CaL_d_gate__beta_d = CHASTE_CONST(1.3999999999999999) / (1 + CHASTE_MATH::Exp(1 + 200 * var_Membrane__Vm)); // dimensionless + const double var_calcium_dynamics__i_rel = CHASTE_CONST(0.041099999999999998) * (CHASTE_MATH::Pow(var_chaste_interface__calcium_dynamics__Ca_SR, 2) * var_calcium_dynamics__a_rel / (CHASTE_MATH::Pow(var_chaste_interface__calcium_dynamics__Ca_SR, 2) + CHASTE_MATH::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 + CHASTE_MATH::Exp(-CHASTE_CONST(1.3) - CHASTE_CONST(142.85714285714286) * var_Membrane__Vm)); // dimensionless + const double var_i_CaL_d_gate__gamma_d = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(2.5) - 50 * var_Membrane__Vm)); // dimensionless + const double var_i_CaL_d_gate__tau_d = CHASTE_CONST(0.001) * var_i_CaL_d_gate__gamma_d + CHASTE_CONST(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 = CHASTE_CONST(0.001) * var_i_CaL_d_gate__d_orig_deriv; // 1 / millisecond + const double var_i_CaL_f1_gate__f1_inf = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(8.6666666666666661) + CHASTE_CONST(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) ? (CHASTE_CONST(0.92835000000000001) + 1433 * var_chaste_interface__calcium_dynamics__Cai) : (1)); // dimensionless + const double var_i_CaL_f1_gate__tau_f1 = CHASTE_CONST(0.001) * (20 + 200 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(1.3) - 100 * var_Membrane__Vm)) + 180 / (1 + CHASTE_MATH::Exp(3 + 100 * var_Membrane__Vm)) + CHASTE_CONST(1102.5) * CHASTE_MATH::Exp(-CHASTE_CONST(4444444444.4444447) * CHASTE_MATH::Pow((CHASTE_CONST(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 = CHASTE_CONST(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 = CHASTE_CONST(0.33000000000000002) + CHASTE_CONST(0.67000000000000004) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(8.75) + 250 * var_Membrane__Vm)); // dimensionless + const double var_i_CaL_f2_gate__tau_f2 = CHASTE_CONST(0.001) * (16 / (1 + CHASTE_MATH::Exp(3 + 100 * var_Membrane__Vm)) + 31 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(2.5) - 100 * var_Membrane__Vm)) + 600 * CHASTE_MATH::Exp(-CHASTE_CONST(5882.3529411764703) * CHASTE_MATH::Pow((CHASTE_CONST(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 = CHASTE_CONST(0.001) * var_i_CaL_f2_gate__f2_orig_deriv; // 1 / millisecond + const double var_i_CaL_fCa_gate__alpha_fCa = 1 / (1 + CHASTE_CONST(5.9537418076512766e+25) * CHASTE_MATH::Pow(var_chaste_interface__calcium_dynamics__Cai, 8)); // dimensionless + const double var_i_CaL_fCa_gate__beta_fCa = CHASTE_CONST(0.10000000000000001) / (1 + CHASTE_MATH::Exp(-9 + 10000 * var_chaste_interface__calcium_dynamics__Cai)); // dimensionless + const double var_i_CaL_fCa_gate__gamma_fCa = CHASTE_CONST(0.29999999999999999) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.9375) + 1250 * var_chaste_interface__calcium_dynamics__Cai)); // dimensionless + const double var_i_CaL_fCa_gate__fCa_inf = CHASTE_CONST(0.76010945576162958) * var_i_CaL_fCa_gate__alpha_fCa + CHASTE_CONST(0.76010945576162958) * var_i_CaL_fCa_gate__beta_fCa + CHASTE_CONST(0.76010945576162958) * var_i_CaL_fCa_gate__gamma_fCa; // dimensionless + const double var_i_CaL_fCa_gate__constfCa = (((var_Membrane__Vm > -CHASTE_CONST(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 = CHASTE_CONST(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 = CHASTE_CONST(0.001) * var_i_CaL_fCa_gate__fCa_orig_deriv; // 1 / millisecond + const double var_i_Kr_Xr1_gate__L0 = CHASTE_CONST(0.025000000000000001); // dimensionless + const double var_i_Kr_Xr1_gate__Q = CHASTE_CONST(2.2999999999999998); // dimensionless + const double var_i_Kr_Xr1_gate__alpha_Xr1 = 450 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(4.5) - 100 * var_Membrane__Vm)); // dimensionless + const double var_i_Kr_Xr1_gate__beta_Xr1 = 6 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(2.6086956521739131) + CHASTE_CONST(86.956521739130437) * var_Membrane__Vm)); // dimensionless + const double var_i_Kr_Xr1_gate__tau_Xr1 = CHASTE_CONST(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 + CHASTE_MATH::Exp(CHASTE_CONST(1.76) + 20 * var_Membrane__Vm)); // dimensionless + const double var_i_Kr_Xr2_gate__alpha_Xr2 = 3 / (1 + CHASTE_MATH::Exp(-3 - 50 * var_Membrane__Vm)); // dimensionless + const double var_i_Kr_Xr2_gate__beta_Xr2 = CHASTE_CONST(1.1200000000000001) / (1 + CHASTE_MATH::Exp(-3 + 50 * var_Membrane__Vm)); // dimensionless + const double var_i_Kr_Xr2_gate__tau_Xr2 = CHASTE_CONST(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 = CHASTE_CONST(0.001) * var_i_Kr_Xr2_gate__Xr2_orig_deriv; // 1 / millisecond + const double var_i_Ks_Xs_gate__Xs_infinity = 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(1.25) - CHASTE_CONST(62.5) * var_Membrane__Vm)); // dimensionless + const double var_i_Ks_Xs_gate__alpha_Xs = 1100 / CHASTE_MATH::Sqrt(1 + CHASTE_MATH::Exp(-CHASTE_CONST(1.6666666666666667) - CHASTE_CONST(166.66666666666666) * var_Membrane__Vm)); // dimensionless + const double var_i_Ks_Xs_gate__beta_Xs = 1 / (1 + CHASTE_MATH::Exp(-3 + 50 * var_Membrane__Vm)); // dimensionless + const double var_i_Ks_Xs_gate__tau_Xs = CHASTE_CONST(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 = CHASTE_CONST(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) ? (CHASTE_CONST(0.17999999999999999)) : ((var_current_blockers__TTX_10uM == 1) ? (CHASTE_CONST(0.059999999999999998)) : ((var_current_blockers__TTX_30uM == 1) ? (CHASTE_CONST(0.02)) : (1)))); // dimensionless + const double var_i_NaCa__KmCa = CHASTE_CONST(1.3799999999999999); // millimolar + const double var_i_NaCa__KmNai = CHASTE_CONST(87.5); // millimolar + const double var_i_NaCa__Ksat = CHASTE_CONST(0.10000000000000001); // dimensionless + const double var_i_NaCa__alpha = CHASTE_CONST(2.8571431999999999); // dimensionless + const double var_i_NaCa__gamma = CHASTE_CONST(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 = CHASTE_CONST(1.8414239999999999); // A_per_F + const double var_i_Na_h_gate__alpha_h = ((var_Membrane__Vm < -CHASTE_CONST(0.040000000000000001)) ? (CHASTE_CONST(0.057000000000000002) * CHASTE_MATH::Exp(-CHASTE_CONST(11.764705882352942) - CHASTE_CONST(147.05882352941177) * var_Membrane__Vm)) : (0)); // dimensionless + const double var_i_Na_h_gate__beta_h = ((var_Membrane__Vm < -CHASTE_CONST(0.040000000000000001)) ? (CHASTE_CONST(2.7000000000000002) * CHASTE_MATH::Exp(79 * var_Membrane__Vm) + 310000 * CHASTE_MATH::Exp(CHASTE_CONST(348.5) * var_Membrane__Vm)) : (CHASTE_CONST(5.9230769230769234) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.96036036036036043) - CHASTE_CONST(90.090090090090087) * var_Membrane__Vm)))); // dimensionless + const double var_i_Na_h_gate__h_inf = 1 / CHASTE_MATH::Sqrt(1 + CHASTE_MATH::Exp(CHASTE_CONST(12.649122807017543) + CHASTE_CONST(175.43859649122805) * var_Membrane__Vm)); // dimensionless + const double var_i_Na_h_gate__tau_h = ((var_Membrane__Vm < -CHASTE_CONST(0.040000000000000001)) ? (CHASTE_CONST(0.0015) / (var_i_Na_h_gate__alpha_h + var_i_Na_h_gate__beta_h)) : (CHASTE_CONST(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 = CHASTE_CONST(0.001) * var_i_Na_h_gate__h_orig_deriv; // 1 / millisecond + const double var_i_Na_j_gate__alpha_j = ((var_Membrane__Vm < -CHASTE_CONST(0.040000000000000001)) ? ((CHASTE_CONST(37.780000000000001) + 1000 * var_Membrane__Vm) * (-25428 * CHASTE_MATH::Exp(CHASTE_CONST(244.40000000000001) * var_Membrane__Vm) - CHASTE_CONST(6.9480000000000002e-6) * CHASTE_MATH::Exp(-CHASTE_CONST(43.909999999999997) * var_Membrane__Vm)) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(24.640530000000002) + 311 * var_Membrane__Vm))) : (0)); // dimensionless + const double var_i_Na_j_gate__beta_j = ((var_Membrane__Vm < -CHASTE_CONST(0.040000000000000001)) ? (CHASTE_CONST(0.024240000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(10.52) * var_Membrane__Vm) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(5.5312920000000005) - CHASTE_CONST(137.80000000000001) * var_Membrane__Vm))) : (CHASTE_CONST(0.59999999999999998) * CHASTE_MATH::Exp(57 * var_Membrane__Vm) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(3.2000000000000002) - 100 * var_Membrane__Vm)))); // dimensionless + const double var_i_Na_j_gate__j_inf = 1 / CHASTE_MATH::Sqrt(1 + CHASTE_MATH::Exp(CHASTE_CONST(12.649122807017543) + CHASTE_CONST(175.43859649122805) * var_Membrane__Vm)); // dimensionless + const double var_i_Na_j_gate__tau_j = CHASTE_CONST(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 = CHASTE_CONST(0.001) * var_i_Na_j_gate__j_orig_deriv; // 1 / millisecond + const double var_i_Na_m_gate__alpha_m = 1 / (1 + CHASTE_MATH::Exp(-12 - 200 * var_Membrane__Vm)); // dimensionless + const double var_i_Na_m_gate__beta_m = CHASTE_CONST(0.10000000000000001) / (1 + CHASTE_MATH::Exp(7 + 200 * var_Membrane__Vm)) + CHASTE_CONST(0.10000000000000001) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.25) + 5 * var_Membrane__Vm)); // dimensionless + const double var_i_Na_m_gate__m_inf = CHASTE_MATH::Pow((1 + CHASTE_MATH::Exp(-CHASTE_CONST(5.7796610169491522) - CHASTE_CONST(169.4915254237288) * var_Membrane__Vm)), (-CHASTE_CONST(0.33333333333333331))); // dimensionless + const double var_i_Na_m_gate__tau_m = CHASTE_CONST(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 = CHASTE_CONST(0.001) * var_i_Na_m_gate__m_orig_deriv; // 1 / millisecond + const double var_i_PCa__KPCa = CHASTE_CONST(0.00050000000000000001); // millimolar + const double var_i_PCa__g_PCa = CHASTE_CONST(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 = CHASTE_CONST(0.69264000000000003); // S_per_F + const double var_i_b_Na__g_b_Na = CHASTE_CONST(0.90000000000000002); // S_per_F + const double var_i_f_Xf_gate__Xf_infinity = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(15.569999999999999) + 200 * var_Membrane__Vm)); // dimensionless + const double var_i_f_Xf_gate__tau_Xf = CHASTE_CONST(1.8999999999999999) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(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 = CHASTE_CONST(0.001) * var_i_f_Xf_gate__Xf_orig_deriv; // 1 / millisecond + const double var_i_to_q_gate__q_inf = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(4.0769230769230766) + CHASTE_CONST(76.92307692307692) * var_Membrane__Vm)); // dimensionless + const double var_i_to_q_gate__tau_q = CHASTE_CONST(0.0060599999999999994) + CHASTE_CONST(0.039101999999999998) / (CHASTE_CONST(0.065000000000000002) * CHASTE_MATH::Exp(CHASTE_CONST(4.593) + 100 * var_Membrane__Vm) + CHASTE_CONST(0.56999999999999995) * CHASTE_MATH::Exp(-CHASTE_CONST(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 = CHASTE_CONST(0.001) * var_i_to_q_gate__q_orig_deriv; // 1 / millisecond + const double var_i_to_r_gate__r_inf = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(1.1893333333333334) - CHASTE_CONST(53.333333333333336) * var_Membrane__Vm)); // dimensionless + const double var_i_to_r_gate__tau_r = CHASTE_CONST(0.0027535199999999998) + CHASTE_CONST(0.01440516) / (CHASTE_CONST(1.0369999999999999) * CHASTE_MATH::Exp(CHASTE_CONST(2.7548999999999997) + 90 * var_Membrane__Vm) + CHASTE_CONST(0.36899999999999999) * CHASTE_MATH::Exp(-CHASTE_CONST(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 = CHASTE_CONST(0.001) * var_i_to_r_gate__r_orig_deriv; // 1 / millisecond + const double var_model_parameters__F = CHASTE_CONST(96485.341499999995); // coulomb_per_mole + const double var_model_parameters__R = CHASTE_CONST(8.3144720000000003); // joule_per_mole_kelvin + const double var_electric_potentials__E_Ca = CHASTE_CONST(0.5) * var_model_parameters__R * mParameters[12] * CHASTE_MATH::Log(mParameters[1] / var_chaste_interface__calcium_dynamics__Cai) / var_model_parameters__F; // volt + const double var_i_CaL__i_CaL = ((((var_Membrane__Vm >= -CHASTE_CONST(4.3086710741444596e-12) * mParameters[12]) && (var_Membrane__Vm <= CHASTE_CONST(4.3086710741444596e-12) * mParameters[12])) || ((var_Membrane__Vm >= CHASTE_CONST(4.3086710741444596e-12) * mParameters[12]) && (var_Membrane__Vm <= -CHASTE_CONST(4.3086710741444596e-12) * mParameters[12]))) ? (-CHASTE_CONST(116045061550.51096) * (-CHASTE_CONST(4.3086710741444596e-12) * mParameters[12] + var_Membrane__Vm) * (-CHASTE_CONST(0.019297068299999998) * (-CHASTE_CONST(0.34100000000000003) * mParameters[1] + var_chaste_interface__calcium_dynamics__Cai * CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) * 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 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) - CHASTE_CONST(0.019297068299999998) * (-CHASTE_CONST(0.34100000000000003) * mParameters[1] + var_chaste_interface__calcium_dynamics__Cai * CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8))) * 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 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)))) / mParameters[12] + CHASTE_CONST(0.019297068299999998) * (-CHASTE_CONST(0.34100000000000003) * mParameters[1] + var_chaste_interface__calcium_dynamics__Cai * CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) * 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 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8)))) : (CHASTE_CONST(4478658957.2358274) * (-CHASTE_CONST(0.34100000000000003) * mParameters[1] + var_chaste_interface__calcium_dynamics__Cai * CHASTE_MATH::Exp(CHASTE_CONST(23209.012310102189) * var_Membrane__Vm / mParameters[12])) * var_Membrane__Vm * 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 + CHASTE_MATH::Exp(CHASTE_CONST(23209.012310102189) * var_Membrane__Vm / mParameters[12])) * mParameters[12]))); // A_per_F + const double var_i_Kr_Xr1_gate__V_half = -19 - 1000 * (-CHASTE_CONST(2.1789087017666886) + CHASTE_MATH::Log(CHASTE_MATH::Pow((1 + CHASTE_CONST(0.38461538461538458) * mParameters[1]), 4) / (CHASTE_MATH::Pow((CHASTE_CONST(0.57999999999999996) + mParameters[1]), 4) * var_i_Kr_Xr1_gate__L0))) * var_model_parameters__R * mParameters[12] / (var_i_Kr_Xr1_gate__Q * var_model_parameters__F); // millivolt + const double var_i_Kr_Xr1_gate__Xr1_inf = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(0.2040816326530612) * var_i_Kr_Xr1_gate__V_half - CHASTE_CONST(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 = CHASTE_CONST(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 = CHASTE_CONST(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 = CHASTE_CONST(0.001) * var_calcium_dynamics__Ca_SR_orig_deriv; // millimolar / millisecond + const double var_electric_potentials__E_Na = var_model_parameters__R * mParameters[12] * CHASTE_MATH::Log(mParameters[3] / var_chaste_interface__sodium_dynamics__Nai) / var_model_parameters__F; // volt + const double var_i_Na__i_Na = CHASTE_MATH::Pow(var_chaste_interface__i_Na_m_gate__m, 3) * (-var_electric_potentials__E_Na + var_Membrane__Vm) * var_i_Na__TTX_coeff * 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 = (CHASTE_MATH::Pow(var_chaste_interface__sodium_dynamics__Nai, 3) * mParameters[1] * CHASTE_MATH::Exp(var_Membrane__Vm * var_i_NaCa__gamma * var_model_parameters__F / (var_model_parameters__R * mParameters[12])) - CHASTE_MATH::Pow(mParameters[3], 3) * var_chaste_interface__calcium_dynamics__Cai * var_i_NaCa__alpha * CHASTE_MATH::Exp((-1 + var_i_NaCa__gamma) * var_Membrane__Vm * var_model_parameters__F / (var_model_parameters__R * mParameters[12]))) * var_i_NaCa__kNaCa / ((1 + var_i_NaCa__Ksat * CHASTE_MATH::Exp((-1 + var_i_NaCa__gamma) * var_Membrane__Vm * var_model_parameters__F / (var_model_parameters__R * mParameters[12]))) * (CHASTE_MATH::Pow(var_i_NaCa__KmNai, 3) + CHASTE_MATH::Pow(mParameters[3], 3)) * (var_i_NaCa__KmCa + mParameters[1])); // A_per_F + const double var_calcium_dynamics__Cai_orig_deriv = (-var_calcium_dynamics__i_up - CHASTE_CONST(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) * 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 = CHASTE_CONST(0.001) * var_calcium_dynamics__Cai_orig_deriv; // millimolar / millisecond + const double var_i_NaK__i_NaK = var_i_NaK__PNaK * mParameters[2] * var_chaste_interface__sodium_dynamics__Nai / ((var_i_NaK__Km_K + mParameters[2]) * (var_i_NaK__Km_Na + var_chaste_interface__sodium_dynamics__Nai) * (1 + CHASTE_CONST(0.035299999999999998) * CHASTE_MATH::Exp(-var_Membrane__Vm * var_model_parameters__F / (var_model_parameters__R * mParameters[12])) + CHASTE_CONST(0.1245) * CHASTE_MATH::Exp(-CHASTE_CONST(0.10000000000000001) * var_Membrane__Vm * var_model_parameters__F / (var_model_parameters__R * 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 = -CHASTE_CONST(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) * mParameters[11] / (var_model_parameters__F * var_model_parameters__Vc); // millimolar / second + const double d_dt_chaste_interface_var_sodium_dynamics__Nai = CHASTE_CONST(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;const double var_current_blockers__Chromanol_iKs50 = 0;const double var_current_blockers__Chromanol_iKs70 = 0;const double var_current_blockers__Chromanol_iKs90 = 0;const double var_current_blockers__E4031_100nM = 0;const double var_current_blockers__E4031_30nM = 0;const double var_electric_potentials__PkNa = CHASTE_CONST(0.029999999999999999);const double var_i_Kr__E4031_coeff = ((var_current_blockers__E4031_30nM == 1) ? (CHASTE_CONST(0.77000000000000002)) : ((var_current_blockers__E4031_100nM == 1) ? (CHASTE_CONST(0.5)) : (1)));const double var_i_Ks__Chromanol_coeff = ((var_current_blockers__Chromanol_iKs30 == 1) ? (CHASTE_CONST(0.69999999999999996)) : ((var_current_blockers__Chromanol_iKs50 == 1) ? (CHASTE_CONST(0.5)) : ((var_current_blockers__Chromanol_iKs70 == 1) ? (CHASTE_CONST(0.29999999999999999)) : ((var_current_blockers__Chromanol_iKs90 == 1) ? (CHASTE_CONST(0.10000000000000001)) : (1)))));const double var_i_Ks__g_Ks_total = (1 + CHASTE_CONST(0.59999999999999998) / (1 + CHASTE_CONST(6.4818210260626455e-7) * CHASTE_MATH::Pow((1 / var_chaste_interface__calcium_dynamics__Cai), CHASTE_CONST(1.3999999999999999)))) * mParameters[9];const double var_i_f__E_f = -CHASTE_CONST(0.017000000000000001);const double var_i_f__i_f = (-var_i_f__E_f + var_Membrane__Vm) * mParameters[6] * var_chaste_interface__i_f_Xf_gate__Xf;const double var_i_K1__g_K1_total = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::Sqrt(mParameters[2]) * mParameters[7];const double var_i_Kr__g_Kr_total = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::Sqrt(mParameters[2]) * mParameters[8];const double var_electric_potentials__E_K = var_model_parameters__R * mParameters[12] * CHASTE_MATH::Log(mParameters[2] / mParameters[0]) / var_model_parameters__F;const double var_i_K1__alpha_K1 = CHASTE_CONST(3.9100000000000001) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(118.83999999999999) + CHASTE_CONST(594.19999999999993) * var_Membrane__Vm - CHASTE_CONST(594.19999999999993) * var_electric_potentials__E_K));const double var_i_K1__beta_K1 = (-CHASTE_CONST(1.5089999999999999) * CHASTE_MATH::Exp(CHASTE_CONST(0.02) + CHASTE_CONST(0.20000000000000001) * var_Membrane__Vm - CHASTE_CONST(0.20000000000000001) * var_electric_potentials__E_K) + CHASTE_MATH::Exp(-CHASTE_CONST(5.8860000000000001) + CHASTE_CONST(588.60000000000002) * var_Membrane__Vm - CHASTE_CONST(588.60000000000002) * var_electric_potentials__E_K)) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(454.69999999999999) * var_Membrane__Vm - CHASTE_CONST(454.69999999999999) * var_electric_potentials__E_K));const double var_i_K1__XK1_inf = var_i_K1__alpha_K1 / (var_i_K1__alpha_K1 + var_i_K1__beta_K1);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;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;const double var_i_to__i_to = (-var_electric_potentials__E_K + var_Membrane__Vm) * mParameters[10] * var_chaste_interface__i_to_q_gate__q * var_chaste_interface__i_to_r_gate__r;const double var_electric_potentials__E_Ks = var_model_parameters__R * mParameters[12] * CHASTE_MATH::Log((var_electric_potentials__PkNa * mParameters[3] + mParameters[2]) / (var_electric_potentials__PkNa * var_chaste_interface__sodium_dynamics__Nai + mParameters[0])) / var_model_parameters__F;const double var_i_Ks__i_Ks = CHASTE_MATH::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;const double var_stim_mode__i_stim_converted = -CHASTE_STIM(var_chaste_interface__environment__time_converted);const double var_stim_mode__i_stim = var_stim_mode__i_stim_converted / CHASTE_CAP();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;const double var_Membrane__Vm_orig_deriv_a = CHASTE_CONST(0.001) * var_Membrane__Vm_orig_deriv;d_dt_chaste_interface_var_Membrane__Vm_converted = 1000 * var_Membrane__Vm_orig_deriv_a; + } + + rDY[0] = d_dt_chaste_interface_var_Membrane__Vm_converted; + rDY[1] = d_dt_chaste_interface_var_calcium_dynamics__Cai; + 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_CaL_d_gate__d; + rDY[6] = d_dt_chaste_interface_var_i_CaL_f1_gate__f1; + rDY[7] = d_dt_chaste_interface_var_i_CaL_f2_gate__f2; + rDY[8] = d_dt_chaste_interface_var_i_CaL_fCa_gate__fCa; + rDY[9] = d_dt_chaste_interface_var_i_Kr_Xr1_gate__Xr1; + rDY[10] = d_dt_chaste_interface_var_i_Kr_Xr2_gate__Xr2; + rDY[11] = d_dt_chaste_interface_var_i_Ks_Xs_gate__Xs; + rDY[12] = d_dt_chaste_interface_var_i_f_Xf_gate__Xf; + rDY[13] = d_dt_chaste_interface_var_i_to_q_gate__q; + rDY[14] = d_dt_chaste_interface_var_i_to_r_gate__r; + rDY[15] = d_dt_chaste_interface_var_sodium_dynamics__Nai; + rDY[16] = d_dt_chaste_interface_var_calcium_dynamics__Ca_SR; + rDY[17] = d_dt_chaste_interface_var_calcium_dynamics__g; +} + + + + + +#include "ChasteCpuMacros.hpp" +#endif // CELLPACI_HYTTINEN_AALTOSETALA_SEVERI_VENTRICULARVERSIONFROMCELLMLCVODEKERNELS_HPP_ \ No newline at end of file diff --git a/chaste_codegen/data/tests/chaste_reference_models/Cvode_opt/dynamic_aslanidi_Purkinje_model_2009.cpp b/chaste_codegen/data/tests/chaste_reference_models/Cvode_opt/dynamic_aslanidi_Purkinje_model_2009.cpp index 1d42f7976..9a43ba0b8 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/Cvode_opt/dynamic_aslanidi_Purkinje_model_2009.cpp +++ b/chaste_codegen/data/tests/chaste_reference_models/Cvode_opt/dynamic_aslanidi_Purkinje_model_2009.cpp @@ -22,6 +22,8 @@ #include "HeartConfig.hpp" #include "IsNan.hpp" #include "MathsCustomFunctions.hpp" +#include "ChasteMathDeviceNamespaces.hpp" +#include "ChasteCpuMacros.hpp" #if CHASTE_SUNDIALS_VERSION >= 60000 #include "CvodeContextManager.hpp" @@ -154,7 +156,7 @@ class Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt_LookupTables : publi for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 1 + exp(1.2521739130434781 - 0.16722408026755853 * var_chaste_interface__membrane__V); + return 1 + CHASTE_MATH::Exp(CHASTE_CONST(1.2521739130434781) - CHASTE_CONST(0.16722408026755853) * 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); @@ -165,7 +167,7 @@ class Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt_LookupTables : publi for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return exp(0.074871767015605231 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(CHASTE_CONST(0.074871767015605231) * 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); @@ -176,7 +178,7 @@ class Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt_LookupTables : publi for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return -1 + exp(0.074871767015605231 * var_chaste_interface__membrane__V); + return -1 + CHASTE_MATH::Exp(CHASTE_CONST(0.074871767015605231) * 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 +189,7 @@ class Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt_LookupTables : publi for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return exp(-0.024333324280071702 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(-CHASTE_CONST(0.024333324280071702) * 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 +200,7 @@ class Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt_LookupTables : publi for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return exp(0.013102559227730915 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(CHASTE_CONST(0.013102559227730915) * 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); @@ -209,7 +211,7 @@ class Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt_LookupTables : publi for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 1 + 0.27000000000000002 * exp(-0.024333324280071702 * var_chaste_interface__membrane__V); + return 1 + CHASTE_CONST(0.27000000000000002) * CHASTE_MATH::Exp(-CHASTE_CONST(0.024333324280071702) * 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); @@ -220,7 +222,7 @@ class Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt_LookupTables : publi for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return exp(-0.037435883507802616 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(-CHASTE_CONST(0.037435883507802616) * 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); @@ -231,7 +233,7 @@ class Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt_LookupTables : publi for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 0.1245 * exp(-0.003743588350780262 * var_chaste_interface__membrane__V); + return CHASTE_CONST(0.1245) * CHASTE_MATH::Exp(-CHASTE_CONST(0.003743588350780262) * 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); @@ -242,7 +244,7 @@ class Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt_LookupTables : publi for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return -100 * exp(0.037435883507802616 * var_chaste_interface__membrane__V); + return -100 * CHASTE_MATH::Exp(CHASTE_CONST(0.037435883507802616) * 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); @@ -253,7 +255,7 @@ class Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt_LookupTables : publi for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 1 - exp(0.037435883507802616 * var_chaste_interface__membrane__V); + return 1 - CHASTE_MATH::Exp(CHASTE_CONST(0.037435883507802616) * 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 +266,7 @@ class Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt_LookupTables : publi for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 1 + exp(-0.26470588235294124 + 0.049019607843137261 * var_chaste_interface__membrane__V); + return 1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.26470588235294124) + CHASTE_CONST(0.049019607843137261) * 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); @@ -275,7 +277,7 @@ class Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt_LookupTables : publi for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return exp(-1.1230765052340785 + 0.074871767015605231 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(-CHASTE_CONST(1.1230765052340785) + CHASTE_CONST(0.074871767015605231) * 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); @@ -286,7 +288,7 @@ class Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt_LookupTables : publi for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return -1 + exp(-1.1230765052340785 + 0.074871767015605231 * var_chaste_interface__membrane__V); + return -1 + CHASTE_MATH::Exp(-CHASTE_CONST(1.1230765052340785) + CHASTE_CONST(0.074871767015605231) * 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); @@ -297,7 +299,7 @@ class Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt_LookupTables : publi for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 1 / (1 + exp(0.59347181008902072 - 0.14836795252225518 * var_chaste_interface__membrane__V)); + return 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(0.59347181008902072) - CHASTE_CONST(0.14836795252225518) * 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); @@ -308,7 +310,7 @@ class Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt_LookupTables : publi for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 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)); + return CHASTE_CONST(0.58999999999999997) + CHASTE_CONST(0.80000000000000004) * CHASTE_MATH::Exp(CHASTE_CONST(0.67599999999999993) + CHASTE_CONST(0.051999999999999998) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(1.7160000000000002) + CHASTE_CONST(0.13200000000000001) * 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); @@ -319,7 +321,7 @@ class Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt_LookupTables : publi for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 1 / (1 + exp(1.8 + 0.10000000000000001 * var_chaste_interface__membrane__V)); + return 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(1.8) + CHASTE_CONST(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); @@ -330,7 +332,7 @@ class Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt_LookupTables : publi for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 1 / (1 + exp(-5.4098360655737707 - 0.16393442622950821 * var_chaste_interface__membrane__V)); + return 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(5.4098360655737707) - CHASTE_CONST(0.16393442622950821) * 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); @@ -341,7 +343,7 @@ class Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt_LookupTables : publi for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 1.0680000000000001 * exp(0.54333333333333333 + 0.033333333333333333 * var_chaste_interface__membrane__V) + 1.0680000000000001 * exp(-0.54333333333333333 - 0.033333333333333333 * var_chaste_interface__membrane__V); + return CHASTE_CONST(1.0680000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.54333333333333333) + CHASTE_CONST(0.033333333333333333) * var_chaste_interface__membrane__V) + CHASTE_CONST(1.0680000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(0.54333333333333333) - CHASTE_CONST(0.033333333333333333) * 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); @@ -352,7 +354,7 @@ class Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt_LookupTables : publi for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 1 / (1 + exp(9.0909090909090917 + 0.15151515151515152 * var_chaste_interface__membrane__V)); + return 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(9.0909090909090917) + CHASTE_CONST(0.15151515151515152) * 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); @@ -363,7 +365,7 @@ class Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt_LookupTables : publi for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 0.014999999999999999 * exp(4.6558441558441563 + 0.064935064935064929 * var_chaste_interface__membrane__V) + 0.014999999999999999 * exp(-0.86074429771908767 - 0.012004801920768308 * var_chaste_interface__membrane__V); + return CHASTE_CONST(0.014999999999999999) * CHASTE_MATH::Exp(CHASTE_CONST(4.6558441558441563) + CHASTE_CONST(0.064935064935064929) * var_chaste_interface__membrane__V) + CHASTE_CONST(0.014999999999999999) * CHASTE_MATH::Exp(-CHASTE_CONST(0.86074429771908767) - CHASTE_CONST(0.012004801920768308) * 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); @@ -374,7 +376,7 @@ class Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt_LookupTables : publi for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 1 / (1 + exp(-0.0069387755102040824 - 0.081632653061224483 * var_chaste_interface__membrane__V)); + return 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.0069387755102040824) - CHASTE_CONST(0.081632653061224483) * 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); @@ -385,7 +387,7 @@ class Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt_LookupTables : publi for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 100 + 900 / (1 + exp(0.20000000000000001 * var_chaste_interface__membrane__V)); + return 100 + 900 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(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); @@ -396,7 +398,7 @@ class Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt_LookupTables : publi for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 1 / (1 + exp(0.65693430656934315 - 0.072992700729927015 * var_chaste_interface__membrane__V)); + return 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(0.65693430656934315) - CHASTE_CONST(0.072992700729927015) * 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); @@ -407,7 +409,7 @@ class Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt_LookupTables : publi for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 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)); + return CHASTE_CONST(7.6100000000000007e-5) * (CHASTE_CONST(44.600000000000001) + var_chaste_interface__membrane__V) / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(444.66200000000003) - CHASTE_CONST(9.9700000000000006) * var_chaste_interface__membrane__V)) + CHASTE_CONST(0.00036000000000000002) * (-CHASTE_CONST(0.55000000000000004) + var_chaste_interface__membrane__V) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.070400000000000004) + CHASTE_CONST(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); @@ -418,7 +420,7 @@ class Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt_LookupTables : publi for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 3.8050000000000003e-5 * (44.600000000000001 + var_chaste_interface__membrane__V) / (1 - exp(-444.66200000000003 - 9.9700000000000006 * var_chaste_interface__membrane__V)) + 0.00018000000000000001 * (-0.55000000000000004 + var_chaste_interface__membrane__V) / (-1 + exp(-0.070400000000000004 + 0.128 * var_chaste_interface__membrane__V)); + return CHASTE_CONST(3.8050000000000003e-5) * (CHASTE_CONST(44.600000000000001) + var_chaste_interface__membrane__V) / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(444.66200000000003) - CHASTE_CONST(9.9700000000000006) * var_chaste_interface__membrane__V)) + CHASTE_CONST(0.00018000000000000001) * (-CHASTE_CONST(0.55000000000000004) + var_chaste_interface__membrane__V) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.070400000000000004) + CHASTE_CONST(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); @@ -429,7 +431,7 @@ class Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt_LookupTables : publi for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 1 / (1 + exp(11.311475409836067 + 0.16393442622950821 * var_chaste_interface__membrane__V)); + return 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(11.311475409836067) + CHASTE_CONST(0.16393442622950821) * 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,7 +442,7 @@ class Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt_LookupTables : publi for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 175 + 125 / (1 + exp(-4.166666666666667 - 0.16666666666666666 * var_chaste_interface__membrane__V)); + return 175 + 125 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(4.166666666666667) - CHASTE_CONST(0.16666666666666666) * 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); @@ -451,7 +453,7 @@ class Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt_LookupTables : publi for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 0.32000000000000001 * (47.130000000000003 + var_chaste_interface__membrane__V) / (1 - exp(-4.7130000000000001 - 0.10000000000000001 * var_chaste_interface__membrane__V)); + return CHASTE_CONST(0.32000000000000001) * (CHASTE_CONST(47.130000000000003) + var_chaste_interface__membrane__V) / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(4.7130000000000001) - CHASTE_CONST(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); @@ -462,7 +464,7 @@ class Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt_LookupTables : publi for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 0.080000000000000002 * exp(-0.090909090909090912 * var_chaste_interface__membrane__V); + return CHASTE_CONST(0.080000000000000002) * CHASTE_MATH::Exp(-CHASTE_CONST(0.090909090909090912) * 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); @@ -473,7 +475,7 @@ class Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt_LookupTables : publi for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 25 * exp(-3.7999999999999998 + 0.050000000000000003 * var_chaste_interface__membrane__V) / (1 + exp(-3.7999999999999998 + 0.050000000000000003 * var_chaste_interface__membrane__V)); + return 25 * CHASTE_MATH::Exp(-CHASTE_CONST(3.7999999999999998) + CHASTE_CONST(0.050000000000000003) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(3.7999999999999998) + CHASTE_CONST(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); @@ -484,7 +486,7 @@ class Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt_LookupTables : publi for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 25 * exp(-2.7000000000000002 - 0.050000000000000003 * var_chaste_interface__membrane__V) / (1 + exp(-2.7000000000000002 - 0.050000000000000003 * var_chaste_interface__membrane__V)); + return 25 * CHASTE_MATH::Exp(-CHASTE_CONST(2.7000000000000002) - CHASTE_CONST(0.050000000000000003) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.7000000000000002) - CHASTE_CONST(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); @@ -495,7 +497,7 @@ class Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt_LookupTables : publi for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 0.0044200000000000003 / ((1 + exp(1.7333333333333334 + 0.066666666666666666 * var_chaste_interface__membrane__V)) * (0.0044200000000000003 / (1 + exp(1.7333333333333334 + 0.066666666666666666 * var_chaste_interface__membrane__V)) + 0.050000000000000003 * exp(-0.66666666666666663 + 0.066666666666666666 * var_chaste_interface__membrane__V) / (1 + exp(-0.66666666666666663 + 0.066666666666666666 * var_chaste_interface__membrane__V)))); + return CHASTE_CONST(0.0044200000000000003) / ((1 + CHASTE_MATH::Exp(CHASTE_CONST(1.7333333333333334) + CHASTE_CONST(0.066666666666666666) * var_chaste_interface__membrane__V)) * (CHASTE_CONST(0.0044200000000000003) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(1.7333333333333334) + CHASTE_CONST(0.066666666666666666) * var_chaste_interface__membrane__V)) + CHASTE_CONST(0.050000000000000003) * CHASTE_MATH::Exp(-CHASTE_CONST(0.66666666666666663) + CHASTE_CONST(0.066666666666666666) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.66666666666666663) + CHASTE_CONST(0.066666666666666666) * 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); @@ -506,7 +508,7 @@ class Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt_LookupTables : publi for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 21.5 + 30 / (1 + exp(-2.5 + 0.10000000000000001 * var_chaste_interface__membrane__V)); + return CHASTE_CONST(21.5) + 30 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.5) + CHASTE_CONST(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); @@ -517,7 +519,7 @@ class Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt_LookupTables : publi for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 0.029999999999999999 / ((1 + exp(1.6666666666666667 + 0.066666666666666666 * var_chaste_interface__membrane__V)) * (0.029999999999999999 / (1 + exp(1.6666666666666667 + 0.066666666666666666 * var_chaste_interface__membrane__V)) + 0.10000000000000001 * exp(-2.6666666666666665 + 0.066666666666666666 * var_chaste_interface__membrane__V) / (1 + exp(-2.6666666666666665 + 0.066666666666666666 * var_chaste_interface__membrane__V)))); + return CHASTE_CONST(0.029999999999999999) / ((1 + CHASTE_MATH::Exp(CHASTE_CONST(1.6666666666666667) + CHASTE_CONST(0.066666666666666666) * var_chaste_interface__membrane__V)) * (CHASTE_CONST(0.029999999999999999) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(1.6666666666666667) + CHASTE_CONST(0.066666666666666666) * var_chaste_interface__membrane__V)) + CHASTE_CONST(0.10000000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(2.6666666666666665) + CHASTE_CONST(0.066666666666666666) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.6666666666666665) + CHASTE_CONST(0.066666666666666666) * 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); @@ -528,7 +530,7 @@ class Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt_LookupTables : publi for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 6 + 5 / (1 + exp(-1.6499999999999999 + 0.10000000000000001 * var_chaste_interface__membrane__V)); + return 6 + 5 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(1.6499999999999999) + CHASTE_CONST(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); @@ -561,7 +563,7 @@ std::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_amplitude_converted = -80 * CHASTE_CAP(); // 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 @@ -684,22 +686,22 @@ std::shared_ptrAddModifier("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, 0) = CHASTE_CONST(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, 2) = CHASTE_CONST(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, 4) = CHASTE_CONST(1.8); // (var_model_parameters__Ca_o) [millimolar] + NV_Ith_S(this->mParameters, 5) = CHASTE_CONST(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, 7) = CHASTE_CONST(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] + NV_Ith_S(this->mParameters, 11) = CHASTE_CONST(0.25); // (var_i_K1__g_K1_max) [milliS_per_microF] + NV_Ith_S(this->mParameters, 12) = CHASTE_CONST(0.040008488000000002); // (var_i_Kr__g_Kr_max) [milliS_per_microF] + NV_Ith_S(this->mParameters, 13) = CHASTE_CONST(0.052581329000000003); // (var_i_Ks__g_Ks_max) [milliS_per_microF] + NV_Ith_S(this->mParameters, 14) = CHASTE_CONST(4.5); // (var_i_NaCa__i_NaCa_max) [microA_per_microF] + NV_Ith_S(this->mParameters, 15) = CHASTE_CONST(0.14135944); // (var_i_to_1__g_to_1) [milliS_per_microF] } Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt::~Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt() @@ -759,7 +761,7 @@ std::shared_ptrmFixedVoltage : NV_Ith_S(rY, 0)); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -818,10 +820,10 @@ std::shared_ptrIndexTable0(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 * (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) / (_lt_0_row[0]) + 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 * (-0.34100000000000003 * NV_Ith_S(mParameters, 4) + var_chaste_interface__Ca_i__Ca_i * _lt_0_row[1]) * var_chaste_interface__membrane__V / (_lt_0_row[2]) + (-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]) / ((_lt_0_row[5]) * (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[8] + var_chaste_interface__intracellular_ion_concentrations__Cl_i) * var_chaste_interface__i_to_2_a_gate__a * var_chaste_interface__membrane__V / (_lt_0_row[9]) + (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 * 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 / (_lt_0_row[10]) + 3.510865186083326 * (-15 + var_chaste_interface__membrane__V) * (-0.34100000000000003 * NV_Ith_S(mParameters, 4) + 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 / (_lt_0_row[12]); // microA_per_microF - const double var_chaste_interface__i_ionic = HeartConfig::Instance()->GetCapacitance() * var_membrane__i_tot; // uA_per_cm2 + const double var_equilibrium_potentials__E_K = CHASTE_CONST(26.712338705498265) * CHASTE_MATH::Log(NV_Ith_S(mParameters, 5) / var_chaste_interface__intracellular_ion_concentrations__K_i); // millivolt + const double var_equilibrium_potentials__E_Na = CHASTE_CONST(26.712338705498265) * CHASTE_MATH::Log(NV_Ith_S(mParameters, 6) / var_chaste_interface__intracellular_ion_concentrations__Na_i); // millivolt + const double var_membrane__i_tot = CHASTE_CONST(0.0077250000000000001) * var_chaste_interface__membrane__V + CHASTE_CONST(0.0060102762087371094) * CHASTE_MATH::Log(100 / var_chaste_interface__intracellular_ion_concentrations__Cl_i) - CHASTE_CONST(0.0025000000000000001) * var_equilibrium_potentials__E_Na - CHASTE_CONST(0.0050000000000000001) * var_equilibrium_potentials__E_K + (CHASTE_CONST(0.0040000000000000001) + CHASTE_CONST(0.4389381125701739) * CHASTE_MATH::Sqrt(NV_Ith_S(mParameters, 5)) * NV_Ith_S(mParameters, 11) / ((1 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.23849999999999999) * var_equilibrium_potentials__E_K)) * (CHASTE_CONST(1.02) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.23849999999999999) * var_equilibrium_potentials__E_K)) + (CHASTE_CONST(0.49124000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.43983232) + CHASTE_CONST(0.080320000000000003) * var_chaste_interface__membrane__V - CHASTE_CONST(0.080320000000000003) * var_equilibrium_potentials__E_K) + CHASTE_MATH::Exp(-CHASTE_CONST(36.698642499999998) + CHASTE_CONST(0.061749999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.061749999999999999) * var_equilibrium_potentials__E_K)) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.4444678999999998) + CHASTE_CONST(0.51429999999999998) * var_equilibrium_potentials__E_K - CHASTE_CONST(0.51429999999999998) * var_chaste_interface__membrane__V))))) * (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) + CHASTE_CONST(0.0027599999999999999) * (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) / (_lt_0_row[0]) + CHASTE_CONST(0.057500000000000002) * var_chaste_interface__Ca_i__Ca_i / (CHASTE_CONST(0.00050000000000000001) + var_chaste_interface__Ca_i__Ca_i) + CHASTE_CONST(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 + CHASTE_CONST(0.037374999999999999) * CHASTE_MATH::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 + CHASTE_CONST(0.0028824983370007683) * (-CHASTE_CONST(0.34100000000000003) * NV_Ith_S(mParameters, 4) + var_chaste_interface__Ca_i__Ca_i * _lt_0_row[1]) * var_chaste_interface__membrane__V / (_lt_0_row[2]) + (-CHASTE_CONST(1.5) * CHASTE_MATH::Pow(NV_Ith_S(mParameters, 6), 3) * var_chaste_interface__Ca_i__Ca_i * _lt_0_row[3] + CHASTE_CONST(0.40000000000000002) * CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * NV_Ith_S(mParameters, 14) * NV_Ith_S(mParameters, 4) * _lt_0_row[4]) / ((_lt_0_row[5]) * (1 + CHASTE_CONST(6.9444444444444451e-9) / CHASTE_MATH::Pow(var_chaste_interface__Ca_i__Ca_i, 2)) * (CHASTE_CONST(1004882.8125) * var_chaste_interface__Ca_i__Ca_i + CHASTE_CONST(1.3) * CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) + CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * NV_Ith_S(mParameters, 4) + CHASTE_CONST(1.5) * CHASTE_MATH::Pow(NV_Ith_S(mParameters, 6), 3) * var_chaste_interface__Ca_i__Ca_i + CHASTE_CONST(0.0035999999999999999) * CHASTE_MATH::Pow(NV_Ith_S(mParameters, 6), 3) * (1 + CHASTE_CONST(0.081300813008130079) * var_chaste_interface__intracellular_ion_concentrations__Na_i) + CHASTE_CONST(1860.8670000000004) * (1 + CHASTE_CONST(416.66666666666669) * var_chaste_interface__Ca_i__Ca_i) * NV_Ith_S(mParameters, 4))) + CHASTE_MATH::Pow(var_chaste_interface__i_Na_m_gate__m, 3) * (-var_equilibrium_potentials__E_Na + var_chaste_interface__membrane__V) * (CHASTE_CONST(0.20000000000000001) * var_chaste_interface__i_Na_j_gate__j + CHASTE_CONST(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) * (CHASTE_CONST(0.20000000000000001) * var_chaste_interface__i_to_1_i2_gate__i2 + CHASTE_CONST(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 + CHASTE_CONST(0.61875000000000002) * NV_Ith_S(mParameters, 5) / ((1 + 100 / CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 2)) * (CHASTE_CONST(1.5) + NV_Ith_S(mParameters, 5)) * (1 + _lt_0_row[7] + CHASTE_CONST(0.036499999999999998) * (-CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * CHASTE_MATH::Exp(CHASTE_CONST(0.01485884101040119) * NV_Ith_S(mParameters, 6))) * _lt_0_row[6])) + CHASTE_CONST(0.028896009762002683) * (_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 / (_lt_0_row[9]) + (1 + CHASTE_CONST(0.59999999999999998) / (1 + CHASTE_CONST(6.4818210260626455e-7) * CHASTE_MATH::Pow((1 / var_chaste_interface__Ca_i__Ca_i), CHASTE_CONST(1.3999999999999999)))) * (-CHASTE_CONST(26.712338705498265) * CHASTE_MATH::Log((CHASTE_CONST(0.018329999999999999) * NV_Ith_S(mParameters, 6) + NV_Ith_S(mParameters, 5)) / (CHASTE_CONST(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 + CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::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 / (_lt_0_row[10]) + CHASTE_CONST(3.510865186083326) * (-15 + var_chaste_interface__membrane__V) * (-CHASTE_CONST(0.34100000000000003) * NV_Ith_S(mParameters, 4) + 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 / (_lt_0_row[12]); // microA_per_microF + const double var_chaste_interface__i_ionic = CHASTE_CAP() * var_membrane__i_tot; // uA_per_cm2 const double i_ionic = var_chaste_interface__i_ionic; if (made_new_cvode_vector) @@ -836,7 +838,7 @@ std::shared_ptrmFixedVoltage : mp_membrane_voltage_modifier->Calc(NV_Ith_S(rY, 0), var_chaste_interface__environment__time)); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -907,15 +909,15 @@ std::shared_ptrCalc(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 = (var_i_Na_h_gate__alpha_h + 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 = (var_i_Na_j_gate__alpha_j + 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_h_gate__alpha_h = ((var_chaste_interface__membrane__V < -40) ? (CHASTE_CONST(0.13500000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(11.764705882352942) + CHASTE_CONST(0.14705882352941177) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) - CHASTE_CONST(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 * CHASTE_MATH::Exp(CHASTE_CONST(0.34999999999999998) * var_chaste_interface__membrane__V - CHASTE_CONST(0.34999999999999998) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time)) + CHASTE_CONST(3.5600000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.079000000000000001) * var_chaste_interface__membrane__V - CHASTE_CONST(0.079000000000000001) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time))) : (CHASTE_CONST(7.6923076923076916) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.96036036036036043) + CHASTE_CONST(0.0900900900900901) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) - CHASTE_CONST(0.0900900900900901) * var_chaste_interface__membrane__V)))); // per_millisecond + const double d_dt_chaste_interface_var_i_Na_h_gate__h = (var_i_Na_h_gate__alpha_h + var_i_Na_h_gate__beta_h) * (-var_chaste_interface__i_Na_h_gate__h + CHASTE_CONST(0.01) * mp_membrane_fast_sodium_current_reduced_inactivation_modifier->Calc(NV_Ith_S(mParameters, 9), var_chaste_interface__environment__time) + (1 - CHASTE_CONST(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) ? ((CHASTE_CONST(37.780000000000001) + var_chaste_interface__membrane__V) * (-127140 * CHASTE_MATH::Exp(CHASTE_CONST(0.24440000000000001) * var_chaste_interface__membrane__V - CHASTE_CONST(0.24440000000000001) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time)) - CHASTE_CONST(3.4740000000000003e-5) * CHASTE_MATH::Exp(CHASTE_CONST(0.043909999999999998) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) - CHASTE_CONST(0.043909999999999998) * var_chaste_interface__membrane__V)) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(24.640530000000002) + CHASTE_CONST(0.311) * var_chaste_interface__membrane__V - CHASTE_CONST(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) ? (CHASTE_CONST(0.1212) * CHASTE_MATH::Exp(CHASTE_CONST(0.01052) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) - CHASTE_CONST(0.01052) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(5.5312920000000005) + CHASTE_CONST(0.13780000000000001) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) - CHASTE_CONST(0.13780000000000001) * var_chaste_interface__membrane__V))) : (CHASTE_CONST(0.29999999999999999) * CHASTE_MATH::Exp(CHASTE_CONST(2.5349999999999999e-7) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) - CHASTE_CONST(2.5349999999999999e-7) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(3.2000000000000002) + CHASTE_CONST(0.10000000000000001) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) - CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V)))); // per_millisecond + const double d_dt_chaste_interface_var_i_Na_j_gate__j = (var_i_Na_j_gate__alpha_j + var_i_Na_j_gate__beta_j) * (-var_chaste_interface__i_Na_j_gate__j + CHASTE_CONST(0.01) * mp_membrane_fast_sodium_current_reduced_inactivation_modifier->Calc(NV_Ith_S(mParameters, 9), var_chaste_interface__environment__time) + (1 - CHASTE_CONST(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)) * (var_i_Na_m_gate__alpha_m + var_i_Na_m_gate__beta_m); // 1 / millisecond @@ -939,43 +941,43 @@ std::shared_ptrCalc(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 * (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) / (_lt_0_row[0]); // microA_per_microF - const double var_i_Kr__i_Kr = mp_i_Kr__i_Kr_modifier->Calc(0.43033148291193518 * 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 / (_lt_0_row[10]), 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((-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]) / ((_lt_0_row[5]) * (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[8] + var_chaste_interface__intracellular_ion_concentrations__Cl_i) * var_chaste_interface__i_to_2_a_gate__a * var_chaste_interface__membrane__V / (_lt_0_row[9]); // 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 * (-0.34100000000000003 * mp_extracellular_calcium_concentration_modifier->Calc(NV_Ith_S(mParameters, 4), var_chaste_interface__environment__time) + var_chaste_interface__Ca_i__Ca_i * _lt_0_row[1]) * var_chaste_interface__membrane__V / (_lt_0_row[2]); // microA_per_microF - const double var_i_Ca_L__i_Ca_L_max = 3.510865186083326 * (-15 + var_chaste_interface__membrane__V) * (-0.34100000000000003 * mp_extracellular_calcium_concentration_modifier->Calc(NV_Ith_S(mParameters, 4), var_chaste_interface__environment__time) + var_chaste_interface__Ca_r__Ca_r * _lt_0_row[11]) / (_lt_0_row[12]); // microA_per_microF + const double var_equilibrium_potentials__E_Cl = -CHASTE_CONST(26.712338705498265) * CHASTE_MATH::Log(100 / var_chaste_interface__intracellular_ion_concentrations__Cl_i); // millivolt + const double var_background_currents__i_Cl_b = CHASTE_CONST(0.00022499999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.00022499999999999999) * var_equilibrium_potentials__E_Cl; // microA_per_microF + const double var_equilibrium_potentials__E_K = CHASTE_CONST(26.712338705498265) * CHASTE_MATH::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 = CHASTE_CONST(7.0755999999999996e-6) * (-var_equilibrium_potentials__E_Cl + var_equilibrium_potentials__E_K) / (CHASTE_CONST(87.825100000000006) - var_equilibrium_potentials__E_Cl + var_equilibrium_potentials__E_K); // millimolar_per_millisecond + const double var_background_currents__i_K_b = CHASTE_CONST(0.0050000000000000001) * var_chaste_interface__membrane__V - CHASTE_CONST(0.0050000000000000001) * var_equilibrium_potentials__E_K; // microA_per_microF + const double var_equilibrium_potentials__E_Na = CHASTE_CONST(26.712338705498265) * CHASTE_MATH::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 = CHASTE_CONST(9.8442999999999999e-6) * CHASTE_MATH::Pow((-var_equilibrium_potentials__E_Cl + var_equilibrium_potentials__E_Na), 4) / (CHASTE_CONST(59494197.640692554) + CHASTE_MATH::Pow((-var_equilibrium_potentials__E_Cl + var_equilibrium_potentials__E_Na), 4)); // millimolar_per_millisecond + const double var_background_currents__i_Na_b = CHASTE_CONST(0.0025000000000000001) * var_chaste_interface__membrane__V - CHASTE_CONST(0.0025000000000000001) * var_equilibrium_potentials__E_Na; // microA_per_microF + const double var_i_K1__i_K1 = mp_i_K1__i_K1_modifier->Calc((CHASTE_CONST(0.0040000000000000001) + CHASTE_CONST(0.4389381125701739) * CHASTE_MATH::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 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.23849999999999999) * var_equilibrium_potentials__E_K)) * (CHASTE_CONST(1.02) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.23849999999999999) * var_equilibrium_potentials__E_K)) + (CHASTE_CONST(0.49124000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.43983232) + CHASTE_CONST(0.080320000000000003) * var_chaste_interface__membrane__V - CHASTE_CONST(0.080320000000000003) * var_equilibrium_potentials__E_K) + CHASTE_MATH::Exp(-CHASTE_CONST(36.698642499999998) + CHASTE_CONST(0.061749999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.061749999999999999) * var_equilibrium_potentials__E_K)) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.4444678999999998) + CHASTE_CONST(0.51429999999999998) * var_equilibrium_potentials__E_K - CHASTE_CONST(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 = CHASTE_CONST(0.0027599999999999999) * (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) / (_lt_0_row[0]); // microA_per_microF + const double var_i_Kr__i_Kr = mp_i_Kr__i_Kr_modifier->Calc(CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::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 / (_lt_0_row[10]), var_chaste_interface__environment__time); // microA_per_microF + const double var_i_Ks__i_Ks = mp_i_Ks__i_Ks_modifier->Calc((1 + CHASTE_CONST(0.59999999999999998) / (1 + CHASTE_CONST(6.4818210260626455e-7) * CHASTE_MATH::Pow((1 / var_chaste_interface__Ca_i__Ca_i), CHASTE_CONST(1.3999999999999999)))) * (-CHASTE_CONST(26.712338705498265) * CHASTE_MATH::Log((CHASTE_CONST(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)) / (CHASTE_CONST(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(CHASTE_MATH::Pow(var_chaste_interface__i_Na_m_gate__m, 3) * (-var_equilibrium_potentials__E_Na + var_chaste_interface__membrane__V) * (CHASTE_CONST(0.20000000000000001) * var_chaste_interface__i_Na_j_gate__j + CHASTE_CONST(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((-CHASTE_CONST(1.5) * CHASTE_MATH::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] + CHASTE_CONST(0.40000000000000002) * CHASTE_MATH::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]) / ((_lt_0_row[5]) * (1 + CHASTE_CONST(6.9444444444444451e-9) / CHASTE_MATH::Pow(var_chaste_interface__Ca_i__Ca_i, 2)) * (CHASTE_CONST(1004882.8125) * var_chaste_interface__Ca_i__Ca_i + CHASTE_CONST(1.3) * CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) + CHASTE_MATH::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) + CHASTE_CONST(1.5) * CHASTE_MATH::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 + CHASTE_CONST(0.0035999999999999999) * CHASTE_MATH::Pow(mp_extracellular_sodium_concentration_modifier->Calc(NV_Ith_S(mParameters, 6), var_chaste_interface__environment__time), 3) * (1 + CHASTE_CONST(0.081300813008130079) * var_chaste_interface__intracellular_ion_concentrations__Na_i) + CHASTE_CONST(1860.8670000000004) * (1 + CHASTE_CONST(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 = CHASTE_CONST(0.61875000000000002) * mp_extracellular_potassium_concentration_modifier->Calc(NV_Ith_S(mParameters, 5), var_chaste_interface__environment__time) / ((1 + 100 / CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 2)) * (CHASTE_CONST(1.5) + mp_extracellular_potassium_concentration_modifier->Calc(NV_Ith_S(mParameters, 5), var_chaste_interface__environment__time)) * (1 + _lt_0_row[7] + CHASTE_CONST(0.036499999999999998) * (-CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * CHASTE_MATH::Exp(CHASTE_CONST(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 = CHASTE_CONST(0.037374999999999999) * CHASTE_MATH::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) * (CHASTE_CONST(0.20000000000000001) * var_chaste_interface__i_to_1_i2_gate__i2 + CHASTE_CONST(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 = CHASTE_CONST(0.028896009762002683) * (_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 / (_lt_0_row[9]); // microA_per_microF + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Cl_i = (-CHASTE_CONST(6.767281717060562e-9) * var_background_currents__i_Cl_b - CHASTE_CONST(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 = (CHASTE_CONST(1.3534563434121124e-8) * var_i_NaK__i_NaK - CHASTE_CONST(6.767281717060562e-9) * var_background_currents__i_K_b - CHASTE_CONST(6.767281717060562e-9) * var_i_K1__i_K1 - CHASTE_CONST(6.767281717060562e-9) * var_i_K_p__i_K_p - CHASTE_CONST(6.767281717060562e-9) * var_i_Kr__i_Kr - CHASTE_CONST(6.767281717060562e-9) * var_i_Ks__i_Ks - CHASTE_CONST(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 = (-CHASTE_CONST(2.0301845151181685e-8) * var_i_NaCa__i_NaCa - CHASTE_CONST(2.0301845151181685e-8) * var_i_NaK__i_NaK - CHASTE_CONST(6.767281717060562e-9) * var_background_currents__i_Na_b - CHASTE_CONST(6.767281717060562e-9) * var_i_Na__i_Na - CHASTE_CONST(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 = CHASTE_CONST(0.0028824983370007683) * (-CHASTE_CONST(0.34100000000000003) * mp_extracellular_calcium_concentration_modifier->Calc(NV_Ith_S(mParameters, 4), var_chaste_interface__environment__time) + var_chaste_interface__Ca_i__Ca_i * _lt_0_row[1]) * var_chaste_interface__membrane__V / (_lt_0_row[2]); // microA_per_microF + const double var_i_Ca_L__i_Ca_L_max = CHASTE_CONST(3.510865186083326) * (-15 + var_chaste_interface__membrane__V) * (-CHASTE_CONST(0.34100000000000003) * mp_extracellular_calcium_concentration_modifier->Calc(NV_Ith_S(mParameters, 4), var_chaste_interface__environment__time) + var_chaste_interface__Ca_r__Ca_r * _lt_0_row[11]) / (_lt_0_row[12]); // 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 + 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 + 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 + var_Ca_MK_act__Ca_MK_act)); // 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) * 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 = (-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 + 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 + 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 = -(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 + 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 + CHASTE_MATH::Exp(-CHASTE_CONST(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 = (CHASTE_CONST(0.14999999999999999) - var_chaste_interface__i_Ca_L_f_Ca_gate__f_Ca + CHASTE_CONST(0.55000000000000004) / (1 + CHASTE_CONST(333.33333333333331) * var_chaste_interface__Ca_r__Ca_r) + CHASTE_CONST(0.29999999999999999) / (1 - 20 * var_i_Ca_L__i_Ca_L)) / (CHASTE_CONST(0.5) + 1 / (1 + CHASTE_CONST(333.33333333333331) * var_chaste_interface__Ca_r__Ca_r) + 10 * var_Ca_MK_act__Ca_MK_act / (CHASTE_CONST(0.14999999999999999) + var_Ca_MK_act__Ca_MK_act)); // 1 / millisecond + const double var_q_leak__q_leak = CHASTE_CONST(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 + CHASTE_MATH::Exp(CHASTE_CONST(3.3333333333333335) + CHASTE_CONST(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 + CHASTE_MATH::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 / (CHASTE_CONST(0.14999999999999999) + var_Ca_MK_act__Ca_MK_act)) / (1 + CHASTE_MATH::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 / (CHASTE_CONST(0.14999999999999999) + var_Ca_MK_act__Ca_MK_act)); // 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) * 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 + CHASTE_MATH::Exp(CHASTE_CONST(2.6000000000000001) + CHASTE_CONST(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 = (-var_Ca_r__q_diff + CHASTE_CONST(0.23999999999999996) * var_q_rel__q_rel - CHASTE_CONST(1.1504378919002956e-7) * var_i_Ca_L__i_Ca_L) / (1 + CHASTE_CONST(2.2480000000000002) * var_chaste_interface__Ca_r__Ca_r / CHASTE_MATH::Pow((CHASTE_CONST(0.0086999999999999994) + var_chaste_interface__Ca_r__Ca_r), 2) + CHASTE_CONST(0.094) * var_chaste_interface__Ca_r__Ca_r / CHASTE_MATH::Pow((CHASTE_CONST(0.00087000000000000001) + var_chaste_interface__Ca_r__Ca_r), 2)); // millimolar / millisecond + const double d_dt_chaste_interface_var_q_rel_ro_gate__ro = -CHASTE_CONST(0.33333333333333331) * var_chaste_interface__q_rel_ro_gate__ro + CHASTE_CONST(0.33333333333333331) * CHASTE_MATH::Pow(var_chaste_interface__Ca_JSR__Ca_JSR, CHASTE_CONST(1.8999999999999999)) * CHASTE_MATH::Pow(var_i_Ca_L__i_Ca_L, 2) / ((1 + CHASTE_MATH::Pow(var_i_Ca_L__i_Ca_L, 2)) * (CHASTE_MATH::Pow(var_chaste_interface__Ca_JSR__Ca_JSR, CHASTE_CONST(1.8999999999999999)) + CHASTE_CONST(1644.6531773416521) * CHASTE_MATH::Pow((var_chaste_interface__Ca_r__Ca_r / (CHASTE_CONST(0.0028) + var_chaste_interface__Ca_r__Ca_r)), CHASTE_CONST(1.8999999999999999)))); // 1 / millisecond + const double var_q_tr__q_tr = CHASTE_CONST(0.0083333333333333332) * var_chaste_interface__Ca_NSR__Ca_NSR - CHASTE_CONST(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 / CHASTE_MATH::Pow((CHASTE_CONST(0.80000000000000004) + var_chaste_interface__Ca_JSR__Ca_JSR), 2)); // millimolar / millisecond + const double var_q_up__q_up = CHASTE_CONST(0.5) * (1 + CHASTE_CONST(0.75) * var_Ca_MK_act__Ca_MK_act / (CHASTE_CONST(0.14999999999999999) + 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) / (CHASTE_CONST(0.00092000000000000003) - CHASTE_CONST(0.00017000000000000001) * var_Ca_MK_act__Ca_MK_act / (CHASTE_CONST(0.14999999999999999) + 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 - CHASTE_CONST(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 = -(CHASTE_CONST(3.383640858530281e-9) * var_background_currents__i_Ca_b + CHASTE_CONST(3.383640858530281e-9) * var_i_Ca_p__i_Ca_p + CHASTE_CONST(0.081176470588235281) * var_q_up__q_up - CHASTE_CONST(0.029411764705882353) * var_Ca_r__q_diff - CHASTE_CONST(6.767281717060562e-9) * var_i_NaCa__i_NaCa - CHASTE_CONST(0.081176470588235281) * var_q_leak__q_leak) / (1 + CHASTE_CONST(0.14000000000000001) * var_chaste_interface__Ca_i__Ca_i / CHASTE_MATH::Pow((CHASTE_CONST(0.00050000000000000001) + var_chaste_interface__Ca_i__Ca_i), 2) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__Ca_i__Ca_i / CHASTE_MATH::Pow((CHASTE_CONST(0.0023800000000000002) + var_chaste_interface__Ca_i__Ca_i), 2)); // millimolar / millisecond if (mSetVoltageDerivativeToZero) { @@ -983,7 +985,7 @@ std::shared_ptrGetCapacitance() - 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 + 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 - CHASTE_STIM(var_chaste_interface__environment__time) / CHASTE_CAP() - CHASTE_CONST(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; @@ -1022,7 +1024,7 @@ std::shared_ptrmFixedVoltage : mp_membrane_voltage_modifier->Calc(NV_Ith_S(rY, 0), var_chaste_interface__environment__time)); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -1078,65 +1080,65 @@ std::shared_ptrIndexTable0(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_0 = CHASTE_CONST(0.050000000000000003); // dimensionless + const double var_Ca_MK_act__km_Ca_MK = CHASTE_CONST(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 / (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_equilibrium_potentials__r_NaK = CHASTE_CONST(0.018329999999999999); // dimensionless + const double var_i_Ca_L__p_Ca = CHASTE_CONST(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(CHASTE_CONST(0.5) + 1 / (1 + CHASTE_CONST(333.33333333333331) * var_chaste_interface__Ca_r__Ca_r) + 10 * var_Ca_MK_act__Ca_MK_act / (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 + CHASTE_CONST(0.59999999999999998) / (1 + CHASTE_CONST(6.4818210260626455e-7) * CHASTE_MATH::Pow((1 / var_chaste_interface__Ca_i__Ca_i), CHASTE_CONST(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 = CHASTE_CONST(0.40000000000000002); // dimensionless + const double var_i_NaCa__k_sat = CHASTE_CONST(0.27000000000000002); // dimensionless + const double var_i_NaCa__km_Ca_act = CHASTE_CONST(0.000125); // millimolar + const double var_i_NaCa__km_Ca_i = CHASTE_CONST(0.0035999999999999999); // millimolar + const double var_i_NaCa__km_Ca_o = CHASTE_CONST(1.3); // millimolar + const double var_i_NaCa__km_Na_i_1 = CHASTE_CONST(12.300000000000001); // millimolar + const double var_i_NaCa__km_Na_o = CHASTE_CONST(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 + CHASTE_CONST(24.217200000000005) * CHASTE_MATH::Pow((-1 + CHASTE_CONST(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 + CHASTE_CONST(0.03125) * CHASTE_MATH::Pow((-1 + CHASTE_CONST(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__alpha_h = ((var_chaste_interface__membrane__V < -40) ? (CHASTE_CONST(0.13500000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(11.764705882352942) + CHASTE_CONST(0.14705882352941177) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) - CHASTE_CONST(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 * CHASTE_MATH::Exp(CHASTE_CONST(0.34999999999999998) * var_chaste_interface__membrane__V - CHASTE_CONST(0.34999999999999998) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time)) + CHASTE_CONST(3.5600000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.079000000000000001) * var_chaste_interface__membrane__V - CHASTE_CONST(0.079000000000000001) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time))) : (CHASTE_CONST(7.6923076923076916) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.96036036036036043) + CHASTE_CONST(0.0900900900900901) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) - CHASTE_CONST(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__alpha_j = ((var_chaste_interface__membrane__V < -40) ? ((CHASTE_CONST(37.780000000000001) + var_chaste_interface__membrane__V) * (-127140 * CHASTE_MATH::Exp(CHASTE_CONST(0.24440000000000001) * var_chaste_interface__membrane__V - CHASTE_CONST(0.24440000000000001) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time)) - CHASTE_CONST(3.4740000000000003e-5) * CHASTE_MATH::Exp(CHASTE_CONST(0.043909999999999998) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) - CHASTE_CONST(0.043909999999999998) * var_chaste_interface__membrane__V)) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(24.640530000000002) + CHASTE_CONST(0.311) * var_chaste_interface__membrane__V - CHASTE_CONST(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) ? (CHASTE_CONST(0.1212) * CHASTE_MATH::Exp(CHASTE_CONST(0.01052) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) - CHASTE_CONST(0.01052) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(5.5312920000000005) + CHASTE_CONST(0.13780000000000001) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) - CHASTE_CONST(0.13780000000000001) * var_chaste_interface__membrane__V))) : (CHASTE_CONST(0.29999999999999999) * CHASTE_MATH::Exp(CHASTE_CONST(2.5349999999999999e-7) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) - CHASTE_CONST(2.5349999999999999e-7) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(3.2000000000000002) + CHASTE_CONST(0.10000000000000001) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) - CHASTE_CONST(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_membrane__i_stim_converted = CHASTE_STIM(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_i_NaCa__dNaCa_1 = CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * var_i_NaCa__km_Ca_o + CHASTE_CONST(1.5) * CHASTE_MATH::Pow(var_i_NaCa__km_Na_o, 3) * var_chaste_interface__Ca_i__Ca_i + CHASTE_MATH::Pow(var_i_NaCa__km_Na_i_1, 3) * (1 + CHASTE_CONST(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_i_K1__g_K1 = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::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 = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::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 = CHASTE_MATH::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) + CHASTE_CONST(1.5) * CHASTE_MATH::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 + CHASTE_MATH::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_equilibrium_potentials__E_K = var_model_parameters__R * var_model_parameters__T * CHASTE_MATH::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 * CHASTE_MATH::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 * CHASTE_MATH::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 = CHASTE_CONST(1.02) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.23849999999999999) * var_equilibrium_potentials__E_K)); // dimensionless + const double var_i_K1_xK1_gate__beta_xK1 = (CHASTE_CONST(0.49124000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.43983232) + CHASTE_CONST(0.080320000000000003) * var_chaste_interface__membrane__V - CHASTE_CONST(0.080320000000000003) * var_equilibrium_potentials__E_K) + CHASTE_MATH::Exp(-CHASTE_CONST(36.698642499999998) + CHASTE_CONST(0.061749999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.061749999999999999) * var_equilibrium_potentials__E_K)) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.4444678999999998) + CHASTE_CONST(0.51429999999999998) * var_equilibrium_potentials__E_K - CHASTE_CONST(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_K1__i_K1 = mp_i_K1__i_K1_modifier->Calc((CHASTE_CONST(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 = CHASTE_CAP() * 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_Kr__i_Kr_converted = CHASTE_CAP() * 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_i_Ks__i_Ks_converted = CHASTE_CAP() * var_i_Ks__i_Ks; // uA_per_cm2 + const double var_i_Na__i_Na = mp_i_Na__i_Na_modifier->Calc(CHASTE_MATH::Pow(var_chaste_interface__i_Na_m_gate__m, 3) * (-var_equilibrium_potentials__E_Na + var_chaste_interface__membrane__V) * (CHASTE_CONST(0.20000000000000001) * var_chaste_interface__i_Na_j_gate__j + CHASTE_CONST(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 = CHASTE_CAP() * var_i_Na__i_Na; // uA_per_cm2 + const double var_i_NaCa__i_NaCa = mp_i_NaCa__i_NaCa_modifier->Calc((-CHASTE_CONST(1.5) * CHASTE_MATH::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 * CHASTE_MATH::Exp(-CHASTE_CONST(0.65000000000000002) * var_chaste_interface__membrane__V * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T)) + CHASTE_MATH::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) * CHASTE_MATH::Exp(CHASTE_CONST(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 * CHASTE_MATH::Exp(-CHASTE_CONST(0.65000000000000002) * var_chaste_interface__membrane__V * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T))) * (1 + CHASTE_CONST(0.44444444444444442) * CHASTE_MATH::Pow(var_i_NaCa__km_Ca_act, 2) / CHASTE_MATH::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 = CHASTE_CAP() * 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) * (CHASTE_CONST(0.20000000000000001) * var_chaste_interface__i_to_1_i2_gate__i2 + CHASTE_CONST(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 = CHASTE_CAP() * 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__gamma_Cao = CHASTE_CONST(0.34100000000000003); // dimensionless const double var_model_parameters__z_Ca = 2; // dimensionless - const double var_i_Ca_L__i_Ca_L_max = 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_max = CHASTE_MATH::Pow(var_model_parameters__F, 2) * CHASTE_MATH::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 * CHASTE_MATH::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 + CHASTE_MATH::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_i_Ca_L__i_Ca_L_converted = CHASTE_CAP() * 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 + CHASTE_MATH::Exp(-CHASTE_CONST(4.375) - 25 * var_i_Ca_L__i_Ca_L)), var_chaste_interface__environment__time); // millisecond + const double var_q_rel__vg = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(2.6000000000000001) + CHASTE_CONST(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 @@ -1465,4 +1467,5 @@ extern "C" } } + #endif // CHASTE_CVODE diff --git a/chaste_codegen/data/tests/chaste_reference_models/Cvode_opt/dynamic_aslanidi_Purkinje_model_2009.hpp b/chaste_codegen/data/tests/chaste_reference_models/Cvode_opt/dynamic_aslanidi_Purkinje_model_2009.hpp index 7ce5481bc..1cdd46058 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/Cvode_opt/dynamic_aslanidi_Purkinje_model_2009.hpp +++ b/chaste_codegen/data/tests/chaste_reference_models/Cvode_opt/dynamic_aslanidi_Purkinje_model_2009.hpp @@ -20,7 +20,11 @@ #include "AbstractModifier.hpp" #include "AbstractDynamicallyLoadableEntity.hpp" #include "AbstractStimulusFunction.hpp" +#if USING_DEVICE_COMPILER +#include "StimulusEvaluatorCuda.hpp" +#endif #include "AbstractCvodeCell.hpp" +#include "HostDeviceMacros.hpp" class Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt : public AbstractCardiacCellWithModifiers, public AbstractDynamicallyLoadableEntity { @@ -89,6 +93,10 @@ class Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt : public AbstractCar const bool is_concentration[30] = {false, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, false, true, false, false, true, true, false, false}; const bool is_probability[30] = {false, false, true, true, true, false, false, true, true, true, true, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false}; public: + static constexpr unsigned TOTAL_SIZE = 30u; + static constexpr unsigned NNZ = 0u; + static inline const int sparse_rowptr[] = { }; + static inline const int sparse_colind[] = { }; boost::shared_ptr UseCellMLDefaultStimulus(); double GetIntracellularCalciumConcentration(); @@ -98,7 +106,11 @@ const bool is_probability[30] = {false, false, true, true, true, false, false, t AbstractLookupTableCollection* GetLookupTableCollection(); double GetIIonic(const std::vector* pStateVariables=NULL); void EvaluateYDerivatives(double var_chaste_interface__environment__time, const N_Vector rY, N_Vector rDY); + N_Vector ComputeDerivedQuantities(double var_chaste_interface__environment__time, const N_Vector & rY); +#if USING_DEVICE_COMPILER + +#endif }; // Needs to be included last @@ -135,4 +147,7 @@ namespace boost } #endif // DYNAMICASLANIDI_PURKINJE_MODEL_2009FROMCELLMLCVODEOPT_HPP_ + + + #endif // CHASTE_CVODE \ No newline at end of file diff --git a/chaste_codegen/data/tests/chaste_reference_models/Cvode_opt/hilgemann_noble_model_1987.cpp b/chaste_codegen/data/tests/chaste_reference_models/Cvode_opt/hilgemann_noble_model_1987.cpp index aed12e9d4..1ad3141da 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/Cvode_opt/hilgemann_noble_model_1987.cpp +++ b/chaste_codegen/data/tests/chaste_reference_models/Cvode_opt/hilgemann_noble_model_1987.cpp @@ -22,6 +22,8 @@ #include "HeartConfig.hpp" #include "IsNan.hpp" #include "MathsCustomFunctions.hpp" +#include "ChasteMathDeviceNamespaces.hpp" +#include "ChasteCpuMacros.hpp" #if CHASTE_SUNDIALS_VERSION >= 60000 #include "CvodeContextManager.hpp" @@ -148,7 +150,7 @@ class Cellhilgemann_noble_model_1987FromCellMLCvodeOpt_LookupTables : public Abs for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return exp(0.018716945411372737 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(CHASTE_CONST(0.018716945411372737) * 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); @@ -159,7 +161,7 @@ class Cellhilgemann_noble_model_1987FromCellMLCvodeOpt_LookupTables : public Abs for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return exp(-0.018716945411372737 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(-CHASTE_CONST(0.018716945411372737) * 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); @@ -170,7 +172,7 @@ class Cellhilgemann_noble_model_1987FromCellMLCvodeOpt_LookupTables : public Abs for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return exp(1.8716945411372736 - 0.037433890822745473 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(CHASTE_CONST(1.8716945411372736) - CHASTE_CONST(0.037433890822745473) * 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 +194,7 @@ class Cellhilgemann_noble_model_1987FromCellMLCvodeOpt_LookupTables : public Abs for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 1 - exp(1.8716945411372736 - 0.037433890822745473 * var_chaste_interface__membrane__V); + return 1 - CHASTE_MATH::Exp(CHASTE_CONST(1.8716945411372736) - CHASTE_CONST(0.037433890822745473) * 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); @@ -214,7 +216,7 @@ class Cellhilgemann_noble_model_1987FromCellMLCvodeOpt_LookupTables : public Abs for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return exp(3.7433890822745473 - 0.074867781645490947 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(CHASTE_CONST(3.7433890822745473) - CHASTE_CONST(0.074867781645490947) * 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); @@ -236,7 +238,7 @@ class Cellhilgemann_noble_model_1987FromCellMLCvodeOpt_LookupTables : public Abs for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 1 - exp(3.7433890822745473 - 0.074867781645490947 * var_chaste_interface__membrane__V); + return 1 - CHASTE_MATH::Exp(CHASTE_CONST(3.7433890822745473) - CHASTE_CONST(0.074867781645490947) * 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); @@ -258,7 +260,7 @@ class Cellhilgemann_noble_model_1987FromCellMLCvodeOpt_LookupTables : public Abs for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 600 * exp(-3.2000000000000002 + 0.080000000000000002 * var_chaste_interface__membrane__V); + return 600 * CHASTE_MATH::Exp(-CHASTE_CONST(3.2000000000000002) + CHASTE_CONST(0.080000000000000002) * 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); @@ -269,7 +271,7 @@ class Cellhilgemann_noble_model_1987FromCellMLCvodeOpt_LookupTables : public Abs for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return ((fabs(41 + var_chaste_interface__membrane__V) < 1.0000000000000001e-5) ? (2000) : (200 * (41 + var_chaste_interface__membrane__V) / (1 - exp(-4.1000000000000005 - 0.10000000000000001 * var_chaste_interface__membrane__V)))); + return ((CHASTE_MATH::Abs(41 + var_chaste_interface__membrane__V) < CHASTE_CONST(1.0000000000000001e-5)) ? (2000) : (200 * (41 + var_chaste_interface__membrane__V) / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(4.1000000000000005) - CHASTE_CONST(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); @@ -291,7 +293,7 @@ class Cellhilgemann_noble_model_1987FromCellMLCvodeOpt_LookupTables : public Abs for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return exp(-3.6960000000000002 - 0.056000000000000001 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(-CHASTE_CONST(3.6960000000000002) - CHASTE_CONST(0.056000000000000001) * 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); @@ -324,7 +326,7 @@ std::shared_ptr C 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_amplitude_converted = -CHASTE_CONST(0.20000000000000001) * CHASTE_CAP() / 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 @@ -360,18 +362,18 @@ std::shared_ptr C 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, 2) = CHASTE_CONST(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, 8) = CHASTE_CONST(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] + NV_Ith_S(this->mParameters, 12) = CHASTE_CONST(1.7); // (var_time_independent_potassium_current__g_K1) [microS] + NV_Ith_S(this->mParameters, 13) = CHASTE_CONST(0.01); // (var_Na_Ca_exchanger__k_NaCa) [nanoA] } Cellhilgemann_noble_model_1987FromCellMLCvodeOpt::~Cellhilgemann_noble_model_1987FromCellMLCvodeOpt() @@ -431,7 +433,7 @@ std::shared_ptr C made_new_cvode_vector = true; rY = MakeNVector(*pStateVariables); } - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -458,16 +460,16 @@ std::shared_ptr C // 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((NV_Ith_S(mParameters, 6) + 0.12 * NV_Ith_S(mParameters, 5)) / (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 * (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 / (_lt_0_row[3]))) + (((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 * (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 / (_lt_0_row[3]))) + (((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 * (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 / (_lt_0_row[5])))) * 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_Na_Ca_exchanger__i_NaCa_converted = CHASTE_CONST(0.001) * (CHASTE_MATH::Pow(var_chaste_interface__intracellular_sodium_concentration__Na_i, 3) * var_chaste_interface__extracellular_calcium_concentration__Ca_o * _lt_0_row[0] - CHASTE_MATH::Pow(NV_Ith_S(mParameters, 6), 3) * var_chaste_interface__intracellular_calcium_concentration__Ca_i * _lt_0_row[1]) * CHASTE_CAP() * NV_Ith_S(mParameters, 13) / ((1 + CHASTE_CONST(144.92753623188406) * var_chaste_interface__intracellular_calcium_concentration__Ca_i) * (1 + CHASTE_CONST(0.0001) * CHASTE_MATH::Pow(NV_Ith_S(mParameters, 6), 3) * var_chaste_interface__intracellular_calcium_concentration__Ca_i + CHASTE_CONST(0.0001) * CHASTE_MATH::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 = CHASTE_CONST(0.0050000000000000001) * var_chaste_interface__membrane__V - CHASTE_CONST(0.066784401649239128) * CHASTE_MATH::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 = CHASTE_CONST(0.001) * CHASTE_MATH::Pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-CHASTE_CONST(26.713760659695652) * CHASTE_MATH::Log((NV_Ith_S(mParameters, 6) + CHASTE_CONST(0.12) * NV_Ith_S(mParameters, 5)) / (var_chaste_interface__intracellular_sodium_concentration__Na_i + CHASTE_CONST(0.12) * var_chaste_interface__intracellular_potassium_concentration__K_i)) + var_chaste_interface__membrane__V) * CHASTE_CAP() * 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 = CHASTE_CONST(0.001) * ((((var_chaste_interface__membrane__V >= CHASTE_CONST(49.999997328623934)) && (var_chaste_interface__membrane__V <= CHASTE_CONST(50.000002671376066))) ? (CHASTE_CONST(187169.45411399176) * (-CHASTE_CONST(49.999997328623934) + var_chaste_interface__membrane__V) * (CHASTE_CONST(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 / (CHASTE_CONST(0.001) + var_chaste_interface__intracellular_calcium_concentration__Ca_i)) * (var_chaste_interface__intracellular_sodium_concentration__Na_i * CHASTE_MATH::Exp(CHASTE_CONST(1.8716945411372736)) - NV_Ith_S(mParameters, 6) * CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999858739e-8))) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_calcium_current_d_gate__d / (1 - CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999858739e-8))) + CHASTE_CONST(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 / (CHASTE_CONST(0.001) + var_chaste_interface__intracellular_calcium_concentration__Ca_i)) * (var_chaste_interface__intracellular_sodium_concentration__Na_i * CHASTE_MATH::Exp(CHASTE_CONST(1.8716945411372736)) - NV_Ith_S(mParameters, 6) * CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999858739e-8))) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_calcium_current_d_gate__d / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999858739e-8)))) - CHASTE_CONST(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 / (CHASTE_CONST(0.001) + var_chaste_interface__intracellular_calcium_concentration__Ca_i)) * (var_chaste_interface__intracellular_sodium_concentration__Na_i * CHASTE_MATH::Exp(CHASTE_CONST(1.8716945411372736)) - NV_Ith_S(mParameters, 6) * CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999858739e-8))) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_calcium_current_d_gate__d / (1 - CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999858739e-8)))) : (CHASTE_CONST(0.00037433890822745472) * (1 - var_chaste_interface__second_inward_calcium_current_f_Ca_gate__f_Ca) * (1 - var_chaste_interface__intracellular_calcium_concentration__Ca_i / (CHASTE_CONST(0.001) + var_chaste_interface__intracellular_calcium_concentration__Ca_i)) * (-50 + var_chaste_interface__membrane__V) * (var_chaste_interface__intracellular_sodium_concentration__Na_i * CHASTE_MATH::Exp(CHASTE_CONST(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 / (_lt_0_row[3]))) + (((var_chaste_interface__membrane__V >= CHASTE_CONST(49.999997328623934)) && (var_chaste_interface__membrane__V <= CHASTE_CONST(50.000002671376066))) ? (CHASTE_CONST(187169.45411399176) * (-CHASTE_CONST(49.999997328623934) + var_chaste_interface__membrane__V) * (CHASTE_CONST(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 / (CHASTE_CONST(0.001) + var_chaste_interface__intracellular_calcium_concentration__Ca_i)) * (var_chaste_interface__intracellular_potassium_concentration__K_i * CHASTE_MATH::Exp(CHASTE_CONST(1.8716945411372736)) - NV_Ith_S(mParameters, 5) * CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999858739e-8))) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_calcium_current_d_gate__d / (1 - CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999858739e-8))) + CHASTE_CONST(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 / (CHASTE_CONST(0.001) + var_chaste_interface__intracellular_calcium_concentration__Ca_i)) * (var_chaste_interface__intracellular_potassium_concentration__K_i * CHASTE_MATH::Exp(CHASTE_CONST(1.8716945411372736)) - NV_Ith_S(mParameters, 5) * CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999858739e-8))) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_calcium_current_d_gate__d / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999858739e-8)))) - CHASTE_CONST(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 / (CHASTE_CONST(0.001) + var_chaste_interface__intracellular_calcium_concentration__Ca_i)) * (var_chaste_interface__intracellular_potassium_concentration__K_i * CHASTE_MATH::Exp(CHASTE_CONST(1.8716945411372736)) - NV_Ith_S(mParameters, 5) * CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999858739e-8))) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_calcium_current_d_gate__d / (1 - CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999858739e-8)))) : (CHASTE_CONST(7.4867781645490941e-5) * (1 - var_chaste_interface__second_inward_calcium_current_f_Ca_gate__f_Ca) * (1 - var_chaste_interface__intracellular_calcium_concentration__Ca_i / (CHASTE_CONST(0.001) + var_chaste_interface__intracellular_calcium_concentration__Ca_i)) * (-50 + var_chaste_interface__membrane__V) * (var_chaste_interface__intracellular_potassium_concentration__K_i * CHASTE_MATH::Exp(CHASTE_CONST(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 / (_lt_0_row[3]))) + (((var_chaste_interface__membrane__V >= CHASTE_CONST(49.999998664311967)) && (var_chaste_interface__membrane__V <= CHASTE_CONST(50.000001335688033))) ? (CHASTE_CONST(374338.90823576227) * (-CHASTE_CONST(49.999998664311967) + var_chaste_interface__membrane__V) * (CHASTE_CONST(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 / (CHASTE_CONST(0.001) + var_chaste_interface__intracellular_calcium_concentration__Ca_i)) * (var_chaste_interface__intracellular_calcium_concentration__Ca_i * CHASTE_MATH::Exp(CHASTE_CONST(3.7433890822745473)) - var_chaste_interface__extracellular_calcium_concentration__Ca_o * CHASTE_MATH::Exp(CHASTE_CONST(9.9999999997780743e-8))) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_calcium_current_d_gate__d / (1 - CHASTE_MATH::Exp(CHASTE_CONST(9.9999999997780743e-8))) + CHASTE_CONST(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 / (CHASTE_CONST(0.001) + var_chaste_interface__intracellular_calcium_concentration__Ca_i)) * (var_chaste_interface__intracellular_calcium_concentration__Ca_i * CHASTE_MATH::Exp(CHASTE_CONST(3.7433890822745473)) - var_chaste_interface__extracellular_calcium_concentration__Ca_o * CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999997780743e-8))) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_calcium_current_d_gate__d / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999997780743e-8)))) - CHASTE_CONST(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 / (CHASTE_CONST(0.001) + var_chaste_interface__intracellular_calcium_concentration__Ca_i)) * (var_chaste_interface__intracellular_calcium_concentration__Ca_i * CHASTE_MATH::Exp(CHASTE_CONST(3.7433890822745473)) - var_chaste_interface__extracellular_calcium_concentration__Ca_o * CHASTE_MATH::Exp(CHASTE_CONST(9.9999999997780743e-8))) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_calcium_current_d_gate__d / (1 - CHASTE_MATH::Exp(CHASTE_CONST(9.9999999997780743e-8)))) : (CHASTE_CONST(0.14973556329098189) * (1 - var_chaste_interface__second_inward_calcium_current_f_Ca_gate__f_Ca) * (1 - var_chaste_interface__intracellular_calcium_concentration__Ca_i / (CHASTE_CONST(0.001) + var_chaste_interface__intracellular_calcium_concentration__Ca_i)) * (-50 + var_chaste_interface__membrane__V) * (var_chaste_interface__intracellular_calcium_concentration__Ca_i * CHASTE_MATH::Exp(CHASTE_CONST(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 / (_lt_0_row[5])))) * CHASTE_CAP() / NV_Ith_S(mParameters, 8); // uA_per_cm2 + const double var_sodium_background_current__i_b_Na = CHASTE_CONST(0.012) * var_chaste_interface__membrane__V - CHASTE_CONST(0.32056512791634778) * CHASTE_MATH::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 var_time_independent_potassium_current__E_K = CHASTE_CONST(26.713760659695652) * CHASTE_MATH::Log(NV_Ith_S(mParameters, 5) / var_chaste_interface__intracellular_potassium_concentration__K_i); // millivolt + const double var_potassium_background_current__i_b_K = CHASTE_CONST(0.17000000000000001) * var_chaste_interface__membrane__V - CHASTE_CONST(0.17000000000000001) * var_time_independent_potassium_current__E_K; // nanoA + const double var_time_independent_potassium_current__i_K1_converted = CHASTE_CONST(0.001) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * CHASTE_CAP() * NV_Ith_S(mParameters, 5) * NV_Ith_S(mParameters, 12) / ((1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.74867781645490938) + CHASTE_CONST(0.074867781645490947) * var_chaste_interface__membrane__V - CHASTE_CONST(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) + CHASTE_CONST(0.001) * CHASTE_CAP() * var_calcium_background_current__i_b_Ca + CHASTE_CONST(0.001) * CHASTE_CAP() * var_potassium_background_current__i_b_K + CHASTE_CONST(0.001) * CHASTE_CAP() * var_sodium_background_current__i_b_Na + CHASTE_CONST(0.001) * CHASTE_CAP() * 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) @@ -482,7 +484,7 @@ std::shared_ptr C { // Inputs: // Time units: millisecond - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -523,42 +525,42 @@ std::shared_ptr C // 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__RegBindSite = CHASTE_MATH::Pow(var_chaste_interface__intracellular_calcium_concentration__Ca_i, 2) / CHASTE_MATH::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 d_dt_chaste_interface_var_calcium_release__ProdFrac = -CHASTE_CONST(0.00059999999999999995) * var_chaste_interface__calcium_release__ProdFrac + CHASTE_CONST(0.001) * var_chaste_interface__calcium_release__ActFrac * var_calcium_release__InactRate; // 1 / millisecond + const double var_calcium_release__i_rel = (CHASTE_MATH::Pow(var_chaste_interface__calcium_release__ActFrac, 2) * NV_Ith_S(mParameters, 1) / CHASTE_MATH::Pow((CHASTE_CONST(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((NV_Ith_S(mParameters, 6) + 0.12 * NV_Ith_S(mParameters, 5)) / (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 * (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 * 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 d_dt_chaste_interface_var_intracellular_calcium_concentration__Ca_rel = CHASTE_CONST(9.9999999999999991e-5) * var_calcium_translocation__i_trans - CHASTE_CONST(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 * (CHASTE_CONST(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 = CHASTE_CONST(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 * (CHASTE_CONST(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 = CHASTE_CONST(0.001) * var_intracellular_calcium_concentration__Ca_Trop_orig_deriv; // millimolar / millisecond + const double var_Na_Ca_exchanger__i_NaCa = (CHASTE_MATH::Pow(var_chaste_interface__intracellular_sodium_concentration__Na_i, 3) * var_chaste_interface__extracellular_calcium_concentration__Ca_o * _lt_0_row[0] - CHASTE_MATH::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 + CHASTE_CONST(144.92753623188406) * var_chaste_interface__intracellular_calcium_concentration__Ca_i) * (1 + CHASTE_CONST(0.0001) * CHASTE_MATH::Pow(NV_Ith_S(mParameters, 6), 3) * var_chaste_interface__intracellular_calcium_concentration__Ca_i + CHASTE_CONST(0.0001) * CHASTE_MATH::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 = CHASTE_CONST(0.0050000000000000001) * var_chaste_interface__membrane__V - CHASTE_CONST(0.066784401649239128) * CHASTE_MATH::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 = CHASTE_CONST(0.001) * (_lt_0_row[6] + 500 * var_calcium_release__RegBindSite) * (1 - var_chaste_interface__calcium_release__ActFrac - var_chaste_interface__calcium_release__ProdFrac) - CHASTE_CONST(0.001) * var_chaste_interface__calcium_release__ActFrac * var_calcium_release__InactRate; // 1 / millisecond + const double var_fast_sodium_current__i_Na = CHASTE_MATH::Pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-CHASTE_CONST(26.713760659695652) * CHASTE_MATH::Log((NV_Ith_S(mParameters, 6) + CHASTE_CONST(0.12) * NV_Ith_S(mParameters, 5)) / (var_chaste_interface__intracellular_sodium_concentration__Na_i + CHASTE_CONST(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 * CHASTE_MATH::Exp(-CHASTE_CONST(9.375) + CHASTE_CONST(0.125) * NV_Ith_S(mParameters, 11) - CHASTE_CONST(0.125) * var_chaste_interface__membrane__V); // per_second + const double var_fast_sodium_current_h_gate__beta_h = 2000 / (1 + 320 * CHASTE_MATH::Exp(-CHASTE_CONST(7.5) + CHASTE_CONST(0.10000000000000001) * NV_Ith_S(mParameters, 11) - CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V)); // per_second + const double d_dt_chaste_interface_var_fast_sodium_current_h_gate__h = CHASTE_CONST(0.001) * (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 + CHASTE_CONST(0.01) * NV_Ith_S(mParameters, 10) + (1 - CHASTE_CONST(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 = CHASTE_CONST(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 / (CHASTE_CONST(0.00041999999999999996) + CHASTE_CONST(0.00023999999999999998) * var_chaste_interface__intracellular_calcium_concentration__Ca_up + var_chaste_interface__intracellular_calcium_concentration__Ca_i) - CHASTE_CONST(5.52e-5) * var_chaste_interface__intracellular_calcium_concentration__Ca_up / (CHASTE_CONST(0.00041999999999999996) + CHASTE_CONST(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 = CHASTE_CONST(0.048999999999999995) * var_sarcoplasmic_reticulum_calcium_pump__i_up - CHASTE_CONST(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 d_dt_chaste_interface_var_second_inward_calcium_current_d_gate__d = CHASTE_CONST(0.001) * (1 - var_chaste_interface__second_inward_calcium_current_d_gate__d) * ((CHASTE_MATH::Abs(var_second_inward_calcium_current_d_gate__E0_d) < CHASTE_CONST(0.0001)) ? (120) : (30 * var_second_inward_calcium_current_d_gate__E0_d / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(0.25) * var_second_inward_calcium_current_d_gate__E0_d)))) - CHASTE_CONST(0.001) * ((CHASTE_MATH::Abs(var_second_inward_calcium_current_d_gate__E0_d) < CHASTE_CONST(0.0001)) ? (120) : (12 * var_second_inward_calcium_current_d_gate__E0_d / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(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 * (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 / (_lt_0_row[5]))); // 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 * (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 / (_lt_0_row[3]))); // 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 * (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 / (_lt_0_row[3]))); // 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_second_inward_calcium_current__i_siCa = (((var_chaste_interface__membrane__V >= CHASTE_CONST(49.999998664311967)) && (var_chaste_interface__membrane__V <= CHASTE_CONST(50.000001335688033))) ? (CHASTE_CONST(374338.90823576227) * (-CHASTE_CONST(49.999998664311967) + var_chaste_interface__membrane__V) * (CHASTE_CONST(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 / (CHASTE_CONST(0.001) + var_chaste_interface__intracellular_calcium_concentration__Ca_i)) * (var_chaste_interface__intracellular_calcium_concentration__Ca_i * CHASTE_MATH::Exp(CHASTE_CONST(3.7433890822745473)) - var_chaste_interface__extracellular_calcium_concentration__Ca_o * CHASTE_MATH::Exp(CHASTE_CONST(9.9999999997780743e-8))) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_calcium_current_d_gate__d / (1 - CHASTE_MATH::Exp(CHASTE_CONST(9.9999999997780743e-8))) + CHASTE_CONST(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 / (CHASTE_CONST(0.001) + var_chaste_interface__intracellular_calcium_concentration__Ca_i)) * (var_chaste_interface__intracellular_calcium_concentration__Ca_i * CHASTE_MATH::Exp(CHASTE_CONST(3.7433890822745473)) - var_chaste_interface__extracellular_calcium_concentration__Ca_o * CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999997780743e-8))) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_calcium_current_d_gate__d / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999997780743e-8)))) - CHASTE_CONST(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 / (CHASTE_CONST(0.001) + var_chaste_interface__intracellular_calcium_concentration__Ca_i)) * (var_chaste_interface__intracellular_calcium_concentration__Ca_i * CHASTE_MATH::Exp(CHASTE_CONST(3.7433890822745473)) - var_chaste_interface__extracellular_calcium_concentration__Ca_o * CHASTE_MATH::Exp(CHASTE_CONST(9.9999999997780743e-8))) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_calcium_current_d_gate__d / (1 - CHASTE_MATH::Exp(CHASTE_CONST(9.9999999997780743e-8)))) : (CHASTE_CONST(0.14973556329098189) * (1 - var_chaste_interface__second_inward_calcium_current_f_Ca_gate__f_Ca) * (1 - var_chaste_interface__intracellular_calcium_concentration__Ca_i / (CHASTE_CONST(0.001) + var_chaste_interface__intracellular_calcium_concentration__Ca_i)) * (-50 + var_chaste_interface__membrane__V) * (var_chaste_interface__intracellular_calcium_concentration__Ca_i * CHASTE_MATH::Exp(CHASTE_CONST(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 / (_lt_0_row[5]))); // nanoA + const double d_dt_chaste_interface_var_extracellular_calcium_concentration__Ca_o = CHASTE_CONST(0.001) * (CHASTE_CONST(0.001) - CHASTE_CONST(0.00050000000000000001) * var_chaste_interface__extracellular_calcium_concentration__Ca_o - CHASTE_CONST(0.0080543192715385042) * var_Na_Ca_exchanger__i_NaCa - CHASTE_CONST(0.0080543192715385042) * var_calcium_background_current__i_b_Ca - CHASTE_CONST(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 = CHASTE_CONST(0.00020408163265306126) * var_calcium_release__i_rel + CHASTE_CONST(1.3149909014756744e-5) * var_Na_Ca_exchanger__i_NaCa - CHASTE_CONST(0.001) * var_intracellular_calcium_concentration__Ca_Calmod_orig_deriv - CHASTE_CONST(0.001) * var_intracellular_calcium_concentration__Ca_Trop_orig_deriv - CHASTE_CONST(0.001) * var_sarcoplasmic_reticulum_calcium_pump__i_up - CHASTE_CONST(6.5749545073783721e-6) * var_calcium_background_current__i_b_Ca - CHASTE_CONST(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 >= CHASTE_CONST(49.999997328623934)) && (var_chaste_interface__membrane__V <= CHASTE_CONST(50.000002671376066))) ? (CHASTE_CONST(187169.45411399176) * (-CHASTE_CONST(49.999997328623934) + var_chaste_interface__membrane__V) * (CHASTE_CONST(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 / (CHASTE_CONST(0.001) + var_chaste_interface__intracellular_calcium_concentration__Ca_i)) * (var_chaste_interface__intracellular_potassium_concentration__K_i * CHASTE_MATH::Exp(CHASTE_CONST(1.8716945411372736)) - NV_Ith_S(mParameters, 5) * CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999858739e-8))) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_calcium_current_d_gate__d / (1 - CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999858739e-8))) + CHASTE_CONST(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 / (CHASTE_CONST(0.001) + var_chaste_interface__intracellular_calcium_concentration__Ca_i)) * (var_chaste_interface__intracellular_potassium_concentration__K_i * CHASTE_MATH::Exp(CHASTE_CONST(1.8716945411372736)) - NV_Ith_S(mParameters, 5) * CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999858739e-8))) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_calcium_current_d_gate__d / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999858739e-8)))) - CHASTE_CONST(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 / (CHASTE_CONST(0.001) + var_chaste_interface__intracellular_calcium_concentration__Ca_i)) * (var_chaste_interface__intracellular_potassium_concentration__K_i * CHASTE_MATH::Exp(CHASTE_CONST(1.8716945411372736)) - NV_Ith_S(mParameters, 5) * CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999858739e-8))) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_calcium_current_d_gate__d / (1 - CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999858739e-8)))) : (CHASTE_CONST(7.4867781645490941e-5) * (1 - var_chaste_interface__second_inward_calcium_current_f_Ca_gate__f_Ca) * (1 - var_chaste_interface__intracellular_calcium_concentration__Ca_i / (CHASTE_CONST(0.001) + var_chaste_interface__intracellular_calcium_concentration__Ca_i)) * (-50 + var_chaste_interface__membrane__V) * (var_chaste_interface__intracellular_potassium_concentration__K_i * CHASTE_MATH::Exp(CHASTE_CONST(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 / (_lt_0_row[3]))); // nanoA + const double var_second_inward_calcium_current__i_siNa = (((var_chaste_interface__membrane__V >= CHASTE_CONST(49.999997328623934)) && (var_chaste_interface__membrane__V <= CHASTE_CONST(50.000002671376066))) ? (CHASTE_CONST(187169.45411399176) * (-CHASTE_CONST(49.999997328623934) + var_chaste_interface__membrane__V) * (CHASTE_CONST(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 / (CHASTE_CONST(0.001) + var_chaste_interface__intracellular_calcium_concentration__Ca_i)) * (var_chaste_interface__intracellular_sodium_concentration__Na_i * CHASTE_MATH::Exp(CHASTE_CONST(1.8716945411372736)) - NV_Ith_S(mParameters, 6) * CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999858739e-8))) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_calcium_current_d_gate__d / (1 - CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999858739e-8))) + CHASTE_CONST(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 / (CHASTE_CONST(0.001) + var_chaste_interface__intracellular_calcium_concentration__Ca_i)) * (var_chaste_interface__intracellular_sodium_concentration__Na_i * CHASTE_MATH::Exp(CHASTE_CONST(1.8716945411372736)) - NV_Ith_S(mParameters, 6) * CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999858739e-8))) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_calcium_current_d_gate__d / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999858739e-8)))) - CHASTE_CONST(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 / (CHASTE_CONST(0.001) + var_chaste_interface__intracellular_calcium_concentration__Ca_i)) * (var_chaste_interface__intracellular_sodium_concentration__Na_i * CHASTE_MATH::Exp(CHASTE_CONST(1.8716945411372736)) - NV_Ith_S(mParameters, 6) * CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999858739e-8))) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_calcium_current_d_gate__d / (1 - CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999858739e-8)))) : (CHASTE_CONST(0.00037433890822745472) * (1 - var_chaste_interface__second_inward_calcium_current_f_Ca_gate__f_Ca) * (1 - var_chaste_interface__intracellular_calcium_concentration__Ca_i / (CHASTE_CONST(0.001) + var_chaste_interface__intracellular_calcium_concentration__Ca_i)) * (-50 + var_chaste_interface__membrane__V) * (var_chaste_interface__intracellular_sodium_concentration__Na_i * CHASTE_MATH::Exp(CHASTE_CONST(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 / (_lt_0_row[3]))); // nanoA + const double d_dt_chaste_interface_var_second_inward_calcium_current_f_Ca_gate__f_Ca = CHASTE_CONST(0.012) * ((1 - var_chaste_interface__second_inward_calcium_current_f_Ca_gate__f_Ca) * (1 - var_chaste_interface__intracellular_calcium_concentration__Ca_i / (CHASTE_CONST(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 / (CHASTE_CONST(0.001) + var_chaste_interface__intracellular_calcium_concentration__Ca_i)) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.25) * var_second_inward_calcium_current_f_Ca_gate__E0_f)) - CHASTE_CONST(0.001) * ((CHASTE_MATH::Abs(var_second_inward_calcium_current_f_Ca_gate__E0_f) < CHASTE_CONST(0.0001)) ? (25) : (CHASTE_CONST(6.25) * var_second_inward_calcium_current_f_Ca_gate__E0_f / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(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 = CHASTE_CONST(0.012) * var_chaste_interface__membrane__V - CHASTE_CONST(0.32056512791634778) * CHASTE_MATH::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 + const double d_dt_chaste_interface_var_intracellular_sodium_concentration__Na_i = -CHASTE_CONST(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 = CHASTE_CONST(26.713760659695652) * CHASTE_MATH::Log(NV_Ith_S(mParameters, 5) / var_chaste_interface__intracellular_potassium_concentration__K_i); // millivolt + const double var_potassium_background_current__i_b_K = CHASTE_CONST(0.17000000000000001) * var_chaste_interface__membrane__V - CHASTE_CONST(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 + CHASTE_MATH::Exp(-CHASTE_CONST(0.74867781645490938) + CHASTE_CONST(0.074867781645490947) * var_chaste_interface__membrane__V - CHASTE_CONST(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 = -CHASTE_CONST(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) { @@ -566,7 +568,7 @@ std::shared_ptr C } 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 + d_dt_chaste_interface_var_membrane__V = CHASTE_CONST(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 * CHASTE_STIM(var_chaste_interface__environment__time_converted) * NV_Ith_S(mParameters, 8) / CHASTE_CAP()) / NV_Ith_S(mParameters, 8); // millivolt / millisecond } NV_Ith_S(rDY,0) = d_dt_chaste_interface_var_membrane__V; @@ -590,7 +592,7 @@ std::shared_ptr C { // Inputs: // Time units: millisecond - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -622,37 +624,37 @@ std::shared_ptr C 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__d_NaCa = CHASTE_CONST(0.0001); // dimensionless + const double var_Na_Ca_exchanger__gamma = CHASTE_CONST(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_calcium_release__i_rel = (CHASTE_MATH::Pow(var_chaste_interface__calcium_release__ActFrac, 2) * NV_Ith_S(mParameters, 1) / CHASTE_MATH::Pow((CHASTE_CONST(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 = CHASTE_CONST(96485.341499999995); // coulomb_per_mole + const double var_membrane__R = CHASTE_CONST(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((NV_Ith_S(mParameters, 6) + 0.12 * NV_Ith_S(mParameters, 5)) / (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__E_mh = var_membrane__RTONF * CHASTE_MATH::Log((NV_Ith_S(mParameters, 6) + CHASTE_CONST(0.12) * NV_Ith_S(mParameters, 5)) / (var_chaste_interface__intracellular_sodium_concentration__Na_i + CHASTE_CONST(0.12) * var_chaste_interface__intracellular_potassium_concentration__K_i)); // millivolt + const double var_Na_Ca_exchanger__i_NaCa = (CHASTE_MATH::Pow(var_chaste_interface__intracellular_sodium_concentration__Na_i, var_Na_Ca_exchanger__n_NaCa) * var_chaste_interface__extracellular_calcium_concentration__Ca_o * CHASTE_MATH::Exp((-2 + var_Na_Ca_exchanger__n_NaCa) * var_Na_Ca_exchanger__gamma * var_chaste_interface__membrane__V / var_membrane__RTONF) - CHASTE_MATH::Pow(NV_Ith_S(mParameters, 6), var_Na_Ca_exchanger__n_NaCa) * var_chaste_interface__intracellular_calcium_concentration__Ca_i * CHASTE_MATH::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 + CHASTE_CONST(144.92753623188406) * var_chaste_interface__intracellular_calcium_concentration__Ca_i) * (1 + (CHASTE_MATH::Pow(NV_Ith_S(mParameters, 6), var_Na_Ca_exchanger__n_NaCa) * var_chaste_interface__intracellular_calcium_concentration__Ca_i + CHASTE_MATH::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 = CHASTE_CONST(0.001) * CHASTE_CAP() * var_Na_Ca_exchanger__i_NaCa / NV_Ith_S(mParameters, 8); // uA_per_cm2 + const double var_fast_sodium_current__i_Na = CHASTE_MATH::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 = CHASTE_CONST(0.001) * CHASTE_CAP() * 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 * CHASTE_MATH::Exp(-CHASTE_CONST(9.375) + CHASTE_CONST(0.125) * NV_Ith_S(mParameters, 11) - CHASTE_CONST(0.125) * var_chaste_interface__membrane__V); // per_second + const double var_fast_sodium_current_h_gate__beta_h = 2000 / (1 + 320 * CHASTE_MATH::Exp(-CHASTE_CONST(7.5) + CHASTE_CONST(0.10000000000000001) * NV_Ith_S(mParameters, 11) - CHASTE_CONST(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_membrane__i_Stim_converted = CHASTE_STIM(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 * (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 / (_lt_0_row[5]))); // 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 * (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 / (_lt_0_row[3]))); // 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 * (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 / (_lt_0_row[3]))); // nanoA + const double var_second_inward_calcium_current_f_Ca_gate__beta_f_Ca = 12 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(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 = CHASTE_CONST(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 > CHASTE_MATH::Abs(var_second_inward_calcium_current_f_Ca_gate__E0_f)) ? (25) : (CHASTE_CONST(6.25) * var_second_inward_calcium_current_f_Ca_gate__E0_f / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(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 >= CHASTE_CONST(49.999998664311967)) && (var_chaste_interface__membrane__V <= CHASTE_CONST(50.000001335688033))) ? (CHASTE_CONST(374338.90823576227) * (-CHASTE_CONST(49.999998664311967) + var_chaste_interface__membrane__V) * (CHASTE_CONST(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 / (CHASTE_CONST(0.001) + var_chaste_interface__intracellular_calcium_concentration__Ca_i)) * (var_chaste_interface__intracellular_calcium_concentration__Ca_i * CHASTE_MATH::Exp(CHASTE_CONST(3.7433890822745473)) - var_chaste_interface__extracellular_calcium_concentration__Ca_o * CHASTE_MATH::Exp(CHASTE_CONST(9.9999999997780743e-8))) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_calcium_current_d_gate__d / (1 - CHASTE_MATH::Exp(CHASTE_CONST(9.9999999997780743e-8))) + CHASTE_CONST(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 / (CHASTE_CONST(0.001) + var_chaste_interface__intracellular_calcium_concentration__Ca_i)) * (var_chaste_interface__intracellular_calcium_concentration__Ca_i * CHASTE_MATH::Exp(CHASTE_CONST(3.7433890822745473)) - var_chaste_interface__extracellular_calcium_concentration__Ca_o * CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999997780743e-8))) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_calcium_current_d_gate__d / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999997780743e-8)))) - CHASTE_CONST(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 / (CHASTE_CONST(0.001) + var_chaste_interface__intracellular_calcium_concentration__Ca_i)) * (var_chaste_interface__intracellular_calcium_concentration__Ca_i * CHASTE_MATH::Exp(CHASTE_CONST(3.7433890822745473)) - var_chaste_interface__extracellular_calcium_concentration__Ca_o * CHASTE_MATH::Exp(CHASTE_CONST(9.9999999997780743e-8))) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_calcium_current_d_gate__d / (1 - CHASTE_MATH::Exp(CHASTE_CONST(9.9999999997780743e-8)))) : (CHASTE_CONST(0.14973556329098189) * (1 - var_chaste_interface__second_inward_calcium_current_f_Ca_gate__f_Ca) * (1 - var_chaste_interface__intracellular_calcium_concentration__Ca_i / (CHASTE_CONST(0.001) + var_chaste_interface__intracellular_calcium_concentration__Ca_i)) * (-50 + var_chaste_interface__membrane__V) * (var_chaste_interface__intracellular_calcium_concentration__Ca_i * CHASTE_MATH::Exp(CHASTE_CONST(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 / (_lt_0_row[5]))); // nanoA + const double var_second_inward_calcium_current__i_siK = (((var_chaste_interface__membrane__V >= CHASTE_CONST(49.999997328623934)) && (var_chaste_interface__membrane__V <= CHASTE_CONST(50.000002671376066))) ? (CHASTE_CONST(187169.45411399176) * (-CHASTE_CONST(49.999997328623934) + var_chaste_interface__membrane__V) * (CHASTE_CONST(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 / (CHASTE_CONST(0.001) + var_chaste_interface__intracellular_calcium_concentration__Ca_i)) * (var_chaste_interface__intracellular_potassium_concentration__K_i * CHASTE_MATH::Exp(CHASTE_CONST(1.8716945411372736)) - NV_Ith_S(mParameters, 5) * CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999858739e-8))) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_calcium_current_d_gate__d / (1 - CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999858739e-8))) + CHASTE_CONST(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 / (CHASTE_CONST(0.001) + var_chaste_interface__intracellular_calcium_concentration__Ca_i)) * (var_chaste_interface__intracellular_potassium_concentration__K_i * CHASTE_MATH::Exp(CHASTE_CONST(1.8716945411372736)) - NV_Ith_S(mParameters, 5) * CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999858739e-8))) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_calcium_current_d_gate__d / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999858739e-8)))) - CHASTE_CONST(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 / (CHASTE_CONST(0.001) + var_chaste_interface__intracellular_calcium_concentration__Ca_i)) * (var_chaste_interface__intracellular_potassium_concentration__K_i * CHASTE_MATH::Exp(CHASTE_CONST(1.8716945411372736)) - NV_Ith_S(mParameters, 5) * CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999858739e-8))) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_calcium_current_d_gate__d / (1 - CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999858739e-8)))) : (CHASTE_CONST(7.4867781645490941e-5) * (1 - var_chaste_interface__second_inward_calcium_current_f_Ca_gate__f_Ca) * (1 - var_chaste_interface__intracellular_calcium_concentration__Ca_i / (CHASTE_CONST(0.001) + var_chaste_interface__intracellular_calcium_concentration__Ca_i)) * (-50 + var_chaste_interface__membrane__V) * (var_chaste_interface__intracellular_potassium_concentration__K_i * CHASTE_MATH::Exp(CHASTE_CONST(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 / (_lt_0_row[3]))); // nanoA + const double var_second_inward_calcium_current__i_siNa = (((var_chaste_interface__membrane__V >= CHASTE_CONST(49.999997328623934)) && (var_chaste_interface__membrane__V <= CHASTE_CONST(50.000002671376066))) ? (CHASTE_CONST(187169.45411399176) * (-CHASTE_CONST(49.999997328623934) + var_chaste_interface__membrane__V) * (CHASTE_CONST(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 / (CHASTE_CONST(0.001) + var_chaste_interface__intracellular_calcium_concentration__Ca_i)) * (var_chaste_interface__intracellular_sodium_concentration__Na_i * CHASTE_MATH::Exp(CHASTE_CONST(1.8716945411372736)) - NV_Ith_S(mParameters, 6) * CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999858739e-8))) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_calcium_current_d_gate__d / (1 - CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999858739e-8))) + CHASTE_CONST(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 / (CHASTE_CONST(0.001) + var_chaste_interface__intracellular_calcium_concentration__Ca_i)) * (var_chaste_interface__intracellular_sodium_concentration__Na_i * CHASTE_MATH::Exp(CHASTE_CONST(1.8716945411372736)) - NV_Ith_S(mParameters, 6) * CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999858739e-8))) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_calcium_current_d_gate__d / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999858739e-8)))) - CHASTE_CONST(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 / (CHASTE_CONST(0.001) + var_chaste_interface__intracellular_calcium_concentration__Ca_i)) * (var_chaste_interface__intracellular_sodium_concentration__Na_i * CHASTE_MATH::Exp(CHASTE_CONST(1.8716945411372736)) - NV_Ith_S(mParameters, 6) * CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999858739e-8))) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_calcium_current_d_gate__d / (1 - CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999858739e-8)))) : (CHASTE_CONST(0.00037433890822745472) * (1 - var_chaste_interface__second_inward_calcium_current_f_Ca_gate__f_Ca) * (1 - var_chaste_interface__intracellular_calcium_concentration__Ca_i / (CHASTE_CONST(0.001) + var_chaste_interface__intracellular_calcium_concentration__Ca_i)) * (-50 + var_chaste_interface__membrane__V) * (var_chaste_interface__intracellular_sodium_concentration__Na_i * CHASTE_MATH::Exp(CHASTE_CONST(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 / (_lt_0_row[3]))); // 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__i_si_converted = CHASTE_CONST(0.001) * CHASTE_CAP() * 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__E_K = var_membrane__RTONF * CHASTE_MATH::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 + 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 + CHASTE_MATH::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 = CHASTE_CONST(0.001) * CHASTE_CAP() * 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()); @@ -852,4 +854,5 @@ void OdeSystemInformation::Ini #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/hilgemann_noble_model_1987.hpp b/chaste_codegen/data/tests/chaste_reference_models/Cvode_opt/hilgemann_noble_model_1987.hpp index 14dfa1f0d..beb908f62 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/Cvode_opt/hilgemann_noble_model_1987.hpp +++ b/chaste_codegen/data/tests/chaste_reference_models/Cvode_opt/hilgemann_noble_model_1987.hpp @@ -17,7 +17,11 @@ #include "ChasteSerialization.hpp" #include #include "AbstractStimulusFunction.hpp" +#if USING_DEVICE_COMPILER +#include "StimulusEvaluatorCuda.hpp" +#endif #include "AbstractCvodeCell.hpp" +#include "HostDeviceMacros.hpp" class Cellhilgemann_noble_model_1987FromCellMLCvodeOpt : public AbstractCvodeCell { @@ -38,6 +42,10 @@ class Cellhilgemann_noble_model_1987FromCellMLCvodeOpt : public AbstractCvodeCel const bool is_concentration[15] = {false, true, false, false, false, false, false, false, true, true, true, false, true, false, false}; const bool is_probability[15] = {false, false, true, true, true, true, false, false, false, false, false, false, false, false, false}; public: + static constexpr unsigned TOTAL_SIZE = 15u; + static constexpr unsigned NNZ = 0u; + static inline const int sparse_rowptr[] = { }; + static inline const int sparse_colind[] = { }; boost::shared_ptr UseCellMLDefaultStimulus(); double GetIntracellularCalciumConcentration(); @@ -47,7 +55,11 @@ const bool is_probability[15] = {false, false, true, true, true, true, false, fa AbstractLookupTableCollection* GetLookupTableCollection(); double GetIIonic(const std::vector* pStateVariables=NULL); void EvaluateYDerivatives(double var_chaste_interface__environment__time_converted, const N_Vector rY, N_Vector rDY); + N_Vector ComputeDerivedQuantities(double var_chaste_interface__environment__time_converted, const N_Vector & rY); +#if USING_DEVICE_COMPILER + +#endif }; // Needs to be included last @@ -84,4 +96,7 @@ namespace boost } #endif // CELLHILGEMANN_NOBLE_MODEL_1987FROMCELLMLCVODEOPT_HPP_ + + + #endif // CHASTE_CVODE \ No newline at end of file diff --git a/chaste_codegen/data/tests/chaste_reference_models/Cvode_opt_with_jacobian/hodgkin_huxley_squid_axon_model_1952_modified.cpp b/chaste_codegen/data/tests/chaste_reference_models/Cvode_opt_with_jacobian/hodgkin_huxley_squid_axon_model_1952_modified.cpp index 35dfc9ffa..5591704f5 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/Cvode_opt_with_jacobian/hodgkin_huxley_squid_axon_model_1952_modified.cpp +++ b/chaste_codegen/data/tests/chaste_reference_models/Cvode_opt_with_jacobian/hodgkin_huxley_squid_axon_model_1952_modified.cpp @@ -22,6 +22,8 @@ #include "HeartConfig.hpp" #include "IsNan.hpp" #include "MathsCustomFunctions.hpp" +#include "ChasteMathDeviceNamespaces.hpp" +#include "ChasteCpuMacros.hpp" #if CHASTE_SUNDIALS_VERSION >= 60000 #include "CvodeContextManager.hpp" @@ -148,7 +150,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 (((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)))); + return (((CHASTE_CONST(6.5) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V >= -CHASTE_CONST(9.9999999999999995e-8)) && (CHASTE_CONST(6.5) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V <= CHASTE_CONST(9.9999999999999995e-8))) ? (CHASTE_CONST(0.42499999999999999) + CHASTE_CONST(0.0050000000000000001) * var_chaste_interface__membrane__V) : (-CHASTE_CONST(0.099999999999999992) * (CHASTE_CONST(6.5) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(6.5) - CHASTE_CONST(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); @@ -170,7 +172,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 exp(0.9375 + 0.012500000000000001 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(CHASTE_CONST(0.9375) + CHASTE_CONST(0.012500000000000001) * 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); @@ -181,7 +183,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 exp(-3.75 - 0.050000000000000003 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(-CHASTE_CONST(3.75) - CHASTE_CONST(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); @@ -192,7 +194,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 1 + exp(-4.5 - 0.10000000000000001 * var_chaste_interface__membrane__V); + return 1 + CHASTE_MATH::Exp(-CHASTE_CONST(4.5) - CHASTE_CONST(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 +205,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 (((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)))); + return (((5 + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V >= -CHASTE_CONST(9.9999999999999995e-8)) && (5 + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V <= CHASTE_CONST(9.9999999999999995e-8))) ? (CHASTE_CONST(3.5) + CHASTE_CONST(0.050000000000000003) * var_chaste_interface__membrane__V) : (-(5 + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V) / (-1 + CHASTE_MATH::Exp(-5 - CHASTE_CONST(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); @@ -225,7 +227,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 exp(-4.166666666666667 - 0.055555555555555552 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(-CHASTE_CONST(4.166666666666667) - CHASTE_CONST(0.055555555555555552) * 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); @@ -259,7 +261,7 @@ std::shared_ptr p_cellml_stim(new RegularStimulus( @@ -291,7 +293,7 @@ std::shared_ptrmParameters, 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, 2) = CHASTE_CONST(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] } @@ -352,7 +354,7 @@ std::shared_ptrmFixedVoltage : NV_Ith_S(rY, 0)); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -362,9 +364,9 @@ std::shared_ptrmFixedVoltage : NV_Ith_S(rY, 0)); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -399,8 +401,8 @@ std::shared_ptrmFixedVoltage : NV_Ith_S(rY, 0)); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -437,48 +439,48 @@ std::shared_ptrIndexTable0(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_x1 = CHASTE_MATH::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_x4 = CHASTE_CONST(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_x6 = (var_x5 >= -CHASTE_CONST(9.9999999999999995e-8)) && (var_x5 <= CHASTE_CONST(9.9999999999999995e-8)); + const double var_x7 = CHASTE_MATH::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_x10 = CHASTE_CONST(0.10000000000000001) - CHASTE_CONST(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_x13 = CHASTE_MATH::Exp(-CHASTE_CONST(4.5) - CHASTE_CONST(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_x16 = CHASTE_CONST(0.0015625000000000001) * var_x15 * var_chaste_interface__potassium_channel_n_gate__n; + const double var_x17 = CHASTE_CONST(6.5) + var_x4; + const double var_x18 = (var_x17 >= -CHASTE_CONST(9.9999999999999995e-8)) && (var_x17 <= CHASTE_CONST(9.9999999999999995e-8)); + const double var_x19 = CHASTE_MATH::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; + const double var_x22 = CHASTE_CONST(0.01) - CHASTE_CONST(0.01) * var_chaste_interface__potassium_channel_n_gate__n; + const double var_x23 = CHASTE_CONST(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.050000000000000003 * var_x12 * (0.070000000000000007 - 0.070000000000000007 * 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 + var_x5 * var_x9)); + IJth(rJacobian, 0, 0) = mSetVoltageDerivativeToZero ? 0.0 : (var_x0 * (-NV_Ith_S(mParameters, 2) - var_x1 * var_chaste_interface__sodium_channel_h_gate__h - CHASTE_MATH::Pow(var_chaste_interface__potassium_channel_n_gate__n, 4) * NV_Ith_S(mParameters, 3))); + IJth(rJacobian, 1, 0) = ((var_x6) ? (CHASTE_CONST(0.050000000000000003) - CHASTE_CONST(0.050000000000000003) * var_chaste_interface__sodium_channel_m_gate__m + CHASTE_CONST(0.22222222222222221) * var_x3 * var_chaste_interface__sodium_channel_m_gate__m) : (-var_x10 * var_x9 + CHASTE_CONST(0.22222222222222221) * var_x3 * var_chaste_interface__sodium_channel_m_gate__m - var_x10 * var_x5 * var_x7 / CHASTE_MATH::Pow(var_x8, 2))); + IJth(rJacobian, 2, 0) = -CHASTE_CONST(0.050000000000000003) * var_x12 * (CHASTE_CONST(0.070000000000000007) - CHASTE_CONST(0.070000000000000007) * var_chaste_interface__sodium_channel_h_gate__h) - CHASTE_CONST(0.10000000000000001) * var_x13 * var_chaste_interface__sodium_channel_h_gate__h / CHASTE_MATH::Pow(var_x14, 2); + IJth(rJacobian, 3, 0) = ((var_x18) ? (CHASTE_CONST(0.0050000000000000001) - var_x16 - CHASTE_CONST(0.0050000000000000001) * var_chaste_interface__potassium_channel_n_gate__n) : (-var_x16 - var_x21 * var_x22 - var_x17 * var_x19 * var_x22 / CHASTE_MATH::Pow(var_x20, 2))); + IJth(rJacobian, 0, 1) = mSetVoltageDerivativeToZero ? 0.0 : (-3 * var_x2 * CHASTE_MATH::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) ? (-CHASTE_CONST(3.5) - var_x11 - CHASTE_CONST(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_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)); + IJth(rJacobian, 2, 2) = -1 / var_x14 - CHASTE_CONST(0.070000000000000007) * var_x12; + IJth(rJacobian, 0, 3) = mSetVoltageDerivativeToZero ? 0.0 : (-4 * var_x0 * CHASTE_MATH::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) ? (-CHASTE_CONST(0.42499999999999999) - var_x23 - CHASTE_CONST(0.0050000000000000001) * var_chaste_interface__membrane__V) : (-var_x23 + CHASTE_CONST(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)); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -490,13 +492,13 @@ const double var_x0 = 1 / NV_Ith_S(mParameters, 0); // 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__E_L = CHASTE_CONST(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_membrane__i_Stim = CHASTE_STIM(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_potassium_channel__i_K = CHASTE_MATH::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_sodium_channel__i_Na = CHASTE_MATH::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()); @@ -581,4 +583,5 @@ void OdeSystemInformation #include "AbstractStimulusFunction.hpp" +#if USING_DEVICE_COMPILER +#include "StimulusEvaluatorCuda.hpp" +#endif #include "AbstractCvodeCell.hpp" +#include "HostDeviceMacros.hpp" class Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLCvodeOpt : public AbstractCvodeCell { @@ -38,6 +42,10 @@ class Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLCvodeOpt : publ const bool is_concentration[4] = {false, false, false, false}; const bool is_probability[4] = {false, false, false, false}; public: + static constexpr unsigned TOTAL_SIZE = 4u; + static constexpr unsigned NNZ = 10u; + static inline const int sparse_rowptr[] = { 0, 4, 6, 8, 10 }; + static inline const int sparse_colind[] = { 0, 1, 2, 3, 0, 1, 0, 2, 0, 3 }; boost::shared_ptr UseCellMLDefaultStimulus(); Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLCvodeOpt(boost::shared_ptr pOdeSolver /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus); @@ -46,8 +54,11 @@ const bool is_probability[4] = {false, false, false, false}; AbstractLookupTableCollection* GetLookupTableCollection(); double GetIIonic(const std::vector* pStateVariables=NULL); void EvaluateYDerivatives(double var_chaste_interface__environment__time, const N_Vector rY, N_Vector rDY); - N_Vector ComputeDerivedQuantities(double var_chaste_interface__environment__time, const N_Vector & rY); void 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); + N_Vector ComputeDerivedQuantities(double var_chaste_interface__environment__time, const N_Vector & rY); +#if USING_DEVICE_COMPILER + +#endif }; // Needs to be included last @@ -84,4 +95,7 @@ namespace boost } #endif // CELLHODGKIN_HUXLEY_SQUID_AXON_MODEL_1952_MODIFIEDFROMCELLMLCVODEOPT_HPP_ + + + #endif // CHASTE_CVODE \ No newline at end of file diff --git a/chaste_codegen/data/tests/chaste_reference_models/Cvode_with_jacobian/aslanidi_atrial_model_2009.cpp b/chaste_codegen/data/tests/chaste_reference_models/Cvode_with_jacobian/aslanidi_atrial_model_2009.cpp index 5e8763461..56b4ffb68 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/Cvode_with_jacobian/aslanidi_atrial_model_2009.cpp +++ b/chaste_codegen/data/tests/chaste_reference_models/Cvode_with_jacobian/aslanidi_atrial_model_2009.cpp @@ -22,6 +22,8 @@ #include "HeartConfig.hpp" #include "IsNan.hpp" #include "MathsCustomFunctions.hpp" +#include "ChasteMathDeviceNamespaces.hpp" +#include "ChasteCpuMacros.hpp" #if CHASTE_SUNDIALS_VERSION >= 60000 #include "CvodeContextManager.hpp" @@ -34,9 +36,9 @@ 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_membrane__Cm_converted = CHASTE_CONST(0.001) * NV_Ith_S(mParameters, 4); // uF + const double var_chaste_interface__membrane__stim_amplitude_converted = -CHASTE_CONST(3.9999999999999998e-6) * CHASTE_CAP() / var_membrane__Cm_converted; // uA_per_cm2 + const double var_chaste_interface__membrane__stim_duration_converted = CHASTE_CONST(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( @@ -72,15 +74,15 @@ 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, 1) = CHASTE_CONST(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] + NV_Ith_S(this->mParameters, 3) = CHASTE_CONST(0.0040000000000000001); // (var_L_type_Ca_channel__g_Ca_L) [nanoS] + NV_Ith_S(this->mParameters, 4) = CHASTE_CONST(5.0000000000000002e-5); // (var_membrane__Cm) [nanoF] + NV_Ith_S(this->mParameters, 5) = CHASTE_CONST(1.3999999999999999e-6); // (var_sodium_current__P_Na) [nanolitre_per_second] + NV_Ith_S(this->mParameters, 6) = CHASTE_CONST(0.0050800000000000003); // (var_inward_rectifier__g_K1) [nanoS] + NV_Ith_S(this->mParameters, 7) = CHASTE_CONST(0.0035000000000000001); // (var_delayed_rectifier_K_current__g_Kr) [nanoS] + NV_Ith_S(this->mParameters, 8) = CHASTE_CONST(0.0025000000000000001); // (var_delayed_rectifier_K_current__g_Ks) [nanoS] + NV_Ith_S(this->mParameters, 9) = CHASTE_CONST(2.0000000000000002e-5); // (var_Na_Ca_ion_exchanger_current__k_NaCa) [picoA_per_millimolar_4] } Cellaslanidi_atrial_model_2009FromCellMLCvode::~Cellaslanidi_atrial_model_2009FromCellMLCvode() @@ -136,7 +138,7 @@ made_new_cvode_vector = true; rY = MakeNVector(*pStateVariables); } - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -175,52 +177,52 @@ 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_Ca_independent_transient_outward_K_current__g_to = CHASTE_CONST(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_Na_Ca_ion_exchanger_current__d_NaCa = CHASTE_CONST(0.00029999999999999997); // per_millimolar_4 + const double var_Na_Ca_ion_exchanger_current__gamma = CHASTE_CONST(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_T_type_Ca_channel__g_Ca_T = CHASTE_CONST(0.0060000000000000001); // nanoS + const double var_background_currents__g_B_Ca = CHASTE_CONST(3.1000000000000001e-5); // nanoS + const double var_background_currents__g_B_Na = CHASTE_CONST(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_inward_rectifier__KmK1 = CHASTE_CONST(0.58999999999999997); // millimolar + const double var_inward_rectifier__shiftK1 = -CHASTE_CONST(3.6000000000000001); // millivolt + const double var_inward_rectifier__steepK1 = CHASTE_CONST(1.393); // dimensionless + const double var_membrane__Cm_converted = CHASTE_CONST(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_Ca_independent_transient_outward_K_current__E_K = var_membrane__R * var_membrane__T * CHASTE_MATH::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 = CHASTE_CONST(0.5) * var_membrane__R * var_membrane__T * CHASTE_MATH::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)) ? (CHASTE_CONST(0.098000000000000004) + CHASTE_CONST(0.0014) * var_chaste_interface__membrane__V) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (CHASTE_CONST(0.16799999999999998) + CHASTE_CONST(0.0023999999999999998) * var_chaste_interface__membrane__V) : (CHASTE_CONST(0.070000000000000007) + CHASTE_CONST(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)) ? (CHASTE_CONST(0.20000000000000001) * (CHASTE_CONST(0.40000000000000002) + CHASTE_CONST(0.59999999999999998) * CHASTE_MATH::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) * (CHASTE_CONST(0.58999999999999997) * CHASTE_MATH::Pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + CHASTE_CONST(0.40999999999999998) * CHASTE_MATH::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)) ? (CHASTE_CONST(0.34999999999999998) * (CHASTE_CONST(0.40000000000000002) + CHASTE_CONST(0.59999999999999998) * CHASTE_MATH::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) * (CHASTE_CONST(0.58999999999999997) * CHASTE_MATH::Pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + CHASTE_CONST(0.40999999999999998) * CHASTE_MATH::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) : ((CHASTE_CONST(0.40000000000000002) + CHASTE_CONST(0.59999999999999998) * CHASTE_MATH::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) * (CHASTE_CONST(0.58999999999999997) * CHASTE_MATH::Pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + CHASTE_CONST(0.40999999999999998) * CHASTE_MATH::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 + CHASTE_MATH::Exp(CHASTE_CONST(1.9166666666666667) - CHASTE_CONST(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)) ? (CHASTE_CONST(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)) ? (CHASTE_CONST(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 = CHASTE_CONST(9.9999999999999995e-7) * CHASTE_CAP() * 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 = (CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * NV_Ith_S(mParameters, 1) * CHASTE_MATH::Exp(var_Na_Ca_ion_exchanger_current__gamma * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - CHASTE_MATH::Pow(NV_Ith_S(mParameters, 2), 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i * CHASTE_MATH::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 + (CHASTE_MATH::Pow(NV_Ith_S(mParameters, 2), 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i + CHASTE_MATH::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 = CHASTE_CONST(9.9999999999999995e-7) * CHASTE_CAP() * 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_background_currents__i_B_Ca = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (CHASTE_CONST(2.0000000000000002e-5) * var_chaste_interface__membrane__V - CHASTE_CONST(2.0000000000000002e-5) * var_background_currents__E_Ca) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (CHASTE_CONST(3.0000000000000001e-5) * var_chaste_interface__membrane__V - CHASTE_CONST(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_Kr_converted = CHASTE_CONST(9.9999999999999995e-7) * CHASTE_CAP() * 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))) : (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_delayed_rectifier_K_current__i_Ks_converted = CHASTE_CONST(9.9999999999999995e-7) * CHASTE_CAP() * 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 * CHASTE_MATH::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 + CHASTE_MATH::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))) * CHASTE_MATH::Pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (CHASTE_CONST(2.5) * CHASTE_MATH::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 + CHASTE_MATH::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))) * CHASTE_MATH::Pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))) : (CHASTE_MATH::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 + CHASTE_MATH::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))) * CHASTE_MATH::Pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))))); // picoA + const double var_inward_rectifier__i_K1_converted = CHASTE_CONST(9.9999999999999995e-7) * CHASTE_CAP() * var_inward_rectifier__i_K1 / var_membrane__Cm_converted; // uA_per_cm2 + const double var_sarcolemmal_calcium_pump_current__i_CaP_max = CHASTE_CONST(0.0095090000000000001); // picoA + const double var_sarcolemmal_calcium_pump_current__k_CaP = CHASTE_CONST(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 - 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 + const double var_sodium_current__E_Na = var_membrane__R * var_membrane__T * CHASTE_MATH::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)) ? (CHASTE_CONST(2.0000000000000002e-5) * var_chaste_interface__membrane__V - CHASTE_CONST(2.0000000000000002e-5) * var_sodium_current__E_Na) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (CHASTE_CONST(3.0000000000000001e-5) * var_chaste_interface__membrane__V - CHASTE_CONST(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 >= -CHASTE_CONST(2.6539450910485349e-6)) && (var_chaste_interface__membrane__V <= CHASTE_CONST(2.6539450910485349e-6))) ? (CHASTE_CONST(188398.77346612973) * (CHASTE_CONST(2.6539450910485349e-6) + var_chaste_interface__membrane__V) * (CHASTE_CONST(0.0096486999999999996) * CHASTE_MATH::Pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8) - CHASTE_MATH::Log(NV_Ith_S(mParameters, 2) / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (CHASTE_CONST(0.36499999999999999) * var_chaste_interface__sodium_current_h2_gate__h2 + CHASTE_CONST(0.63500000000000001) * var_chaste_interface__sodium_current_h1_gate__h1) * NV_Ith_S(mParameters, 2) * NV_Ith_S(mParameters, 5) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) + CHASTE_CONST(0.0096486999999999996) * CHASTE_MATH::Pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8) - CHASTE_MATH::Log(NV_Ith_S(mParameters, 2) / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (CHASTE_CONST(0.36499999999999999) * var_chaste_interface__sodium_current_h2_gate__h2 + CHASTE_CONST(0.63500000000000001) * var_chaste_interface__sodium_current_h1_gate__h1) * NV_Ith_S(mParameters, 2) * NV_Ith_S(mParameters, 5) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)))) - CHASTE_CONST(0.0096486999999999996) * CHASTE_MATH::Pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8) - CHASTE_MATH::Log(NV_Ith_S(mParameters, 2) / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (CHASTE_CONST(0.36499999999999999) * var_chaste_interface__sodium_current_h2_gate__h2 + CHASTE_CONST(0.63500000000000001) * var_chaste_interface__sodium_current_h1_gate__h1) * NV_Ith_S(mParameters, 2) * NV_Ith_S(mParameters, 5) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)))) : (CHASTE_CONST(3635.606491085292) * CHASTE_MATH::Pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + CHASTE_MATH::Exp(CHASTE_CONST(0.037679754693225945) * var_chaste_interface__membrane__V - CHASTE_MATH::Log(NV_Ith_S(mParameters, 2) / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (CHASTE_CONST(0.36499999999999999) * var_chaste_interface__sodium_current_h2_gate__h2 + CHASTE_CONST(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 + CHASTE_MATH::Exp(CHASTE_CONST(0.037679754693225945) * var_chaste_interface__membrane__V)))); // picoA + const double var_sodium_current__i_Na_converted = CHASTE_CONST(9.9999999999999995e-7) * CHASTE_CAP() * var_sodium_current__i_Na / var_membrane__Cm_converted; // uA_per_cm2 + const double var_sodium_potassium_pump__i_NaK_max = CHASTE_CONST(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 var_sodium_potassium_pump__i_p = CHASTE_CONST(1.6000000000000001) * CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, CHASTE_CONST(1.5)) * var_chaste_interface__cleft_space_ion_concentrations__K_c * var_sodium_potassium_pump__i_NaK_max / ((CHASTE_CONST(1.5) + CHASTE_MATH::Exp(-CHASTE_CONST(1.5) - CHASTE_CONST(0.025000000000000001) * var_chaste_interface__membrane__V)) * (CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, CHASTE_CONST(1.5)) + CHASTE_MATH::Pow(var_sodium_potassium_pump__k_NaK_Na, CHASTE_CONST(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 + CHASTE_CONST(9.9999999999999995e-7) * CHASTE_CAP() * var_Ca_independent_transient_outward_K_current__i_sus + CHASTE_CONST(9.9999999999999995e-7) * CHASTE_CAP() * var_Ca_independent_transient_outward_K_current__i_to + CHASTE_CONST(9.9999999999999995e-7) * CHASTE_CAP() * var_T_type_Ca_channel__i_Ca_T + CHASTE_CONST(9.9999999999999995e-7) * CHASTE_CAP() * var_background_currents__i_B_Ca + CHASTE_CONST(9.9999999999999995e-7) * CHASTE_CAP() * var_background_currents__i_B_Na + CHASTE_CONST(9.9999999999999995e-7) * CHASTE_CAP() * var_sarcolemmal_calcium_pump_current__i_CaP + CHASTE_CONST(9.9999999999999995e-7) * CHASTE_CAP() * 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) @@ -235,7 +237,7 @@ { // Inputs: // Time units: millisecond - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -296,171 +298,171 @@ // 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__I_up_max = CHASTE_CONST(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_Ca_handling_by_the_SR__Vol_rel = CHASTE_CONST(4.3999999999999997e-8); // nanolitre + const double var_Ca_handling_by_the_SR__Vol_up = CHASTE_CONST(3.9690000000000001e-7); // nanolitre + const double var_Ca_handling_by_the_SR__k_F3 = CHASTE_CONST(0.81499999999999995); // per_second + const double var_Ca_handling_by_the_SR__k_cyca = CHASTE_CONST(0.00029999999999999997); // millimolar + const double var_Ca_handling_by_the_SR__k_rel = CHASTE_CONST(0.00029999999999999997); // millimolar + const double var_Ca_handling_by_the_SR__k_srca = CHASTE_CONST(0.5); // millimolar + const double var_Ca_handling_by_the_SR__k_xcs = CHASTE_CONST(0.40000000000000002); // dimensionless + const double var_Ca_handling_by_the_SR__tau_tr = CHASTE_CONST(0.01); // second + const double var_Ca_independent_transient_outward_K_current__g_to = CHASTE_CONST(0.050001999999999998); // nanoS + const double d_dt_chaste_interface_var_Ca_handling_by_the_SR__O_Calse = CHASTE_CONST(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_Na_Ca_ion_exchanger_current__d_NaCa = CHASTE_CONST(0.00029999999999999997); // per_millimolar_4 + const double var_Na_Ca_ion_exchanger_current__gamma = CHASTE_CONST(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_T_type_Ca_channel__g_Ca_T = CHASTE_CONST(0.0060000000000000001); // nanoS + const double var_background_currents__g_B_Ca = CHASTE_CONST(3.1000000000000001e-5); // nanoS + const double var_background_currents__g_B_Na = CHASTE_CONST(6.3999999999999997e-5); // nanoS + const double var_cleft_space_ion_concentrations__Vol_c = CHASTE_CONST(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__Mg_i = CHASTE_CONST(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 d_dt_chaste_interface_var_intracellular_Ca_buffering__O_TMgMg = CHASTE_CONST(0.001) * var_intracellular_Ca_buffering__O_TMgMg_orig_deriv; // 1 / millisecond + const double var_Ca_handling_by_the_SR__i_rel = CHASTE_MATH::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) / CHASTE_MATH::Pow((CHASTE_CONST(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 - CHASTE_MATH::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 = CHASTE_CONST(33.960000000000001) + CHASTE_CONST(339.60000000000002) * CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Ca_i, 4) / CHASTE_MATH::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 d_dt_chaste_interface_var_Ca_handling_by_the_SR__F3 = CHASTE_CONST(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 d_dt_chaste_interface_var_intracellular_Ca_buffering__O_C = CHASTE_CONST(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 d_dt_chaste_interface_var_intracellular_Ca_buffering__O_TC = CHASTE_CONST(0.001) * var_intracellular_Ca_buffering__O_TC_orig_deriv; // 1 / millisecond + const double var_intracellular_Ca_buffering__dOTMgCdt = -CHASTE_CONST(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 d_dt_chaste_interface_var_intracellular_Ca_buffering__O_TMgC = CHASTE_CONST(0.001) * var_intracellular_Ca_buffering__O_TMgC_orig_deriv; // 1 / millisecond + const double var_intracellular_ion_concentrations__Vol_Ca = CHASTE_CONST(5.8839999999999999e-6); // nanolitre + const double var_intracellular_ion_concentrations__Vol_i = CHASTE_CONST(1.26e-5); // nanolitre + const double var_inward_rectifier__KmK1 = CHASTE_CONST(0.58999999999999997); // millimolar + const double var_inward_rectifier__shiftK1 = -CHASTE_CONST(3.6000000000000001); // millivolt + const double var_inward_rectifier__steepK1 = CHASTE_CONST(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_Ca_handling_by_the_SR__Ca_rel_orig_deriv = -31 * var_Ca_handling_by_the_SR__O_Calse_orig_deriv + CHASTE_CONST(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 = CHASTE_CONST(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 = CHASTE_CONST(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 = CHASTE_CONST(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_independent_transient_outward_K_current__E_K = var_membrane__R * var_membrane__T * CHASTE_MATH::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 = CHASTE_CONST(0.5) * var_membrane__R * var_membrane__T * CHASTE_MATH::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 * CHASTE_MATH::Exp(-CHASTE_CONST(1.6000000000000001) + CHASTE_CONST(0.080000000000000002) * var_chaste_interface__membrane__V) + CHASTE_CONST(203.80000000000001) * CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Ca_i, 4) / CHASTE_MATH::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__i_sus = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (CHASTE_CONST(0.098000000000000004) + CHASTE_CONST(0.0014) * var_chaste_interface__membrane__V) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (CHASTE_CONST(0.16799999999999998) + CHASTE_CONST(0.0023999999999999998) * var_chaste_interface__membrane__V) : (CHASTE_CONST(0.070000000000000007) + CHASTE_CONST(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)) ? (CHASTE_CONST(0.20000000000000001) * (CHASTE_CONST(0.40000000000000002) + CHASTE_CONST(0.59999999999999998) * CHASTE_MATH::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) * (CHASTE_CONST(0.58999999999999997) * CHASTE_MATH::Pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + CHASTE_CONST(0.40999999999999998) * CHASTE_MATH::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)) ? (CHASTE_CONST(0.34999999999999998) * (CHASTE_CONST(0.40000000000000002) + CHASTE_CONST(0.59999999999999998) * CHASTE_MATH::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) * (CHASTE_CONST(0.58999999999999997) * CHASTE_MATH::Pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + CHASTE_CONST(0.40999999999999998) * CHASTE_MATH::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) : ((CHASTE_CONST(0.40000000000000002) + CHASTE_CONST(0.59999999999999998) * CHASTE_MATH::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) * (CHASTE_CONST(0.58999999999999997) * CHASTE_MATH::Pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + CHASTE_CONST(0.40999999999999998) * CHASTE_MATH::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 = CHASTE_CONST(386.60000000000002) * CHASTE_MATH::Exp(CHASTE_CONST(0.083333333333333329) * var_chaste_interface__membrane__V); // per_second + const double var_Ca_independent_transient_outward_K_current_r_gate__beta_r = CHASTE_CONST(8.0109999999999992) * CHASTE_MATH::Exp(-CHASTE_CONST(0.1388888888888889) * var_chaste_interface__membrane__V); // per_second + const double var_Ca_independent_transient_outward_K_current_r_gate__r_infinity = 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.6628794603230959) - CHASTE_CONST(0.17752529735487307) * var_chaste_interface__membrane__V)); // dimensionless + const double var_Ca_independent_transient_outward_K_current_r_gate__tau_r = CHASTE_CONST(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_infinity = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(4.0070821529745047) + CHASTE_CONST(0.14164305949008499) * var_chaste_interface__membrane__V)); // dimensionless + const double var_Ca_independent_transient_outward_K_current_s1_gate__tau_s1 = CHASTE_CONST(0.020400000000000001) + CHASTE_CONST(0.54659999999999997) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(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_infinity = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(4.0070821529745047) + CHASTE_CONST(0.14164305949008499) * var_chaste_interface__membrane__V)); // dimensionless + const double var_Ca_independent_transient_outward_K_current_s2_gate__tau_s2 = CHASTE_CONST(5.75) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(327.99999999999994) + 10 * var_chaste_interface__membrane__V)) + CHASTE_CONST(0.45000000000000001) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(0.96921975662133131) - CHASTE_CONST(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_infinity = CHASTE_CONST(0.39975990396158467) + CHASTE_CONST(0.60024009603841544) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(1.8506208911614319) + CHASTE_CONST(0.036523009495982472) * var_chaste_interface__membrane__V)); // dimensionless + const double var_Ca_independent_transient_outward_K_current_s3_gate__tau_s3 = CHASTE_CONST(0.5) + CHASTE_CONST(7.5) / (1 + CHASTE_MATH::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 d_dt_chaste_interface_var_Ca_handling_by_the_SR__F1 = CHASTE_CONST(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 = CHASTE_CONST(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 = CHASTE_CONST(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 = CHASTE_CONST(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 = CHASTE_CONST(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 = CHASTE_CONST(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 + CHASTE_MATH::Exp(CHASTE_CONST(1.9166666666666667) - CHASTE_CONST(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)) ? (CHASTE_CONST(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)) ? (CHASTE_CONST(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__alpha_d_L = (((var_chaste_interface__membrane__V >= -CHASTE_CONST(10.000000480800001)) && (var_chaste_interface__membrane__V <= -CHASTE_CONST(9.9999995191999993))) ? (CHASTE_CONST(2.4040000000391526e-5) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(1.0000000000162864e-7))) + CHASTE_CONST(1039933.4442576389) * (CHASTE_CONST(10.000000480800001) + var_chaste_interface__membrane__V) * (-CHASTE_CONST(2.4040000000391526e-5) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(1.0000000000162864e-7))) - CHASTE_CONST(2.4039999999697637e-5) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999998742257e-8))))) : (-50 * (10 + var_chaste_interface__membrane__V) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.0798668885191347) - CHASTE_CONST(0.20798668885191349) * var_chaste_interface__membrane__V)))) + (((var_chaste_interface__membrane__V >= -CHASTE_CONST(45.000000249999999)) && (var_chaste_interface__membrane__V <= -CHASTE_CONST(44.999999750000001))) ? (CHASTE_CONST(4.1799999996561256e-6) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999991773334e-8))) + CHASTE_CONST(1999999.9999424887) * (CHASTE_CONST(45.000000249999999) + var_chaste_interface__membrane__V) * (-CHASTE_CONST(4.1800000005842713e-6) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(1.000000000139778e-7))) - CHASTE_CONST(4.1799999996561256e-6) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999991773334e-8))))) : (-CHASTE_CONST(16.719999999999999) * (45 + var_chaste_interface__membrane__V) / (-1 + CHASTE_MATH::Exp(-18 - CHASTE_CONST(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 >= -CHASTE_CONST(5.0000002500000003)) && (var_chaste_interface__membrane__V <= -CHASTE_CONST(4.9999997499999997))) ? (-CHASTE_CONST(1.1200000000011203e-6) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(1.0000000000010001e-7))) + CHASTE_CONST(1999999.9999979998) * (CHASTE_CONST(5.0000002500000003) + var_chaste_interface__membrane__V) * (CHASTE_CONST(1.1200000000011203e-6) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(1.0000000000010001e-7))) + CHASTE_CONST(1.1200000000011203e-6) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(1.0000000000010001e-7))))) : (CHASTE_CONST(4.4800000000000004) * (5 + var_chaste_interface__membrane__V) / (-1 + CHASTE_MATH::Exp(2 + CHASTE_CONST(0.40000000000000002) * var_chaste_interface__membrane__V)))); // per_second + const double var_L_type_Ca_channel_d_L_gate__d_L_infinity = 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.14393939393939395) - CHASTE_CONST(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 d_dt_chaste_interface_var_L_type_Ca_channel_d_L_gate__d_L = CHASTE_CONST(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__alpha_f_L = (((var_chaste_interface__membrane__V >= -CHASTE_CONST(18.000000400000001)) && (var_chaste_interface__membrane__V <= -CHASTE_CONST(17.999999599999999))) ? (-CHASTE_CONST(3.3960000000976542e-6) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(1.0000000000287557e-7))) + CHASTE_CONST(1249999.9999640554) * (CHASTE_CONST(18.000000400000001) + var_chaste_interface__membrane__V) * (CHASTE_CONST(3.3960000000976542e-6) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(1.0000000000287557e-7))) + CHASTE_CONST(3.3960000000976542e-6) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(1.0000000000287557e-7))))) : (CHASTE_CONST(8.4900000000000002) * (18 + var_chaste_interface__membrane__V) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(4.5) + CHASTE_CONST(0.25) * var_chaste_interface__membrane__V)))); // per_second + const double var_L_type_Ca_channel_f_L_gate__beta_f_L = CHASTE_CONST(67.921999999999997) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(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 d_dt_chaste_interface_var_L_type_Ca_channel_f_L_gate__f_L = CHASTE_CONST(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 = (CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * NV_Ith_S(mParameters, 1) * CHASTE_MATH::Exp(var_Na_Ca_ion_exchanger_current__gamma * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - CHASTE_MATH::Pow(NV_Ith_S(mParameters, 2), 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i * CHASTE_MATH::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 + (CHASTE_MATH::Pow(NV_Ith_S(mParameters, 2), 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i + CHASTE_MATH::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__E0_d_T = CHASTE_CONST(23.300000000000001) + var_chaste_interface__membrane__V; // millivolt + const double var_T_type_Ca_channel_d_T_gate__alpha_d_T = CHASTE_CONST(674.173) * CHASTE_MATH::Exp(CHASTE_CONST(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 = CHASTE_CONST(674.173) * CHASTE_MATH::Exp(-CHASTE_CONST(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 + CHASTE_MATH::Exp(CHASTE_CONST(0.049180327868852458) - CHASTE_CONST(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 d_dt_chaste_interface_var_T_type_Ca_channel_d_T_gate__d_T = CHASTE_CONST(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__alpha_f_T = CHASTE_CONST(9.6370000000000005) * CHASTE_MATH::Exp(-CHASTE_CONST(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 = CHASTE_CONST(9.6370000000000005) * CHASTE_MATH::Exp(CHASTE_CONST(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 d_dt_chaste_interface_var_T_type_Ca_channel_f_T_gate__f_T = CHASTE_CONST(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)) ? (CHASTE_CONST(2.0000000000000002e-5) * var_chaste_interface__membrane__V - CHASTE_CONST(2.0000000000000002e-5) * var_background_currents__E_Ca) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (CHASTE_CONST(3.0000000000000001e-5) * var_chaste_interface__membrane__V - CHASTE_CONST(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__alpha_p_a = 9 * CHASTE_MATH::Exp(CHASTE_CONST(0.03941508020968823) * var_chaste_interface__membrane__V); // per_second + const double var_delayed_rectifier_K_current_pa_gate__beta_p_a = CHASTE_CONST(1.3) * CHASTE_MATH::Exp(-CHASTE_CONST(0.076769537847382163) * var_chaste_interface__membrane__V); // per_second + const double var_delayed_rectifier_K_current_pa_gate__p_a_infinity = 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.68918918918918914) - CHASTE_CONST(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 d_dt_chaste_interface_var_delayed_rectifier_K_current_pa_gate__p_a = CHASTE_CONST(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 * CHASTE_MATH::Exp(-CHASTE_CONST(0.018299935950224173) * var_chaste_interface__membrane__V); // per_second + const double var_delayed_rectifier_K_current_pi_gate__beta_p_i = 656 * CHASTE_MATH::Exp(CHASTE_CONST(0.009420009985210585) * var_chaste_interface__membrane__V); // per_second + const double var_delayed_rectifier_K_current_pi_gate__p_i_infinity = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(2.539728728905752) + CHASTE_CONST(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 d_dt_chaste_interface_var_delayed_rectifier_K_current_pi_gate__p_i = CHASTE_CONST(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 = CHASTE_CONST(1.6599999999999999) * CHASTE_MATH::Exp(CHASTE_CONST(0.014398433450440593) * var_chaste_interface__membrane__V); // per_second + const double var_delayed_rectifier_K_current_z_gate__beta_z = CHASTE_CONST(0.29999999999999999) * CHASTE_MATH::Exp(-CHASTE_CONST(0.045816915605241454) * var_chaste_interface__membrane__V); // per_second + const double var_delayed_rectifier_K_current_z_gate__tau_z = CHASTE_CONST(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 + CHASTE_MATH::Exp(CHASTE_CONST(0.065217391304347824) - CHASTE_CONST(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))) : (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 d_dt_chaste_interface_var_delayed_rectifier_K_current_z_gate__z = CHASTE_CONST(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 * CHASTE_MATH::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 + CHASTE_MATH::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))) * CHASTE_MATH::Pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (CHASTE_CONST(2.5) * CHASTE_MATH::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 + CHASTE_MATH::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))) * CHASTE_MATH::Pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))) : (CHASTE_MATH::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 + CHASTE_MATH::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))) * CHASTE_MATH::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 = CHASTE_CONST(0.0095090000000000001); // picoA + const double var_sarcolemmal_calcium_pump_current__k_CaP = CHASTE_CONST(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_intracellular_ion_concentrations__Ca_i_orig_deriv = -CHASTE_CONST(0.044999999999999998) * var_intracellular_Ca_buffering__dOCdt - CHASTE_CONST(0.080000000000000002) * var_intracellular_Ca_buffering__dOTCdt - CHASTE_CONST(0.16) * var_intracellular_Ca_buffering__dOTMgCdt + CHASTE_CONST(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 = CHASTE_CONST(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 * CHASTE_MATH::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)) ? (CHASTE_CONST(2.0000000000000002e-5) * var_chaste_interface__membrane__V - CHASTE_CONST(2.0000000000000002e-5) * var_sodium_current__E_Na) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (CHASTE_CONST(3.0000000000000001e-5) * var_chaste_interface__membrane__V - CHASTE_CONST(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 = CHASTE_CONST(44.899999999999999) * CHASTE_MATH::Exp(-CHASTE_CONST(12.010771992818672) - CHASTE_CONST(0.17953321364452424) * var_chaste_interface__membrane__V); // per_second + const double var_sodium_current_h1_gate__beta_h = 1491 / (1 + CHASTE_CONST(323.30000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(7.333333333333333) - CHASTE_CONST(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__tau_h1 = CHASTE_CONST(0.00014999999999999999) + CHASTE_CONST(0.029999999999999999) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(6.666666666666667) + CHASTE_CONST(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 d_dt_chaste_interface_var_sodium_current_h1_gate__h1 = CHASTE_CONST(0.001) * var_sodium_current_h1_gate__h1_orig_deriv; // 1 / millisecond + const double var_sodium_current_h2_gate__tau_h2 = CHASTE_CONST(0.00044999999999999999) + CHASTE_CONST(0.12) / (1 + CHASTE_MATH::Exp(30 + CHASTE_CONST(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 - 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 d_dt_chaste_interface_var_sodium_current_h2_gate__h2 = CHASTE_CONST(0.001) * var_sodium_current_h2_gate__h2_orig_deriv; // 1 / millisecond + const double var_sodium_current_m_gate__E0_m = CHASTE_CONST(44.399999999999999) + var_chaste_interface__membrane__V; // millivolt + const double var_sodium_current_m_gate__alpha_m = (((var_chaste_interface__membrane__V >= -CHASTE_CONST(44.400001267299999)) && (var_chaste_interface__membrane__V <= -CHASTE_CONST(44.399998732699999))) ? (CHASTE_CONST(0.00058295799999830145) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999708629e-8))) + CHASTE_CONST(394539.57232025318) * (CHASTE_CONST(44.400001267299999) + var_chaste_interface__membrane__V) * (-CHASTE_CONST(0.00058295799999830145) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999708629e-8))) - CHASTE_CONST(0.00058295799999830145) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999708629e-8))))) : (-460 * (CHASTE_CONST(44.399999999999999) + var_chaste_interface__membrane__V) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(3.5035114021936398) - CHASTE_CONST(0.078907914463820727) * var_chaste_interface__membrane__V)))); // per_second + const double var_sodium_current_m_gate__beta_m = 18400 * CHASTE_MATH::Exp(-CHASTE_CONST(0.078907914463820727) * var_sodium_current_m_gate__E0_m); // per_second + const double var_sodium_current__i_Na = (((var_chaste_interface__membrane__V >= -CHASTE_CONST(2.6539450910485349e-6)) && (var_chaste_interface__membrane__V <= CHASTE_CONST(2.6539450910485349e-6))) ? (CHASTE_CONST(188398.77346612973) * (CHASTE_CONST(2.6539450910485349e-6) + var_chaste_interface__membrane__V) * (CHASTE_CONST(0.0096486999999999996) * CHASTE_MATH::Pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8) - CHASTE_MATH::Log(NV_Ith_S(mParameters, 2) / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (CHASTE_CONST(0.36499999999999999) * var_chaste_interface__sodium_current_h2_gate__h2 + CHASTE_CONST(0.63500000000000001) * var_chaste_interface__sodium_current_h1_gate__h1) * NV_Ith_S(mParameters, 2) * NV_Ith_S(mParameters, 5) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) + CHASTE_CONST(0.0096486999999999996) * CHASTE_MATH::Pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8) - CHASTE_MATH::Log(NV_Ith_S(mParameters, 2) / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (CHASTE_CONST(0.36499999999999999) * var_chaste_interface__sodium_current_h2_gate__h2 + CHASTE_CONST(0.63500000000000001) * var_chaste_interface__sodium_current_h1_gate__h1) * NV_Ith_S(mParameters, 2) * NV_Ith_S(mParameters, 5) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)))) - CHASTE_CONST(0.0096486999999999996) * CHASTE_MATH::Pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8) - CHASTE_MATH::Log(NV_Ith_S(mParameters, 2) / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (CHASTE_CONST(0.36499999999999999) * var_chaste_interface__sodium_current_h2_gate__h2 + CHASTE_CONST(0.63500000000000001) * var_chaste_interface__sodium_current_h1_gate__h1) * NV_Ith_S(mParameters, 2) * NV_Ith_S(mParameters, 5) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)))) : (CHASTE_CONST(3635.606491085292) * CHASTE_MATH::Pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + CHASTE_MATH::Exp(CHASTE_CONST(0.037679754693225945) * var_chaste_interface__membrane__V - CHASTE_MATH::Log(NV_Ith_S(mParameters, 2) / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (CHASTE_CONST(0.36499999999999999) * var_chaste_interface__sodium_current_h2_gate__h2 + CHASTE_CONST(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 + CHASTE_MATH::Exp(CHASTE_CONST(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 d_dt_chaste_interface_var_sodium_current_m_gate__m = CHASTE_CONST(0.001) * var_sodium_current_m_gate__m_orig_deriv; // 1 / millisecond + const double var_sodium_potassium_pump__i_NaK_max = CHASTE_CONST(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_sodium_potassium_pump__i_p = CHASTE_CONST(1.6000000000000001) * CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, CHASTE_CONST(1.5)) * var_chaste_interface__cleft_space_ion_concentrations__K_c * var_sodium_potassium_pump__i_NaK_max / ((CHASTE_CONST(1.5) + CHASTE_MATH::Exp(-CHASTE_CONST(1.5) - CHASTE_CONST(0.025000000000000001) * var_chaste_interface__membrane__V)) * (CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, CHASTE_CONST(1.5)) + CHASTE_MATH::Pow(var_sodium_potassium_pump__k_NaK_Na, CHASTE_CONST(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 d_dt_chaste_interface_var_cleft_space_ion_concentrations__K_c = CHASTE_CONST(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 d_dt_chaste_interface_var_intracellular_ion_concentrations__K_i = CHASTE_CONST(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 + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Na_i = CHASTE_CONST(0.001) * var_intracellular_ion_concentrations__Na_i_orig_deriv; // millimolar / millisecond if (mSetVoltageDerivativeToZero) { @@ -468,11 +470,11 @@ } 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__Cm_converted = CHASTE_CONST(0.001) * NV_Ith_S(mParameters, 4); // uF + const double var_membrane__i_Stim_converted = CHASTE_STIM(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 / CHASTE_CAP(); // picoA const double var_membrane__V_orig_deriv = -(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 + d_dt_chaste_interface_var_membrane__V = CHASTE_CONST(0.001) * var_membrane__V_orig_deriv; // millivolt / millisecond } NV_Ith_S(rDY,0) = d_dt_chaste_interface_var_membrane__V; @@ -508,7 +510,7 @@ 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)); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -564,455 +566,455 @@ // 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_x0 = CHASTE_CONST(0.083333333333333329) * var_chaste_interface__membrane__V; + const double var_x1 = CHASTE_MATH::Exp(CHASTE_CONST(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_x7 = CHASTE_MATH::Exp(CHASTE_CONST(0.016955889611951675) * var_chaste_interface__membrane__V); + const double var_x8 = CHASTE_MATH::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_x10 = CHASTE_MATH::Exp(-CHASTE_CONST(0.02072386508127427) * var_chaste_interface__membrane__V); + const double var_x11 = CHASTE_MATH::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_x14 = 1 + CHASTE_CONST(0.00029999999999999997) * var_x12 + CHASTE_CONST(0.00029999999999999997) * var_x8; const double var_x15 = 1 / var_x14; const double var_x16 = var_x15 * NV_Ith_S(mParameters, 9); - const double var_x17 = var_x16 * (0.016955889611951675 * var_x9 + 0.02072386508127427 * var_x13); - const double var_x18 = pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 6); - const double var_x19 = 0.00400016 + 0.0060002399999999996 * var_x18; - const double var_x20 = 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_x17 = var_x16 * (CHASTE_CONST(0.016955889611951675) * var_x9 + CHASTE_CONST(0.02072386508127427) * var_x13); + const double var_x18 = CHASTE_MATH::Pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 6); + const double var_x19 = CHASTE_CONST(0.00400016) + CHASTE_CONST(0.0060002399999999996) * var_x18; + const double var_x20 = CHASTE_CONST(0.58999999999999997) * CHASTE_MATH::Pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + CHASTE_CONST(0.40999999999999998) * CHASTE_MATH::Pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2, 3); const double var_x21 = var_x20 * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r; const double var_x22 = var_x19 * var_x21; const double var_x23 = NV_Ith_S(mParameters, 7) * var_chaste_interface__delayed_rectifier_K_current_pi_gate__p_i; const double var_x24 = var_x23 * var_chaste_interface__delayed_rectifier_K_current_pa_gate__p_a; - const double var_x25 = pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3); + const double var_x25 = CHASTE_MATH::Pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3); const double var_x26 = 1 / var_chaste_interface__intracellular_ion_concentrations__K_i; - const double var_x27 = log(var_x26 * var_chaste_interface__cleft_space_ion_concentrations__K_c); - const double var_x28 = exp(0.18895643383558949 + 0.052487898287663745 * var_chaste_interface__membrane__V - 1.393 * var_x27); + const double var_x27 = CHASTE_MATH::Log(var_x26 * var_chaste_interface__cleft_space_ion_concentrations__K_c); + const double var_x28 = CHASTE_MATH::Exp(CHASTE_CONST(0.18895643383558949) + CHASTE_CONST(0.052487898287663745) * var_chaste_interface__membrane__V - CHASTE_CONST(1.393) * var_x27); const double var_x29 = 1 + var_x28; const double var_x30 = 1 / var_x29; - const double var_x31 = 0.58999999999999997 + var_chaste_interface__cleft_space_ion_concentrations__K_c; - const double var_x32 = pow(var_x31, (-3)); + const double var_x31 = CHASTE_CONST(0.58999999999999997) + var_chaste_interface__cleft_space_ion_concentrations__K_c; + const double var_x32 = CHASTE_MATH::Pow(var_x31, (-3)); const double var_x33 = var_x32 * NV_Ith_S(mParameters, 6); const double var_x34 = var_x30 * var_x33; const double var_x35 = var_x25 * var_x34; - const double var_x36 = (-90 + 1.8 * var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 3); - const double var_x37 = 0.083333333333333329 * var_x1 / pow(var_x2, 2); - const double var_x38 = exp(-1.5 - 0.025000000000000001 * var_chaste_interface__membrane__V); + const double var_x36 = (-90 + CHASTE_CONST(1.8) * var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 3); + const double var_x37 = CHASTE_CONST(0.083333333333333329) * var_x1 / CHASTE_MATH::Pow(var_x2, 2); + const double var_x38 = CHASTE_MATH::Exp(-CHASTE_CONST(1.5) - CHASTE_CONST(0.025000000000000001) * var_chaste_interface__membrane__V); const double var_x39 = 1 + var_chaste_interface__cleft_space_ion_concentrations__K_c; const double var_x40 = 1 / var_x39; - const double var_x41 = pow((1 + 0.66666666666666663 * var_x38), (-2)); - const double var_x42 = pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 1.5); - const double var_x43 = 1 / (36.4828726939094 + var_x42); + const double var_x41 = CHASTE_MATH::Pow((1 + CHASTE_CONST(0.66666666666666663) * var_x38), (-2)); + const double var_x42 = CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, CHASTE_CONST(1.5)); + const double var_x43 = 1 / (CHASTE_CONST(36.4828726939094) + var_x42); const double var_x44 = var_x42 * var_x43 * var_chaste_interface__cleft_space_ion_concentrations__K_c; const double var_x45 = var_x38 * var_x40 * var_x41 * var_x44; - const double var_x46 = -26.53945091048535 * var_x27 + var_chaste_interface__membrane__V; - const double var_x47 = pow(var_x29, (-2)); + const double var_x46 = -CHASTE_CONST(26.53945091048535) * var_x27 + var_chaste_interface__membrane__V; + const double var_x47 = CHASTE_MATH::Pow(var_x29, (-2)); const double var_x48 = var_x28 * var_x33 * var_x46 * var_x47; const double var_x49 = var_x25 * var_x48; - const double var_x50 = 1 / (-1 + exp(9.9999999999999995e-8)); + const double var_x50 = 1 / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))); const double var_x51 = 1 / var_chaste_interface__intracellular_ion_concentrations__Na_i; const double var_x52 = var_x51 * NV_Ith_S(mParameters, 2); - const double var_x53 = log(var_x52); - const double var_x54 = exp(9.9999999999999995e-8 - var_x53); + const double var_x53 = CHASTE_MATH::Log(var_x52); + const double var_x54 = CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8) - var_x53); const double var_x55 = var_x50 * (-1 + var_x54); - const double var_x56 = 0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1; - const double var_x57 = pow(var_chaste_interface__sodium_current_m_gate__m, 3); + const double var_x56 = CHASTE_CONST(0.36499999999999999) * var_chaste_interface__sodium_current_h2_gate__h2 + CHASTE_CONST(0.63500000000000001) * var_chaste_interface__sodium_current_h1_gate__h1; + const double var_x57 = CHASTE_MATH::Pow(var_chaste_interface__sodium_current_m_gate__m, 3); const double var_x58 = NV_Ith_S(mParameters, 2) * NV_Ith_S(mParameters, 5); const double var_x59 = var_x57 * var_x58; const double var_x60 = var_x56 * var_x59; - const double var_x61 = 1817.803245542646 * var_x60; - const double var_x62 = 1 / (-1 + exp(-9.9999999999999995e-8)); - const double var_x63 = exp(-9.9999999999999995e-8 - var_x53); + const double var_x61 = CHASTE_CONST(1817.803245542646) * var_x60; + const double var_x62 = 1 / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8))); + const double var_x63 = CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8) - var_x53); const double var_x64 = var_x62 * (-1 + var_x63); - const double var_x65 = (var_chaste_interface__membrane__V >= -2.6539450910485349e-6) && (var_chaste_interface__membrane__V <= 2.6539450910485349e-6); - const double var_x66 = 0.037679754693225945 * var_chaste_interface__membrane__V; - const double var_x67 = exp(var_x66); + const double var_x65 = (var_chaste_interface__membrane__V >= -CHASTE_CONST(2.6539450910485349e-6)) && (var_chaste_interface__membrane__V <= CHASTE_CONST(2.6539450910485349e-6)); + const double var_x66 = CHASTE_CONST(0.037679754693225945) * var_chaste_interface__membrane__V; + const double var_x67 = CHASTE_MATH::Exp(var_x66); const double var_x68 = -1 + var_x67; const double var_x69 = 1 / var_x68; - const double var_x70 = exp(var_x66 - var_x53); + const double var_x70 = CHASTE_MATH::Exp(var_x66 - var_x53); const double var_x71 = -1 + var_x70; const double var_x72 = var_x69 * var_x71; - const double var_x73 = 136.98876074519373 * var_x60 * var_chaste_interface__membrane__V; + const double var_x73 = CHASTE_CONST(136.98876074519373) * var_x60 * var_chaste_interface__membrane__V; const double var_x74 = var_x69 * var_x70; - const double var_x75 = ((var_x65) ? (var_x55 * var_x61 + var_x61 * var_x64) : (var_x73 * var_x74 + 3635.606491085292 * var_x60 * var_x72 - var_x67 * var_x71 * var_x73 / pow(var_x68, 2))); + const double var_x75 = ((var_x65) ? (var_x55 * var_x61 + var_x61 * var_x64) : (var_x73 * var_x74 + CHASTE_CONST(3635.606491085292) * var_x60 * var_x72 - var_x67 * var_x71 * var_x73 / CHASTE_MATH::Pow(var_x68, 2))); const double var_x76 = 1 / NV_Ith_S(mParameters, 4); - const double var_x77 = 0.001 * var_x76; - const double var_x78 = 0.00020000000000000001 + var_chaste_interface__intracellular_ion_concentrations__Ca_i; + const double var_x77 = CHASTE_CONST(0.001) * var_x76; + const double var_x78 = CHASTE_CONST(0.00020000000000000001) + var_chaste_interface__intracellular_ion_concentrations__Ca_i; const double var_x79 = 1 / var_x78; const double var_x80 = 1 / var_chaste_interface__intracellular_ion_concentrations__Ca_i; - const double var_x81 = pow(var_x78, (-2)); + const double var_x81 = CHASTE_MATH::Pow(var_x78, (-2)); const double var_x82 = var_x10 * var_x11 * var_x16; - const double var_x83 = pow(var_x14, (-2)); + const double var_x83 = CHASTE_MATH::Pow(var_x14, (-2)); const double var_x84 = var_x9 - var_x13; const double var_x85 = var_x83 * var_x84 * NV_Ith_S(mParameters, 9); const double var_x86 = var_x11 * var_x85; - const double var_x87 = 0.5 + 188398.77346612973 * var_chaste_interface__membrane__V; - const double var_x88 = var_x56 * var_x58 * pow(var_chaste_interface__sodium_current_m_gate__m, 2); - const double var_x89 = 0.028946099999999999 * var_x88; + const double var_x87 = CHASTE_CONST(0.5) + CHASTE_CONST(188398.77346612973) * var_chaste_interface__membrane__V; + const double var_x88 = var_x56 * var_x58 * CHASTE_MATH::Pow(var_chaste_interface__sodium_current_m_gate__m, 2); + const double var_x89 = CHASTE_CONST(0.028946099999999999) * var_x88; const double var_x90 = var_x64 * var_x89; const double var_x91 = var_x72 * var_chaste_interface__membrane__V; - const double var_x92 = ((var_x65) ? (-var_x90 + var_x87 * (var_x90 + var_x55 * var_x89)) : (10906.819473255875 * var_x88 * var_x91)); - const double var_x93 = 0.0061269244999999995 * var_x59; + const double var_x92 = ((var_x65) ? (-var_x90 + var_x87 * (var_x90 + var_x55 * var_x89)) : (CHASTE_CONST(10906.819473255875) * var_x88 * var_x91)); + const double var_x93 = CHASTE_CONST(0.0061269244999999995) * var_x59; const double var_x94 = var_x64 * var_x93; const double var_x95 = var_x59 * var_x91; - const double var_x96 = ((var_x65) ? (-var_x94 + var_x87 * (var_x94 + var_x55 * var_x93)) : (2308.6101218391605 * var_x95)); - const double var_x97 = 0.0035217754999999997 * var_x59; + const double var_x96 = ((var_x65) ? (-var_x94 + var_x87 * (var_x94 + var_x55 * var_x93)) : (CHASTE_CONST(2308.6101218391605) * var_x95)); + const double var_x97 = CHASTE_CONST(0.0035217754999999997) * var_x59; const double var_x98 = var_x64 * var_x97; - const double var_x99 = ((var_x65) ? (-var_x98 + var_x87 * (var_x98 + var_x55 * var_x97)) : (1326.9963692461315 * var_x95)); - const double var_x100 = 0.001 * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L; + const double var_x99 = ((var_x65) ? (-var_x98 + var_x87 * (var_x98 + var_x55 * var_x97)) : (CHASTE_CONST(1326.9963692461315) * var_x95)); + const double var_x100 = CHASTE_CONST(0.001) * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L; const double var_x101 = var_x36 * var_x76; - const double var_x102 = 0.001 * var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L; - const double var_x103 = 0.001 * var_chaste_interface__T_type_Ca_channel_f_T_gate__f_T; - const double var_x104 = var_x76 * (-0.22800000000000001 + 0.0060000000000000001 * var_chaste_interface__membrane__V); - const double var_x105 = 0.001 * var_chaste_interface__T_type_Ca_channel_d_T_gate__d_T; + const double var_x102 = CHASTE_CONST(0.001) * var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L; + const double var_x103 = CHASTE_CONST(0.001) * var_chaste_interface__T_type_Ca_channel_f_T_gate__f_T; + const double var_x104 = var_x76 * (-CHASTE_CONST(0.22800000000000001) + CHASTE_CONST(0.0060000000000000001) * var_chaste_interface__membrane__V); + const double var_x105 = CHASTE_CONST(0.001) * var_chaste_interface__T_type_Ca_channel_d_T_gate__d_T; const double var_x106 = var_x20 * var_x46; - const double var_x107 = pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 2); + const double var_x107 = CHASTE_MATH::Pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 2); const double var_x108 = var_x46 * var_x76; const double var_x109 = var_x108 * var_x19 * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r; - const double var_x110 = pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2, 2); - const double var_x111 = var_x21 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 5); - const double var_x112 = 0.001 * var_chaste_interface__delayed_rectifier_K_current_pi_gate__p_i; + const double var_x110 = CHASTE_MATH::Pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2, 2); + const double var_x111 = var_x21 * CHASTE_MATH::Pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 5); + const double var_x112 = CHASTE_CONST(0.001) * var_chaste_interface__delayed_rectifier_K_current_pi_gate__p_i; const double var_x113 = var_x108 * NV_Ith_S(mParameters, 7); - const double var_x114 = 0.001 * var_chaste_interface__delayed_rectifier_K_current_pa_gate__p_a; - const double var_x115 = pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 2); + const double var_x114 = CHASTE_CONST(0.001) * var_chaste_interface__delayed_rectifier_K_current_pa_gate__p_a; + const double var_x115 = CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 2); const double var_x116 = var_x115 * NV_Ith_S(mParameters, 1); const double var_x117 = var_x116 * var_x16 * var_x7; - const double var_x118 = 1 / (1.5 + var_x38); + const double var_x118 = 1 / (CHASTE_CONST(1.5) + var_x38); const double var_x119 = var_x118 * var_x40; const double var_x120 = var_x119 * var_x43; - const double var_x121 = var_x120 * sqrt(var_chaste_interface__intracellular_ion_concentrations__Na_i) * var_chaste_interface__cleft_space_ion_concentrations__K_c; + const double var_x121 = var_x120 * CHASTE_MATH::Sqrt(var_chaste_interface__intracellular_ion_concentrations__Na_i) * var_chaste_interface__cleft_space_ion_concentrations__K_c; const double var_x122 = var_x116 * var_x85; - const double var_x123 = pow((1 + 0.027410122234342148 * var_x42), (-2)); - const double var_x124 = pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 2); + const double var_x123 = CHASTE_MATH::Pow((1 + CHASTE_CONST(0.027410122234342148) * var_x42), (-2)); + const double var_x124 = CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 2); const double var_x125 = var_x119 * var_x123 * var_x124 * var_chaste_interface__cleft_space_ion_concentrations__K_c; const double var_x126 = var_x52 * var_x56 * var_x57 * NV_Ith_S(mParameters, 5); - const double var_x127 = 0.0096486999999999996 * var_x126; + const double var_x127 = CHASTE_CONST(0.0096486999999999996) * var_x126; const double var_x128 = var_x127 * var_x62 * var_x63; - const double var_x129 = ((var_x65) ? (-var_x128 + var_x87 * (var_x128 + var_x127 * var_x50 * var_x54)) : (3635.606491085292 * var_x126 * var_x74 * var_chaste_interface__membrane__V)); - const double var_x130 = 26.53945091048535 * var_x5; - const double var_x131 = 26.53945091048535 * var_x26; + const double var_x129 = ((var_x65) ? (-var_x128 + var_x87 * (var_x128 + var_x127 * var_x50 * var_x54)) : (CHASTE_CONST(3635.606491085292) * var_x126 * var_x74 * var_chaste_interface__membrane__V)); + const double var_x130 = CHASTE_CONST(26.53945091048535) * var_x5; + const double var_x131 = CHASTE_CONST(26.53945091048535) * var_x26; const double var_x132 = var_x26 * var_x35; const double var_x133 = var_x26 * var_x49; const double var_x134 = 1 / var_chaste_interface__cleft_space_ion_concentrations__K_c; - const double var_x135 = 26.53945091048535 * var_x134; - const double var_x136 = pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 2); + const double var_x135 = CHASTE_CONST(26.53945091048535) * var_x134; + const double var_x136 = CHASTE_MATH::Pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 2); const double var_x137 = var_x136 * var_x34; - const double var_x138 = var_x25 * var_x30 * NV_Ith_S(mParameters, 6) / pow(var_x31, 4); - const double var_x139 = pow(var_x39, (-2)); + const double var_x138 = var_x25 * var_x30 * NV_Ith_S(mParameters, 6) / CHASTE_MATH::Pow(var_x31, 4); + const double var_x139 = CHASTE_MATH::Pow(var_x39, (-2)); const double var_x140 = var_x118 * var_x139 * var_x44; - const double var_x141 = (0.079263098651550096 - 0.001585261973031002 * var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 3); - const double var_x142 = 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_x143 = 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_x144 = 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_x145 = pow(var_chaste_interface__Ca_handling_by_the_SR__F2, 2); - const double var_x146 = 0.25 + var_chaste_interface__Ca_handling_by_the_SR__F2; - const double var_x147 = pow(var_x146, (-2)); + const double var_x141 = (CHASTE_CONST(0.079263098651550096) - CHASTE_CONST(0.001585261973031002) * var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 3); + const double var_x142 = 1 / (CHASTE_CONST(1.3999999999999999) + CHASTE_CONST(0.80000000000000004) * var_chaste_interface__Ca_handling_by_the_SR__Ca_up + CHASTE_CONST(3333.3333333333335) * var_chaste_interface__intracellular_ion_concentrations__Ca_i); + const double var_x143 = CHASTE_MATH::Pow((CHASTE_CONST(0.00041999999999999996) + CHASTE_CONST(0.00023999999999999998) * var_chaste_interface__Ca_handling_by_the_SR__Ca_up + var_chaste_interface__intracellular_ion_concentrations__Ca_i), (-2)); + const double var_x144 = CHASTE_CONST(3333.3333333333335) * var_chaste_interface__intracellular_ion_concentrations__Ca_i - CHASTE_CONST(0.32000000000000006) * var_chaste_interface__Ca_handling_by_the_SR__Ca_up; + const double var_x145 = CHASTE_MATH::Pow(var_chaste_interface__Ca_handling_by_the_SR__F2, 2); + const double var_x146 = CHASTE_CONST(0.25) + var_chaste_interface__Ca_handling_by_the_SR__F2; + const double var_x147 = CHASTE_MATH::Pow(var_x146, (-2)); const double var_x148 = var_x147 * NV_Ith_S(mParameters, 0); const double var_x149 = var_x145 * var_x148; - const double var_x150 = 0.00088070109612833447 * var_x149; - const double var_x151 = 0.00020079984991726025 - 5.2842065767700066e-6 * var_chaste_interface__membrane__V; + const double var_x150 = CHASTE_CONST(0.00088070109612833447) * var_x149; + const double var_x151 = CHASTE_CONST(0.00020079984991726025) - CHASTE_CONST(5.2842065767700066e-6) * var_chaste_interface__membrane__V; const double var_x152 = 32 * var_chaste_interface__intracellular_ion_concentrations__Ca_i; const double var_x153 = var_x143 * var_x144; 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_x145 * NV_Ith_S(mParameters, 0) / pow(var_x146, 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_x155 = var_x145 * NV_Ith_S(mParameters, 0) / CHASTE_MATH::Pow(var_x146, 3); + const double var_x156 = 1 / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999708629e-8))); + const double var_x157 = 1 / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999708629e-8))); + const double var_x158 = (var_chaste_interface__membrane__V >= -CHASTE_CONST(44.400001267299999)) && (var_chaste_interface__membrane__V <= -CHASTE_CONST(44.399998732699999)); + const double var_x159 = CHASTE_MATH::Exp(-CHASTE_CONST(3.5035114021936398) - CHASTE_CONST(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 / (1 + 323.30000000000001 * var_x164); - const double var_x166 = exp(-12.010771992818672 - 0.17953321364452424 * var_chaste_interface__membrane__V); - const double var_x167 = 1 / (1491 * var_x165 + 44.899999999999999 * var_x166); - const double var_x168 = 8.0610412926391373 * var_x166; - const double var_x169 = -var_x167 * var_x168 + 2.019719479407183e-5 * var_x166 * (var_x168 - 0.35750508923240704 * var_x164 / pow((0.0030931023816888337 + var_x164), 2)) / pow((var_x165 + 0.030114017437961098 * var_x166), 2); - const double var_x170 = exp(6.666666666666667 + 0.16666666666666666 * var_chaste_interface__membrane__V); + const double var_x162 = CHASTE_CONST(44.399999999999999) + var_chaste_interface__membrane__V; + const double var_x163 = CHASTE_CONST(0.00058295799999830145) * var_x156; + const double var_x164 = CHASTE_MATH::Exp(-CHASTE_CONST(7.333333333333333) - CHASTE_CONST(0.077519379844961239) * var_chaste_interface__membrane__V); + const double var_x165 = 1 / (1 + CHASTE_CONST(323.30000000000001) * var_x164); + const double var_x166 = CHASTE_MATH::Exp(-CHASTE_CONST(12.010771992818672) - CHASTE_CONST(0.17953321364452424) * var_chaste_interface__membrane__V); + const double var_x167 = 1 / (1491 * var_x165 + CHASTE_CONST(44.899999999999999) * var_x166); + const double var_x168 = CHASTE_CONST(8.0610412926391373) * var_x166; + const double var_x169 = -var_x167 * var_x168 + CHASTE_CONST(2.019719479407183e-5) * var_x166 * (var_x168 - CHASTE_CONST(0.35750508923240704) * var_x164 / CHASTE_MATH::Pow((CHASTE_CONST(0.0030931023816888337) + var_x164), 2)) / CHASTE_MATH::Pow((var_x165 + CHASTE_CONST(0.030114017437961098) * var_x166), 2); + const double var_x170 = CHASTE_MATH::Exp(CHASTE_CONST(6.666666666666667) + CHASTE_CONST(0.16666666666666666) * var_chaste_interface__membrane__V); const double var_x171 = 1 + var_x170; const double var_x172 = 1 / var_x171; - const double var_x173 = 0.001 / (0.00014999999999999999 + 0.029999999999999999 * var_x172); - const double var_x174 = -44.899999999999999 * var_x166 * var_x167; - const double var_x175 = exp(30 + 0.5 * var_chaste_interface__membrane__V); + const double var_x173 = CHASTE_CONST(0.001) / (CHASTE_CONST(0.00014999999999999999) + CHASTE_CONST(0.029999999999999999) * var_x172); + const double var_x174 = -CHASTE_CONST(44.899999999999999) * var_x166 * var_x167; + const double var_x175 = CHASTE_MATH::Exp(30 + CHASTE_CONST(0.5) * var_chaste_interface__membrane__V); const double var_x176 = 1 + var_x175; const double var_x177 = 1 / var_x176; - const double var_x178 = 0.001 / (0.00044999999999999999 + 0.12 * var_x177); - const double var_x179 = 1 / (-1 + exp(1.0000000000010001e-7)); - const double var_x180 = 1 / (-1 + exp(-1.0000000000010001e-7)); - const double var_x181 = (var_chaste_interface__membrane__V >= -5.0000002500000003) && (var_chaste_interface__membrane__V <= -4.9999997499999997); - const double var_x182 = 0.40000000000000002 * var_chaste_interface__membrane__V; - const double var_x183 = exp(2 + var_x182); + const double var_x178 = CHASTE_CONST(0.001) / (CHASTE_CONST(0.00044999999999999999) + CHASTE_CONST(0.12) * var_x177); + const double var_x179 = 1 / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(1.0000000000010001e-7))); + const double var_x180 = 1 / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(1.0000000000010001e-7))); + const double var_x181 = (var_chaste_interface__membrane__V >= -CHASTE_CONST(5.0000002500000003)) && (var_chaste_interface__membrane__V <= -CHASTE_CONST(4.9999997499999997)); + const double var_x182 = CHASTE_CONST(0.40000000000000002) * var_chaste_interface__membrane__V; + const double var_x183 = CHASTE_MATH::Exp(2 + var_x182); const double var_x184 = -1 + var_x183; const double var_x185 = 1 / var_x184; const double var_x186 = 5 + var_chaste_interface__membrane__V; - const double var_x187 = 1 / (-1 + exp(-1.000000000139778e-7)); - const double var_x188 = 1 / (-1 + exp(9.9999999991773334e-8)); - const double var_x189 = 8.3600000009281459 * var_x187 + 8.359999999071853 * var_x188; - const double var_x190 = 1 / (-1 + exp(-9.9999999998742257e-8)); - const double var_x191 = 1 / (-1 + exp(1.0000000000162864e-7)); - const double var_x192 = 24.999999999639201 * var_x190 + 25.000000000360799 * var_x191; - const double var_x193 = var_chaste_interface__membrane__V >= -45.000000249999999; - const double var_x194 = var_chaste_interface__membrane__V >= -10.000000480800001; - const double var_x195 = var_chaste_interface__membrane__V <= -44.999999750000001; - const double var_x196 = var_chaste_interface__membrane__V <= -9.9999995191999993; + const double var_x187 = 1 / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(1.000000000139778e-7))); + const double var_x188 = 1 / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999991773334e-8))); + const double var_x189 = CHASTE_CONST(8.3600000009281459) * var_x187 + CHASTE_CONST(8.359999999071853) * var_x188; + const double var_x190 = 1 / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999998742257e-8))); + const double var_x191 = 1 / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(1.0000000000162864e-7))); + const double var_x192 = CHASTE_CONST(24.999999999639201) * var_x190 + CHASTE_CONST(25.000000000360799) * var_x191; + const double var_x193 = var_chaste_interface__membrane__V >= -CHASTE_CONST(45.000000249999999); + const double var_x194 = var_chaste_interface__membrane__V >= -CHASTE_CONST(10.000000480800001); + const double var_x195 = var_chaste_interface__membrane__V <= -CHASTE_CONST(44.999999750000001); + const double var_x196 = var_chaste_interface__membrane__V <= -CHASTE_CONST(9.9999995191999993); const double var_x197 = (var_x193) && (var_x194) && (var_x195) && (var_x196); - const double var_x198 = exp(-2.0798668885191347 - 0.20798668885191349 * var_chaste_interface__membrane__V); + const double var_x198 = CHASTE_MATH::Exp(-CHASTE_CONST(2.0798668885191347) - CHASTE_CONST(0.20798668885191349) * var_chaste_interface__membrane__V); const double var_x199 = -1 + var_x198; const double var_x200 = 50 / var_x199; const double var_x201 = 10 + var_chaste_interface__membrane__V; - const double var_x202 = var_x200 + 10.399334442595674 * var_x198 * var_x201 / pow(var_x199, 2); + const double var_x202 = var_x200 + CHASTE_CONST(10.399334442595674) * var_x198 * var_x201 / CHASTE_MATH::Pow(var_x199, 2); const double var_x203 = (var_x193) && (var_x195); - const double var_x204 = exp(-18 - var_x182); + const double var_x204 = CHASTE_MATH::Exp(-18 - var_x182); const double var_x205 = -1 + var_x204; - const double var_x206 = 16.719999999999999 / var_x205; + const double var_x206 = CHASTE_CONST(16.719999999999999) / var_x205; const double var_x207 = 45 + var_chaste_interface__membrane__V; - const double var_x208 = var_x206 + 6.6879999999999997 * var_x204 * var_x207 / pow(var_x205, 2); + const double var_x208 = var_x206 + CHASTE_CONST(6.6879999999999997) * var_x204 * var_x207 / CHASTE_MATH::Pow(var_x205, 2); const double var_x209 = (var_x194) && (var_x196); - const double var_x210 = exp(-1.6590909090909092 - 0.15151515151515152 * var_chaste_interface__membrane__V); + const double var_x210 = CHASTE_MATH::Exp(-CHASTE_CONST(1.6590909090909092) - CHASTE_CONST(0.15151515151515152) * var_chaste_interface__membrane__V); const double var_x211 = 1 + var_x210; - const double var_x212 = 1.1200000000011203e-6 * var_x180; - const double var_x213 = ((var_x181) ? (-var_x212 + 1999999.9999979998 * (5.0000002500000003 + var_chaste_interface__membrane__V) * (var_x212 + 1.1200000000011203e-6 * var_x179)) : (4.4800000000000004 * var_x185 * var_x186)); - const double var_x214 = 4.1799999996561256e-6 * var_x188; - const double var_x215 = var_x214 + 1999999.9999424887 * (45.000000249999999 + var_chaste_interface__membrane__V) * (-var_x214 - 4.1800000005842713e-6 * var_x187); - const double var_x216 = 2.4040000000391526e-5 * var_x191; - const double var_x217 = var_x216 + 1039933.4442576389 * (10.000000480800001 + var_chaste_interface__membrane__V) * (-var_x216 - 2.4039999999697637e-5 * var_x190); + const double var_x212 = CHASTE_CONST(1.1200000000011203e-6) * var_x180; + const double var_x213 = ((var_x181) ? (-var_x212 + CHASTE_CONST(1999999.9999979998) * (CHASTE_CONST(5.0000002500000003) + var_chaste_interface__membrane__V) * (var_x212 + CHASTE_CONST(1.1200000000011203e-6) * var_x179)) : (CHASTE_CONST(4.4800000000000004) * var_x185 * var_x186)); + const double var_x214 = CHASTE_CONST(4.1799999996561256e-6) * var_x188; + const double var_x215 = var_x214 + CHASTE_CONST(1999999.9999424887) * (CHASTE_CONST(45.000000249999999) + var_chaste_interface__membrane__V) * (-var_x214 - CHASTE_CONST(4.1800000005842713e-6) * var_x187); + const double var_x216 = CHASTE_CONST(2.4040000000391526e-5) * var_x191; + const double var_x217 = var_x216 + CHASTE_CONST(1039933.4442576389) * (CHASTE_CONST(10.000000480800001) + var_chaste_interface__membrane__V) * (-var_x216 - CHASTE_CONST(2.4039999999697637e-5) * var_x190); const double var_x218 = var_x200 * var_x201; const double var_x219 = var_x206 * var_x207; const double var_x220 = ((var_x197) ? (var_x215 + var_x217) : ((var_x203) ? (var_x215 - var_x218) : ((var_x209) ? (var_x217 - var_x219) : (-var_x218 - var_x219)))); - const double var_x221 = 1 / (-1 + exp(1.0000000000287557e-7)); - const double var_x222 = 1 / (-1 + exp(-1.0000000000287557e-7)); - const double var_x223 = (var_chaste_interface__membrane__V >= -18.000000400000001) && (var_chaste_interface__membrane__V <= -17.999999599999999); - const double var_x224 = 4.5 + 0.25 * var_chaste_interface__membrane__V; - const double var_x225 = exp(var_x224); + const double var_x221 = 1 / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(1.0000000000287557e-7))); + const double var_x222 = 1 / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(1.0000000000287557e-7))); + const double var_x223 = (var_chaste_interface__membrane__V >= -CHASTE_CONST(18.000000400000001)) && (var_chaste_interface__membrane__V <= -CHASTE_CONST(17.999999599999999)); + const double var_x224 = CHASTE_CONST(4.5) + CHASTE_CONST(0.25) * var_chaste_interface__membrane__V; + const double var_x225 = CHASTE_MATH::Exp(var_x224); const double var_x226 = -1 + var_x225; const double var_x227 = 1 / var_x226; const double var_x228 = 18 + var_chaste_interface__membrane__V; - const double var_x229 = ((var_x223) ? (4.2450000000000001 * var_x221 + 4.2450000000000001 * var_x222) : (8.4900000000000002 * var_x227 - 2.1225000000000001 * var_x225 * var_x228 / pow(var_x226, 2))); - const double var_x230 = exp(-var_x224); + const double var_x229 = ((var_x223) ? (CHASTE_CONST(4.2450000000000001) * var_x221 + CHASTE_CONST(4.2450000000000001) * var_x222) : (CHASTE_CONST(8.4900000000000002) * var_x227 - CHASTE_CONST(2.1225000000000001) * var_x225 * var_x228 / CHASTE_MATH::Pow(var_x226, 2))); + const double var_x230 = CHASTE_MATH::Exp(-var_x224); const double var_x231 = 1 + var_x230; - const double var_x232 = 16.980499999999999 * var_x230 / pow(var_x231, 2); + const double var_x232 = CHASTE_CONST(16.980499999999999) * var_x230 / CHASTE_MATH::Pow(var_x231, 2); const double var_x233 = 1 / var_x231; - const double var_x234 = 67.921999999999997 * var_x233; - const double var_x235 = 3.3960000000976542e-6 * var_x222; - const double var_x236 = ((var_x223) ? (-var_x235 + 1249999.9999640554 * (18.000000400000001 + var_chaste_interface__membrane__V) * (var_x235 + 3.3960000000976542e-6 * var_x221)) : (8.4900000000000002 * var_x227 * var_x228)); + const double var_x234 = CHASTE_CONST(67.921999999999997) * var_x233; + const double var_x235 = CHASTE_CONST(3.3960000000976542e-6) * var_x222; + const double var_x236 = ((var_x223) ? (-var_x235 + CHASTE_CONST(1249999.9999640554) * (CHASTE_CONST(18.000000400000001) + var_chaste_interface__membrane__V) * (var_x235 + CHASTE_CONST(3.3960000000976542e-6) * var_x221)) : (CHASTE_CONST(8.4900000000000002) * var_x227 * var_x228)); const double var_x237 = 1 / (var_x234 + var_x236); - const double var_x238 = exp(-3.7704918032786887 - 0.16393442622950821 * var_chaste_interface__membrane__V); + const double var_x238 = CHASTE_MATH::Exp(-CHASTE_CONST(3.7704918032786887) - CHASTE_CONST(0.16393442622950821) * var_chaste_interface__membrane__V); const double var_x239 = 1 + var_x238; - const double var_x240 = 0.77666666666666673 + 0.033333333333333333 * var_chaste_interface__membrane__V; - const double var_x241 = exp(-var_x240); - const double var_x242 = exp(var_x240); - const double var_x243 = exp(4.876462938881664 + 0.065019505851755519 * var_chaste_interface__membrane__V); - const double var_x244 = exp(-0.9003601440576231 - 0.012004801920768308 * var_chaste_interface__membrane__V); - const double var_x245 = 9.6370000000000005 * var_x243 + 9.6370000000000005 * var_x244; + const double var_x240 = CHASTE_CONST(0.77666666666666673) + CHASTE_CONST(0.033333333333333333) * var_chaste_interface__membrane__V; + const double var_x241 = CHASTE_MATH::Exp(-var_x240); + const double var_x242 = CHASTE_MATH::Exp(var_x240); + const double var_x243 = CHASTE_MATH::Exp(CHASTE_CONST(4.876462938881664) + CHASTE_CONST(0.065019505851755519) * var_chaste_interface__membrane__V); + const double var_x244 = CHASTE_MATH::Exp(-CHASTE_CONST(0.9003601440576231) - CHASTE_CONST(0.012004801920768308) * var_chaste_interface__membrane__V); + const double var_x245 = CHASTE_CONST(9.6370000000000005) * var_x243 + CHASTE_CONST(9.6370000000000005) * var_x244; const double var_x246 = 1 / var_x245; - const double var_x247 = 0.11569027611044419 * var_x244 - 0.62659297789336799 * var_x243; - const double var_x248 = exp(-2.6628794603230959 - 0.17752529735487307 * var_chaste_interface__membrane__V); + const double var_x247 = CHASTE_CONST(0.11569027611044419) * var_x244 - CHASTE_CONST(0.62659297789336799) * var_x243; + const double var_x248 = CHASTE_MATH::Exp(-CHASTE_CONST(2.6628794603230959) - CHASTE_CONST(0.17752529735487307) * var_chaste_interface__membrane__V); const double var_x249 = 1 + var_x248; - const double var_x250 = exp(-0.1388888888888889 * var_chaste_interface__membrane__V); - const double var_x251 = exp(var_x0); - const double var_x252 = 0.00040000000000000002 + 1 / (8.0109999999999992 * var_x250 + 386.60000000000002 * var_x251); + const double var_x250 = CHASTE_MATH::Exp(-CHASTE_CONST(0.1388888888888889) * var_chaste_interface__membrane__V); + const double var_x251 = CHASTE_MATH::Exp(var_x0); + const double var_x252 = CHASTE_CONST(0.00040000000000000002) + 1 / (CHASTE_CONST(8.0109999999999992) * var_x250 + CHASTE_CONST(386.60000000000002) * var_x251); const double var_x253 = 1 / var_x252; - const double var_x254 = exp(327.99999999999994 + 10 * var_chaste_interface__membrane__V); + const double var_x254 = CHASTE_MATH::Exp(CHASTE_CONST(327.99999999999994) + 10 * 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.020400000000000001 + 0.54659999999999997 * var_x256); - const double var_x258 = exp(4.0070821529745047 + 0.14164305949008499 * var_chaste_interface__membrane__V); + const double var_x257 = 1 / (CHASTE_CONST(0.020400000000000001) + CHASTE_CONST(0.54659999999999997) * var_x256); + const double var_x258 = CHASTE_MATH::Exp(CHASTE_CONST(4.0070821529745047) + CHASTE_CONST(0.14164305949008499) * var_chaste_interface__membrane__V); const double var_x259 = 1 + var_x258; - const double var_x260 = 0.000141643059490085 * var_x258 / pow(var_x259, 2); + const double var_x260 = CHASTE_CONST(0.000141643059490085) * var_x258 / CHASTE_MATH::Pow(var_x259, 2); const double var_x261 = -1 / var_x259; - const double var_x262 = var_x254 / pow(var_x255, 2); - const double var_x263 = exp(0.96921975662133131 - 0.071581961345740866 * var_chaste_interface__membrane__V); + const double var_x262 = var_x254 / CHASTE_MATH::Pow(var_x255, 2); + const double var_x263 = CHASTE_MATH::Exp(CHASTE_CONST(0.96921975662133131) - CHASTE_CONST(0.071581961345740866) * var_chaste_interface__membrane__V); const double var_x264 = 1 + var_x263; const double var_x265 = 1 / var_x264; - const double var_x266 = 1 / (5.75 * var_x256 + 0.45000000000000001 * var_x265); - const double var_x267 = exp(46 + 2 * var_chaste_interface__membrane__V); + const double var_x266 = 1 / (CHASTE_CONST(5.75) * var_x256 + CHASTE_CONST(0.45000000000000001) * var_x265); + const double var_x267 = CHASTE_MATH::Exp(46 + 2 * var_chaste_interface__membrane__V); const double var_x268 = 1 + var_x267; const double var_x269 = 1 / var_x268; - const double var_x270 = 1 / (0.5 + 7.5 * var_x269); - const double var_x271 = exp(1.8506208911614319 + 0.036523009495982472 * var_chaste_interface__membrane__V); + const double var_x270 = 1 / (CHASTE_CONST(0.5) + CHASTE_CONST(7.5) * var_x269); + const double var_x271 = CHASTE_MATH::Exp(CHASTE_CONST(1.8506208911614319) + CHASTE_CONST(0.036523009495982472) * var_chaste_interface__membrane__V); const double var_x272 = 1 + var_x271; - const double var_x273 = exp(0.065217391304347824 - 0.072463768115942032 * var_chaste_interface__membrane__V); + const double var_x273 = CHASTE_MATH::Exp(CHASTE_CONST(0.065217391304347824) - CHASTE_CONST(0.072463768115942032) * var_chaste_interface__membrane__V); const double var_x274 = 1 + var_x273; - const double var_x275 = exp(-0.045816915605241454 * var_chaste_interface__membrane__V); - const double var_x276 = exp(0.014398433450440593 * var_chaste_interface__membrane__V); - const double var_x277 = 0.059999999999999998 + 1 / (0.29999999999999999 * var_x275 + 1.6599999999999999 * var_x276); + const double var_x275 = CHASTE_MATH::Exp(-CHASTE_CONST(0.045816915605241454) * var_chaste_interface__membrane__V); + const double var_x276 = CHASTE_MATH::Exp(CHASTE_CONST(0.014398433450440593) * var_chaste_interface__membrane__V); + const double var_x277 = CHASTE_CONST(0.059999999999999998) + 1 / (CHASTE_CONST(0.29999999999999999) * var_x275 + CHASTE_CONST(1.6599999999999999) * var_x276); const double var_x278 = 1 / var_x277; - const double var_x279 = exp(-0.68918918918918914 - 0.13513513513513511 * var_chaste_interface__membrane__V); + const double var_x279 = CHASTE_MATH::Exp(-CHASTE_CONST(0.68918918918918914) - CHASTE_CONST(0.13513513513513511) * var_chaste_interface__membrane__V); const double var_x280 = 1 + var_x279; - const double var_x281 = exp(-0.076769537847382163 * var_chaste_interface__membrane__V); - const double var_x282 = exp(0.03941508020968823 * var_chaste_interface__membrane__V); - const double var_x283 = exp(-0.018299935950224173 * var_chaste_interface__membrane__V); - const double var_x284 = exp(0.009420009985210585 * var_chaste_interface__membrane__V); - const double var_x285 = exp(2.539728728905752 + 0.05358970648917756 * var_chaste_interface__membrane__V); + const double var_x281 = CHASTE_MATH::Exp(-CHASTE_CONST(0.076769537847382163) * var_chaste_interface__membrane__V); + const double var_x282 = CHASTE_MATH::Exp(CHASTE_CONST(0.03941508020968823) * var_chaste_interface__membrane__V); + const double var_x283 = CHASTE_MATH::Exp(-CHASTE_CONST(0.018299935950224173) * var_chaste_interface__membrane__V); + const double var_x284 = CHASTE_MATH::Exp(CHASTE_CONST(0.009420009985210585) * var_chaste_interface__membrane__V); + const double var_x285 = CHASTE_MATH::Exp(CHASTE_CONST(2.539728728905752) + CHASTE_CONST(0.05358970648917756) * var_chaste_interface__membrane__V); const double var_x286 = 1 + var_x285; const double var_x287 = var_x120 * var_x42; - const double var_x288 = -3.290319067574035e-6 - 4.9354786013610522e-6 * var_x18; + const double var_x288 = -CHASTE_CONST(3.290319067574035e-6) - CHASTE_CONST(4.9354786013610522e-6) * var_x18; const double var_x289 = var_x46 * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r; const double var_x290 = var_x288 * var_x289; - const double var_x291 = 1.77 * var_x107; - const double var_x292 = 1.23 * var_x110; + const double var_x291 = CHASTE_CONST(1.77) * var_x107; + const double var_x292 = CHASTE_CONST(1.23) * var_x110; const double var_x293 = var_x111 * var_x46; - const double var_x294 = 0.021829942145742926 * var_x27 - 0.00082254686501890791 * var_chaste_interface__membrane__V; + const double var_x294 = CHASTE_CONST(0.021829942145742926) * var_x27 - CHASTE_CONST(0.00082254686501890791) * var_chaste_interface__membrane__V; const double var_x295 = NV_Ith_S(mParameters, 7) * var_chaste_interface__delayed_rectifier_K_current_pa_gate__p_a; - const double var_x296 = 0.021829942145742926 * var_x5; - const double var_x297 = 0.021829942145742926 * var_x24; - const double var_x298 = 0.0049352811901134472 * var_x46; + const double var_x296 = CHASTE_CONST(0.021829942145742926) * var_x5; + const double var_x297 = CHASTE_CONST(0.021829942145742926) * var_x24; + const double var_x298 = CHASTE_CONST(0.0049352811901134472) * var_x46; const double var_x299 = 200 * var_chaste_interface__intracellular_ion_concentrations__Ca_i; - const double var_x300 = 1.6583208100573134e-5 + 2.4874812150859699e-5 * var_x18; + const double var_x300 = CHASTE_CONST(1.6583208100573134e-5) + CHASTE_CONST(2.4874812150859699e-5) * var_x18; const double var_x301 = var_x21 * var_x300; const double var_x302 = var_x289 * var_x300; - const double var_x303 = 0.0041456361996952953 * var_chaste_interface__membrane__V - 0.11002290841454433 * var_x27; - const double var_x304 = 0.11002290841454433 * var_x5; - const double var_x305 = 0.11002290841454433 * var_x24; - const double var_x306 = 0.11777375567316183 * var_x149; - const double var_x307 = 0.23554751134632365 * var_x154; - const double var_x308 = exp(-1.6000000000000001 + 0.080000000000000002 * var_chaste_interface__membrane__V); - const double var_x309 = 0.019200000000000002 * var_x308 * var_chaste_interface__Ca_handling_by_the_SR__F1; - const double var_x310 = 0.00029999999999999997 + var_chaste_interface__intracellular_ion_concentrations__Ca_i; - const double var_x311 = pow(var_chaste_interface__intracellular_ion_concentrations__Ca_i, 4); - const double var_x312 = var_x311 / pow(var_x310, 5); - const double var_x313 = pow(var_x310, (-4)); - const double var_x314 = var_x313 * pow(var_chaste_interface__intracellular_ion_concentrations__Ca_i, 3); - const double var_x315 = 0.81520000000000004 * var_x312 - 0.81520000000000004 * var_x314; + const double var_x303 = CHASTE_CONST(0.0041456361996952953) * var_chaste_interface__membrane__V - CHASTE_CONST(0.11002290841454433) * var_x27; + const double var_x304 = CHASTE_CONST(0.11002290841454433) * var_x5; + const double var_x305 = CHASTE_CONST(0.11002290841454433) * var_x24; + const double var_x306 = CHASTE_CONST(0.11777375567316183) * var_x149; + const double var_x307 = CHASTE_CONST(0.23554751134632365) * var_x154; + const double var_x308 = CHASTE_MATH::Exp(-CHASTE_CONST(1.6000000000000001) + CHASTE_CONST(0.080000000000000002) * var_chaste_interface__membrane__V); + const double var_x309 = CHASTE_CONST(0.019200000000000002) * var_x308 * var_chaste_interface__Ca_handling_by_the_SR__F1; + const double var_x310 = CHASTE_CONST(0.00029999999999999997) + var_chaste_interface__intracellular_ion_concentrations__Ca_i; + const double var_x311 = CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Ca_i, 4); + const double var_x312 = var_x311 / CHASTE_MATH::Pow(var_x310, 5); + const double var_x313 = CHASTE_MATH::Pow(var_x310, (-4)); + const double var_x314 = var_x313 * CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Ca_i, 3); + const double var_x315 = CHASTE_CONST(0.81520000000000004) * var_x312 - CHASTE_CONST(0.81520000000000004) * var_x314; const double var_x316 = var_x311 * var_x313; - const double var_x317 = 0.20380000000000001 * var_x316 + 0.23999999999999999 * var_x308; - const double var_x318 = 1.3584000000000001 * var_x312 - 1.3584000000000001 * var_x314; - const double var_x319 = 0.033960000000000004 + 0.33960000000000001 * var_x316; + const double var_x317 = CHASTE_CONST(0.20380000000000001) * var_x316 + CHASTE_CONST(0.23999999999999999) * var_x308; + const double var_x318 = CHASTE_CONST(1.3584000000000001) * var_x312 - CHASTE_CONST(1.3584000000000001) * var_x314; + const double var_x319 = CHASTE_CONST(0.033960000000000004) + CHASTE_CONST(0.33960000000000001) * var_x316; // Matrix entries - IJth(rJacobian, 0, 0) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x77 * (0.0014400000000000001 + var_x17 + var_x22 + var_x24 + var_x5 + var_x75 + 2 * var_x35 + 0.0060000000000000001 * var_x6 + 0.0011450666666666667 * var_x45 - 0.10497579657532749 * var_x49 + var_x36 * var_x37 + (1.8 * var_x3 + 1.8 * var_x4) * NV_Ith_S(mParameters, 3))); - IJth(rJacobian, 1, 0) = -1.7614021922566692e-8 + 0.0017614021922566689 * var_x17 - 5.2842065767700066e-6 * var_x6 + var_x141 * var_x37 + (-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_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_x169 * var_x173 + 0.0055555555555555558 * var_x170 * (-var_x174 - var_chaste_interface__sodium_current_h1_gate__h1) / (pow(var_x171, 2) * pow((0.0050000000000000001 + var_x172), 2)); - IJth(rJacobian, 4, 0) = var_x169 * var_x178 + 0.0041666666666666666 * var_x175 * (-var_x174 - var_chaste_interface__sodium_current_h2_gate__h2) / (pow(var_x176, 2) * pow((0.0037499999999999999 + var_x177), 2)); - IJth(rJacobian, 5, 0) = (-var_x102 + 0.001 / var_x211) * (((var_x181) ? (2.2400000000000002 * var_x179 + 2.2400000000000002 * var_x180) : (4.4800000000000004 * var_x185 - 1.7920000000000003 * var_x183 * var_x186 / pow(var_x184, 2))) + ((var_x197) ? (-var_x189 - var_x192) : ((var_x203) ? (-var_x189 - var_x202) : ((var_x209) ? (-var_x192 - var_x208) : (-var_x202 - var_x208))))) + 0.00015151515151515152 * var_x210 * (var_x213 + var_x220) / pow(var_x211, 2); - IJth(rJacobian, 6, 0) = (var_x232 + var_x229) * (-var_x100 + 0.001 * var_x236 * var_x237) + (var_x234 + var_x236) * (0.001 * var_x229 * var_x237 + 2.1675996343523e-7 * var_x236 * (-var_x229 - var_x232) / pow((var_x233 + 0.014722770236447691 * var_x236), 2)); - IJth(rJacobian, 7, 0) = (-var_x105 + 0.001 / var_x239) * (22.472433333333335 * var_x242 - 22.472433333333335 * var_x241) + 0.0001639344262295082 * var_x238 * (674.173 * var_x241 + 674.173 * var_x242) / pow(var_x239, 2); - IJth(rJacobian, 8, 0) = var_x245 * (-0.00011569027611044419 * var_x244 * var_x246 + 0.00010376673238559718 * var_x244 * var_x247 / pow((var_x243 + var_x244), 2)) - var_x247 * (-var_x103 + 0.0096369999999999997 * var_x244 * var_x246); - IJth(rJacobian, 9, 0) = 0.00017752529735487306 * var_x248 * var_x253 / pow(var_x249, 2) - 6.6907730760079843e-9 * (-var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r + 1 / var_x249) * (1.1126388888888887 * var_x250 - 32.216666666666669 * var_x251) / (pow(var_x252, 2) * pow((var_x251 + 0.020721676151060523 * var_x250), 2)); - IJth(rJacobian, 10, 0) = -var_x257 * var_x260 + 0.018294914013904134 * var_x262 * (-var_x261 - var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1) / pow((0.037321624588364438 + var_x256), 2); - IJth(rJacobian, 11, 0) = -var_x260 * var_x266 + 3.0245746691871456e-5 * (-var_x261 - var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2) * (57.5 * var_x262 - 0.032211882605583393 * var_x263 / pow(var_x264, 2)) / pow((var_x256 + 0.078260869565217397 * var_x265), 2); - IJth(rJacobian, 12, 0) = -2.1922574727480476e-5 * var_x270 * var_x271 / pow(var_x272, 2) + 0.00026666666666666668 * var_x267 * (0.39975990396158467 - var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3 + 0.60024009603841544 / var_x272) / (pow(var_x268, 2) * pow((0.066666666666666666 + var_x269), 2)); - IJth(rJacobian, 13, 0) = 7.2463768115942027e-5 * var_x273 * var_x278 / pow(var_x274, 2) - 0.00036289737262302222 * (-var_chaste_interface__delayed_rectifier_K_current_z_gate__z + 1 / var_x274) * (0.013745074681572435 * var_x275 - 0.023901399527731383 * var_x276) / (pow(var_x277, 2) * pow((var_x276 + 0.18072289156626506 * var_x275), 2)); - IJth(rJacobian, 14, 0) = (-var_x114 + 0.001 / var_x280) * (0.35473572188719404 * var_x282 - 0.099800399201596807 * var_x281) + 0.00013513513513513514 * var_x279 * (9 * var_x282 + 1.3 * var_x281) / pow(var_x280, 2); - IJth(rJacobian, 15, 0) = (-var_x112 + 0.001 / var_x286) * (6.1795265502981431 * var_x284 - 1.8299935950224173 * var_x283) - 5.3589706489177562e-5 * var_x285 * (100 * var_x283 + 656 * var_x284) / pow(var_x286, 2); - IJth(rJacobian, 16, 0) = -1.6450937300378158e-8 - 0.0024676405950567236 * var_x17 - 2.8256129907129523e-6 * var_x45 - 0.00082254686501890791 * var_x75; - IJth(rJacobian, 17, 0) = -1.151565611026471e-6 - 0.00082254686501890791 * var_x24 - 0.00082254686501890791 * var_x5 - 0.0016450937300378158 * var_x35 + var_x20 * var_x288 * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r + 8.6347512375898239e-5 * var_x25 * var_x28 * var_x32 * var_x46 * var_x47 * NV_Ith_S(mParameters, 6) + 1.8837419938086349e-6 * var_x38 * var_x40 * var_x41 * var_x42 * var_x43 * var_chaste_interface__cleft_space_ion_concentrations__K_c; - IJth(rJacobian, 22, 0) = 5.8038906795734136e-6 + var_x301 + 0.0041456361996952953 * var_x24 + 0.0041456361996952953 * var_x5 + 0.0082912723993905906 * var_x35 - 9.4940596487955185e-6 * var_x45 - 0.00043519146237452704 * var_x49; + IJth(rJacobian, 0, 0) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x77 * (CHASTE_CONST(0.0014400000000000001) + var_x17 + var_x22 + var_x24 + var_x5 + var_x75 + 2 * var_x35 + CHASTE_CONST(0.0060000000000000001) * var_x6 + CHASTE_CONST(0.0011450666666666667) * var_x45 - CHASTE_CONST(0.10497579657532749) * var_x49 + var_x36 * var_x37 + (CHASTE_CONST(1.8) * var_x3 + CHASTE_CONST(1.8) * var_x4) * NV_Ith_S(mParameters, 3))); + IJth(rJacobian, 1, 0) = -CHASTE_CONST(1.7614021922566692e-8) + CHASTE_CONST(0.0017614021922566689) * var_x17 - CHASTE_CONST(5.2842065767700066e-6) * var_x6 + var_x141 * var_x37 + (-CHASTE_CONST(0.001585261973031002) * var_x3 - CHASTE_CONST(0.001585261973031002) * var_x4) * NV_Ith_S(mParameters, 3); + IJth(rJacobian, 2, 0) = (CHASTE_CONST(0.001) - CHASTE_CONST(0.001) * var_chaste_interface__sodium_current_m_gate__m) * ((var_x158) ? (-230 * var_x156 - 230 * var_x157) : (-var_x161 - CHASTE_CONST(36.297640653357533) * var_x159 * var_x162 / CHASTE_MATH::Pow(var_x160, 2))) + CHASTE_CONST(1.4519056261343013) * var_x159 * var_chaste_interface__sodium_current_m_gate__m; + IJth(rJacobian, 3, 0) = var_x169 * var_x173 + CHASTE_CONST(0.0055555555555555558) * var_x170 * (-var_x174 - var_chaste_interface__sodium_current_h1_gate__h1) / (CHASTE_MATH::Pow(var_x171, 2) * CHASTE_MATH::Pow((CHASTE_CONST(0.0050000000000000001) + var_x172), 2)); + IJth(rJacobian, 4, 0) = var_x169 * var_x178 + CHASTE_CONST(0.0041666666666666666) * var_x175 * (-var_x174 - var_chaste_interface__sodium_current_h2_gate__h2) / (CHASTE_MATH::Pow(var_x176, 2) * CHASTE_MATH::Pow((CHASTE_CONST(0.0037499999999999999) + var_x177), 2)); + IJth(rJacobian, 5, 0) = (-var_x102 + CHASTE_CONST(0.001) / var_x211) * (((var_x181) ? (CHASTE_CONST(2.2400000000000002) * var_x179 + CHASTE_CONST(2.2400000000000002) * var_x180) : (CHASTE_CONST(4.4800000000000004) * var_x185 - CHASTE_CONST(1.7920000000000003) * var_x183 * var_x186 / CHASTE_MATH::Pow(var_x184, 2))) + ((var_x197) ? (-var_x189 - var_x192) : ((var_x203) ? (-var_x189 - var_x202) : ((var_x209) ? (-var_x192 - var_x208) : (-var_x202 - var_x208))))) + CHASTE_CONST(0.00015151515151515152) * var_x210 * (var_x213 + var_x220) / CHASTE_MATH::Pow(var_x211, 2); + IJth(rJacobian, 6, 0) = (var_x232 + var_x229) * (-var_x100 + CHASTE_CONST(0.001) * var_x236 * var_x237) + (var_x234 + var_x236) * (CHASTE_CONST(0.001) * var_x229 * var_x237 + CHASTE_CONST(2.1675996343523e-7) * var_x236 * (-var_x229 - var_x232) / CHASTE_MATH::Pow((var_x233 + CHASTE_CONST(0.014722770236447691) * var_x236), 2)); + IJth(rJacobian, 7, 0) = (-var_x105 + CHASTE_CONST(0.001) / var_x239) * (CHASTE_CONST(22.472433333333335) * var_x242 - CHASTE_CONST(22.472433333333335) * var_x241) + CHASTE_CONST(0.0001639344262295082) * var_x238 * (CHASTE_CONST(674.173) * var_x241 + CHASTE_CONST(674.173) * var_x242) / CHASTE_MATH::Pow(var_x239, 2); + IJth(rJacobian, 8, 0) = var_x245 * (-CHASTE_CONST(0.00011569027611044419) * var_x244 * var_x246 + CHASTE_CONST(0.00010376673238559718) * var_x244 * var_x247 / CHASTE_MATH::Pow((var_x243 + var_x244), 2)) - var_x247 * (-var_x103 + CHASTE_CONST(0.0096369999999999997) * var_x244 * var_x246); + IJth(rJacobian, 9, 0) = CHASTE_CONST(0.00017752529735487306) * var_x248 * var_x253 / CHASTE_MATH::Pow(var_x249, 2) - CHASTE_CONST(6.6907730760079843e-9) * (-var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r + 1 / var_x249) * (CHASTE_CONST(1.1126388888888887) * var_x250 - CHASTE_CONST(32.216666666666669) * var_x251) / (CHASTE_MATH::Pow(var_x252, 2) * CHASTE_MATH::Pow((var_x251 + CHASTE_CONST(0.020721676151060523) * var_x250), 2)); + IJth(rJacobian, 10, 0) = -var_x257 * var_x260 + CHASTE_CONST(0.018294914013904134) * var_x262 * (-var_x261 - var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1) / CHASTE_MATH::Pow((CHASTE_CONST(0.037321624588364438) + var_x256), 2); + IJth(rJacobian, 11, 0) = -var_x260 * var_x266 + CHASTE_CONST(3.0245746691871456e-5) * (-var_x261 - var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2) * (CHASTE_CONST(57.5) * var_x262 - CHASTE_CONST(0.032211882605583393) * var_x263 / CHASTE_MATH::Pow(var_x264, 2)) / CHASTE_MATH::Pow((var_x256 + CHASTE_CONST(0.078260869565217397) * var_x265), 2); + IJth(rJacobian, 12, 0) = -CHASTE_CONST(2.1922574727480476e-5) * var_x270 * var_x271 / CHASTE_MATH::Pow(var_x272, 2) + CHASTE_CONST(0.00026666666666666668) * var_x267 * (CHASTE_CONST(0.39975990396158467) - var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3 + CHASTE_CONST(0.60024009603841544) / var_x272) / (CHASTE_MATH::Pow(var_x268, 2) * CHASTE_MATH::Pow((CHASTE_CONST(0.066666666666666666) + var_x269), 2)); + IJth(rJacobian, 13, 0) = CHASTE_CONST(7.2463768115942027e-5) * var_x273 * var_x278 / CHASTE_MATH::Pow(var_x274, 2) - CHASTE_CONST(0.00036289737262302222) * (-var_chaste_interface__delayed_rectifier_K_current_z_gate__z + 1 / var_x274) * (CHASTE_CONST(0.013745074681572435) * var_x275 - CHASTE_CONST(0.023901399527731383) * var_x276) / (CHASTE_MATH::Pow(var_x277, 2) * CHASTE_MATH::Pow((var_x276 + CHASTE_CONST(0.18072289156626506) * var_x275), 2)); + IJth(rJacobian, 14, 0) = (-var_x114 + CHASTE_CONST(0.001) / var_x280) * (CHASTE_CONST(0.35473572188719404) * var_x282 - CHASTE_CONST(0.099800399201596807) * var_x281) + CHASTE_CONST(0.00013513513513513514) * var_x279 * (9 * var_x282 + CHASTE_CONST(1.3) * var_x281) / CHASTE_MATH::Pow(var_x280, 2); + IJth(rJacobian, 15, 0) = (-var_x112 + CHASTE_CONST(0.001) / var_x286) * (CHASTE_CONST(6.1795265502981431) * var_x284 - CHASTE_CONST(1.8299935950224173) * var_x283) - CHASTE_CONST(5.3589706489177562e-5) * var_x285 * (100 * var_x283 + 656 * var_x284) / CHASTE_MATH::Pow(var_x286, 2); + IJth(rJacobian, 16, 0) = -CHASTE_CONST(1.6450937300378158e-8) - CHASTE_CONST(0.0024676405950567236) * var_x17 - CHASTE_CONST(2.8256129907129523e-6) * var_x45 - CHASTE_CONST(0.00082254686501890791) * var_x75; + IJth(rJacobian, 17, 0) = -CHASTE_CONST(1.151565611026471e-6) - CHASTE_CONST(0.00082254686501890791) * var_x24 - CHASTE_CONST(0.00082254686501890791) * var_x5 - CHASTE_CONST(0.0016450937300378158) * var_x35 + var_x20 * var_x288 * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r + CHASTE_CONST(8.6347512375898239e-5) * var_x25 * var_x28 * var_x32 * var_x46 * var_x47 * NV_Ith_S(mParameters, 6) + CHASTE_CONST(1.8837419938086349e-6) * var_x38 * var_x40 * var_x41 * var_x42 * var_x43 * var_chaste_interface__cleft_space_ion_concentrations__K_c; + IJth(rJacobian, 22, 0) = CHASTE_CONST(5.8038906795734136e-6) + var_x301 + CHASTE_CONST(0.0041456361996952953) * var_x24 + CHASTE_CONST(0.0041456361996952953) * var_x5 + CHASTE_CONST(0.0082912723993905906) * var_x35 - CHASTE_CONST(9.4940596487955185e-6) * var_x45 - CHASTE_CONST(0.00043519146237452704) * var_x49; IJth(rJacobian, 26, 0) = -var_x309; IJth(rJacobian, 27, 0) = var_x309; - IJth(rJacobian, 0, 1) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x77 * (-var_x82 + 0.0095090000000000001 * var_x79 + 0.0002653945091048535 * var_x80 - 0.00029999999999999997 * var_x86 - 0.0095090000000000001 * var_x81 * var_chaste_interface__intracellular_ion_concentrations__Ca_i)); - IJth(rJacobian, 1, 1) = -47.271999999999998 - var_x150 + 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_x79 - 5.2842065767700058e-7 * var_x86 - 8.2198768971977874 * var_x142 - 0.0017614021922566689 * var_x82 - 2.3373323507508574e-7 * var_x80 + 8.3745867230843319e-6 * var_x81 * var_chaste_interface__intracellular_ion_concentrations__Ca_i + 7.3978892074780085e-7 * var_x143 * var_x144; - IJth(rJacobian, 16, 1) = 0.0024676405950567236 * var_x82 + 7.4029217851701709e-7 * var_x86; + IJth(rJacobian, 0, 1) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x77 * (-var_x82 + CHASTE_CONST(0.0095090000000000001) * var_x79 + CHASTE_CONST(0.0002653945091048535) * var_x80 - CHASTE_CONST(0.00029999999999999997) * var_x86 - CHASTE_CONST(0.0095090000000000001) * var_x81 * var_chaste_interface__intracellular_ion_concentrations__Ca_i)); + IJth(rJacobian, 1, 1) = -CHASTE_CONST(47.271999999999998) - var_x150 + CHASTE_CONST(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 - CHASTE_CONST(8.3745867230843319e-6) * var_x79 - CHASTE_CONST(5.2842065767700058e-7) * var_x86 - CHASTE_CONST(8.2198768971977874) * var_x142 - CHASTE_CONST(0.0017614021922566689) * var_x82 - CHASTE_CONST(2.3373323507508574e-7) * var_x80 + CHASTE_CONST(8.3745867230843319e-6) * var_x81 * var_chaste_interface__intracellular_ion_concentrations__Ca_i + CHASTE_CONST(7.3978892074780085e-7) * var_x143 * var_x144; + IJth(rJacobian, 16, 1) = CHASTE_CONST(0.0024676405950567236) * var_x82 + CHASTE_CONST(7.4029217851701709e-7) * var_x86; 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, 19, 1) = CHASTE_CONST(78.400000000000006) - CHASTE_CONST(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_x306; - IJth(rJacobian, 24, 1) = 121.85879481761599 * var_x142 - 1.0967291533585437e-5 * var_x153; + IJth(rJacobian, 24, 1) = CHASTE_CONST(121.85879481761599) * var_x142 - CHASTE_CONST(1.0967291533585437e-5) * var_x153; IJth(rJacobian, 26, 1) = var_x315 * var_chaste_interface__Ca_handling_by_the_SR__F1; IJth(rJacobian, 27, 1) = var_x318 * var_chaste_interface__Ca_handling_by_the_SR__F2 - var_x315 * var_chaste_interface__Ca_handling_by_the_SR__F1; IJth(rJacobian, 28, 1) = -var_x318 * var_chaste_interface__Ca_handling_by_the_SR__F2; IJth(rJacobian, 0, 2) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x77 * var_x92); - 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_x92; + IJth(rJacobian, 2, 2) = -CHASTE_CONST(0.001) * ((var_x158) ? (var_x163 + CHASTE_CONST(394539.57232025318) * (CHASTE_CONST(44.400001267299999) + var_chaste_interface__membrane__V) * (-var_x163 - CHASTE_CONST(0.00058295799999830145) * var_x157)) : (-var_x161 * var_x162)) - CHASTE_CONST(18.399999999999999) * var_x159; + IJth(rJacobian, 16, 2) = -CHASTE_CONST(0.00082254686501890791) * var_x92; IJth(rJacobian, 0, 3) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x77 * var_x96); IJth(rJacobian, 3, 3) = -var_x173; - IJth(rJacobian, 16, 3) = -0.00082254686501890791 * var_x96; + IJth(rJacobian, 16, 3) = -CHASTE_CONST(0.00082254686501890791) * var_x96; IJth(rJacobian, 0, 4) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x77 * var_x99); IJth(rJacobian, 4, 4) = -var_x178; - IJth(rJacobian, 16, 4) = -0.00082254686501890791 * var_x99; + IJth(rJacobian, 16, 4) = -CHASTE_CONST(0.00082254686501890791) * var_x99; IJth(rJacobian, 0, 5) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x100 * var_x101); IJth(rJacobian, 1, 5) = var_x141 * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L; - IJth(rJacobian, 5, 5) = -0.001 * var_x213 - 0.001 * var_x220; + IJth(rJacobian, 5, 5) = -CHASTE_CONST(0.001) * var_x213 - CHASTE_CONST(0.001) * var_x220; IJth(rJacobian, 0, 6) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x101 * var_x102); IJth(rJacobian, 1, 6) = var_x141 * var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L; - IJth(rJacobian, 6, 6) = -0.001 * var_x236 - 0.067921999999999996 * var_x233; + IJth(rJacobian, 6, 6) = -CHASTE_CONST(0.001) * var_x236 - CHASTE_CONST(0.067921999999999996) * var_x233; IJth(rJacobian, 0, 7) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x103 * var_x104); 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_x241 - 0.67417300000000002 * var_x242; + IJth(rJacobian, 7, 7) = -CHASTE_CONST(0.67417300000000002) * var_x241 - CHASTE_CONST(0.67417300000000002) * var_x242; IJth(rJacobian, 0, 8) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x104 * var_x105); 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_x243 - 0.0096369999999999997 * var_x244; + IJth(rJacobian, 8, 8) = -CHASTE_CONST(0.0096369999999999997) * var_x243 - CHASTE_CONST(0.0096369999999999997) * var_x244; IJth(rJacobian, 0, 9) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x106 * var_x19 * var_x77); - IJth(rJacobian, 9, 9) = -0.001 * var_x253; + IJth(rJacobian, 9, 9) = -CHASTE_CONST(0.001) * var_x253; IJth(rJacobian, 17, 9) = var_x106 * var_x288; IJth(rJacobian, 22, 9) = var_x106 * var_x300; - IJth(rJacobian, 0, 10) = mSetVoltageDerivativeToZero ? 0.0 : (-0.0017699999999999999 * var_x107 * var_x109); - IJth(rJacobian, 10, 10) = -0.001 * var_x257; + IJth(rJacobian, 0, 10) = mSetVoltageDerivativeToZero ? 0.0 : (-CHASTE_CONST(0.0017699999999999999) * var_x107 * var_x109); + IJth(rJacobian, 10, 10) = -CHASTE_CONST(0.001) * var_x257; IJth(rJacobian, 17, 10) = var_x290 * var_x291; IJth(rJacobian, 22, 10) = var_x291 * var_x302; - IJth(rJacobian, 0, 11) = mSetVoltageDerivativeToZero ? 0.0 : (-0.00123 * var_x109 * var_x110); - IJth(rJacobian, 11, 11) = -0.001 * var_x266; + IJth(rJacobian, 0, 11) = mSetVoltageDerivativeToZero ? 0.0 : (-CHASTE_CONST(0.00123) * var_x109 * var_x110); + IJth(rJacobian, 11, 11) = -CHASTE_CONST(0.001) * var_x266; IJth(rJacobian, 17, 11) = var_x290 * var_x292; IJth(rJacobian, 22, 11) = var_x292 * var_x302; - IJth(rJacobian, 0, 12) = mSetVoltageDerivativeToZero ? 0.0 : (-3.600144e-5 * var_x108 * var_x111); - IJth(rJacobian, 12, 12) = -0.001 * var_x270; - IJth(rJacobian, 17, 12) = -2.9612871608166312e-5 * var_x293; - IJth(rJacobian, 22, 12) = 0.00014924887290515819 * var_x293; + IJth(rJacobian, 0, 12) = mSetVoltageDerivativeToZero ? 0.0 : (-CHASTE_CONST(3.600144e-5) * var_x108 * var_x111); + IJth(rJacobian, 12, 12) = -CHASTE_CONST(0.001) * var_x270; + IJth(rJacobian, 17, 12) = -CHASTE_CONST(2.9612871608166312e-5) * var_x293; + IJth(rJacobian, 22, 12) = CHASTE_CONST(0.00014924887290515819) * var_x293; IJth(rJacobian, 0, 13) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x46 * var_x77 * NV_Ith_S(mParameters, 8)); - IJth(rJacobian, 13, 13) = -0.001 * var_x278; + IJth(rJacobian, 13, 13) = -CHASTE_CONST(0.001) * var_x278; IJth(rJacobian, 17, 13) = var_x294 * NV_Ith_S(mParameters, 8); IJth(rJacobian, 22, 13) = var_x303 * NV_Ith_S(mParameters, 8); IJth(rJacobian, 0, 14) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x112 * var_x113); - IJth(rJacobian, 14, 14) = -0.0089999999999999993 * var_x282 - 0.0012999999999999999 * var_x281; + IJth(rJacobian, 14, 14) = -CHASTE_CONST(0.0089999999999999993) * var_x282 - CHASTE_CONST(0.0012999999999999999) * var_x281; IJth(rJacobian, 17, 14) = var_x23 * var_x294; IJth(rJacobian, 22, 14) = var_x23 * var_x303; IJth(rJacobian, 0, 15) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x113 * var_x114); - IJth(rJacobian, 15, 15) = -0.65600000000000003 * var_x284 - 0.10000000000000001 * var_x283; + IJth(rJacobian, 15, 15) = -CHASTE_CONST(0.65600000000000003) * var_x284 - CHASTE_CONST(0.10000000000000001) * var_x283; IJth(rJacobian, 17, 15) = var_x294 * var_x295; IJth(rJacobian, 22, 15) = var_x295 * var_x303; - IJth(rJacobian, 0, 16) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x77 * (var_x129 + 3 * var_x117 + 0.00053078901820970701 * var_x51 + 0.154584 * var_x121 - 0.00089999999999999998 * var_x122 - 0.0001161412471825695 * var_x125)); - IJth(rJacobian, 1, 16) = -1.5852619730310017e-6 * var_x122 + 0.0052842065767700064 * var_x115 * var_x15 * var_x7 * NV_Ith_S(mParameters, 9) * NV_Ith_S(mParameters, 1); - IJth(rJacobian, 16, 16) = -0.00038145775374624855 * var_x121 - 4.3659884291485854e-7 * var_x51 - 0.00082254686501890791 * var_x129 - 0.0074029217851701709 * var_x117 + 2.2208765355510512e-6 * var_x115 * var_x83 * var_x84 * NV_Ith_S(mParameters, 9) * NV_Ith_S(mParameters, 1) + 2.8659485630822583e-7 * var_x118 * var_x123 * var_x124 * var_x40 * var_chaste_interface__cleft_space_ion_concentrations__K_c; - IJth(rJacobian, 17, 16) = 0.00025430516916416572 * var_x121 - 1.9106323753881723e-7 * var_x125; - IJth(rJacobian, 22, 16) = -0.0012816980525873951 * var_x121 + 9.6295871719563877e-7 * var_x118 * var_x123 * var_x124 * var_x40 * var_chaste_interface__cleft_space_ion_concentrations__K_c; - IJth(rJacobian, 0, 17) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x77 * (53.0789018209707 * var_x132 - 2.786 * var_x133 + var_x130 * var_x26 + var_x131 * var_x22 + var_x131 * var_x24)); - IJth(rJacobian, 17, 17) = -0.043659884291485852 * var_x132 - var_x26 * var_x296 - var_x26 * var_x297 + 26.53945091048535 * var_x20 * var_x26 * var_x288 * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r + 0.0022916155659426776 * var_x25 * var_x26 * var_x28 * var_x32 * var_x46 * var_x47 * NV_Ith_S(mParameters, 6); - IJth(rJacobian, 22, 17) = 0.22004581682908866 * var_x132 - 0.011549742452351092 * var_x133 + var_x131 * var_x301 + var_x26 * var_x304 + var_x26 * var_x305; - IJth(rJacobian, 1, 18) = 0.021419999999999998 + 9 * var_chaste_interface__intracellular_ion_concentrations__Ca_i; - IJth(rJacobian, 18, 18) = -0.47599999999999998 - var_x299; - 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_x299; + IJth(rJacobian, 0, 16) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x77 * (var_x129 + 3 * var_x117 + CHASTE_CONST(0.00053078901820970701) * var_x51 + CHASTE_CONST(0.154584) * var_x121 - CHASTE_CONST(0.00089999999999999998) * var_x122 - CHASTE_CONST(0.0001161412471825695) * var_x125)); + IJth(rJacobian, 1, 16) = -CHASTE_CONST(1.5852619730310017e-6) * var_x122 + CHASTE_CONST(0.0052842065767700064) * var_x115 * var_x15 * var_x7 * NV_Ith_S(mParameters, 9) * NV_Ith_S(mParameters, 1); + IJth(rJacobian, 16, 16) = -CHASTE_CONST(0.00038145775374624855) * var_x121 - CHASTE_CONST(4.3659884291485854e-7) * var_x51 - CHASTE_CONST(0.00082254686501890791) * var_x129 - CHASTE_CONST(0.0074029217851701709) * var_x117 + CHASTE_CONST(2.2208765355510512e-6) * var_x115 * var_x83 * var_x84 * NV_Ith_S(mParameters, 9) * NV_Ith_S(mParameters, 1) + CHASTE_CONST(2.8659485630822583e-7) * var_x118 * var_x123 * var_x124 * var_x40 * var_chaste_interface__cleft_space_ion_concentrations__K_c; + IJth(rJacobian, 17, 16) = CHASTE_CONST(0.00025430516916416572) * var_x121 - CHASTE_CONST(1.9106323753881723e-7) * var_x125; + IJth(rJacobian, 22, 16) = -CHASTE_CONST(0.0012816980525873951) * var_x121 + CHASTE_CONST(9.6295871719563877e-7) * var_x118 * var_x123 * var_x124 * var_x40 * var_chaste_interface__cleft_space_ion_concentrations__K_c; + IJth(rJacobian, 0, 17) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x77 * (CHASTE_CONST(53.0789018209707) * var_x132 - CHASTE_CONST(2.786) * var_x133 + var_x130 * var_x26 + var_x131 * var_x22 + var_x131 * var_x24)); + IJth(rJacobian, 17, 17) = -CHASTE_CONST(0.043659884291485852) * var_x132 - var_x26 * var_x296 - var_x26 * var_x297 + CHASTE_CONST(26.53945091048535) * var_x20 * var_x26 * var_x288 * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r + CHASTE_CONST(0.0022916155659426776) * var_x25 * var_x26 * var_x28 * var_x32 * var_x46 * var_x47 * NV_Ith_S(mParameters, 6); + IJth(rJacobian, 22, 17) = CHASTE_CONST(0.22004581682908866) * var_x132 - CHASTE_CONST(0.011549742452351092) * var_x133 + var_x131 * var_x301 + var_x26 * var_x304 + var_x26 * var_x305; + IJth(rJacobian, 1, 18) = CHASTE_CONST(0.021419999999999998) + 9 * var_chaste_interface__intracellular_ion_concentrations__Ca_i; + IJth(rJacobian, 18, 18) = -CHASTE_CONST(0.47599999999999998) - var_x299; + IJth(rJacobian, 1, 19) = CHASTE_CONST(0.031359999999999999) + CHASTE_CONST(6.2720000000000002) * var_chaste_interface__intracellular_ion_concentrations__Ca_i; + IJth(rJacobian, 19, 19) = -CHASTE_CONST(0.39200000000000002) - CHASTE_CONST(78.400000000000006) * var_chaste_interface__intracellular_ion_concentrations__Ca_i; + IJth(rJacobian, 1, 20) = CHASTE_CONST(0.0010559999999999999) + var_x152; + IJth(rJacobian, 20, 20) = -CHASTE_CONST(0.0066) - var_x299; IJth(rJacobian, 21, 20) = -5; IJth(rJacobian, 1, 21) = var_x152; IJth(rJacobian, 20, 21) = -var_x299; - IJth(rJacobian, 21, 21) = -5.6660000000000004; - IJth(rJacobian, 0, 22) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x77 * (-53.0789018209707 * var_x137 - 0.10305599999999999 * var_x140 - var_x130 * var_x134 - var_x135 * var_x22 - var_x135 * var_x24 - 6 * var_x138 * var_x46 + 0.10305599999999999 * var_x118 * var_x40 * var_x42 * var_x43 + 6 * var_x136 * var_x30 * var_x32 * var_x46 * NV_Ith_S(mParameters, 6) + 2.786 * var_x136 * var_x28 * var_x32 * var_x46 * var_x47 * NV_Ith_S(mParameters, 6))); - IJth(rJacobian, 16, 22) = 0.00025430516916416572 * var_x140 - 0.00025430516916416572 * var_x287; - IJth(rJacobian, 17, 22) = 0.043659884291485852 * var_x137 + 0.00016953677944277714 * var_x287 - 0.00016953677944277714 * var_x140 + var_x134 * var_x296 + var_x134 * var_x297 + var_x138 * var_x298 - var_x137 * var_x298 - 0.0022916155659426776 * var_x136 * var_x48 - var_x135 * var_x21 * var_x288; - IJth(rJacobian, 22, 22) = -0.00085446536839159674 * var_x287 - 0.22004581682908866 * var_x137 - var_x134 * var_x304 - var_x134 * var_x305 - var_x135 * var_x301 - 0.024873817198171774 * var_x138 * var_x46 + 0.024873817198171774 * var_x136 * var_x30 * var_x32 * var_x46 * NV_Ith_S(mParameters, 6) + 0.00085446536839159674 * var_x118 * var_x139 * var_x42 * var_x43 * var_chaste_interface__cleft_space_ion_concentrations__K_c + 0.011549742452351092 * var_x136 * var_x28 * var_x32 * var_x46 * var_x47 * NV_Ith_S(mParameters, 6); + IJth(rJacobian, 21, 21) = -CHASTE_CONST(5.6660000000000004); + IJth(rJacobian, 0, 22) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x77 * (-CHASTE_CONST(53.0789018209707) * var_x137 - CHASTE_CONST(0.10305599999999999) * var_x140 - var_x130 * var_x134 - var_x135 * var_x22 - var_x135 * var_x24 - 6 * var_x138 * var_x46 + CHASTE_CONST(0.10305599999999999) * var_x118 * var_x40 * var_x42 * var_x43 + 6 * var_x136 * var_x30 * var_x32 * var_x46 * NV_Ith_S(mParameters, 6) + CHASTE_CONST(2.786) * var_x136 * var_x28 * var_x32 * var_x46 * var_x47 * NV_Ith_S(mParameters, 6))); + IJth(rJacobian, 16, 22) = CHASTE_CONST(0.00025430516916416572) * var_x140 - CHASTE_CONST(0.00025430516916416572) * var_x287; + IJth(rJacobian, 17, 22) = CHASTE_CONST(0.043659884291485852) * var_x137 + CHASTE_CONST(0.00016953677944277714) * var_x287 - CHASTE_CONST(0.00016953677944277714) * var_x140 + var_x134 * var_x296 + var_x134 * var_x297 + var_x138 * var_x298 - var_x137 * var_x298 - CHASTE_CONST(0.0022916155659426776) * var_x136 * var_x48 - var_x135 * var_x21 * var_x288; + IJth(rJacobian, 22, 22) = -CHASTE_CONST(0.00085446536839159674) * var_x287 - CHASTE_CONST(0.22004581682908866) * var_x137 - var_x134 * var_x304 - var_x134 * var_x305 - var_x135 * var_x301 - CHASTE_CONST(0.024873817198171774) * var_x138 * var_x46 + CHASTE_CONST(0.024873817198171774) * var_x136 * var_x30 * var_x32 * var_x46 * NV_Ith_S(mParameters, 6) + CHASTE_CONST(0.00085446536839159674) * var_x118 * var_x139 * var_x42 * var_x43 * var_chaste_interface__cleft_space_ion_concentrations__K_c + CHASTE_CONST(0.011549742452351092) * var_x136 * var_x28 * var_x32 * var_x46 * var_x47 * NV_Ith_S(mParameters, 6); IJth(rJacobian, 1, 23) = var_x150; - IJth(rJacobian, 23, 23) = -14.98 - var_x306 + 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_x153 + 0.00078910818213098765 * var_x142; - IJth(rJacobian, 23, 24) = 0.099999999999999992; - IJth(rJacobian, 24, 24) = -0.011085915847820609 - 2.6321499680605046e-9 * var_x153 - 0.011698444302491135 * var_x142; - 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, 23, 23) = -CHASTE_CONST(14.98) - var_x306 + CHASTE_CONST(14.880000000000001) * var_chaste_interface__Ca_handling_by_the_SR__O_Calse; + IJth(rJacobian, 24, 23) = CHASTE_CONST(0.011085915847820609); + IJth(rJacobian, 25, 23) = CHASTE_CONST(0.47999999999999998) - CHASTE_CONST(0.47999999999999998) * var_chaste_interface__Ca_handling_by_the_SR__O_Calse; + IJth(rJacobian, 1, 24) = CHASTE_CONST(1.7754934097947219e-10) * var_x153 + CHASTE_CONST(0.00078910818213098765) * var_x142; + IJth(rJacobian, 23, 24) = CHASTE_CONST(0.099999999999999992); + IJth(rJacobian, 24, 24) = -CHASTE_CONST(0.011085915847820609) - CHASTE_CONST(2.6321499680605046e-9) * var_x153 - CHASTE_CONST(0.011698444302491135) * var_x142; + IJth(rJacobian, 23, 25) = CHASTE_CONST(12.4) + CHASTE_CONST(14.880000000000001) * var_chaste_interface__Ca_handling_by_the_SR__Ca_rel; + IJth(rJacobian, 25, 25) = -CHASTE_CONST(0.40000000000000002) - CHASTE_CONST(0.47999999999999998) * var_chaste_interface__Ca_handling_by_the_SR__Ca_rel; IJth(rJacobian, 26, 26) = -var_x317; IJth(rJacobian, 27, 26) = var_x317; - IJth(rJacobian, 1, 27) = -0.0017614021922566689 * var_x154 * var_x155 + 0.0017614021922566689 * var_x147 * var_x154 * var_chaste_interface__Ca_handling_by_the_SR__F2 * NV_Ith_S(mParameters, 0); + IJth(rJacobian, 1, 27) = -CHASTE_CONST(0.0017614021922566689) * var_x154 * var_x155 + CHASTE_CONST(0.0017614021922566689) * var_x147 * var_x154 * var_chaste_interface__Ca_handling_by_the_SR__F2 * NV_Ith_S(mParameters, 0); IJth(rJacobian, 23, 27) = var_x155 * var_x307 - var_x148 * var_x307 * var_chaste_interface__Ca_handling_by_the_SR__F2; IJth(rJacobian, 27, 27) = -var_x319; IJth(rJacobian, 28, 27) = var_x319; - IJth(rJacobian, 26, 28) = 0.00081499999999999997; - IJth(rJacobian, 28, 28) = -0.00081499999999999997; + IJth(rJacobian, 26, 28) = CHASTE_CONST(0.00081499999999999997); + IJth(rJacobian, 28, 28) = -CHASTE_CONST(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)); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -1045,33 +1047,33 @@ // 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_Na_Ca_ion_exchanger_current__d_NaCa = CHASTE_CONST(0.00029999999999999997); // per_millimolar_4 + const double var_Na_Ca_ion_exchanger_current__gamma = CHASTE_CONST(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_Ca_handling_by_the_SR__i_rel = CHASTE_MATH::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) / CHASTE_MATH::Pow((CHASTE_CONST(0.25) + var_chaste_interface__Ca_handling_by_the_SR__F2), 2); // picoA + const double var_inward_rectifier__KmK1 = CHASTE_CONST(0.58999999999999997); // millimolar + const double var_inward_rectifier__shiftK1 = -CHASTE_CONST(3.6000000000000001); // millivolt + const double var_inward_rectifier__steepK1 = CHASTE_CONST(1.393); // dimensionless + const double var_membrane__Cm_converted = CHASTE_CONST(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_Ca_independent_transient_outward_K_current__E_K = var_membrane__R * var_membrane__T * CHASTE_MATH::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 + CHASTE_MATH::Exp(CHASTE_CONST(1.9166666666666667) - CHASTE_CONST(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)) ? (CHASTE_CONST(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)) ? (CHASTE_CONST(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 = CHASTE_CONST(9.9999999999999995e-7) * CHASTE_CAP() * 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 = (CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * NV_Ith_S(mParameters, 1) * CHASTE_MATH::Exp(var_Na_Ca_ion_exchanger_current__gamma * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - CHASTE_MATH::Pow(NV_Ith_S(mParameters, 2), 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i * CHASTE_MATH::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 + (CHASTE_MATH::Pow(NV_Ith_S(mParameters, 2), 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i + CHASTE_MATH::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 = CHASTE_CONST(9.9999999999999995e-7) * CHASTE_CAP() * 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_Kr_converted = CHASTE_CONST(9.9999999999999995e-7) * CHASTE_CAP() * 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))) : (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 - 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_delayed_rectifier_K_current__i_Ks_converted = CHASTE_CONST(9.9999999999999995e-7) * CHASTE_CAP() * 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 * CHASTE_MATH::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 + CHASTE_MATH::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))) * CHASTE_MATH::Pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (CHASTE_CONST(2.5) * CHASTE_MATH::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 + CHASTE_MATH::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))) * CHASTE_MATH::Pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))) : (CHASTE_MATH::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 + CHASTE_MATH::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))) * CHASTE_MATH::Pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))))); // picoA + const double var_inward_rectifier__i_K1_converted = CHASTE_CONST(9.9999999999999995e-7) * CHASTE_CAP() * var_inward_rectifier__i_K1 / var_membrane__Cm_converted; // uA_per_cm2 + const double var_membrane__i_Stim_converted = CHASTE_STIM(var_chaste_interface__environment__time_converted); // uA_per_cm2 + const double var_sodium_current__i_Na = (((var_chaste_interface__membrane__V >= -CHASTE_CONST(2.6539450910485349e-6)) && (var_chaste_interface__membrane__V <= CHASTE_CONST(2.6539450910485349e-6))) ? (CHASTE_CONST(188398.77346612973) * (CHASTE_CONST(2.6539450910485349e-6) + var_chaste_interface__membrane__V) * (CHASTE_CONST(0.0096486999999999996) * CHASTE_MATH::Pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8) - CHASTE_MATH::Log(NV_Ith_S(mParameters, 2) / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (CHASTE_CONST(0.36499999999999999) * var_chaste_interface__sodium_current_h2_gate__h2 + CHASTE_CONST(0.63500000000000001) * var_chaste_interface__sodium_current_h1_gate__h1) * NV_Ith_S(mParameters, 2) * NV_Ith_S(mParameters, 5) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) + CHASTE_CONST(0.0096486999999999996) * CHASTE_MATH::Pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8) - CHASTE_MATH::Log(NV_Ith_S(mParameters, 2) / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (CHASTE_CONST(0.36499999999999999) * var_chaste_interface__sodium_current_h2_gate__h2 + CHASTE_CONST(0.63500000000000001) * var_chaste_interface__sodium_current_h1_gate__h1) * NV_Ith_S(mParameters, 2) * NV_Ith_S(mParameters, 5) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)))) - CHASTE_CONST(0.0096486999999999996) * CHASTE_MATH::Pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8) - CHASTE_MATH::Log(NV_Ith_S(mParameters, 2) / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (CHASTE_CONST(0.36499999999999999) * var_chaste_interface__sodium_current_h2_gate__h2 + CHASTE_CONST(0.63500000000000001) * var_chaste_interface__sodium_current_h1_gate__h1) * NV_Ith_S(mParameters, 2) * NV_Ith_S(mParameters, 5) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)))) : (CHASTE_CONST(3635.606491085292) * CHASTE_MATH::Pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + CHASTE_MATH::Exp(CHASTE_CONST(0.037679754693225945) * var_chaste_interface__membrane__V - CHASTE_MATH::Log(NV_Ith_S(mParameters, 2) / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (CHASTE_CONST(0.36499999999999999) * var_chaste_interface__sodium_current_h2_gate__h2 + CHASTE_CONST(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 + CHASTE_MATH::Exp(CHASTE_CONST(0.037679754693225945) * var_chaste_interface__membrane__V)))); // picoA + const double var_sodium_current__i_Na_converted = CHASTE_CONST(9.9999999999999995e-7) * CHASTE_CAP() * 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()); @@ -1330,4 +1332,5 @@ void OdeSystemInformation::Initia #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.hpp b/chaste_codegen/data/tests/chaste_reference_models/Cvode_with_jacobian/aslanidi_atrial_model_2009.hpp index 7031a18f8..546fe3780 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/Cvode_with_jacobian/aslanidi_atrial_model_2009.hpp +++ b/chaste_codegen/data/tests/chaste_reference_models/Cvode_with_jacobian/aslanidi_atrial_model_2009.hpp @@ -17,7 +17,11 @@ #include "ChasteSerialization.hpp" #include #include "AbstractStimulusFunction.hpp" +#if USING_DEVICE_COMPILER +#include "StimulusEvaluatorCuda.hpp" +#endif #include "AbstractCvodeCell.hpp" +#include "HostDeviceMacros.hpp" class Cellaslanidi_atrial_model_2009FromCellMLCvode : public AbstractCvodeCell { @@ -38,6 +42,10 @@ class Cellaslanidi_atrial_model_2009FromCellMLCvode : public AbstractCvodeCell const bool is_concentration[29] = {false, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true, false, false, false, false, true, false, false, false, false, false, false}; const bool is_probability[29] = {false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false}; public: + static constexpr unsigned TOTAL_SIZE = 29u; + static constexpr unsigned NNZ = 120u; + static inline const int sparse_rowptr[] = { 0, 19, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 68, 79, 81, 83, 86, 88, 99, 104, 107, 109, 113, 117, 120 }; + static inline const int sparse_colind[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 22, 0, 1, 5, 6, 7, 8, 16, 18, 19, 20, 21, 23, 24, 27, 0, 2, 0, 3, 0, 4, 0, 5, 0, 6, 0, 7, 0, 8, 0, 9, 0, 10, 0, 11, 0, 12, 0, 13, 0, 14, 0, 15, 0, 1, 2, 3, 4, 16, 22, 0, 9, 10, 11, 12, 13, 14, 15, 16, 17, 22, 1, 18, 1, 19, 1, 20, 21, 20, 21, 0, 9, 10, 11, 12, 13, 14, 15, 16, 17, 22, 1, 23, 24, 25, 27, 1, 23, 24, 23, 25, 0, 1, 26, 28, 0, 1, 26, 27, 1, 27, 28 }; boost::shared_ptr UseCellMLDefaultStimulus(); double GetIntracellularCalciumConcentration(); @@ -46,8 +54,19 @@ const bool is_probability[29] = {false, false, false, false, false, false, false void VerifyStateVariables(); double GetIIonic(const std::vector* pStateVariables=NULL); void EvaluateYDerivatives(double var_chaste_interface__environment__time_converted, const N_Vector rY, N_Vector rDY); - N_Vector ComputeDerivedQuantities(double var_chaste_interface__environment__time_converted, const N_Vector & rY); void 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); + N_Vector ComputeDerivedQuantities(double var_chaste_interface__environment__time_converted, const N_Vector & rY); +#if USING_DEVICE_COMPILER + template + DEVICE + static void EvaluateYDerivativesDevice(ValueType var_chaste_interface__environment__time_converted, const ValueType* rY, ValueType* rDY, const ValueType mSetVoltageDerivativeToZero, const ValueType mFixedVoltage, const ValueType* mParameters, const ValueType capacitance, const DeviceStimulusFunctor stim); + template + DEVICE + static void EvaluateAnalyticJacobianDevice(ValueType var_chaste_interface__environment__time_converted, const ValueType *rY, ValueType *rDY, ValueType *rJacobian, ValueType *rTmp1, ValueType *rTmp2, ValueType *rTmp3, const unsigned nvars, const ValueType mSetVoltageDerivativeToZero, const ValueType mFixedVoltage, const ValueType *mParameters, const ValueType capacitance, const DeviceStimulusFunctor stim); + template + DEVICE + static void EvaluateSparseAnalyticJacobianDevice(ValueType var_chaste_interface__environment__time_converted, const ValueType *rY, ValueType *rDY, ValueType *rJacobian, ValueType *rTmp1, ValueType *rTmp2, ValueType *rTmp3, const unsigned nvars, const ValueType mSetVoltageDerivativeToZero, const ValueType mFixedVoltage, const ValueType *mParameters, const ValueType capacitance, const DeviceStimulusFunctor stim); +#endif }; // Needs to be included last @@ -84,4 +103,10 @@ namespace boost } #endif // CELLASLANIDI_ATRIAL_MODEL_2009FROMCELLMLCVODE_HPP_ + + + +#if USING_DEVICE_COMPILER + #include "aslanidi_atrial_model_2009Kernels.hpp" +#endif #endif // CHASTE_CVODE \ No newline at end of file diff --git a/chaste_codegen/data/tests/chaste_reference_models/Cvode_with_jacobian/aslanidi_atrial_model_2009Kernels.hpp b/chaste_codegen/data/tests/chaste_reference_models/Cvode_with_jacobian/aslanidi_atrial_model_2009Kernels.hpp new file mode 100644 index 000000000..84fd35f3b --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/Cvode_with_jacobian/aslanidi_atrial_model_2009Kernels.hpp @@ -0,0 +1,1302 @@ +#ifndef CELLASLANIDI_ATRIAL_MODEL_2009FROMCELLMLCVODEKERNELS_HPP_ +#define CELLASLANIDI_ATRIAL_MODEL_2009FROMCELLMLCVODEKERNELS_HPP_ + +//! @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 "MathsCustomFunctions.hpp" +#include "ChasteDeviceMacros.hpp" + + +template +DEVICE +void Cellaslanidi_atrial_model_2009FromCellMLCvode::EvaluateYDerivativesDevice(ValueType var_chaste_interface__environment__time_converted, const ValueType *rY, ValueType *rDY, const ValueType mSetVoltageDerivativeToZero, const ValueType mFixedVoltage, const ValueType *mParameters, const ValueType capacitance, const DeviceStimulusFunctor stim) +{ + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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__intracellular_Ca_buffering__O_C = rY[18]; + // Units: dimensionless; Initial value: 0.029108 + double var_chaste_interface__intracellular_Ca_buffering__O_TC = rY[19]; + // Units: dimensionless; Initial value: 0.014071 + double var_chaste_interface__intracellular_Ca_buffering__O_TMgC = rY[20]; + // Units: dimensionless; Initial value: 0.214036 + double var_chaste_interface__intracellular_Ca_buffering__O_TMgMg = rY[21]; + // Units: dimensionless; Initial value: 0.693565 + 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__Ca_up = rY[24]; + // Units: millimolar; Initial value: 0.730866 + double var_chaste_interface__Ca_handling_by_the_SR__O_Calse = rY[25]; + // Units: dimensionless; Initial value: 0.465921 + double var_chaste_interface__Ca_handling_by_the_SR__F1 = rY[26]; + // Units: dimensionless; Initial value: 0.288039 + double var_chaste_interface__Ca_handling_by_the_SR__F2 = rY[27]; + // Units: dimensionless; Initial value: 0.002262 + double var_chaste_interface__Ca_handling_by_the_SR__F3 = 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 = CHASTE_CONST(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 = CHASTE_CONST(4.3999999999999997e-8); // nanolitre + const double var_Ca_handling_by_the_SR__Vol_up = CHASTE_CONST(3.9690000000000001e-7); // nanolitre + const double var_Ca_handling_by_the_SR__k_F3 = CHASTE_CONST(0.81499999999999995); // per_second + const double var_Ca_handling_by_the_SR__k_cyca = CHASTE_CONST(0.00029999999999999997); // millimolar + const double var_Ca_handling_by_the_SR__k_rel = CHASTE_CONST(0.00029999999999999997); // millimolar + const double var_Ca_handling_by_the_SR__k_srca = CHASTE_CONST(0.5); // millimolar + const double var_Ca_handling_by_the_SR__k_xcs = CHASTE_CONST(0.40000000000000002); // dimensionless + const double var_Ca_handling_by_the_SR__tau_tr = CHASTE_CONST(0.01); // second + const double var_Ca_independent_transient_outward_K_current__g_to = CHASTE_CONST(0.050001999999999998); // nanoS + const double d_dt_chaste_interface_var_Ca_handling_by_the_SR__O_Calse = CHASTE_CONST(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 = CHASTE_CONST(0.00029999999999999997); // per_millimolar_4 + const double var_Na_Ca_ion_exchanger_current__gamma = CHASTE_CONST(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 = CHASTE_CONST(0.0060000000000000001); // nanoS + const double var_background_currents__g_B_Ca = CHASTE_CONST(3.1000000000000001e-5); // nanoS + const double var_background_currents__g_B_Na = CHASTE_CONST(6.3999999999999997e-5); // nanoS + const double var_cleft_space_ion_concentrations__Vol_c = CHASTE_CONST(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 = CHASTE_CONST(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 = CHASTE_CONST(0.001) * var_intracellular_Ca_buffering__O_TMgMg_orig_deriv; // 1 / millisecond + const double var_Ca_handling_by_the_SR__i_rel = CHASTE_MATH::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] / CHASTE_MATH::Pow((CHASTE_CONST(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 - CHASTE_MATH::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 = CHASTE_CONST(33.960000000000001) + CHASTE_CONST(339.60000000000002) * CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Ca_i, 4) / CHASTE_MATH::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 = CHASTE_CONST(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 = CHASTE_CONST(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 = CHASTE_CONST(0.001) * var_intracellular_Ca_buffering__O_TC_orig_deriv; // 1 / millisecond + const double var_intracellular_Ca_buffering__dOTMgCdt = -CHASTE_CONST(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 = CHASTE_CONST(0.001) * var_intracellular_Ca_buffering__O_TMgC_orig_deriv; // 1 / millisecond + const double var_intracellular_ion_concentrations__Vol_Ca = CHASTE_CONST(5.8839999999999999e-6); // nanolitre + const double var_intracellular_ion_concentrations__Vol_i = CHASTE_CONST(1.26e-5); // nanolitre + const double var_inward_rectifier__KmK1 = CHASTE_CONST(0.58999999999999997); // millimolar + const double var_inward_rectifier__shiftK1 = -CHASTE_CONST(3.6000000000000001); // millivolt + const double var_inward_rectifier__steepK1 = CHASTE_CONST(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 + CHASTE_CONST(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 = CHASTE_CONST(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 = CHASTE_CONST(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 = CHASTE_CONST(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 * CHASTE_MATH::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 = CHASTE_CONST(0.5) * var_membrane__R * var_membrane__T * CHASTE_MATH::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 * CHASTE_MATH::Exp(-CHASTE_CONST(1.6000000000000001) + CHASTE_CONST(0.080000000000000002) * var_chaste_interface__membrane__V) + CHASTE_CONST(203.80000000000001) * CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Ca_i, 4) / CHASTE_MATH::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)) ? (CHASTE_CONST(0.098000000000000004) + CHASTE_CONST(0.0014) * var_chaste_interface__membrane__V) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (CHASTE_CONST(0.16799999999999998) + CHASTE_CONST(0.0023999999999999998) * var_chaste_interface__membrane__V) : (CHASTE_CONST(0.070000000000000007) + CHASTE_CONST(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)) ? (CHASTE_CONST(0.20000000000000001) * (CHASTE_CONST(0.40000000000000002) + CHASTE_CONST(0.59999999999999998) * CHASTE_MATH::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) * (CHASTE_CONST(0.58999999999999997) * CHASTE_MATH::Pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + CHASTE_CONST(0.40999999999999998) * CHASTE_MATH::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)) ? (CHASTE_CONST(0.34999999999999998) * (CHASTE_CONST(0.40000000000000002) + CHASTE_CONST(0.59999999999999998) * CHASTE_MATH::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) * (CHASTE_CONST(0.58999999999999997) * CHASTE_MATH::Pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + CHASTE_CONST(0.40999999999999998) * CHASTE_MATH::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) : ((CHASTE_CONST(0.40000000000000002) + CHASTE_CONST(0.59999999999999998) * CHASTE_MATH::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) * (CHASTE_CONST(0.58999999999999997) * CHASTE_MATH::Pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + CHASTE_CONST(0.40999999999999998) * CHASTE_MATH::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 = CHASTE_CONST(386.60000000000002) * CHASTE_MATH::Exp(CHASTE_CONST(0.083333333333333329) * var_chaste_interface__membrane__V); // per_second + const double var_Ca_independent_transient_outward_K_current_r_gate__beta_r = CHASTE_CONST(8.0109999999999992) * CHASTE_MATH::Exp(-CHASTE_CONST(0.1388888888888889) * var_chaste_interface__membrane__V); // per_second + const double var_Ca_independent_transient_outward_K_current_r_gate__r_infinity = 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.6628794603230959) - CHASTE_CONST(0.17752529735487307) * var_chaste_interface__membrane__V)); // dimensionless + const double var_Ca_independent_transient_outward_K_current_r_gate__tau_r = CHASTE_CONST(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 + CHASTE_MATH::Exp(CHASTE_CONST(4.0070821529745047) + CHASTE_CONST(0.14164305949008499) * var_chaste_interface__membrane__V)); // dimensionless + const double var_Ca_independent_transient_outward_K_current_s1_gate__tau_s1 = CHASTE_CONST(0.020400000000000001) + CHASTE_CONST(0.54659999999999997) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(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 + CHASTE_MATH::Exp(CHASTE_CONST(4.0070821529745047) + CHASTE_CONST(0.14164305949008499) * var_chaste_interface__membrane__V)); // dimensionless + const double var_Ca_independent_transient_outward_K_current_s2_gate__tau_s2 = CHASTE_CONST(5.75) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(327.99999999999994) + 10 * var_chaste_interface__membrane__V)) + CHASTE_CONST(0.45000000000000001) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(0.96921975662133131) - CHASTE_CONST(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 = CHASTE_CONST(0.39975990396158467) + CHASTE_CONST(0.60024009603841544) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(1.8506208911614319) + CHASTE_CONST(0.036523009495982472) * var_chaste_interface__membrane__V)); // dimensionless + const double var_Ca_independent_transient_outward_K_current_s3_gate__tau_s3 = CHASTE_CONST(0.5) + CHASTE_CONST(7.5) / (1 + CHASTE_MATH::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 = CHASTE_CONST(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 = CHASTE_CONST(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 = CHASTE_CONST(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 = CHASTE_CONST(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 = CHASTE_CONST(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 = CHASTE_CONST(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 + CHASTE_MATH::Exp(CHASTE_CONST(1.9166666666666667) - CHASTE_CONST(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)) ? (CHASTE_CONST(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)) ? (CHASTE_CONST(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_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 >= -CHASTE_CONST(10.000000480800001)) && (var_chaste_interface__membrane__V <= -CHASTE_CONST(9.9999995191999993))) ? (CHASTE_CONST(2.4040000000391526e-5) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(1.0000000000162864e-7))) + CHASTE_CONST(1039933.4442576389) * (CHASTE_CONST(10.000000480800001) + var_chaste_interface__membrane__V) * (-CHASTE_CONST(2.4040000000391526e-5) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(1.0000000000162864e-7))) - CHASTE_CONST(2.4039999999697637e-5) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999998742257e-8))))) : (-50 * (10 + var_chaste_interface__membrane__V) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.0798668885191347) - CHASTE_CONST(0.20798668885191349) * var_chaste_interface__membrane__V)))) + (((var_chaste_interface__membrane__V >= -CHASTE_CONST(45.000000249999999)) && (var_chaste_interface__membrane__V <= -CHASTE_CONST(44.999999750000001))) ? (CHASTE_CONST(4.1799999996561256e-6) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999991773334e-8))) + CHASTE_CONST(1999999.9999424887) * (CHASTE_CONST(45.000000249999999) + var_chaste_interface__membrane__V) * (-CHASTE_CONST(4.1800000005842713e-6) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(1.000000000139778e-7))) - CHASTE_CONST(4.1799999996561256e-6) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999991773334e-8))))) : (-CHASTE_CONST(16.719999999999999) * (45 + var_chaste_interface__membrane__V) / (-1 + CHASTE_MATH::Exp(-18 - CHASTE_CONST(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 >= -CHASTE_CONST(5.0000002500000003)) && (var_chaste_interface__membrane__V <= -CHASTE_CONST(4.9999997499999997))) ? (-CHASTE_CONST(1.1200000000011203e-6) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(1.0000000000010001e-7))) + CHASTE_CONST(1999999.9999979998) * (CHASTE_CONST(5.0000002500000003) + var_chaste_interface__membrane__V) * (CHASTE_CONST(1.1200000000011203e-6) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(1.0000000000010001e-7))) + CHASTE_CONST(1.1200000000011203e-6) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(1.0000000000010001e-7))))) : (CHASTE_CONST(4.4800000000000004) * (5 + var_chaste_interface__membrane__V) / (-1 + CHASTE_MATH::Exp(2 + CHASTE_CONST(0.40000000000000002) * var_chaste_interface__membrane__V)))); // per_second + const double var_L_type_Ca_channel_d_L_gate__d_L_infinity = 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.14393939393939395) - CHASTE_CONST(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 = CHASTE_CONST(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 >= -CHASTE_CONST(18.000000400000001)) && (var_chaste_interface__membrane__V <= -CHASTE_CONST(17.999999599999999))) ? (-CHASTE_CONST(3.3960000000976542e-6) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(1.0000000000287557e-7))) + CHASTE_CONST(1249999.9999640554) * (CHASTE_CONST(18.000000400000001) + var_chaste_interface__membrane__V) * (CHASTE_CONST(3.3960000000976542e-6) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(1.0000000000287557e-7))) + CHASTE_CONST(3.3960000000976542e-6) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(1.0000000000287557e-7))))) : (CHASTE_CONST(8.4900000000000002) * (18 + var_chaste_interface__membrane__V) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(4.5) + CHASTE_CONST(0.25) * var_chaste_interface__membrane__V)))); // per_second + const double var_L_type_Ca_channel_f_L_gate__beta_f_L = CHASTE_CONST(67.921999999999997) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(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 = CHASTE_CONST(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 = (CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[1] * CHASTE_MATH::Exp(var_Na_Ca_ion_exchanger_current__gamma * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - CHASTE_MATH::Pow(mParameters[2], 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i * CHASTE_MATH::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 + (CHASTE_MATH::Pow(mParameters[2], 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i + CHASTE_MATH::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_T_type_Ca_channel_d_T_gate__E0_d_T = CHASTE_CONST(23.300000000000001) + var_chaste_interface__membrane__V; // millivolt + const double var_T_type_Ca_channel_d_T_gate__alpha_d_T = CHASTE_CONST(674.173) * CHASTE_MATH::Exp(CHASTE_CONST(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 = CHASTE_CONST(674.173) * CHASTE_MATH::Exp(-CHASTE_CONST(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 + CHASTE_MATH::Exp(CHASTE_CONST(0.049180327868852458) - CHASTE_CONST(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 = CHASTE_CONST(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 = CHASTE_CONST(9.6370000000000005) * CHASTE_MATH::Exp(-CHASTE_CONST(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 = CHASTE_CONST(9.6370000000000005) * CHASTE_MATH::Exp(CHASTE_CONST(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 = CHASTE_CONST(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)) ? (CHASTE_CONST(2.0000000000000002e-5) * var_chaste_interface__membrane__V - CHASTE_CONST(2.0000000000000002e-5) * var_background_currents__E_Ca) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (CHASTE_CONST(3.0000000000000001e-5) * var_chaste_interface__membrane__V - CHASTE_CONST(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_delayed_rectifier_K_current_pa_gate__alpha_p_a = 9 * CHASTE_MATH::Exp(CHASTE_CONST(0.03941508020968823) * var_chaste_interface__membrane__V); // per_second + const double var_delayed_rectifier_K_current_pa_gate__beta_p_a = CHASTE_CONST(1.3) * CHASTE_MATH::Exp(-CHASTE_CONST(0.076769537847382163) * var_chaste_interface__membrane__V); // per_second + const double var_delayed_rectifier_K_current_pa_gate__p_a_infinity = 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.68918918918918914) - CHASTE_CONST(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 = CHASTE_CONST(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 * CHASTE_MATH::Exp(-CHASTE_CONST(0.018299935950224173) * var_chaste_interface__membrane__V); // per_second + const double var_delayed_rectifier_K_current_pi_gate__beta_p_i = 656 * CHASTE_MATH::Exp(CHASTE_CONST(0.009420009985210585) * var_chaste_interface__membrane__V); // per_second + const double var_delayed_rectifier_K_current_pi_gate__p_i_infinity = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(2.539728728905752) + CHASTE_CONST(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 = CHASTE_CONST(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 = CHASTE_CONST(1.6599999999999999) * CHASTE_MATH::Exp(CHASTE_CONST(0.014398433450440593) * var_chaste_interface__membrane__V); // per_second + const double var_delayed_rectifier_K_current_z_gate__beta_z = CHASTE_CONST(0.29999999999999999) * CHASTE_MATH::Exp(-CHASTE_CONST(0.045816915605241454) * var_chaste_interface__membrane__V); // per_second + const double var_delayed_rectifier_K_current_z_gate__tau_z = CHASTE_CONST(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 + CHASTE_MATH::Exp(CHASTE_CONST(0.065217391304347824) - CHASTE_CONST(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 = CHASTE_CONST(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 * CHASTE_MATH::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 + CHASTE_MATH::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))) * CHASTE_MATH::Pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (CHASTE_CONST(2.5) * CHASTE_MATH::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 + CHASTE_MATH::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))) * CHASTE_MATH::Pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))) : (CHASTE_MATH::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 + CHASTE_MATH::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))) * CHASTE_MATH::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 = CHASTE_CONST(0.0095090000000000001); // picoA + const double var_sarcolemmal_calcium_pump_current__k_CaP = CHASTE_CONST(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 = -CHASTE_CONST(0.044999999999999998) * var_intracellular_Ca_buffering__dOCdt - CHASTE_CONST(0.080000000000000002) * var_intracellular_Ca_buffering__dOTCdt - CHASTE_CONST(0.16) * var_intracellular_Ca_buffering__dOTMgCdt + CHASTE_CONST(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 = CHASTE_CONST(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 * CHASTE_MATH::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)) ? (CHASTE_CONST(2.0000000000000002e-5) * var_chaste_interface__membrane__V - CHASTE_CONST(2.0000000000000002e-5) * var_sodium_current__E_Na) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (CHASTE_CONST(3.0000000000000001e-5) * var_chaste_interface__membrane__V - CHASTE_CONST(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 = CHASTE_CONST(44.899999999999999) * CHASTE_MATH::Exp(-CHASTE_CONST(12.010771992818672) - CHASTE_CONST(0.17953321364452424) * var_chaste_interface__membrane__V); // per_second + const double var_sodium_current_h1_gate__beta_h = 1491 / (1 + CHASTE_CONST(323.30000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(7.333333333333333) - CHASTE_CONST(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 = CHASTE_CONST(0.00014999999999999999) + CHASTE_CONST(0.029999999999999999) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(6.666666666666667) + CHASTE_CONST(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 = CHASTE_CONST(0.001) * var_sodium_current_h1_gate__h1_orig_deriv; // 1 / millisecond + const double var_sodium_current_h2_gate__tau_h2 = CHASTE_CONST(0.00044999999999999999) + CHASTE_CONST(0.12) / (1 + CHASTE_MATH::Exp(30 + CHASTE_CONST(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 = CHASTE_CONST(0.001) * var_sodium_current_h2_gate__h2_orig_deriv; // 1 / millisecond + const double var_sodium_current_m_gate__E0_m = CHASTE_CONST(44.399999999999999) + var_chaste_interface__membrane__V; // millivolt + const double var_sodium_current_m_gate__alpha_m = (((var_chaste_interface__membrane__V >= -CHASTE_CONST(44.400001267299999)) && (var_chaste_interface__membrane__V <= -CHASTE_CONST(44.399998732699999))) ? (CHASTE_CONST(0.00058295799999830145) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999708629e-8))) + CHASTE_CONST(394539.57232025318) * (CHASTE_CONST(44.400001267299999) + var_chaste_interface__membrane__V) * (-CHASTE_CONST(0.00058295799999830145) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999708629e-8))) - CHASTE_CONST(0.00058295799999830145) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999708629e-8))))) : (-460 * (CHASTE_CONST(44.399999999999999) + var_chaste_interface__membrane__V) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(3.5035114021936398) - CHASTE_CONST(0.078907914463820727) * var_chaste_interface__membrane__V)))); // per_second + const double var_sodium_current_m_gate__beta_m = 18400 * CHASTE_MATH::Exp(-CHASTE_CONST(0.078907914463820727) * var_sodium_current_m_gate__E0_m); // per_second + const double var_sodium_current__i_Na = (((var_chaste_interface__membrane__V >= -CHASTE_CONST(2.6539450910485349e-6)) && (var_chaste_interface__membrane__V <= CHASTE_CONST(2.6539450910485349e-6))) ? (CHASTE_CONST(188398.77346612973) * (CHASTE_CONST(2.6539450910485349e-6) + var_chaste_interface__membrane__V) * (CHASTE_CONST(0.0096486999999999996) * CHASTE_MATH::Pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8) - CHASTE_MATH::Log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (CHASTE_CONST(0.36499999999999999) * var_chaste_interface__sodium_current_h2_gate__h2 + CHASTE_CONST(0.63500000000000001) * var_chaste_interface__sodium_current_h1_gate__h1) * mParameters[2] * mParameters[5] / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) + CHASTE_CONST(0.0096486999999999996) * CHASTE_MATH::Pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8) - CHASTE_MATH::Log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (CHASTE_CONST(0.36499999999999999) * var_chaste_interface__sodium_current_h2_gate__h2 + CHASTE_CONST(0.63500000000000001) * var_chaste_interface__sodium_current_h1_gate__h1) * mParameters[2] * mParameters[5] / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)))) - CHASTE_CONST(0.0096486999999999996) * CHASTE_MATH::Pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8) - CHASTE_MATH::Log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (CHASTE_CONST(0.36499999999999999) * var_chaste_interface__sodium_current_h2_gate__h2 + CHASTE_CONST(0.63500000000000001) * var_chaste_interface__sodium_current_h1_gate__h1) * mParameters[2] * mParameters[5] / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)))) : (CHASTE_CONST(3635.606491085292) * CHASTE_MATH::Pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + CHASTE_MATH::Exp(CHASTE_CONST(0.037679754693225945) * var_chaste_interface__membrane__V - CHASTE_MATH::Log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (CHASTE_CONST(0.36499999999999999) * var_chaste_interface__sodium_current_h2_gate__h2 + CHASTE_CONST(0.63500000000000001) * var_chaste_interface__sodium_current_h1_gate__h1) * mParameters[2] * var_chaste_interface__membrane__V * mParameters[5] / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(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 = CHASTE_CONST(0.001) * var_sodium_current_m_gate__m_orig_deriv; // 1 / millisecond + const double var_sodium_potassium_pump__i_NaK_max = CHASTE_CONST(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 = CHASTE_CONST(1.6000000000000001) * CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, CHASTE_CONST(1.5)) * var_chaste_interface__cleft_space_ion_concentrations__K_c * var_sodium_potassium_pump__i_NaK_max / ((CHASTE_CONST(1.5) + CHASTE_MATH::Exp(-CHASTE_CONST(1.5) - CHASTE_CONST(0.025000000000000001) * var_chaste_interface__membrane__V)) * (CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, CHASTE_CONST(1.5)) + CHASTE_MATH::Pow(var_sodium_potassium_pump__k_NaK_Na, CHASTE_CONST(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 = CHASTE_CONST(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 = CHASTE_CONST(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 = CHASTE_CONST(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 = CHASTE_CONST(0.001) * mParameters[4];const double var_membrane__i_Stim_converted = CHASTE_STIM(var_chaste_interface__environment__time_converted);const double var_membrane__i_Stim = 1000000 * var_membrane__Cm_converted * var_membrane__i_Stim_converted / CHASTE_CAP();const double var_membrane__V_orig_deriv = -(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];d_dt_chaste_interface_var_membrane__V = CHASTE_CONST(0.001) * var_membrane__V_orig_deriv; + } + + rDY[0] = d_dt_chaste_interface_var_membrane__V; + rDY[1] = d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_i; + rDY[2] = d_dt_chaste_interface_var_sodium_current_m_gate__m; + rDY[3] = d_dt_chaste_interface_var_sodium_current_h1_gate__h1; + rDY[4] = d_dt_chaste_interface_var_sodium_current_h2_gate__h2; + rDY[5] = d_dt_chaste_interface_var_L_type_Ca_channel_d_L_gate__d_L; + rDY[6] = d_dt_chaste_interface_var_L_type_Ca_channel_f_L_gate__f_L; + rDY[7] = d_dt_chaste_interface_var_T_type_Ca_channel_d_T_gate__d_T; + rDY[8] = d_dt_chaste_interface_var_T_type_Ca_channel_f_T_gate__f_T; + rDY[9] = d_dt_chaste_interface_var_Ca_independent_transient_outward_K_current_r_gate__r; + rDY[10] = d_dt_chaste_interface_var_Ca_independent_transient_outward_K_current_s1_gate__s1; + rDY[11] = d_dt_chaste_interface_var_Ca_independent_transient_outward_K_current_s2_gate__s2; + rDY[12] = d_dt_chaste_interface_var_Ca_independent_transient_outward_K_current_s3_gate__s3; + rDY[13] = d_dt_chaste_interface_var_delayed_rectifier_K_current_z_gate__z; + rDY[14] = d_dt_chaste_interface_var_delayed_rectifier_K_current_pa_gate__p_a; + rDY[15] = d_dt_chaste_interface_var_delayed_rectifier_K_current_pi_gate__p_i; + rDY[16] = d_dt_chaste_interface_var_intracellular_ion_concentrations__Na_i; + rDY[17] = d_dt_chaste_interface_var_intracellular_ion_concentrations__K_i; + rDY[18] = d_dt_chaste_interface_var_intracellular_Ca_buffering__O_C; + rDY[19] = d_dt_chaste_interface_var_intracellular_Ca_buffering__O_TC; + rDY[20] = d_dt_chaste_interface_var_intracellular_Ca_buffering__O_TMgC; + rDY[21] = d_dt_chaste_interface_var_intracellular_Ca_buffering__O_TMgMg; + rDY[22] = d_dt_chaste_interface_var_cleft_space_ion_concentrations__K_c; + rDY[23] = d_dt_chaste_interface_var_Ca_handling_by_the_SR__Ca_rel; + rDY[24] = d_dt_chaste_interface_var_Ca_handling_by_the_SR__Ca_up; + rDY[25] = d_dt_chaste_interface_var_Ca_handling_by_the_SR__O_Calse; + rDY[26] = d_dt_chaste_interface_var_Ca_handling_by_the_SR__F1; + rDY[27] = d_dt_chaste_interface_var_Ca_handling_by_the_SR__F2; + rDY[28] = d_dt_chaste_interface_var_Ca_handling_by_the_SR__F3; +} + +template +DEVICE +void Cellaslanidi_atrial_model_2009FromCellMLCvode::EvaluateAnalyticJacobianDevice(ValueType var_chaste_interface__environment__time_converted, const ValueType *rY, ValueType *rDY, ValueType *rJacobian, ValueType *rTmp1, ValueType *rTmp2, ValueType *rTmp3, const unsigned nvars, const ValueType mSetVoltageDerivativeToZero, const ValueType mFixedVoltage, const ValueType *mParameters, const ValueType capacitance, const DeviceStimulusFunctor stim) +{ + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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__intracellular_Ca_buffering__O_C = rY[18]; + // Units: dimensionless; Initial value: 0.029108 + double var_chaste_interface__intracellular_Ca_buffering__O_TC = rY[19]; + // Units: dimensionless; Initial value: 0.014071 + double var_chaste_interface__intracellular_Ca_buffering__O_TMgC = rY[20]; + // Units: dimensionless; Initial value: 0.214036 + double var_chaste_interface__intracellular_Ca_buffering__O_TMgMg = rY[21]; + // Units: dimensionless; Initial value: 0.693565 + 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__Ca_up = rY[24]; + // Units: millimolar; Initial value: 0.730866 + double var_chaste_interface__Ca_handling_by_the_SR__O_Calse = rY[25]; + // Units: dimensionless; Initial value: 0.465921 + double var_chaste_interface__Ca_handling_by_the_SR__F1 = rY[26]; + // Units: dimensionless; Initial value: 0.288039 + double var_chaste_interface__Ca_handling_by_the_SR__F2 = rY[27]; + // Units: dimensionless; Initial value: 0.002262 + + const double var_x0 = CHASTE_CONST(0.083333333333333329) * var_chaste_interface__membrane__V; + const double var_x1 = CHASTE_MATH::Exp(CHASTE_CONST(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 = 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 = CHASTE_MATH::Exp(CHASTE_CONST(0.016955889611951675) * var_chaste_interface__membrane__V); + const double var_x8 = CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[1]; + const double var_x9 = var_x7 * var_x8; + const double var_x10 = CHASTE_MATH::Exp(-CHASTE_CONST(0.02072386508127427) * var_chaste_interface__membrane__V); + const double var_x11 = CHASTE_MATH::Pow(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 + CHASTE_CONST(0.00029999999999999997) * var_x12 + CHASTE_CONST(0.00029999999999999997) * var_x8; + const double var_x15 = 1 / var_x14; + const double var_x16 = var_x15 * mParameters[9]; + const double var_x17 = var_x16 * (CHASTE_CONST(0.016955889611951675) * var_x9 + CHASTE_CONST(0.02072386508127427) * var_x13); + const double var_x18 = CHASTE_MATH::Pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 6); + const double var_x19 = CHASTE_CONST(0.00400016) + CHASTE_CONST(0.0060002399999999996) * var_x18; + const double var_x20 = CHASTE_CONST(0.58999999999999997) * CHASTE_MATH::Pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + CHASTE_CONST(0.40999999999999998) * CHASTE_MATH::Pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2, 3); + const double var_x21 = var_x20 * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r; + const double var_x22 = var_x19 * var_x21; + const double var_x23 = mParameters[7] * var_chaste_interface__delayed_rectifier_K_current_pi_gate__p_i; + const double var_x24 = var_x23 * var_chaste_interface__delayed_rectifier_K_current_pa_gate__p_a; + const double var_x25 = CHASTE_MATH::Pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3); + const double var_x26 = 1 / var_chaste_interface__intracellular_ion_concentrations__K_i; + const double var_x27 = CHASTE_MATH::Log(var_x26 * var_chaste_interface__cleft_space_ion_concentrations__K_c); + const double var_x28 = CHASTE_MATH::Exp(CHASTE_CONST(0.18895643383558949) + CHASTE_CONST(0.052487898287663745) * var_chaste_interface__membrane__V - CHASTE_CONST(1.393) * var_x27); + const double var_x29 = 1 + var_x28; + const double var_x30 = 1 / var_x29; + const double var_x31 = CHASTE_CONST(0.58999999999999997) + var_chaste_interface__cleft_space_ion_concentrations__K_c; + const double var_x32 = CHASTE_MATH::Pow(var_x31, (-3)); + const double var_x33 = var_x32 * mParameters[6]; + const double var_x34 = var_x30 * var_x33; + const double var_x35 = var_x25 * var_x34; + const double var_x36 = (-90 + CHASTE_CONST(1.8) * var_chaste_interface__membrane__V) * mParameters[3]; + const double var_x37 = CHASTE_CONST(0.083333333333333329) * var_x1 / CHASTE_MATH::Pow(var_x2, 2); + const double var_x38 = CHASTE_MATH::Exp(-CHASTE_CONST(1.5) - CHASTE_CONST(0.025000000000000001) * var_chaste_interface__membrane__V); + const double var_x39 = 1 + var_chaste_interface__cleft_space_ion_concentrations__K_c; + const double var_x40 = 1 / var_x39; + const double var_x41 = CHASTE_MATH::Pow((1 + CHASTE_CONST(0.66666666666666663) * var_x38), (-2)); + const double var_x42 = CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, CHASTE_CONST(1.5)); + const double var_x43 = 1 / (CHASTE_CONST(36.4828726939094) + var_x42); + const double var_x44 = var_x42 * var_x43 * var_chaste_interface__cleft_space_ion_concentrations__K_c; + const double var_x45 = var_x38 * var_x40 * var_x41 * var_x44; + const double var_x46 = -CHASTE_CONST(26.53945091048535) * var_x27 + var_chaste_interface__membrane__V; + const double var_x47 = CHASTE_MATH::Pow(var_x29, (-2)); + const double var_x48 = var_x28 * var_x33 * var_x46 * var_x47; + const double var_x49 = var_x25 * var_x48; + const double var_x50 = 1 / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))); + const double var_x51 = 1 / var_chaste_interface__intracellular_ion_concentrations__Na_i; + const double var_x52 = var_x51 * mParameters[2]; + const double var_x53 = CHASTE_MATH::Log(var_x52); + const double var_x54 = CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8) - var_x53); + const double var_x55 = var_x50 * (-1 + var_x54); + const double var_x56 = CHASTE_CONST(0.36499999999999999) * var_chaste_interface__sodium_current_h2_gate__h2 + CHASTE_CONST(0.63500000000000001) * var_chaste_interface__sodium_current_h1_gate__h1; + const double var_x57 = CHASTE_MATH::Pow(var_chaste_interface__sodium_current_m_gate__m, 3); + const double var_x58 = mParameters[2] * mParameters[5]; + const double var_x59 = var_x57 * var_x58; + const double var_x60 = var_x56 * var_x59; + const double var_x61 = CHASTE_CONST(1817.803245542646) * var_x60; + const double var_x62 = 1 / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8))); + const double var_x63 = CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8) - var_x53); + const double var_x64 = var_x62 * (-1 + var_x63); + const double var_x65 = (var_chaste_interface__membrane__V >= -CHASTE_CONST(2.6539450910485349e-6)) && (var_chaste_interface__membrane__V <= CHASTE_CONST(2.6539450910485349e-6)); + const double var_x66 = CHASTE_CONST(0.037679754693225945) * var_chaste_interface__membrane__V; + const double var_x67 = CHASTE_MATH::Exp(var_x66); + const double var_x68 = -1 + var_x67; + const double var_x69 = 1 / var_x68; + const double var_x70 = CHASTE_MATH::Exp(var_x66 - var_x53); + const double var_x71 = -1 + var_x70; + const double var_x72 = var_x69 * var_x71; + const double var_x73 = CHASTE_CONST(136.98876074519373) * var_x60 * var_chaste_interface__membrane__V; + const double var_x74 = var_x69 * var_x70; + const double var_x75 = ((var_x65) ? (var_x55 * var_x61 + var_x61 * var_x64) : (var_x73 * var_x74 + CHASTE_CONST(3635.606491085292) * var_x60 * var_x72 - var_x67 * var_x71 * var_x73 / CHASTE_MATH::Pow(var_x68, 2))); + const double var_x76 = 1 / mParameters[4]; + const double var_x77 = CHASTE_CONST(0.001) * var_x76; + const double var_x78 = CHASTE_CONST(0.00020000000000000001) + var_chaste_interface__intracellular_ion_concentrations__Ca_i; + const double var_x79 = 1 / var_x78; + const double var_x80 = 1 / var_chaste_interface__intracellular_ion_concentrations__Ca_i; + const double var_x81 = CHASTE_MATH::Pow(var_x78, (-2)); + const double var_x82 = var_x10 * var_x11 * var_x16; + const double var_x83 = CHASTE_MATH::Pow(var_x14, (-2)); + const double var_x84 = var_x9 - var_x13; + const double var_x85 = var_x83 * var_x84 * mParameters[9]; + const double var_x86 = var_x11 * var_x85; + const double var_x87 = CHASTE_CONST(0.5) + CHASTE_CONST(188398.77346612973) * var_chaste_interface__membrane__V; + const double var_x88 = var_x56 * var_x58 * CHASTE_MATH::Pow(var_chaste_interface__sodium_current_m_gate__m, 2); + const double var_x89 = CHASTE_CONST(0.028946099999999999) * var_x88; + const double var_x90 = var_x64 * var_x89; + const double var_x91 = var_x72 * var_chaste_interface__membrane__V; + const double var_x92 = ((var_x65) ? (-var_x90 + var_x87 * (var_x90 + var_x55 * var_x89)) : (CHASTE_CONST(10906.819473255875) * var_x88 * var_x91)); + const double var_x93 = CHASTE_CONST(0.0061269244999999995) * var_x59; + const double var_x94 = var_x64 * var_x93; + const double var_x95 = var_x59 * var_x91; + const double var_x96 = ((var_x65) ? (-var_x94 + var_x87 * (var_x94 + var_x55 * var_x93)) : (CHASTE_CONST(2308.6101218391605) * var_x95)); + const double var_x97 = CHASTE_CONST(0.0035217754999999997) * var_x59; + const double var_x98 = var_x64 * var_x97; + const double var_x99 = ((var_x65) ? (-var_x98 + var_x87 * (var_x98 + var_x55 * var_x97)) : (CHASTE_CONST(1326.9963692461315) * var_x95)); + const double var_x100 = CHASTE_CONST(0.001) * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L; + const double var_x101 = var_x36 * var_x76; + const double var_x102 = CHASTE_CONST(0.001) * var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L; + const double var_x103 = CHASTE_CONST(0.001) * var_chaste_interface__T_type_Ca_channel_f_T_gate__f_T; + const double var_x104 = var_x76 * (-CHASTE_CONST(0.22800000000000001) + CHASTE_CONST(0.0060000000000000001) * var_chaste_interface__membrane__V); + const double var_x105 = CHASTE_CONST(0.001) * var_chaste_interface__T_type_Ca_channel_d_T_gate__d_T; + const double var_x106 = var_x20 * var_x46; + const double var_x107 = CHASTE_MATH::Pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 2); + const double var_x108 = var_x46 * var_x76; + const double var_x109 = var_x108 * var_x19 * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r; + const double var_x110 = CHASTE_MATH::Pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2, 2); + const double var_x111 = var_x21 * CHASTE_MATH::Pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 5); + const double var_x112 = CHASTE_CONST(0.001) * var_chaste_interface__delayed_rectifier_K_current_pi_gate__p_i; + const double var_x113 = var_x108 * mParameters[7]; + const double var_x114 = CHASTE_CONST(0.001) * var_chaste_interface__delayed_rectifier_K_current_pa_gate__p_a; + const double var_x115 = CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 2); + const double var_x116 = var_x115 * mParameters[1]; + const double var_x117 = var_x116 * var_x16 * var_x7; + const double var_x118 = 1 / (CHASTE_CONST(1.5) + var_x38); + const double var_x119 = var_x118 * var_x40; + const double var_x120 = var_x119 * var_x43; + const double var_x121 = var_x120 * CHASTE_MATH::Sqrt(var_chaste_interface__intracellular_ion_concentrations__Na_i) * var_chaste_interface__cleft_space_ion_concentrations__K_c; + const double var_x122 = var_x116 * var_x85; + const double var_x123 = CHASTE_MATH::Pow((1 + CHASTE_CONST(0.027410122234342148) * var_x42), (-2)); + const double var_x124 = CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 2); + const double var_x125 = var_x119 * var_x123 * var_x124 * var_chaste_interface__cleft_space_ion_concentrations__K_c; + const double var_x126 = var_x52 * var_x56 * var_x57 * mParameters[5]; + const double var_x127 = CHASTE_CONST(0.0096486999999999996) * var_x126; + const double var_x128 = var_x127 * var_x62 * var_x63; + const double var_x129 = ((var_x65) ? (-var_x128 + var_x87 * (var_x128 + var_x127 * var_x50 * var_x54)) : (CHASTE_CONST(3635.606491085292) * var_x126 * var_x74 * var_chaste_interface__membrane__V)); + const double var_x130 = CHASTE_CONST(26.53945091048535) * var_x5; + const double var_x131 = CHASTE_CONST(26.53945091048535) * var_x26; + const double var_x132 = var_x26 * var_x35; + const double var_x133 = var_x26 * var_x49; + const double var_x134 = 1 / var_chaste_interface__cleft_space_ion_concentrations__K_c; + const double var_x135 = CHASTE_CONST(26.53945091048535) * var_x134; + const double var_x136 = CHASTE_MATH::Pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 2); + const double var_x137 = var_x136 * var_x34; + const double var_x138 = var_x25 * var_x30 * mParameters[6] / CHASTE_MATH::Pow(var_x31, 4); + const double var_x139 = CHASTE_MATH::Pow(var_x39, (-2)); + const double var_x140 = var_x118 * var_x139 * var_x44; + const double var_x141 = (CHASTE_CONST(0.079263098651550096) - CHASTE_CONST(0.001585261973031002) * var_chaste_interface__membrane__V) * mParameters[3]; + const double var_x142 = 1 / (CHASTE_CONST(1.3999999999999999) + CHASTE_CONST(0.80000000000000004) * var_chaste_interface__Ca_handling_by_the_SR__Ca_up + CHASTE_CONST(3333.3333333333335) * var_chaste_interface__intracellular_ion_concentrations__Ca_i); + const double var_x143 = CHASTE_MATH::Pow((CHASTE_CONST(0.00041999999999999996) + CHASTE_CONST(0.00023999999999999998) * var_chaste_interface__Ca_handling_by_the_SR__Ca_up + var_chaste_interface__intracellular_ion_concentrations__Ca_i), (-2)); + const double var_x144 = CHASTE_CONST(3333.3333333333335) * var_chaste_interface__intracellular_ion_concentrations__Ca_i - CHASTE_CONST(0.32000000000000006) * var_chaste_interface__Ca_handling_by_the_SR__Ca_up; + const double var_x145 = CHASTE_MATH::Pow(var_chaste_interface__Ca_handling_by_the_SR__F2, 2); + const double var_x146 = CHASTE_CONST(0.25) + var_chaste_interface__Ca_handling_by_the_SR__F2; + const double var_x147 = CHASTE_MATH::Pow(var_x146, (-2)); + const double var_x148 = var_x147 * mParameters[0]; + const double var_x149 = var_x145 * var_x148; + const double var_x150 = CHASTE_CONST(0.00088070109612833447) * var_x149; + const double var_x151 = CHASTE_CONST(0.00020079984991726025) - CHASTE_CONST(5.2842065767700066e-6) * var_chaste_interface__membrane__V; + const double var_x152 = 32 * var_chaste_interface__intracellular_ion_concentrations__Ca_i; + const double var_x153 = var_x143 * var_x144; + 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_x145 * mParameters[0] / CHASTE_MATH::Pow(var_x146, 3); + const double var_x156 = 1 / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999708629e-8))); + const double var_x157 = 1 / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999708629e-8))); + const double var_x158 = (var_chaste_interface__membrane__V >= -CHASTE_CONST(44.400001267299999)) && (var_chaste_interface__membrane__V <= -CHASTE_CONST(44.399998732699999)); + const double var_x159 = CHASTE_MATH::Exp(-CHASTE_CONST(3.5035114021936398) - CHASTE_CONST(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 = CHASTE_CONST(44.399999999999999) + var_chaste_interface__membrane__V; + const double var_x163 = CHASTE_CONST(0.00058295799999830145) * var_x156; + const double var_x164 = CHASTE_MATH::Exp(-CHASTE_CONST(7.333333333333333) - CHASTE_CONST(0.077519379844961239) * var_chaste_interface__membrane__V); + const double var_x165 = 1 / (1 + CHASTE_CONST(323.30000000000001) * var_x164); + const double var_x166 = CHASTE_MATH::Exp(-CHASTE_CONST(12.010771992818672) - CHASTE_CONST(0.17953321364452424) * var_chaste_interface__membrane__V); + const double var_x167 = 1 / (1491 * var_x165 + CHASTE_CONST(44.899999999999999) * var_x166); + const double var_x168 = CHASTE_CONST(8.0610412926391373) * var_x166; + const double var_x169 = -var_x167 * var_x168 + CHASTE_CONST(2.019719479407183e-5) * var_x166 * (var_x168 - CHASTE_CONST(0.35750508923240704) * var_x164 / CHASTE_MATH::Pow((CHASTE_CONST(0.0030931023816888337) + var_x164), 2)) / CHASTE_MATH::Pow((var_x165 + CHASTE_CONST(0.030114017437961098) * var_x166), 2); + const double var_x170 = CHASTE_MATH::Exp(CHASTE_CONST(6.666666666666667) + CHASTE_CONST(0.16666666666666666) * var_chaste_interface__membrane__V); + const double var_x171 = 1 + var_x170; + const double var_x172 = 1 / var_x171; + const double var_x173 = CHASTE_CONST(0.001) / (CHASTE_CONST(0.00014999999999999999) + CHASTE_CONST(0.029999999999999999) * var_x172); + const double var_x174 = -CHASTE_CONST(44.899999999999999) * var_x166 * var_x167; + const double var_x175 = CHASTE_MATH::Exp(30 + CHASTE_CONST(0.5) * var_chaste_interface__membrane__V); + const double var_x176 = 1 + var_x175; + const double var_x177 = 1 / var_x176; + const double var_x178 = CHASTE_CONST(0.001) / (CHASTE_CONST(0.00044999999999999999) + CHASTE_CONST(0.12) * var_x177); + const double var_x179 = 1 / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(1.0000000000010001e-7))); + const double var_x180 = 1 / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(1.0000000000010001e-7))); + const double var_x181 = (var_chaste_interface__membrane__V >= -CHASTE_CONST(5.0000002500000003)) && (var_chaste_interface__membrane__V <= -CHASTE_CONST(4.9999997499999997)); + const double var_x182 = CHASTE_CONST(0.40000000000000002) * var_chaste_interface__membrane__V; + const double var_x183 = CHASTE_MATH::Exp(2 + var_x182); + const double var_x184 = -1 + var_x183; + const double var_x185 = 1 / var_x184; + const double var_x186 = 5 + var_chaste_interface__membrane__V; + const double var_x187 = 1 / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(1.000000000139778e-7))); + const double var_x188 = 1 / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999991773334e-8))); + const double var_x189 = CHASTE_CONST(8.3600000009281459) * var_x187 + CHASTE_CONST(8.359999999071853) * var_x188; + const double var_x190 = 1 / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999998742257e-8))); + const double var_x191 = 1 / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(1.0000000000162864e-7))); + const double var_x192 = CHASTE_CONST(24.999999999639201) * var_x190 + CHASTE_CONST(25.000000000360799) * var_x191; + const double var_x193 = var_chaste_interface__membrane__V >= -CHASTE_CONST(45.000000249999999); + const double var_x194 = var_chaste_interface__membrane__V >= -CHASTE_CONST(10.000000480800001); + const double var_x195 = var_chaste_interface__membrane__V <= -CHASTE_CONST(44.999999750000001); + const double var_x196 = var_chaste_interface__membrane__V <= -CHASTE_CONST(9.9999995191999993); + const double var_x197 = (var_x193) && (var_x194) && (var_x195) && (var_x196); + const double var_x198 = CHASTE_MATH::Exp(-CHASTE_CONST(2.0798668885191347) - CHASTE_CONST(0.20798668885191349) * var_chaste_interface__membrane__V); + const double var_x199 = -1 + var_x198; + const double var_x200 = 50 / var_x199; + const double var_x201 = 10 + var_chaste_interface__membrane__V; + const double var_x202 = var_x200 + CHASTE_CONST(10.399334442595674) * var_x198 * var_x201 / CHASTE_MATH::Pow(var_x199, 2); + const double var_x203 = (var_x193) && (var_x195); + const double var_x204 = CHASTE_MATH::Exp(-18 - var_x182); + const double var_x205 = -1 + var_x204; + const double var_x206 = CHASTE_CONST(16.719999999999999) / var_x205; + const double var_x207 = 45 + var_chaste_interface__membrane__V; + const double var_x208 = var_x206 + CHASTE_CONST(6.6879999999999997) * var_x204 * var_x207 / CHASTE_MATH::Pow(var_x205, 2); + const double var_x209 = (var_x194) && (var_x196); + const double var_x210 = CHASTE_MATH::Exp(-CHASTE_CONST(1.6590909090909092) - CHASTE_CONST(0.15151515151515152) * var_chaste_interface__membrane__V); + const double var_x211 = 1 + var_x210; + const double var_x212 = CHASTE_CONST(1.1200000000011203e-6) * var_x180; + const double var_x213 = ((var_x181) ? (-var_x212 + CHASTE_CONST(1999999.9999979998) * (CHASTE_CONST(5.0000002500000003) + var_chaste_interface__membrane__V) * (var_x212 + CHASTE_CONST(1.1200000000011203e-6) * var_x179)) : (CHASTE_CONST(4.4800000000000004) * var_x185 * var_x186)); + const double var_x214 = CHASTE_CONST(4.1799999996561256e-6) * var_x188; + const double var_x215 = var_x214 + CHASTE_CONST(1999999.9999424887) * (CHASTE_CONST(45.000000249999999) + var_chaste_interface__membrane__V) * (-var_x214 - CHASTE_CONST(4.1800000005842713e-6) * var_x187); + const double var_x216 = CHASTE_CONST(2.4040000000391526e-5) * var_x191; + const double var_x217 = var_x216 + CHASTE_CONST(1039933.4442576389) * (CHASTE_CONST(10.000000480800001) + var_chaste_interface__membrane__V) * (-var_x216 - CHASTE_CONST(2.4039999999697637e-5) * var_x190); + const double var_x218 = var_x200 * var_x201; + const double var_x219 = var_x206 * var_x207; + const double var_x220 = ((var_x197) ? (var_x215 + var_x217) : ((var_x203) ? (var_x215 - var_x218) : ((var_x209) ? (var_x217 - var_x219) : (-var_x218 - var_x219)))); + const double var_x221 = 1 / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(1.0000000000287557e-7))); + const double var_x222 = 1 / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(1.0000000000287557e-7))); + const double var_x223 = (var_chaste_interface__membrane__V >= -CHASTE_CONST(18.000000400000001)) && (var_chaste_interface__membrane__V <= -CHASTE_CONST(17.999999599999999)); + const double var_x224 = CHASTE_CONST(4.5) + CHASTE_CONST(0.25) * var_chaste_interface__membrane__V; + const double var_x225 = CHASTE_MATH::Exp(var_x224); + const double var_x226 = -1 + var_x225; + const double var_x227 = 1 / var_x226; + const double var_x228 = 18 + var_chaste_interface__membrane__V; + const double var_x229 = ((var_x223) ? (CHASTE_CONST(4.2450000000000001) * var_x221 + CHASTE_CONST(4.2450000000000001) * var_x222) : (CHASTE_CONST(8.4900000000000002) * var_x227 - CHASTE_CONST(2.1225000000000001) * var_x225 * var_x228 / CHASTE_MATH::Pow(var_x226, 2))); + const double var_x230 = CHASTE_MATH::Exp(-var_x224); + const double var_x231 = 1 + var_x230; + const double var_x232 = CHASTE_CONST(16.980499999999999) * var_x230 / CHASTE_MATH::Pow(var_x231, 2); + const double var_x233 = 1 / var_x231; + const double var_x234 = CHASTE_CONST(67.921999999999997) * var_x233; + const double var_x235 = CHASTE_CONST(3.3960000000976542e-6) * var_x222; + const double var_x236 = ((var_x223) ? (-var_x235 + CHASTE_CONST(1249999.9999640554) * (CHASTE_CONST(18.000000400000001) + var_chaste_interface__membrane__V) * (var_x235 + CHASTE_CONST(3.3960000000976542e-6) * var_x221)) : (CHASTE_CONST(8.4900000000000002) * var_x227 * var_x228)); + const double var_x237 = 1 / (var_x234 + var_x236); + const double var_x238 = CHASTE_MATH::Exp(-CHASTE_CONST(3.7704918032786887) - CHASTE_CONST(0.16393442622950821) * var_chaste_interface__membrane__V); + const double var_x239 = 1 + var_x238; + const double var_x240 = CHASTE_CONST(0.77666666666666673) + CHASTE_CONST(0.033333333333333333) * var_chaste_interface__membrane__V; + const double var_x241 = CHASTE_MATH::Exp(-var_x240); + const double var_x242 = CHASTE_MATH::Exp(var_x240); + const double var_x243 = CHASTE_MATH::Exp(CHASTE_CONST(4.876462938881664) + CHASTE_CONST(0.065019505851755519) * var_chaste_interface__membrane__V); + const double var_x244 = CHASTE_MATH::Exp(-CHASTE_CONST(0.9003601440576231) - CHASTE_CONST(0.012004801920768308) * var_chaste_interface__membrane__V); + const double var_x245 = CHASTE_CONST(9.6370000000000005) * var_x243 + CHASTE_CONST(9.6370000000000005) * var_x244; + const double var_x246 = 1 / var_x245; + const double var_x247 = CHASTE_CONST(0.11569027611044419) * var_x244 - CHASTE_CONST(0.62659297789336799) * var_x243; + const double var_x248 = CHASTE_MATH::Exp(-CHASTE_CONST(2.6628794603230959) - CHASTE_CONST(0.17752529735487307) * var_chaste_interface__membrane__V); + const double var_x249 = 1 + var_x248; + const double var_x250 = CHASTE_MATH::Exp(-CHASTE_CONST(0.1388888888888889) * var_chaste_interface__membrane__V); + const double var_x251 = CHASTE_MATH::Exp(var_x0); + const double var_x252 = CHASTE_CONST(0.00040000000000000002) + 1 / (CHASTE_CONST(8.0109999999999992) * var_x250 + CHASTE_CONST(386.60000000000002) * var_x251); + const double var_x253 = 1 / var_x252; + const double var_x254 = CHASTE_MATH::Exp(CHASTE_CONST(327.99999999999994) + 10 * var_chaste_interface__membrane__V); + const double var_x255 = 1 + var_x254; + const double var_x256 = 1 / var_x255; + const double var_x257 = 1 / (CHASTE_CONST(0.020400000000000001) + CHASTE_CONST(0.54659999999999997) * var_x256); + const double var_x258 = CHASTE_MATH::Exp(CHASTE_CONST(4.0070821529745047) + CHASTE_CONST(0.14164305949008499) * var_chaste_interface__membrane__V); + const double var_x259 = 1 + var_x258; + const double var_x260 = CHASTE_CONST(0.000141643059490085) * var_x258 / CHASTE_MATH::Pow(var_x259, 2); + const double var_x261 = -1 / var_x259; + const double var_x262 = var_x254 / CHASTE_MATH::Pow(var_x255, 2); + const double var_x263 = CHASTE_MATH::Exp(CHASTE_CONST(0.96921975662133131) - CHASTE_CONST(0.071581961345740866) * var_chaste_interface__membrane__V); + const double var_x264 = 1 + var_x263; + const double var_x265 = 1 / var_x264; + const double var_x266 = 1 / (CHASTE_CONST(5.75) * var_x256 + CHASTE_CONST(0.45000000000000001) * var_x265); + const double var_x267 = CHASTE_MATH::Exp(46 + 2 * var_chaste_interface__membrane__V); + const double var_x268 = 1 + var_x267; + const double var_x269 = 1 / var_x268; + const double var_x270 = 1 / (CHASTE_CONST(0.5) + CHASTE_CONST(7.5) * var_x269); + const double var_x271 = CHASTE_MATH::Exp(CHASTE_CONST(1.8506208911614319) + CHASTE_CONST(0.036523009495982472) * var_chaste_interface__membrane__V); + const double var_x272 = 1 + var_x271; + const double var_x273 = CHASTE_MATH::Exp(CHASTE_CONST(0.065217391304347824) - CHASTE_CONST(0.072463768115942032) * var_chaste_interface__membrane__V); + const double var_x274 = 1 + var_x273; + const double var_x275 = CHASTE_MATH::Exp(-CHASTE_CONST(0.045816915605241454) * var_chaste_interface__membrane__V); + const double var_x276 = CHASTE_MATH::Exp(CHASTE_CONST(0.014398433450440593) * var_chaste_interface__membrane__V); + const double var_x277 = CHASTE_CONST(0.059999999999999998) + 1 / (CHASTE_CONST(0.29999999999999999) * var_x275 + CHASTE_CONST(1.6599999999999999) * var_x276); + const double var_x278 = 1 / var_x277; + const double var_x279 = CHASTE_MATH::Exp(-CHASTE_CONST(0.68918918918918914) - CHASTE_CONST(0.13513513513513511) * var_chaste_interface__membrane__V); + const double var_x280 = 1 + var_x279; + const double var_x281 = CHASTE_MATH::Exp(-CHASTE_CONST(0.076769537847382163) * var_chaste_interface__membrane__V); + const double var_x282 = CHASTE_MATH::Exp(CHASTE_CONST(0.03941508020968823) * var_chaste_interface__membrane__V); + const double var_x283 = CHASTE_MATH::Exp(-CHASTE_CONST(0.018299935950224173) * var_chaste_interface__membrane__V); + const double var_x284 = CHASTE_MATH::Exp(CHASTE_CONST(0.009420009985210585) * var_chaste_interface__membrane__V); + const double var_x285 = CHASTE_MATH::Exp(CHASTE_CONST(2.539728728905752) + CHASTE_CONST(0.05358970648917756) * var_chaste_interface__membrane__V); + const double var_x286 = 1 + var_x285; + const double var_x287 = var_x120 * var_x42; + const double var_x288 = -CHASTE_CONST(3.290319067574035e-6) - CHASTE_CONST(4.9354786013610522e-6) * var_x18; + const double var_x289 = var_x46 * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r; + const double var_x290 = var_x288 * var_x289; + const double var_x291 = CHASTE_CONST(1.77) * var_x107; + const double var_x292 = CHASTE_CONST(1.23) * var_x110; + const double var_x293 = var_x111 * var_x46; + const double var_x294 = CHASTE_CONST(0.021829942145742926) * var_x27 - CHASTE_CONST(0.00082254686501890791) * var_chaste_interface__membrane__V; + const double var_x295 = mParameters[7] * var_chaste_interface__delayed_rectifier_K_current_pa_gate__p_a; + const double var_x296 = CHASTE_CONST(0.021829942145742926) * var_x5; + const double var_x297 = CHASTE_CONST(0.021829942145742926) * var_x24; + const double var_x298 = CHASTE_CONST(0.0049352811901134472) * var_x46; + const double var_x299 = 200 * var_chaste_interface__intracellular_ion_concentrations__Ca_i; + const double var_x300 = CHASTE_CONST(1.6583208100573134e-5) + CHASTE_CONST(2.4874812150859699e-5) * var_x18; + const double var_x301 = var_x21 * var_x300; + const double var_x302 = var_x289 * var_x300; + const double var_x303 = CHASTE_CONST(0.0041456361996952953) * var_chaste_interface__membrane__V - CHASTE_CONST(0.11002290841454433) * var_x27; + const double var_x304 = CHASTE_CONST(0.11002290841454433) * var_x5; + const double var_x305 = CHASTE_CONST(0.11002290841454433) * var_x24; + const double var_x306 = CHASTE_CONST(0.11777375567316183) * var_x149; + const double var_x307 = CHASTE_CONST(0.23554751134632365) * var_x154; + const double var_x308 = CHASTE_MATH::Exp(-CHASTE_CONST(1.6000000000000001) + CHASTE_CONST(0.080000000000000002) * var_chaste_interface__membrane__V); + const double var_x309 = CHASTE_CONST(0.019200000000000002) * var_x308 * var_chaste_interface__Ca_handling_by_the_SR__F1; + const double var_x310 = CHASTE_CONST(0.00029999999999999997) + var_chaste_interface__intracellular_ion_concentrations__Ca_i; + const double var_x311 = CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Ca_i, 4); + const double var_x312 = var_x311 / CHASTE_MATH::Pow(var_x310, 5); + const double var_x313 = CHASTE_MATH::Pow(var_x310, (-4)); + const double var_x314 = var_x313 * CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Ca_i, 3); + const double var_x315 = CHASTE_CONST(0.81520000000000004) * var_x312 - CHASTE_CONST(0.81520000000000004) * var_x314; + const double var_x316 = var_x311 * var_x313; + const double var_x317 = CHASTE_CONST(0.20380000000000001) * var_x316 + CHASTE_CONST(0.23999999999999999) * var_x308; + const double var_x318 = CHASTE_CONST(1.3584000000000001) * var_x312 - CHASTE_CONST(1.3584000000000001) * var_x314; + const double var_x319 = CHASTE_CONST(0.033960000000000004) + CHASTE_CONST(0.33960000000000001) * var_x316; + + // Matrix entries + rJacobian[0 * nvars + 0] = mSetVoltageDerivativeToZero ? CHASTE_CONST(0.0) : (-var_x77 * (CHASTE_CONST(0.0014400000000000001) + var_x17 + var_x22 + var_x24 + var_x5 + var_x75 + 2 * var_x35 + CHASTE_CONST(0.0060000000000000001) * var_x6 + CHASTE_CONST(0.0011450666666666667) * var_x45 - CHASTE_CONST(0.10497579657532749) * var_x49 + var_x36 * var_x37 + (CHASTE_CONST(1.8) * var_x3 + CHASTE_CONST(1.8) * var_x4) * mParameters[3])); + rJacobian[0 * nvars + 1] = -CHASTE_CONST(1.7614021922566692e-8) + CHASTE_CONST(0.0017614021922566689) * var_x17 - CHASTE_CONST(5.2842065767700066e-6) * var_x6 + var_x141 * var_x37 + (-CHASTE_CONST(0.001585261973031002) * var_x3 - CHASTE_CONST(0.001585261973031002) * var_x4) * mParameters[3]; + rJacobian[0 * nvars + 2] = (CHASTE_CONST(0.001) - CHASTE_CONST(0.001) * var_chaste_interface__sodium_current_m_gate__m) * ((var_x158) ? (-230 * var_x156 - 230 * var_x157) : (-var_x161 - CHASTE_CONST(36.297640653357533) * var_x159 * var_x162 / CHASTE_MATH::Pow(var_x160, 2))) + CHASTE_CONST(1.4519056261343013) * var_x159 * var_chaste_interface__sodium_current_m_gate__m; + rJacobian[0 * nvars + 3] = var_x169 * var_x173 + CHASTE_CONST(0.0055555555555555558) * var_x170 * (-var_x174 - var_chaste_interface__sodium_current_h1_gate__h1) / (CHASTE_MATH::Pow(var_x171, 2) * CHASTE_MATH::Pow((CHASTE_CONST(0.0050000000000000001) + var_x172), 2)); + rJacobian[0 * nvars + 4] = var_x169 * var_x178 + CHASTE_CONST(0.0041666666666666666) * var_x175 * (-var_x174 - var_chaste_interface__sodium_current_h2_gate__h2) / (CHASTE_MATH::Pow(var_x176, 2) * CHASTE_MATH::Pow((CHASTE_CONST(0.0037499999999999999) + var_x177), 2)); + rJacobian[0 * nvars + 5] = (-var_x102 + CHASTE_CONST(0.001) / var_x211) * (((var_x181) ? (CHASTE_CONST(2.2400000000000002) * var_x179 + CHASTE_CONST(2.2400000000000002) * var_x180) : (CHASTE_CONST(4.4800000000000004) * var_x185 - CHASTE_CONST(1.7920000000000003) * var_x183 * var_x186 / CHASTE_MATH::Pow(var_x184, 2))) + ((var_x197) ? (-var_x189 - var_x192) : ((var_x203) ? (-var_x189 - var_x202) : ((var_x209) ? (-var_x192 - var_x208) : (-var_x202 - var_x208))))) + CHASTE_CONST(0.00015151515151515152) * var_x210 * (var_x213 + var_x220) / CHASTE_MATH::Pow(var_x211, 2); + rJacobian[0 * nvars + 6] = (var_x232 + var_x229) * (-var_x100 + CHASTE_CONST(0.001) * var_x236 * var_x237) + (var_x234 + var_x236) * (CHASTE_CONST(0.001) * var_x229 * var_x237 + CHASTE_CONST(2.1675996343523e-7) * var_x236 * (-var_x229 - var_x232) / CHASTE_MATH::Pow((var_x233 + CHASTE_CONST(0.014722770236447691) * var_x236), 2)); + rJacobian[0 * nvars + 7] = (-var_x105 + CHASTE_CONST(0.001) / var_x239) * (CHASTE_CONST(22.472433333333335) * var_x242 - CHASTE_CONST(22.472433333333335) * var_x241) + CHASTE_CONST(0.0001639344262295082) * var_x238 * (CHASTE_CONST(674.173) * var_x241 + CHASTE_CONST(674.173) * var_x242) / CHASTE_MATH::Pow(var_x239, 2); + rJacobian[0 * nvars + 8] = var_x245 * (-CHASTE_CONST(0.00011569027611044419) * var_x244 * var_x246 + CHASTE_CONST(0.00010376673238559718) * var_x244 * var_x247 / CHASTE_MATH::Pow((var_x243 + var_x244), 2)) - var_x247 * (-var_x103 + CHASTE_CONST(0.0096369999999999997) * var_x244 * var_x246); + rJacobian[0 * nvars + 9] = CHASTE_CONST(0.00017752529735487306) * var_x248 * var_x253 / CHASTE_MATH::Pow(var_x249, 2) - CHASTE_CONST(6.6907730760079843e-9) * (-var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r + 1 / var_x249) * (CHASTE_CONST(1.1126388888888887) * var_x250 - CHASTE_CONST(32.216666666666669) * var_x251) / (CHASTE_MATH::Pow(var_x252, 2) * CHASTE_MATH::Pow((var_x251 + CHASTE_CONST(0.020721676151060523) * var_x250), 2)); + rJacobian[0 * nvars + 10] = -var_x257 * var_x260 + CHASTE_CONST(0.018294914013904134) * var_x262 * (-var_x261 - var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1) / CHASTE_MATH::Pow((CHASTE_CONST(0.037321624588364438) + var_x256), 2); + rJacobian[0 * nvars + 11] = -var_x260 * var_x266 + CHASTE_CONST(3.0245746691871456e-5) * (-var_x261 - var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2) * (CHASTE_CONST(57.5) * var_x262 - CHASTE_CONST(0.032211882605583393) * var_x263 / CHASTE_MATH::Pow(var_x264, 2)) / CHASTE_MATH::Pow((var_x256 + CHASTE_CONST(0.078260869565217397) * var_x265), 2); + rJacobian[0 * nvars + 12] = -CHASTE_CONST(2.1922574727480476e-5) * var_x270 * var_x271 / CHASTE_MATH::Pow(var_x272, 2) + CHASTE_CONST(0.00026666666666666668) * var_x267 * (CHASTE_CONST(0.39975990396158467) - var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3 + CHASTE_CONST(0.60024009603841544) / var_x272) / (CHASTE_MATH::Pow(var_x268, 2) * CHASTE_MATH::Pow((CHASTE_CONST(0.066666666666666666) + var_x269), 2)); + rJacobian[0 * nvars + 13] = CHASTE_CONST(7.2463768115942027e-5) * var_x273 * var_x278 / CHASTE_MATH::Pow(var_x274, 2) - CHASTE_CONST(0.00036289737262302222) * (-var_chaste_interface__delayed_rectifier_K_current_z_gate__z + 1 / var_x274) * (CHASTE_CONST(0.013745074681572435) * var_x275 - CHASTE_CONST(0.023901399527731383) * var_x276) / (CHASTE_MATH::Pow(var_x277, 2) * CHASTE_MATH::Pow((var_x276 + CHASTE_CONST(0.18072289156626506) * var_x275), 2)); + rJacobian[0 * nvars + 14] = (-var_x114 + CHASTE_CONST(0.001) / var_x280) * (CHASTE_CONST(0.35473572188719404) * var_x282 - CHASTE_CONST(0.099800399201596807) * var_x281) + CHASTE_CONST(0.00013513513513513514) * var_x279 * (9 * var_x282 + CHASTE_CONST(1.3) * var_x281) / CHASTE_MATH::Pow(var_x280, 2); + rJacobian[0 * nvars + 15] = (-var_x112 + CHASTE_CONST(0.001) / var_x286) * (CHASTE_CONST(6.1795265502981431) * var_x284 - CHASTE_CONST(1.8299935950224173) * var_x283) - CHASTE_CONST(5.3589706489177562e-5) * var_x285 * (100 * var_x283 + 656 * var_x284) / CHASTE_MATH::Pow(var_x286, 2); + rJacobian[0 * nvars + 16] = -CHASTE_CONST(1.6450937300378158e-8) - CHASTE_CONST(0.0024676405950567236) * var_x17 - CHASTE_CONST(2.8256129907129523e-6) * var_x45 - CHASTE_CONST(0.00082254686501890791) * var_x75; + rJacobian[0 * nvars + 17] = -CHASTE_CONST(1.151565611026471e-6) - CHASTE_CONST(0.00082254686501890791) * var_x24 - CHASTE_CONST(0.00082254686501890791) * var_x5 - CHASTE_CONST(0.0016450937300378158) * var_x35 + var_x20 * var_x288 * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r + CHASTE_CONST(8.6347512375898239e-5) * var_x25 * var_x28 * var_x32 * var_x46 * var_x47 * mParameters[6] + CHASTE_CONST(1.8837419938086349e-6) * var_x38 * var_x40 * var_x41 * var_x42 * var_x43 * var_chaste_interface__cleft_space_ion_concentrations__K_c; + rJacobian[0 * nvars + 22] = CHASTE_CONST(5.8038906795734136e-6) + var_x301 + CHASTE_CONST(0.0041456361996952953) * var_x24 + CHASTE_CONST(0.0041456361996952953) * var_x5 + CHASTE_CONST(0.0082912723993905906) * var_x35 - CHASTE_CONST(9.4940596487955185e-6) * var_x45 - CHASTE_CONST(0.00043519146237452704) * var_x49; + rJacobian[0 * nvars + 26] = -var_x309; + rJacobian[0 * nvars + 27] = var_x309; + rJacobian[1 * nvars + 0] = mSetVoltageDerivativeToZero ? CHASTE_CONST(0.0) : (-var_x77 * (-var_x82 + CHASTE_CONST(0.0095090000000000001) * var_x79 + CHASTE_CONST(0.0002653945091048535) * var_x80 - CHASTE_CONST(0.00029999999999999997) * var_x86 - CHASTE_CONST(0.0095090000000000001) * var_x81 * var_chaste_interface__intracellular_ion_concentrations__Ca_i)); + rJacobian[1 * nvars + 1] = -CHASTE_CONST(47.271999999999998) - var_x150 + CHASTE_CONST(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 - CHASTE_CONST(8.3745867230843319e-6) * var_x79 - CHASTE_CONST(5.2842065767700058e-7) * var_x86 - CHASTE_CONST(8.2198768971977874) * var_x142 - CHASTE_CONST(0.0017614021922566689) * var_x82 - CHASTE_CONST(2.3373323507508574e-7) * var_x80 + CHASTE_CONST(8.3745867230843319e-6) * var_x81 * var_chaste_interface__intracellular_ion_concentrations__Ca_i + CHASTE_CONST(7.3978892074780085e-7) * var_x143 * var_x144; + rJacobian[1 * nvars + 16] = CHASTE_CONST(0.0024676405950567236) * var_x82 + CHASTE_CONST(7.4029217851701709e-7) * var_x86; + rJacobian[1 * nvars + 18] = 200 - 200 * var_chaste_interface__intracellular_Ca_buffering__O_C; + rJacobian[1 * nvars + 19] = CHASTE_CONST(78.400000000000006) - CHASTE_CONST(78.400000000000006) * var_chaste_interface__intracellular_Ca_buffering__O_TC; + rJacobian[1 * nvars + 20] = 200 - 200 * var_chaste_interface__intracellular_Ca_buffering__O_TMgC - 200 * var_chaste_interface__intracellular_Ca_buffering__O_TMgMg; + rJacobian[1 * nvars + 23] = var_x306; + rJacobian[1 * nvars + 24] = CHASTE_CONST(121.85879481761599) * var_x142 - CHASTE_CONST(1.0967291533585437e-5) * var_x153; + rJacobian[1 * nvars + 26] = var_x315 * var_chaste_interface__Ca_handling_by_the_SR__F1; + rJacobian[1 * nvars + 27] = var_x318 * var_chaste_interface__Ca_handling_by_the_SR__F2 - var_x315 * var_chaste_interface__Ca_handling_by_the_SR__F1; + rJacobian[1 * nvars + 28] = -var_x318 * var_chaste_interface__Ca_handling_by_the_SR__F2; + rJacobian[2 * nvars + 0] = mSetVoltageDerivativeToZero ? CHASTE_CONST(0.0) : (-var_x77 * var_x92); + rJacobian[2 * nvars + 2] = -CHASTE_CONST(0.001) * ((var_x158) ? (var_x163 + CHASTE_CONST(394539.57232025318) * (CHASTE_CONST(44.400001267299999) + var_chaste_interface__membrane__V) * (-var_x163 - CHASTE_CONST(0.00058295799999830145) * var_x157)) : (-var_x161 * var_x162)) - CHASTE_CONST(18.399999999999999) * var_x159; + rJacobian[2 * nvars + 16] = -CHASTE_CONST(0.00082254686501890791) * var_x92; + rJacobian[3 * nvars + 0] = mSetVoltageDerivativeToZero ? CHASTE_CONST(0.0) : (-var_x77 * var_x96); + rJacobian[3 * nvars + 3] = -var_x173; + rJacobian[3 * nvars + 16] = -CHASTE_CONST(0.00082254686501890791) * var_x96; + rJacobian[4 * nvars + 0] = mSetVoltageDerivativeToZero ? CHASTE_CONST(0.0) : (-var_x77 * var_x99); + rJacobian[4 * nvars + 4] = -var_x178; + rJacobian[4 * nvars + 16] = -CHASTE_CONST(0.00082254686501890791) * var_x99; + rJacobian[5 * nvars + 0] = mSetVoltageDerivativeToZero ? CHASTE_CONST(0.0) : (-var_x100 * var_x101); + rJacobian[5 * nvars + 1] = var_x141 * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L; + rJacobian[5 * nvars + 5] = -CHASTE_CONST(0.001) * var_x213 - CHASTE_CONST(0.001) * var_x220; + rJacobian[6 * nvars + 0] = mSetVoltageDerivativeToZero ? CHASTE_CONST(0.0) : (-var_x101 * var_x102); + rJacobian[6 * nvars + 1] = var_x141 * var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L; + rJacobian[6 * nvars + 6] = -CHASTE_CONST(0.001) * var_x236 - CHASTE_CONST(0.067921999999999996) * var_x233; + rJacobian[7 * nvars + 0] = mSetVoltageDerivativeToZero ? CHASTE_CONST(0.0) : (-var_x103 * var_x104); + rJacobian[7 * nvars + 1] = var_x151 * var_chaste_interface__T_type_Ca_channel_f_T_gate__f_T; + rJacobian[7 * nvars + 7] = -CHASTE_CONST(0.67417300000000002) * var_x241 - CHASTE_CONST(0.67417300000000002) * var_x242; + rJacobian[8 * nvars + 0] = mSetVoltageDerivativeToZero ? CHASTE_CONST(0.0) : (-var_x104 * var_x105); + rJacobian[8 * nvars + 1] = var_x151 * var_chaste_interface__T_type_Ca_channel_d_T_gate__d_T; + rJacobian[8 * nvars + 8] = -CHASTE_CONST(0.0096369999999999997) * var_x243 - CHASTE_CONST(0.0096369999999999997) * var_x244; + rJacobian[9 * nvars + 0] = mSetVoltageDerivativeToZero ? CHASTE_CONST(0.0) : (-var_x106 * var_x19 * var_x77); + rJacobian[9 * nvars + 9] = -CHASTE_CONST(0.001) * var_x253; + rJacobian[9 * nvars + 17] = var_x106 * var_x288; + rJacobian[9 * nvars + 22] = var_x106 * var_x300; + rJacobian[10 * nvars + 0] = mSetVoltageDerivativeToZero ? CHASTE_CONST(0.0) : (-CHASTE_CONST(0.0017699999999999999) * var_x107 * var_x109); + rJacobian[10 * nvars + 10] = -CHASTE_CONST(0.001) * var_x257; + rJacobian[10 * nvars + 17] = var_x290 * var_x291; + rJacobian[10 * nvars + 22] = var_x291 * var_x302; + rJacobian[11 * nvars + 0] = mSetVoltageDerivativeToZero ? CHASTE_CONST(0.0) : (-CHASTE_CONST(0.00123) * var_x109 * var_x110); + rJacobian[11 * nvars + 11] = -CHASTE_CONST(0.001) * var_x266; + rJacobian[11 * nvars + 17] = var_x290 * var_x292; + rJacobian[11 * nvars + 22] = var_x292 * var_x302; + rJacobian[12 * nvars + 0] = mSetVoltageDerivativeToZero ? CHASTE_CONST(0.0) : (-CHASTE_CONST(3.600144e-5) * var_x108 * var_x111); + rJacobian[12 * nvars + 12] = -CHASTE_CONST(0.001) * var_x270; + rJacobian[12 * nvars + 17] = -CHASTE_CONST(2.9612871608166312e-5) * var_x293; + rJacobian[12 * nvars + 22] = CHASTE_CONST(0.00014924887290515819) * var_x293; + rJacobian[13 * nvars + 0] = mSetVoltageDerivativeToZero ? CHASTE_CONST(0.0) : (-var_x46 * var_x77 * mParameters[8]); + rJacobian[13 * nvars + 13] = -CHASTE_CONST(0.001) * var_x278; + rJacobian[13 * nvars + 17] = var_x294 * mParameters[8]; + rJacobian[13 * nvars + 22] = var_x303 * mParameters[8]; + rJacobian[14 * nvars + 0] = mSetVoltageDerivativeToZero ? CHASTE_CONST(0.0) : (-var_x112 * var_x113); + rJacobian[14 * nvars + 14] = -CHASTE_CONST(0.0089999999999999993) * var_x282 - CHASTE_CONST(0.0012999999999999999) * var_x281; + rJacobian[14 * nvars + 17] = var_x23 * var_x294; + rJacobian[14 * nvars + 22] = var_x23 * var_x303; + rJacobian[15 * nvars + 0] = mSetVoltageDerivativeToZero ? CHASTE_CONST(0.0) : (-var_x113 * var_x114); + rJacobian[15 * nvars + 15] = -CHASTE_CONST(0.65600000000000003) * var_x284 - CHASTE_CONST(0.10000000000000001) * var_x283; + rJacobian[15 * nvars + 17] = var_x294 * var_x295; + rJacobian[15 * nvars + 22] = var_x295 * var_x303; + rJacobian[16 * nvars + 0] = mSetVoltageDerivativeToZero ? CHASTE_CONST(0.0) : (-var_x77 * (var_x129 + 3 * var_x117 + CHASTE_CONST(0.00053078901820970701) * var_x51 + CHASTE_CONST(0.154584) * var_x121 - CHASTE_CONST(0.00089999999999999998) * var_x122 - CHASTE_CONST(0.0001161412471825695) * var_x125)); + rJacobian[16 * nvars + 1] = -CHASTE_CONST(1.5852619730310017e-6) * var_x122 + CHASTE_CONST(0.0052842065767700064) * var_x115 * var_x15 * var_x7 * mParameters[9] * mParameters[1]; + rJacobian[16 * nvars + 16] = -CHASTE_CONST(0.00038145775374624855) * var_x121 - CHASTE_CONST(4.3659884291485854e-7) * var_x51 - CHASTE_CONST(0.00082254686501890791) * var_x129 - CHASTE_CONST(0.0074029217851701709) * var_x117 + CHASTE_CONST(2.2208765355510512e-6) * var_x115 * var_x83 * var_x84 * mParameters[9] * mParameters[1] + CHASTE_CONST(2.8659485630822583e-7) * var_x118 * var_x123 * var_x124 * var_x40 * var_chaste_interface__cleft_space_ion_concentrations__K_c; + rJacobian[16 * nvars + 17] = CHASTE_CONST(0.00025430516916416572) * var_x121 - CHASTE_CONST(1.9106323753881723e-7) * var_x125; + rJacobian[16 * nvars + 22] = -CHASTE_CONST(0.0012816980525873951) * var_x121 + CHASTE_CONST(9.6295871719563877e-7) * var_x118 * var_x123 * var_x124 * var_x40 * var_chaste_interface__cleft_space_ion_concentrations__K_c; + rJacobian[17 * nvars + 0] = mSetVoltageDerivativeToZero ? CHASTE_CONST(0.0) : (-var_x77 * (CHASTE_CONST(53.0789018209707) * var_x132 - CHASTE_CONST(2.786) * var_x133 + var_x130 * var_x26 + var_x131 * var_x22 + var_x131 * var_x24)); + rJacobian[17 * nvars + 17] = -CHASTE_CONST(0.043659884291485852) * var_x132 - var_x26 * var_x296 - var_x26 * var_x297 + CHASTE_CONST(26.53945091048535) * var_x20 * var_x26 * var_x288 * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r + CHASTE_CONST(0.0022916155659426776) * var_x25 * var_x26 * var_x28 * var_x32 * var_x46 * var_x47 * mParameters[6]; + rJacobian[17 * nvars + 22] = CHASTE_CONST(0.22004581682908866) * var_x132 - CHASTE_CONST(0.011549742452351092) * var_x133 + var_x131 * var_x301 + var_x26 * var_x304 + var_x26 * var_x305; + rJacobian[18 * nvars + 1] = CHASTE_CONST(0.021419999999999998) + 9 * var_chaste_interface__intracellular_ion_concentrations__Ca_i; + rJacobian[18 * nvars + 18] = -CHASTE_CONST(0.47599999999999998) - var_x299; + rJacobian[19 * nvars + 1] = CHASTE_CONST(0.031359999999999999) + CHASTE_CONST(6.2720000000000002) * var_chaste_interface__intracellular_ion_concentrations__Ca_i; + rJacobian[19 * nvars + 19] = -CHASTE_CONST(0.39200000000000002) - CHASTE_CONST(78.400000000000006) * var_chaste_interface__intracellular_ion_concentrations__Ca_i; + rJacobian[20 * nvars + 1] = CHASTE_CONST(0.0010559999999999999) + var_x152; + rJacobian[20 * nvars + 20] = -CHASTE_CONST(0.0066) - var_x299; + rJacobian[20 * nvars + 21] = -5; + rJacobian[21 * nvars + 1] = var_x152; + rJacobian[21 * nvars + 20] = -var_x299; + rJacobian[21 * nvars + 21] = -CHASTE_CONST(5.6660000000000004); + rJacobian[22 * nvars + 0] = mSetVoltageDerivativeToZero ? CHASTE_CONST(0.0) : (-var_x77 * (-CHASTE_CONST(53.0789018209707) * var_x137 - CHASTE_CONST(0.10305599999999999) * var_x140 - var_x130 * var_x134 - var_x135 * var_x22 - var_x135 * var_x24 - 6 * var_x138 * var_x46 + CHASTE_CONST(0.10305599999999999) * var_x118 * var_x40 * var_x42 * var_x43 + 6 * var_x136 * var_x30 * var_x32 * var_x46 * mParameters[6] + CHASTE_CONST(2.786) * var_x136 * var_x28 * var_x32 * var_x46 * var_x47 * mParameters[6])); + rJacobian[22 * nvars + 16] = CHASTE_CONST(0.00025430516916416572) * var_x140 - CHASTE_CONST(0.00025430516916416572) * var_x287; + rJacobian[22 * nvars + 17] = CHASTE_CONST(0.043659884291485852) * var_x137 + CHASTE_CONST(0.00016953677944277714) * var_x287 - CHASTE_CONST(0.00016953677944277714) * var_x140 + var_x134 * var_x296 + var_x134 * var_x297 + var_x138 * var_x298 - var_x137 * var_x298 - CHASTE_CONST(0.0022916155659426776) * var_x136 * var_x48 - var_x135 * var_x21 * var_x288; + rJacobian[22 * nvars + 22] = -CHASTE_CONST(0.00085446536839159674) * var_x287 - CHASTE_CONST(0.22004581682908866) * var_x137 - var_x134 * var_x304 - var_x134 * var_x305 - var_x135 * var_x301 - CHASTE_CONST(0.024873817198171774) * var_x138 * var_x46 + CHASTE_CONST(0.024873817198171774) * var_x136 * var_x30 * var_x32 * var_x46 * mParameters[6] + CHASTE_CONST(0.00085446536839159674) * var_x118 * var_x139 * var_x42 * var_x43 * var_chaste_interface__cleft_space_ion_concentrations__K_c + CHASTE_CONST(0.011549742452351092) * var_x136 * var_x28 * var_x32 * var_x46 * var_x47 * mParameters[6]; + rJacobian[23 * nvars + 1] = var_x150; + rJacobian[23 * nvars + 23] = -CHASTE_CONST(14.98) - var_x306 + CHASTE_CONST(14.880000000000001) * var_chaste_interface__Ca_handling_by_the_SR__O_Calse; + rJacobian[23 * nvars + 24] = CHASTE_CONST(0.011085915847820609); + rJacobian[23 * nvars + 25] = CHASTE_CONST(0.47999999999999998) - CHASTE_CONST(0.47999999999999998) * var_chaste_interface__Ca_handling_by_the_SR__O_Calse; + rJacobian[24 * nvars + 1] = CHASTE_CONST(1.7754934097947219e-10) * var_x153 + CHASTE_CONST(0.00078910818213098765) * var_x142; + rJacobian[24 * nvars + 23] = CHASTE_CONST(0.099999999999999992); + rJacobian[24 * nvars + 24] = -CHASTE_CONST(0.011085915847820609) - CHASTE_CONST(2.6321499680605046e-9) * var_x153 - CHASTE_CONST(0.011698444302491135) * var_x142; + rJacobian[25 * nvars + 23] = CHASTE_CONST(12.4) + CHASTE_CONST(14.880000000000001) * var_chaste_interface__Ca_handling_by_the_SR__Ca_rel; + rJacobian[25 * nvars + 25] = -CHASTE_CONST(0.40000000000000002) - CHASTE_CONST(0.47999999999999998) * var_chaste_interface__Ca_handling_by_the_SR__Ca_rel; + rJacobian[26 * nvars + 26] = -var_x317; + rJacobian[26 * nvars + 27] = var_x317; + rJacobian[27 * nvars + 1] = -CHASTE_CONST(0.0017614021922566689) * var_x154 * var_x155 + CHASTE_CONST(0.0017614021922566689) * var_x147 * var_x154 * var_chaste_interface__Ca_handling_by_the_SR__F2 * mParameters[0]; + rJacobian[27 * nvars + 23] = var_x155 * var_x307 - var_x148 * var_x307 * var_chaste_interface__Ca_handling_by_the_SR__F2; + rJacobian[27 * nvars + 27] = -var_x319; + rJacobian[27 * nvars + 28] = var_x319; + rJacobian[28 * nvars + 26] = CHASTE_CONST(0.00081499999999999997); + rJacobian[28 * nvars + 28] = -CHASTE_CONST(0.00081499999999999997); +} + +template +DEVICE +void Cellaslanidi_atrial_model_2009FromCellMLCvode::EvaluateSparseAnalyticJacobianDevice(ValueType var_chaste_interface__environment__time_converted, const ValueType *rY, ValueType *rDY, ValueType *rJacobian, ValueType *rTmp1, ValueType *rTmp2, ValueType *rTmp3, const unsigned nvars, const ValueType mSetVoltageDerivativeToZero, const ValueType mFixedVoltage, const ValueType *mParameters, const ValueType capacitance, const DeviceStimulusFunctor stim) +{ + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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__intracellular_Ca_buffering__O_C = rY[18]; + // Units: dimensionless; Initial value: 0.029108 + double var_chaste_interface__intracellular_Ca_buffering__O_TC = rY[19]; + // Units: dimensionless; Initial value: 0.014071 + double var_chaste_interface__intracellular_Ca_buffering__O_TMgC = rY[20]; + // Units: dimensionless; Initial value: 0.214036 + double var_chaste_interface__intracellular_Ca_buffering__O_TMgMg = rY[21]; + // Units: dimensionless; Initial value: 0.693565 + 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__Ca_up = rY[24]; + // Units: millimolar; Initial value: 0.730866 + double var_chaste_interface__Ca_handling_by_the_SR__O_Calse = rY[25]; + // Units: dimensionless; Initial value: 0.465921 + double var_chaste_interface__Ca_handling_by_the_SR__F1 = rY[26]; + // Units: dimensionless; Initial value: 0.288039 + double var_chaste_interface__Ca_handling_by_the_SR__F2 = rY[27]; + // Units: dimensionless; Initial value: 0.002262 + + const double var_x0 = CHASTE_CONST(0.083333333333333329) * var_chaste_interface__membrane__V; + const double var_x1 = CHASTE_MATH::Exp(CHASTE_CONST(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 = 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 = CHASTE_MATH::Exp(CHASTE_CONST(0.016955889611951675) * var_chaste_interface__membrane__V); + const double var_x8 = CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[1]; + const double var_x9 = var_x7 * var_x8; + const double var_x10 = CHASTE_MATH::Exp(-CHASTE_CONST(0.02072386508127427) * var_chaste_interface__membrane__V); + const double var_x11 = CHASTE_MATH::Pow(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 + CHASTE_CONST(0.00029999999999999997) * var_x12 + CHASTE_CONST(0.00029999999999999997) * var_x8; + const double var_x15 = 1 / var_x14; + const double var_x16 = var_x15 * mParameters[9]; + const double var_x17 = var_x16 * (CHASTE_CONST(0.016955889611951675) * var_x9 + CHASTE_CONST(0.02072386508127427) * var_x13); + const double var_x18 = CHASTE_MATH::Pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 6); + const double var_x19 = CHASTE_CONST(0.00400016) + CHASTE_CONST(0.0060002399999999996) * var_x18; + const double var_x20 = CHASTE_CONST(0.58999999999999997) * CHASTE_MATH::Pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + CHASTE_CONST(0.40999999999999998) * CHASTE_MATH::Pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2, 3); + const double var_x21 = var_x20 * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r; + const double var_x22 = var_x19 * var_x21; + const double var_x23 = mParameters[7] * var_chaste_interface__delayed_rectifier_K_current_pi_gate__p_i; + const double var_x24 = var_x23 * var_chaste_interface__delayed_rectifier_K_current_pa_gate__p_a; + const double var_x25 = CHASTE_MATH::Pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3); + const double var_x26 = 1 / var_chaste_interface__intracellular_ion_concentrations__K_i; + const double var_x27 = CHASTE_MATH::Log(var_x26 * var_chaste_interface__cleft_space_ion_concentrations__K_c); + const double var_x28 = CHASTE_MATH::Exp(CHASTE_CONST(0.18895643383558949) + CHASTE_CONST(0.052487898287663745) * var_chaste_interface__membrane__V - CHASTE_CONST(1.393) * var_x27); + const double var_x29 = 1 + var_x28; + const double var_x30 = 1 / var_x29; + const double var_x31 = CHASTE_CONST(0.58999999999999997) + var_chaste_interface__cleft_space_ion_concentrations__K_c; + const double var_x32 = CHASTE_MATH::Pow(var_x31, (-3)); + const double var_x33 = var_x32 * mParameters[6]; + const double var_x34 = var_x30 * var_x33; + const double var_x35 = var_x25 * var_x34; + const double var_x36 = (-90 + CHASTE_CONST(1.8) * var_chaste_interface__membrane__V) * mParameters[3]; + const double var_x37 = CHASTE_CONST(0.083333333333333329) * var_x1 / CHASTE_MATH::Pow(var_x2, 2); + const double var_x38 = CHASTE_MATH::Exp(-CHASTE_CONST(1.5) - CHASTE_CONST(0.025000000000000001) * var_chaste_interface__membrane__V); + const double var_x39 = 1 + var_chaste_interface__cleft_space_ion_concentrations__K_c; + const double var_x40 = 1 / var_x39; + const double var_x41 = CHASTE_MATH::Pow((1 + CHASTE_CONST(0.66666666666666663) * var_x38), (-2)); + const double var_x42 = CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, CHASTE_CONST(1.5)); + const double var_x43 = 1 / (CHASTE_CONST(36.4828726939094) + var_x42); + const double var_x44 = var_x42 * var_x43 * var_chaste_interface__cleft_space_ion_concentrations__K_c; + const double var_x45 = var_x38 * var_x40 * var_x41 * var_x44; + const double var_x46 = -CHASTE_CONST(26.53945091048535) * var_x27 + var_chaste_interface__membrane__V; + const double var_x47 = CHASTE_MATH::Pow(var_x29, (-2)); + const double var_x48 = var_x28 * var_x33 * var_x46 * var_x47; + const double var_x49 = var_x25 * var_x48; + const double var_x50 = 1 / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))); + const double var_x51 = 1 / var_chaste_interface__intracellular_ion_concentrations__Na_i; + const double var_x52 = var_x51 * mParameters[2]; + const double var_x53 = CHASTE_MATH::Log(var_x52); + const double var_x54 = CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8) - var_x53); + const double var_x55 = var_x50 * (-1 + var_x54); + const double var_x56 = CHASTE_CONST(0.36499999999999999) * var_chaste_interface__sodium_current_h2_gate__h2 + CHASTE_CONST(0.63500000000000001) * var_chaste_interface__sodium_current_h1_gate__h1; + const double var_x57 = CHASTE_MATH::Pow(var_chaste_interface__sodium_current_m_gate__m, 3); + const double var_x58 = mParameters[2] * mParameters[5]; + const double var_x59 = var_x57 * var_x58; + const double var_x60 = var_x56 * var_x59; + const double var_x61 = CHASTE_CONST(1817.803245542646) * var_x60; + const double var_x62 = 1 / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8))); + const double var_x63 = CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8) - var_x53); + const double var_x64 = var_x62 * (-1 + var_x63); + const double var_x65 = (var_chaste_interface__membrane__V >= -CHASTE_CONST(2.6539450910485349e-6)) && (var_chaste_interface__membrane__V <= CHASTE_CONST(2.6539450910485349e-6)); + const double var_x66 = CHASTE_CONST(0.037679754693225945) * var_chaste_interface__membrane__V; + const double var_x67 = CHASTE_MATH::Exp(var_x66); + const double var_x68 = -1 + var_x67; + const double var_x69 = 1 / var_x68; + const double var_x70 = CHASTE_MATH::Exp(var_x66 - var_x53); + const double var_x71 = -1 + var_x70; + const double var_x72 = var_x69 * var_x71; + const double var_x73 = CHASTE_CONST(136.98876074519373) * var_x60 * var_chaste_interface__membrane__V; + const double var_x74 = var_x69 * var_x70; + const double var_x75 = ((var_x65) ? (var_x55 * var_x61 + var_x61 * var_x64) : (var_x73 * var_x74 + CHASTE_CONST(3635.606491085292) * var_x60 * var_x72 - var_x67 * var_x71 * var_x73 / CHASTE_MATH::Pow(var_x68, 2))); + const double var_x76 = 1 / mParameters[4]; + const double var_x77 = CHASTE_CONST(0.001) * var_x76; + const double var_x78 = CHASTE_CONST(0.00020000000000000001) + var_chaste_interface__intracellular_ion_concentrations__Ca_i; + const double var_x79 = 1 / var_x78; + const double var_x80 = 1 / var_chaste_interface__intracellular_ion_concentrations__Ca_i; + const double var_x81 = CHASTE_MATH::Pow(var_x78, (-2)); + const double var_x82 = var_x10 * var_x11 * var_x16; + const double var_x83 = CHASTE_MATH::Pow(var_x14, (-2)); + const double var_x84 = var_x9 - var_x13; + const double var_x85 = var_x83 * var_x84 * mParameters[9]; + const double var_x86 = var_x11 * var_x85; + const double var_x87 = CHASTE_CONST(0.5) + CHASTE_CONST(188398.77346612973) * var_chaste_interface__membrane__V; + const double var_x88 = var_x56 * var_x58 * CHASTE_MATH::Pow(var_chaste_interface__sodium_current_m_gate__m, 2); + const double var_x89 = CHASTE_CONST(0.028946099999999999) * var_x88; + const double var_x90 = var_x64 * var_x89; + const double var_x91 = var_x72 * var_chaste_interface__membrane__V; + const double var_x92 = ((var_x65) ? (-var_x90 + var_x87 * (var_x90 + var_x55 * var_x89)) : (CHASTE_CONST(10906.819473255875) * var_x88 * var_x91)); + const double var_x93 = CHASTE_CONST(0.0061269244999999995) * var_x59; + const double var_x94 = var_x64 * var_x93; + const double var_x95 = var_x59 * var_x91; + const double var_x96 = ((var_x65) ? (-var_x94 + var_x87 * (var_x94 + var_x55 * var_x93)) : (CHASTE_CONST(2308.6101218391605) * var_x95)); + const double var_x97 = CHASTE_CONST(0.0035217754999999997) * var_x59; + const double var_x98 = var_x64 * var_x97; + const double var_x99 = ((var_x65) ? (-var_x98 + var_x87 * (var_x98 + var_x55 * var_x97)) : (CHASTE_CONST(1326.9963692461315) * var_x95)); + const double var_x100 = CHASTE_CONST(0.001) * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L; + const double var_x101 = var_x36 * var_x76; + const double var_x102 = CHASTE_CONST(0.001) * var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L; + const double var_x103 = CHASTE_CONST(0.001) * var_chaste_interface__T_type_Ca_channel_f_T_gate__f_T; + const double var_x104 = var_x76 * (-CHASTE_CONST(0.22800000000000001) + CHASTE_CONST(0.0060000000000000001) * var_chaste_interface__membrane__V); + const double var_x105 = CHASTE_CONST(0.001) * var_chaste_interface__T_type_Ca_channel_d_T_gate__d_T; + const double var_x106 = var_x20 * var_x46; + const double var_x107 = CHASTE_MATH::Pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 2); + const double var_x108 = var_x46 * var_x76; + const double var_x109 = var_x108 * var_x19 * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r; + const double var_x110 = CHASTE_MATH::Pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2, 2); + const double var_x111 = var_x21 * CHASTE_MATH::Pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 5); + const double var_x112 = CHASTE_CONST(0.001) * var_chaste_interface__delayed_rectifier_K_current_pi_gate__p_i; + const double var_x113 = var_x108 * mParameters[7]; + const double var_x114 = CHASTE_CONST(0.001) * var_chaste_interface__delayed_rectifier_K_current_pa_gate__p_a; + const double var_x115 = CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 2); + const double var_x116 = var_x115 * mParameters[1]; + const double var_x117 = var_x116 * var_x16 * var_x7; + const double var_x118 = 1 / (CHASTE_CONST(1.5) + var_x38); + const double var_x119 = var_x118 * var_x40; + const double var_x120 = var_x119 * var_x43; + const double var_x121 = var_x120 * CHASTE_MATH::Sqrt(var_chaste_interface__intracellular_ion_concentrations__Na_i) * var_chaste_interface__cleft_space_ion_concentrations__K_c; + const double var_x122 = var_x116 * var_x85; + const double var_x123 = CHASTE_MATH::Pow((1 + CHASTE_CONST(0.027410122234342148) * var_x42), (-2)); + const double var_x124 = CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 2); + const double var_x125 = var_x119 * var_x123 * var_x124 * var_chaste_interface__cleft_space_ion_concentrations__K_c; + const double var_x126 = var_x52 * var_x56 * var_x57 * mParameters[5]; + const double var_x127 = CHASTE_CONST(0.0096486999999999996) * var_x126; + const double var_x128 = var_x127 * var_x62 * var_x63; + const double var_x129 = ((var_x65) ? (-var_x128 + var_x87 * (var_x128 + var_x127 * var_x50 * var_x54)) : (CHASTE_CONST(3635.606491085292) * var_x126 * var_x74 * var_chaste_interface__membrane__V)); + const double var_x130 = CHASTE_CONST(26.53945091048535) * var_x5; + const double var_x131 = CHASTE_CONST(26.53945091048535) * var_x26; + const double var_x132 = var_x26 * var_x35; + const double var_x133 = var_x26 * var_x49; + const double var_x134 = 1 / var_chaste_interface__cleft_space_ion_concentrations__K_c; + const double var_x135 = CHASTE_CONST(26.53945091048535) * var_x134; + const double var_x136 = CHASTE_MATH::Pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 2); + const double var_x137 = var_x136 * var_x34; + const double var_x138 = var_x25 * var_x30 * mParameters[6] / CHASTE_MATH::Pow(var_x31, 4); + const double var_x139 = CHASTE_MATH::Pow(var_x39, (-2)); + const double var_x140 = var_x118 * var_x139 * var_x44; + const double var_x141 = (CHASTE_CONST(0.079263098651550096) - CHASTE_CONST(0.001585261973031002) * var_chaste_interface__membrane__V) * mParameters[3]; + const double var_x142 = 1 / (CHASTE_CONST(1.3999999999999999) + CHASTE_CONST(0.80000000000000004) * var_chaste_interface__Ca_handling_by_the_SR__Ca_up + CHASTE_CONST(3333.3333333333335) * var_chaste_interface__intracellular_ion_concentrations__Ca_i); + const double var_x143 = CHASTE_MATH::Pow((CHASTE_CONST(0.00041999999999999996) + CHASTE_CONST(0.00023999999999999998) * var_chaste_interface__Ca_handling_by_the_SR__Ca_up + var_chaste_interface__intracellular_ion_concentrations__Ca_i), (-2)); + const double var_x144 = CHASTE_CONST(3333.3333333333335) * var_chaste_interface__intracellular_ion_concentrations__Ca_i - CHASTE_CONST(0.32000000000000006) * var_chaste_interface__Ca_handling_by_the_SR__Ca_up; + const double var_x145 = CHASTE_MATH::Pow(var_chaste_interface__Ca_handling_by_the_SR__F2, 2); + const double var_x146 = CHASTE_CONST(0.25) + var_chaste_interface__Ca_handling_by_the_SR__F2; + const double var_x147 = CHASTE_MATH::Pow(var_x146, (-2)); + const double var_x148 = var_x147 * mParameters[0]; + const double var_x149 = var_x145 * var_x148; + const double var_x150 = CHASTE_CONST(0.00088070109612833447) * var_x149; + const double var_x151 = CHASTE_CONST(0.00020079984991726025) - CHASTE_CONST(5.2842065767700066e-6) * var_chaste_interface__membrane__V; + const double var_x152 = 32 * var_chaste_interface__intracellular_ion_concentrations__Ca_i; + const double var_x153 = var_x143 * var_x144; + 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_x145 * mParameters[0] / CHASTE_MATH::Pow(var_x146, 3); + const double var_x156 = 1 / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999708629e-8))); + const double var_x157 = 1 / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999708629e-8))); + const double var_x158 = (var_chaste_interface__membrane__V >= -CHASTE_CONST(44.400001267299999)) && (var_chaste_interface__membrane__V <= -CHASTE_CONST(44.399998732699999)); + const double var_x159 = CHASTE_MATH::Exp(-CHASTE_CONST(3.5035114021936398) - CHASTE_CONST(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 = CHASTE_CONST(44.399999999999999) + var_chaste_interface__membrane__V; + const double var_x163 = CHASTE_CONST(0.00058295799999830145) * var_x156; + const double var_x164 = CHASTE_MATH::Exp(-CHASTE_CONST(7.333333333333333) - CHASTE_CONST(0.077519379844961239) * var_chaste_interface__membrane__V); + const double var_x165 = 1 / (1 + CHASTE_CONST(323.30000000000001) * var_x164); + const double var_x166 = CHASTE_MATH::Exp(-CHASTE_CONST(12.010771992818672) - CHASTE_CONST(0.17953321364452424) * var_chaste_interface__membrane__V); + const double var_x167 = 1 / (1491 * var_x165 + CHASTE_CONST(44.899999999999999) * var_x166); + const double var_x168 = CHASTE_CONST(8.0610412926391373) * var_x166; + const double var_x169 = -var_x167 * var_x168 + CHASTE_CONST(2.019719479407183e-5) * var_x166 * (var_x168 - CHASTE_CONST(0.35750508923240704) * var_x164 / CHASTE_MATH::Pow((CHASTE_CONST(0.0030931023816888337) + var_x164), 2)) / CHASTE_MATH::Pow((var_x165 + CHASTE_CONST(0.030114017437961098) * var_x166), 2); + const double var_x170 = CHASTE_MATH::Exp(CHASTE_CONST(6.666666666666667) + CHASTE_CONST(0.16666666666666666) * var_chaste_interface__membrane__V); + const double var_x171 = 1 + var_x170; + const double var_x172 = 1 / var_x171; + const double var_x173 = CHASTE_CONST(0.001) / (CHASTE_CONST(0.00014999999999999999) + CHASTE_CONST(0.029999999999999999) * var_x172); + const double var_x174 = -CHASTE_CONST(44.899999999999999) * var_x166 * var_x167; + const double var_x175 = CHASTE_MATH::Exp(30 + CHASTE_CONST(0.5) * var_chaste_interface__membrane__V); + const double var_x176 = 1 + var_x175; + const double var_x177 = 1 / var_x176; + const double var_x178 = CHASTE_CONST(0.001) / (CHASTE_CONST(0.00044999999999999999) + CHASTE_CONST(0.12) * var_x177); + const double var_x179 = 1 / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(1.0000000000010001e-7))); + const double var_x180 = 1 / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(1.0000000000010001e-7))); + const double var_x181 = (var_chaste_interface__membrane__V >= -CHASTE_CONST(5.0000002500000003)) && (var_chaste_interface__membrane__V <= -CHASTE_CONST(4.9999997499999997)); + const double var_x182 = CHASTE_CONST(0.40000000000000002) * var_chaste_interface__membrane__V; + const double var_x183 = CHASTE_MATH::Exp(2 + var_x182); + const double var_x184 = -1 + var_x183; + const double var_x185 = 1 / var_x184; + const double var_x186 = 5 + var_chaste_interface__membrane__V; + const double var_x187 = 1 / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(1.000000000139778e-7))); + const double var_x188 = 1 / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999991773334e-8))); + const double var_x189 = CHASTE_CONST(8.3600000009281459) * var_x187 + CHASTE_CONST(8.359999999071853) * var_x188; + const double var_x190 = 1 / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999998742257e-8))); + const double var_x191 = 1 / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(1.0000000000162864e-7))); + const double var_x192 = CHASTE_CONST(24.999999999639201) * var_x190 + CHASTE_CONST(25.000000000360799) * var_x191; + const double var_x193 = var_chaste_interface__membrane__V >= -CHASTE_CONST(45.000000249999999); + const double var_x194 = var_chaste_interface__membrane__V >= -CHASTE_CONST(10.000000480800001); + const double var_x195 = var_chaste_interface__membrane__V <= -CHASTE_CONST(44.999999750000001); + const double var_x196 = var_chaste_interface__membrane__V <= -CHASTE_CONST(9.9999995191999993); + const double var_x197 = (var_x193) && (var_x194) && (var_x195) && (var_x196); + const double var_x198 = CHASTE_MATH::Exp(-CHASTE_CONST(2.0798668885191347) - CHASTE_CONST(0.20798668885191349) * var_chaste_interface__membrane__V); + const double var_x199 = -1 + var_x198; + const double var_x200 = 50 / var_x199; + const double var_x201 = 10 + var_chaste_interface__membrane__V; + const double var_x202 = var_x200 + CHASTE_CONST(10.399334442595674) * var_x198 * var_x201 / CHASTE_MATH::Pow(var_x199, 2); + const double var_x203 = (var_x193) && (var_x195); + const double var_x204 = CHASTE_MATH::Exp(-18 - var_x182); + const double var_x205 = -1 + var_x204; + const double var_x206 = CHASTE_CONST(16.719999999999999) / var_x205; + const double var_x207 = 45 + var_chaste_interface__membrane__V; + const double var_x208 = var_x206 + CHASTE_CONST(6.6879999999999997) * var_x204 * var_x207 / CHASTE_MATH::Pow(var_x205, 2); + const double var_x209 = (var_x194) && (var_x196); + const double var_x210 = CHASTE_MATH::Exp(-CHASTE_CONST(1.6590909090909092) - CHASTE_CONST(0.15151515151515152) * var_chaste_interface__membrane__V); + const double var_x211 = 1 + var_x210; + const double var_x212 = CHASTE_CONST(1.1200000000011203e-6) * var_x180; + const double var_x213 = ((var_x181) ? (-var_x212 + CHASTE_CONST(1999999.9999979998) * (CHASTE_CONST(5.0000002500000003) + var_chaste_interface__membrane__V) * (var_x212 + CHASTE_CONST(1.1200000000011203e-6) * var_x179)) : (CHASTE_CONST(4.4800000000000004) * var_x185 * var_x186)); + const double var_x214 = CHASTE_CONST(4.1799999996561256e-6) * var_x188; + const double var_x215 = var_x214 + CHASTE_CONST(1999999.9999424887) * (CHASTE_CONST(45.000000249999999) + var_chaste_interface__membrane__V) * (-var_x214 - CHASTE_CONST(4.1800000005842713e-6) * var_x187); + const double var_x216 = CHASTE_CONST(2.4040000000391526e-5) * var_x191; + const double var_x217 = var_x216 + CHASTE_CONST(1039933.4442576389) * (CHASTE_CONST(10.000000480800001) + var_chaste_interface__membrane__V) * (-var_x216 - CHASTE_CONST(2.4039999999697637e-5) * var_x190); + const double var_x218 = var_x200 * var_x201; + const double var_x219 = var_x206 * var_x207; + const double var_x220 = ((var_x197) ? (var_x215 + var_x217) : ((var_x203) ? (var_x215 - var_x218) : ((var_x209) ? (var_x217 - var_x219) : (-var_x218 - var_x219)))); + const double var_x221 = 1 / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(1.0000000000287557e-7))); + const double var_x222 = 1 / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(1.0000000000287557e-7))); + const double var_x223 = (var_chaste_interface__membrane__V >= -CHASTE_CONST(18.000000400000001)) && (var_chaste_interface__membrane__V <= -CHASTE_CONST(17.999999599999999)); + const double var_x224 = CHASTE_CONST(4.5) + CHASTE_CONST(0.25) * var_chaste_interface__membrane__V; + const double var_x225 = CHASTE_MATH::Exp(var_x224); + const double var_x226 = -1 + var_x225; + const double var_x227 = 1 / var_x226; + const double var_x228 = 18 + var_chaste_interface__membrane__V; + const double var_x229 = ((var_x223) ? (CHASTE_CONST(4.2450000000000001) * var_x221 + CHASTE_CONST(4.2450000000000001) * var_x222) : (CHASTE_CONST(8.4900000000000002) * var_x227 - CHASTE_CONST(2.1225000000000001) * var_x225 * var_x228 / CHASTE_MATH::Pow(var_x226, 2))); + const double var_x230 = CHASTE_MATH::Exp(-var_x224); + const double var_x231 = 1 + var_x230; + const double var_x232 = CHASTE_CONST(16.980499999999999) * var_x230 / CHASTE_MATH::Pow(var_x231, 2); + const double var_x233 = 1 / var_x231; + const double var_x234 = CHASTE_CONST(67.921999999999997) * var_x233; + const double var_x235 = CHASTE_CONST(3.3960000000976542e-6) * var_x222; + const double var_x236 = ((var_x223) ? (-var_x235 + CHASTE_CONST(1249999.9999640554) * (CHASTE_CONST(18.000000400000001) + var_chaste_interface__membrane__V) * (var_x235 + CHASTE_CONST(3.3960000000976542e-6) * var_x221)) : (CHASTE_CONST(8.4900000000000002) * var_x227 * var_x228)); + const double var_x237 = 1 / (var_x234 + var_x236); + const double var_x238 = CHASTE_MATH::Exp(-CHASTE_CONST(3.7704918032786887) - CHASTE_CONST(0.16393442622950821) * var_chaste_interface__membrane__V); + const double var_x239 = 1 + var_x238; + const double var_x240 = CHASTE_CONST(0.77666666666666673) + CHASTE_CONST(0.033333333333333333) * var_chaste_interface__membrane__V; + const double var_x241 = CHASTE_MATH::Exp(-var_x240); + const double var_x242 = CHASTE_MATH::Exp(var_x240); + const double var_x243 = CHASTE_MATH::Exp(CHASTE_CONST(4.876462938881664) + CHASTE_CONST(0.065019505851755519) * var_chaste_interface__membrane__V); + const double var_x244 = CHASTE_MATH::Exp(-CHASTE_CONST(0.9003601440576231) - CHASTE_CONST(0.012004801920768308) * var_chaste_interface__membrane__V); + const double var_x245 = CHASTE_CONST(9.6370000000000005) * var_x243 + CHASTE_CONST(9.6370000000000005) * var_x244; + const double var_x246 = 1 / var_x245; + const double var_x247 = CHASTE_CONST(0.11569027611044419) * var_x244 - CHASTE_CONST(0.62659297789336799) * var_x243; + const double var_x248 = CHASTE_MATH::Exp(-CHASTE_CONST(2.6628794603230959) - CHASTE_CONST(0.17752529735487307) * var_chaste_interface__membrane__V); + const double var_x249 = 1 + var_x248; + const double var_x250 = CHASTE_MATH::Exp(-CHASTE_CONST(0.1388888888888889) * var_chaste_interface__membrane__V); + const double var_x251 = CHASTE_MATH::Exp(var_x0); + const double var_x252 = CHASTE_CONST(0.00040000000000000002) + 1 / (CHASTE_CONST(8.0109999999999992) * var_x250 + CHASTE_CONST(386.60000000000002) * var_x251); + const double var_x253 = 1 / var_x252; + const double var_x254 = CHASTE_MATH::Exp(CHASTE_CONST(327.99999999999994) + 10 * var_chaste_interface__membrane__V); + const double var_x255 = 1 + var_x254; + const double var_x256 = 1 / var_x255; + const double var_x257 = 1 / (CHASTE_CONST(0.020400000000000001) + CHASTE_CONST(0.54659999999999997) * var_x256); + const double var_x258 = CHASTE_MATH::Exp(CHASTE_CONST(4.0070821529745047) + CHASTE_CONST(0.14164305949008499) * var_chaste_interface__membrane__V); + const double var_x259 = 1 + var_x258; + const double var_x260 = CHASTE_CONST(0.000141643059490085) * var_x258 / CHASTE_MATH::Pow(var_x259, 2); + const double var_x261 = -1 / var_x259; + const double var_x262 = var_x254 / CHASTE_MATH::Pow(var_x255, 2); + const double var_x263 = CHASTE_MATH::Exp(CHASTE_CONST(0.96921975662133131) - CHASTE_CONST(0.071581961345740866) * var_chaste_interface__membrane__V); + const double var_x264 = 1 + var_x263; + const double var_x265 = 1 / var_x264; + const double var_x266 = 1 / (CHASTE_CONST(5.75) * var_x256 + CHASTE_CONST(0.45000000000000001) * var_x265); + const double var_x267 = CHASTE_MATH::Exp(46 + 2 * var_chaste_interface__membrane__V); + const double var_x268 = 1 + var_x267; + const double var_x269 = 1 / var_x268; + const double var_x270 = 1 / (CHASTE_CONST(0.5) + CHASTE_CONST(7.5) * var_x269); + const double var_x271 = CHASTE_MATH::Exp(CHASTE_CONST(1.8506208911614319) + CHASTE_CONST(0.036523009495982472) * var_chaste_interface__membrane__V); + const double var_x272 = 1 + var_x271; + const double var_x273 = CHASTE_MATH::Exp(CHASTE_CONST(0.065217391304347824) - CHASTE_CONST(0.072463768115942032) * var_chaste_interface__membrane__V); + const double var_x274 = 1 + var_x273; + const double var_x275 = CHASTE_MATH::Exp(-CHASTE_CONST(0.045816915605241454) * var_chaste_interface__membrane__V); + const double var_x276 = CHASTE_MATH::Exp(CHASTE_CONST(0.014398433450440593) * var_chaste_interface__membrane__V); + const double var_x277 = CHASTE_CONST(0.059999999999999998) + 1 / (CHASTE_CONST(0.29999999999999999) * var_x275 + CHASTE_CONST(1.6599999999999999) * var_x276); + const double var_x278 = 1 / var_x277; + const double var_x279 = CHASTE_MATH::Exp(-CHASTE_CONST(0.68918918918918914) - CHASTE_CONST(0.13513513513513511) * var_chaste_interface__membrane__V); + const double var_x280 = 1 + var_x279; + const double var_x281 = CHASTE_MATH::Exp(-CHASTE_CONST(0.076769537847382163) * var_chaste_interface__membrane__V); + const double var_x282 = CHASTE_MATH::Exp(CHASTE_CONST(0.03941508020968823) * var_chaste_interface__membrane__V); + const double var_x283 = CHASTE_MATH::Exp(-CHASTE_CONST(0.018299935950224173) * var_chaste_interface__membrane__V); + const double var_x284 = CHASTE_MATH::Exp(CHASTE_CONST(0.009420009985210585) * var_chaste_interface__membrane__V); + const double var_x285 = CHASTE_MATH::Exp(CHASTE_CONST(2.539728728905752) + CHASTE_CONST(0.05358970648917756) * var_chaste_interface__membrane__V); + const double var_x286 = 1 + var_x285; + const double var_x287 = var_x120 * var_x42; + const double var_x288 = -CHASTE_CONST(3.290319067574035e-6) - CHASTE_CONST(4.9354786013610522e-6) * var_x18; + const double var_x289 = var_x46 * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r; + const double var_x290 = var_x288 * var_x289; + const double var_x291 = CHASTE_CONST(1.77) * var_x107; + const double var_x292 = CHASTE_CONST(1.23) * var_x110; + const double var_x293 = var_x111 * var_x46; + const double var_x294 = CHASTE_CONST(0.021829942145742926) * var_x27 - CHASTE_CONST(0.00082254686501890791) * var_chaste_interface__membrane__V; + const double var_x295 = mParameters[7] * var_chaste_interface__delayed_rectifier_K_current_pa_gate__p_a; + const double var_x296 = CHASTE_CONST(0.021829942145742926) * var_x5; + const double var_x297 = CHASTE_CONST(0.021829942145742926) * var_x24; + const double var_x298 = CHASTE_CONST(0.0049352811901134472) * var_x46; + const double var_x299 = 200 * var_chaste_interface__intracellular_ion_concentrations__Ca_i; + const double var_x300 = CHASTE_CONST(1.6583208100573134e-5) + CHASTE_CONST(2.4874812150859699e-5) * var_x18; + const double var_x301 = var_x21 * var_x300; + const double var_x302 = var_x289 * var_x300; + const double var_x303 = CHASTE_CONST(0.0041456361996952953) * var_chaste_interface__membrane__V - CHASTE_CONST(0.11002290841454433) * var_x27; + const double var_x304 = CHASTE_CONST(0.11002290841454433) * var_x5; + const double var_x305 = CHASTE_CONST(0.11002290841454433) * var_x24; + const double var_x306 = CHASTE_CONST(0.11777375567316183) * var_x149; + const double var_x307 = CHASTE_CONST(0.23554751134632365) * var_x154; + const double var_x308 = CHASTE_MATH::Exp(-CHASTE_CONST(1.6000000000000001) + CHASTE_CONST(0.080000000000000002) * var_chaste_interface__membrane__V); + const double var_x309 = CHASTE_CONST(0.019200000000000002) * var_x308 * var_chaste_interface__Ca_handling_by_the_SR__F1; + const double var_x310 = CHASTE_CONST(0.00029999999999999997) + var_chaste_interface__intracellular_ion_concentrations__Ca_i; + const double var_x311 = CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Ca_i, 4); + const double var_x312 = var_x311 / CHASTE_MATH::Pow(var_x310, 5); + const double var_x313 = CHASTE_MATH::Pow(var_x310, (-4)); + const double var_x314 = var_x313 * CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Ca_i, 3); + const double var_x315 = CHASTE_CONST(0.81520000000000004) * var_x312 - CHASTE_CONST(0.81520000000000004) * var_x314; + const double var_x316 = var_x311 * var_x313; + const double var_x317 = CHASTE_CONST(0.20380000000000001) * var_x316 + CHASTE_CONST(0.23999999999999999) * var_x308; + const double var_x318 = CHASTE_CONST(1.3584000000000001) * var_x312 - CHASTE_CONST(1.3584000000000001) * var_x314; + const double var_x319 = CHASTE_CONST(0.033960000000000004) + CHASTE_CONST(0.33960000000000001) * var_x316; + + // Matrix entries + rJacobian[0] = mSetVoltageDerivativeToZero ? CHASTE_CONST(0.0) : (-var_x77 * (CHASTE_CONST(0.0014400000000000001) + var_x17 + var_x22 + var_x24 + var_x5 + var_x75 + 2 * var_x35 + CHASTE_CONST(0.0060000000000000001) * var_x6 + CHASTE_CONST(0.0011450666666666667) * var_x45 - CHASTE_CONST(0.10497579657532749) * var_x49 + var_x36 * var_x37 + (CHASTE_CONST(1.8) * var_x3 + CHASTE_CONST(1.8) * var_x4) * mParameters[3])); + rJacobian[1] = -CHASTE_CONST(1.7614021922566692e-8) + CHASTE_CONST(0.0017614021922566689) * var_x17 - CHASTE_CONST(5.2842065767700066e-6) * var_x6 + var_x141 * var_x37 + (-CHASTE_CONST(0.001585261973031002) * var_x3 - CHASTE_CONST(0.001585261973031002) * var_x4) * mParameters[3]; + rJacobian[2] = (CHASTE_CONST(0.001) - CHASTE_CONST(0.001) * var_chaste_interface__sodium_current_m_gate__m) * ((var_x158) ? (-230 * var_x156 - 230 * var_x157) : (-var_x161 - CHASTE_CONST(36.297640653357533) * var_x159 * var_x162 / CHASTE_MATH::Pow(var_x160, 2))) + CHASTE_CONST(1.4519056261343013) * var_x159 * var_chaste_interface__sodium_current_m_gate__m; + rJacobian[3] = var_x169 * var_x173 + CHASTE_CONST(0.0055555555555555558) * var_x170 * (-var_x174 - var_chaste_interface__sodium_current_h1_gate__h1) / (CHASTE_MATH::Pow(var_x171, 2) * CHASTE_MATH::Pow((CHASTE_CONST(0.0050000000000000001) + var_x172), 2)); + rJacobian[4] = var_x169 * var_x178 + CHASTE_CONST(0.0041666666666666666) * var_x175 * (-var_x174 - var_chaste_interface__sodium_current_h2_gate__h2) / (CHASTE_MATH::Pow(var_x176, 2) * CHASTE_MATH::Pow((CHASTE_CONST(0.0037499999999999999) + var_x177), 2)); + rJacobian[5] = (-var_x102 + CHASTE_CONST(0.001) / var_x211) * (((var_x181) ? (CHASTE_CONST(2.2400000000000002) * var_x179 + CHASTE_CONST(2.2400000000000002) * var_x180) : (CHASTE_CONST(4.4800000000000004) * var_x185 - CHASTE_CONST(1.7920000000000003) * var_x183 * var_x186 / CHASTE_MATH::Pow(var_x184, 2))) + ((var_x197) ? (-var_x189 - var_x192) : ((var_x203) ? (-var_x189 - var_x202) : ((var_x209) ? (-var_x192 - var_x208) : (-var_x202 - var_x208))))) + CHASTE_CONST(0.00015151515151515152) * var_x210 * (var_x213 + var_x220) / CHASTE_MATH::Pow(var_x211, 2); + rJacobian[6] = (var_x232 + var_x229) * (-var_x100 + CHASTE_CONST(0.001) * var_x236 * var_x237) + (var_x234 + var_x236) * (CHASTE_CONST(0.001) * var_x229 * var_x237 + CHASTE_CONST(2.1675996343523e-7) * var_x236 * (-var_x229 - var_x232) / CHASTE_MATH::Pow((var_x233 + CHASTE_CONST(0.014722770236447691) * var_x236), 2)); + rJacobian[7] = (-var_x105 + CHASTE_CONST(0.001) / var_x239) * (CHASTE_CONST(22.472433333333335) * var_x242 - CHASTE_CONST(22.472433333333335) * var_x241) + CHASTE_CONST(0.0001639344262295082) * var_x238 * (CHASTE_CONST(674.173) * var_x241 + CHASTE_CONST(674.173) * var_x242) / CHASTE_MATH::Pow(var_x239, 2); + rJacobian[8] = var_x245 * (-CHASTE_CONST(0.00011569027611044419) * var_x244 * var_x246 + CHASTE_CONST(0.00010376673238559718) * var_x244 * var_x247 / CHASTE_MATH::Pow((var_x243 + var_x244), 2)) - var_x247 * (-var_x103 + CHASTE_CONST(0.0096369999999999997) * var_x244 * var_x246); + rJacobian[9] = CHASTE_CONST(0.00017752529735487306) * var_x248 * var_x253 / CHASTE_MATH::Pow(var_x249, 2) - CHASTE_CONST(6.6907730760079843e-9) * (-var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r + 1 / var_x249) * (CHASTE_CONST(1.1126388888888887) * var_x250 - CHASTE_CONST(32.216666666666669) * var_x251) / (CHASTE_MATH::Pow(var_x252, 2) * CHASTE_MATH::Pow((var_x251 + CHASTE_CONST(0.020721676151060523) * var_x250), 2)); + rJacobian[10] = -var_x257 * var_x260 + CHASTE_CONST(0.018294914013904134) * var_x262 * (-var_x261 - var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1) / CHASTE_MATH::Pow((CHASTE_CONST(0.037321624588364438) + var_x256), 2); + rJacobian[11] = -var_x260 * var_x266 + CHASTE_CONST(3.0245746691871456e-5) * (-var_x261 - var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2) * (CHASTE_CONST(57.5) * var_x262 - CHASTE_CONST(0.032211882605583393) * var_x263 / CHASTE_MATH::Pow(var_x264, 2)) / CHASTE_MATH::Pow((var_x256 + CHASTE_CONST(0.078260869565217397) * var_x265), 2); + rJacobian[12] = -CHASTE_CONST(2.1922574727480476e-5) * var_x270 * var_x271 / CHASTE_MATH::Pow(var_x272, 2) + CHASTE_CONST(0.00026666666666666668) * var_x267 * (CHASTE_CONST(0.39975990396158467) - var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3 + CHASTE_CONST(0.60024009603841544) / var_x272) / (CHASTE_MATH::Pow(var_x268, 2) * CHASTE_MATH::Pow((CHASTE_CONST(0.066666666666666666) + var_x269), 2)); + rJacobian[13] = CHASTE_CONST(7.2463768115942027e-5) * var_x273 * var_x278 / CHASTE_MATH::Pow(var_x274, 2) - CHASTE_CONST(0.00036289737262302222) * (-var_chaste_interface__delayed_rectifier_K_current_z_gate__z + 1 / var_x274) * (CHASTE_CONST(0.013745074681572435) * var_x275 - CHASTE_CONST(0.023901399527731383) * var_x276) / (CHASTE_MATH::Pow(var_x277, 2) * CHASTE_MATH::Pow((var_x276 + CHASTE_CONST(0.18072289156626506) * var_x275), 2)); + rJacobian[14] = (-var_x114 + CHASTE_CONST(0.001) / var_x280) * (CHASTE_CONST(0.35473572188719404) * var_x282 - CHASTE_CONST(0.099800399201596807) * var_x281) + CHASTE_CONST(0.00013513513513513514) * var_x279 * (9 * var_x282 + CHASTE_CONST(1.3) * var_x281) / CHASTE_MATH::Pow(var_x280, 2); + rJacobian[15] = (-var_x112 + CHASTE_CONST(0.001) / var_x286) * (CHASTE_CONST(6.1795265502981431) * var_x284 - CHASTE_CONST(1.8299935950224173) * var_x283) - CHASTE_CONST(5.3589706489177562e-5) * var_x285 * (100 * var_x283 + 656 * var_x284) / CHASTE_MATH::Pow(var_x286, 2); + rJacobian[16] = -CHASTE_CONST(1.6450937300378158e-8) - CHASTE_CONST(0.0024676405950567236) * var_x17 - CHASTE_CONST(2.8256129907129523e-6) * var_x45 - CHASTE_CONST(0.00082254686501890791) * var_x75; + rJacobian[17] = -CHASTE_CONST(1.151565611026471e-6) - CHASTE_CONST(0.00082254686501890791) * var_x24 - CHASTE_CONST(0.00082254686501890791) * var_x5 - CHASTE_CONST(0.0016450937300378158) * var_x35 + var_x20 * var_x288 * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r + CHASTE_CONST(8.6347512375898239e-5) * var_x25 * var_x28 * var_x32 * var_x46 * var_x47 * mParameters[6] + CHASTE_CONST(1.8837419938086349e-6) * var_x38 * var_x40 * var_x41 * var_x42 * var_x43 * var_chaste_interface__cleft_space_ion_concentrations__K_c; + rJacobian[18] = CHASTE_CONST(5.8038906795734136e-6) + var_x301 + CHASTE_CONST(0.0041456361996952953) * var_x24 + CHASTE_CONST(0.0041456361996952953) * var_x5 + CHASTE_CONST(0.0082912723993905906) * var_x35 - CHASTE_CONST(9.4940596487955185e-6) * var_x45 - CHASTE_CONST(0.00043519146237452704) * var_x49; + rJacobian[19] = -var_x309; + rJacobian[20] = var_x309; + rJacobian[21] = mSetVoltageDerivativeToZero ? CHASTE_CONST(0.0) : (-var_x77 * (-var_x82 + CHASTE_CONST(0.0095090000000000001) * var_x79 + CHASTE_CONST(0.0002653945091048535) * var_x80 - CHASTE_CONST(0.00029999999999999997) * var_x86 - CHASTE_CONST(0.0095090000000000001) * var_x81 * var_chaste_interface__intracellular_ion_concentrations__Ca_i)); + rJacobian[22] = -CHASTE_CONST(47.271999999999998) - var_x150 + CHASTE_CONST(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 - CHASTE_CONST(8.3745867230843319e-6) * var_x79 - CHASTE_CONST(5.2842065767700058e-7) * var_x86 - CHASTE_CONST(8.2198768971977874) * var_x142 - CHASTE_CONST(0.0017614021922566689) * var_x82 - CHASTE_CONST(2.3373323507508574e-7) * var_x80 + CHASTE_CONST(8.3745867230843319e-6) * var_x81 * var_chaste_interface__intracellular_ion_concentrations__Ca_i + CHASTE_CONST(7.3978892074780085e-7) * var_x143 * var_x144; + rJacobian[23] = CHASTE_CONST(0.0024676405950567236) * var_x82 + CHASTE_CONST(7.4029217851701709e-7) * var_x86; + rJacobian[24] = 200 - 200 * var_chaste_interface__intracellular_Ca_buffering__O_C; + rJacobian[25] = CHASTE_CONST(78.400000000000006) - CHASTE_CONST(78.400000000000006) * var_chaste_interface__intracellular_Ca_buffering__O_TC; + rJacobian[26] = 200 - 200 * var_chaste_interface__intracellular_Ca_buffering__O_TMgC - 200 * var_chaste_interface__intracellular_Ca_buffering__O_TMgMg; + rJacobian[27] = var_x306; + rJacobian[28] = CHASTE_CONST(121.85879481761599) * var_x142 - CHASTE_CONST(1.0967291533585437e-5) * var_x153; + rJacobian[29] = var_x315 * var_chaste_interface__Ca_handling_by_the_SR__F1; + rJacobian[30] = var_x318 * var_chaste_interface__Ca_handling_by_the_SR__F2 - var_x315 * var_chaste_interface__Ca_handling_by_the_SR__F1; + rJacobian[31] = -var_x318 * var_chaste_interface__Ca_handling_by_the_SR__F2; + rJacobian[32] = mSetVoltageDerivativeToZero ? CHASTE_CONST(0.0) : (-var_x77 * var_x92); + rJacobian[33] = -CHASTE_CONST(0.001) * ((var_x158) ? (var_x163 + CHASTE_CONST(394539.57232025318) * (CHASTE_CONST(44.400001267299999) + var_chaste_interface__membrane__V) * (-var_x163 - CHASTE_CONST(0.00058295799999830145) * var_x157)) : (-var_x161 * var_x162)) - CHASTE_CONST(18.399999999999999) * var_x159; + rJacobian[34] = -CHASTE_CONST(0.00082254686501890791) * var_x92; + rJacobian[35] = mSetVoltageDerivativeToZero ? CHASTE_CONST(0.0) : (-var_x77 * var_x96); + rJacobian[36] = -var_x173; + rJacobian[37] = -CHASTE_CONST(0.00082254686501890791) * var_x96; + rJacobian[38] = mSetVoltageDerivativeToZero ? CHASTE_CONST(0.0) : (-var_x77 * var_x99); + rJacobian[39] = -var_x178; + rJacobian[40] = -CHASTE_CONST(0.00082254686501890791) * var_x99; + rJacobian[41] = mSetVoltageDerivativeToZero ? CHASTE_CONST(0.0) : (-var_x100 * var_x101); + rJacobian[42] = var_x141 * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L; + rJacobian[43] = -CHASTE_CONST(0.001) * var_x213 - CHASTE_CONST(0.001) * var_x220; + rJacobian[44] = mSetVoltageDerivativeToZero ? CHASTE_CONST(0.0) : (-var_x101 * var_x102); + rJacobian[45] = var_x141 * var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L; + rJacobian[46] = -CHASTE_CONST(0.001) * var_x236 - CHASTE_CONST(0.067921999999999996) * var_x233; + rJacobian[47] = mSetVoltageDerivativeToZero ? CHASTE_CONST(0.0) : (-var_x103 * var_x104); + rJacobian[48] = var_x151 * var_chaste_interface__T_type_Ca_channel_f_T_gate__f_T; + rJacobian[49] = -CHASTE_CONST(0.67417300000000002) * var_x241 - CHASTE_CONST(0.67417300000000002) * var_x242; + rJacobian[50] = mSetVoltageDerivativeToZero ? CHASTE_CONST(0.0) : (-var_x104 * var_x105); + rJacobian[51] = var_x151 * var_chaste_interface__T_type_Ca_channel_d_T_gate__d_T; + rJacobian[52] = -CHASTE_CONST(0.0096369999999999997) * var_x243 - CHASTE_CONST(0.0096369999999999997) * var_x244; + rJacobian[53] = mSetVoltageDerivativeToZero ? CHASTE_CONST(0.0) : (-var_x106 * var_x19 * var_x77); + rJacobian[54] = -CHASTE_CONST(0.001) * var_x253; + rJacobian[55] = var_x106 * var_x288; + rJacobian[56] = var_x106 * var_x300; + rJacobian[57] = mSetVoltageDerivativeToZero ? CHASTE_CONST(0.0) : (-CHASTE_CONST(0.0017699999999999999) * var_x107 * var_x109); + rJacobian[58] = -CHASTE_CONST(0.001) * var_x257; + rJacobian[59] = var_x290 * var_x291; + rJacobian[60] = var_x291 * var_x302; + rJacobian[61] = mSetVoltageDerivativeToZero ? CHASTE_CONST(0.0) : (-CHASTE_CONST(0.00123) * var_x109 * var_x110); + rJacobian[62] = -CHASTE_CONST(0.001) * var_x266; + rJacobian[63] = var_x290 * var_x292; + rJacobian[64] = var_x292 * var_x302; + rJacobian[65] = mSetVoltageDerivativeToZero ? CHASTE_CONST(0.0) : (-CHASTE_CONST(3.600144e-5) * var_x108 * var_x111); + rJacobian[66] = -CHASTE_CONST(0.001) * var_x270; + rJacobian[67] = -CHASTE_CONST(2.9612871608166312e-5) * var_x293; + rJacobian[68] = CHASTE_CONST(0.00014924887290515819) * var_x293; + rJacobian[69] = mSetVoltageDerivativeToZero ? CHASTE_CONST(0.0) : (-var_x46 * var_x77 * mParameters[8]); + rJacobian[70] = -CHASTE_CONST(0.001) * var_x278; + rJacobian[71] = var_x294 * mParameters[8]; + rJacobian[72] = var_x303 * mParameters[8]; + rJacobian[73] = mSetVoltageDerivativeToZero ? CHASTE_CONST(0.0) : (-var_x112 * var_x113); + rJacobian[74] = -CHASTE_CONST(0.0089999999999999993) * var_x282 - CHASTE_CONST(0.0012999999999999999) * var_x281; + rJacobian[75] = var_x23 * var_x294; + rJacobian[76] = var_x23 * var_x303; + rJacobian[77] = mSetVoltageDerivativeToZero ? CHASTE_CONST(0.0) : (-var_x113 * var_x114); + rJacobian[78] = -CHASTE_CONST(0.65600000000000003) * var_x284 - CHASTE_CONST(0.10000000000000001) * var_x283; + rJacobian[79] = var_x294 * var_x295; + rJacobian[80] = var_x295 * var_x303; + rJacobian[81] = mSetVoltageDerivativeToZero ? CHASTE_CONST(0.0) : (-var_x77 * (var_x129 + 3 * var_x117 + CHASTE_CONST(0.00053078901820970701) * var_x51 + CHASTE_CONST(0.154584) * var_x121 - CHASTE_CONST(0.00089999999999999998) * var_x122 - CHASTE_CONST(0.0001161412471825695) * var_x125)); + rJacobian[82] = -CHASTE_CONST(1.5852619730310017e-6) * var_x122 + CHASTE_CONST(0.0052842065767700064) * var_x115 * var_x15 * var_x7 * mParameters[9] * mParameters[1]; + rJacobian[83] = -CHASTE_CONST(0.00038145775374624855) * var_x121 - CHASTE_CONST(4.3659884291485854e-7) * var_x51 - CHASTE_CONST(0.00082254686501890791) * var_x129 - CHASTE_CONST(0.0074029217851701709) * var_x117 + CHASTE_CONST(2.2208765355510512e-6) * var_x115 * var_x83 * var_x84 * mParameters[9] * mParameters[1] + CHASTE_CONST(2.8659485630822583e-7) * var_x118 * var_x123 * var_x124 * var_x40 * var_chaste_interface__cleft_space_ion_concentrations__K_c; + rJacobian[84] = CHASTE_CONST(0.00025430516916416572) * var_x121 - CHASTE_CONST(1.9106323753881723e-7) * var_x125; + rJacobian[85] = -CHASTE_CONST(0.0012816980525873951) * var_x121 + CHASTE_CONST(9.6295871719563877e-7) * var_x118 * var_x123 * var_x124 * var_x40 * var_chaste_interface__cleft_space_ion_concentrations__K_c; + rJacobian[86] = mSetVoltageDerivativeToZero ? CHASTE_CONST(0.0) : (-var_x77 * (CHASTE_CONST(53.0789018209707) * var_x132 - CHASTE_CONST(2.786) * var_x133 + var_x130 * var_x26 + var_x131 * var_x22 + var_x131 * var_x24)); + rJacobian[87] = -CHASTE_CONST(0.043659884291485852) * var_x132 - var_x26 * var_x296 - var_x26 * var_x297 + CHASTE_CONST(26.53945091048535) * var_x20 * var_x26 * var_x288 * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r + CHASTE_CONST(0.0022916155659426776) * var_x25 * var_x26 * var_x28 * var_x32 * var_x46 * var_x47 * mParameters[6]; + rJacobian[88] = CHASTE_CONST(0.22004581682908866) * var_x132 - CHASTE_CONST(0.011549742452351092) * var_x133 + var_x131 * var_x301 + var_x26 * var_x304 + var_x26 * var_x305; + rJacobian[89] = CHASTE_CONST(0.021419999999999998) + 9 * var_chaste_interface__intracellular_ion_concentrations__Ca_i; + rJacobian[90] = -CHASTE_CONST(0.47599999999999998) - var_x299; + rJacobian[91] = CHASTE_CONST(0.031359999999999999) + CHASTE_CONST(6.2720000000000002) * var_chaste_interface__intracellular_ion_concentrations__Ca_i; + rJacobian[92] = -CHASTE_CONST(0.39200000000000002) - CHASTE_CONST(78.400000000000006) * var_chaste_interface__intracellular_ion_concentrations__Ca_i; + rJacobian[93] = CHASTE_CONST(0.0010559999999999999) + var_x152; + rJacobian[94] = -CHASTE_CONST(0.0066) - var_x299; + rJacobian[95] = -5; + rJacobian[96] = var_x152; + rJacobian[97] = -var_x299; + rJacobian[98] = -CHASTE_CONST(5.6660000000000004); + rJacobian[99] = mSetVoltageDerivativeToZero ? CHASTE_CONST(0.0) : (-var_x77 * (-CHASTE_CONST(53.0789018209707) * var_x137 - CHASTE_CONST(0.10305599999999999) * var_x140 - var_x130 * var_x134 - var_x135 * var_x22 - var_x135 * var_x24 - 6 * var_x138 * var_x46 + CHASTE_CONST(0.10305599999999999) * var_x118 * var_x40 * var_x42 * var_x43 + 6 * var_x136 * var_x30 * var_x32 * var_x46 * mParameters[6] + CHASTE_CONST(2.786) * var_x136 * var_x28 * var_x32 * var_x46 * var_x47 * mParameters[6])); + rJacobian[100] = CHASTE_CONST(0.00025430516916416572) * var_x140 - CHASTE_CONST(0.00025430516916416572) * var_x287; + rJacobian[101] = CHASTE_CONST(0.043659884291485852) * var_x137 + CHASTE_CONST(0.00016953677944277714) * var_x287 - CHASTE_CONST(0.00016953677944277714) * var_x140 + var_x134 * var_x296 + var_x134 * var_x297 + var_x138 * var_x298 - var_x137 * var_x298 - CHASTE_CONST(0.0022916155659426776) * var_x136 * var_x48 - var_x135 * var_x21 * var_x288; + rJacobian[102] = -CHASTE_CONST(0.00085446536839159674) * var_x287 - CHASTE_CONST(0.22004581682908866) * var_x137 - var_x134 * var_x304 - var_x134 * var_x305 - var_x135 * var_x301 - CHASTE_CONST(0.024873817198171774) * var_x138 * var_x46 + CHASTE_CONST(0.024873817198171774) * var_x136 * var_x30 * var_x32 * var_x46 * mParameters[6] + CHASTE_CONST(0.00085446536839159674) * var_x118 * var_x139 * var_x42 * var_x43 * var_chaste_interface__cleft_space_ion_concentrations__K_c + CHASTE_CONST(0.011549742452351092) * var_x136 * var_x28 * var_x32 * var_x46 * var_x47 * mParameters[6]; + rJacobian[103] = var_x150; + rJacobian[104] = -CHASTE_CONST(14.98) - var_x306 + CHASTE_CONST(14.880000000000001) * var_chaste_interface__Ca_handling_by_the_SR__O_Calse; + rJacobian[105] = CHASTE_CONST(0.011085915847820609); + rJacobian[106] = CHASTE_CONST(0.47999999999999998) - CHASTE_CONST(0.47999999999999998) * var_chaste_interface__Ca_handling_by_the_SR__O_Calse; + rJacobian[107] = CHASTE_CONST(1.7754934097947219e-10) * var_x153 + CHASTE_CONST(0.00078910818213098765) * var_x142; + rJacobian[108] = CHASTE_CONST(0.099999999999999992); + rJacobian[109] = -CHASTE_CONST(0.011085915847820609) - CHASTE_CONST(2.6321499680605046e-9) * var_x153 - CHASTE_CONST(0.011698444302491135) * var_x142; + rJacobian[110] = CHASTE_CONST(12.4) + CHASTE_CONST(14.880000000000001) * var_chaste_interface__Ca_handling_by_the_SR__Ca_rel; + rJacobian[111] = -CHASTE_CONST(0.40000000000000002) - CHASTE_CONST(0.47999999999999998) * var_chaste_interface__Ca_handling_by_the_SR__Ca_rel; + rJacobian[112] = -var_x317; + rJacobian[113] = var_x317; + rJacobian[114] = -CHASTE_CONST(0.0017614021922566689) * var_x154 * var_x155 + CHASTE_CONST(0.0017614021922566689) * var_x147 * var_x154 * var_chaste_interface__Ca_handling_by_the_SR__F2 * mParameters[0]; + rJacobian[115] = var_x155 * var_x307 - var_x148 * var_x307 * var_chaste_interface__Ca_handling_by_the_SR__F2; + rJacobian[116] = -var_x319; + rJacobian[117] = var_x319; + rJacobian[118] = CHASTE_CONST(0.00081499999999999997); + rJacobian[119] = -CHASTE_CONST(0.00081499999999999997); +} + +#include "ChasteCpuMacros.hpp" +#endif // CELLASLANIDI_ATRIAL_MODEL_2009FROMCELLMLCVODEKERNELS_HPP_ \ No newline at end of file diff --git a/chaste_codegen/data/tests/chaste_reference_models/Cvode_with_jacobian/dynamic_Shannon2004.cpp b/chaste_codegen/data/tests/chaste_reference_models/Cvode_with_jacobian/dynamic_Shannon2004.cpp index e5733f956..7305f6892 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/Cvode_with_jacobian/dynamic_Shannon2004.cpp +++ b/chaste_codegen/data/tests/chaste_reference_models/Cvode_with_jacobian/dynamic_Shannon2004.cpp @@ -22,6 +22,8 @@ #include "HeartConfig.hpp" #include "IsNan.hpp" #include "MathsCustomFunctions.hpp" +#include "ChasteMathDeviceNamespaces.hpp" +#include "ChasteCpuMacros.hpp" #if CHASTE_SUNDIALS_VERSION >= 60000 #include "CvodeContextManager.hpp" @@ -40,7 +42,7 @@ bool Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode::registered = Mo 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_amplitude_converted = -CHASTE_CONST(9.5) * CHASTE_CAP(); // 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 @@ -76,28 +78,28 @@ bool Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode::registered = Mo mUseAnalyticJacobian = true; mHasAnalyticJacobian = true; - NV_Ith_S(this->mParameters, 0) = 5.3480000000000003e-6; // (var_Jleak_SR__KSRleak) [per_millisecond] + NV_Ith_S(this->mParameters, 0) = CHASTE_CONST(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, 2) = CHASTE_CONST(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, 6) = CHASTE_CONST(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, 8) = CHASTE_CONST(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, 10) = CHASTE_CONST(96486.699999999997); // (var_model_parameters__F) [coulomb_per_mole] + NV_Ith_S(this->mParameters, 11) = CHASTE_CONST(8314.2999999999993); // (var_model_parameters__R) [joule_per_kilomole_kelvin] + NV_Ith_S(this->mParameters, 12) = CHASTE_CONST(0.00054000000000000001); // (var_ICaL__PCa) [litre_per_farad_millisecond] + NV_Ith_S(this->mParameters, 13) = CHASTE_CONST(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, 17) = CHASTE_CONST(0.02); // (var_Itof__G_tof) [milliS_per_microF] + NV_Ith_S(this->mParameters, 18) = CHASTE_CONST(0.90000000000000002); // (var_IK1__G_K1_max) [milliS_per_microF] + NV_Ith_S(this->mParameters, 19) = CHASTE_CONST(0.029999999999999999); // (var_IKr__G_IKr_const) [milliS_per_microF] + NV_Ith_S(this->mParameters, 20) = CHASTE_CONST(0.070000000000000007); // (var_IKs__G_Ks_max) [milliS_per_microF] + NV_Ith_S(this->mParameters, 21) = CHASTE_CONST(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] } @@ -155,7 +157,7 @@ bool Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode::registered = Mo made_new_cvode_vector = true; rY = MakeNVector(*pStateVariables); } - double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -196,135 +198,135 @@ bool Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode::registered = Mo 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__Fx_ICaL_SL = CHASTE_CONST(0.10000000000000001); // dimensionless + const double var_ICaL__Fx_ICaL_jct = CHASTE_CONST(0.90000000000000002); // dimensionless + const double var_ICaL__PK = CHASTE_CONST(2.7000000000000001e-7); // litre_per_farad_millisecond + const double var_ICaL__PNa = CHASTE_CONST(1.4999999999999999e-8); // litre_per_farad_millisecond + const double var_ICaL__Q10_CaL = CHASTE_CONST(1.8); // dimensionless + const double var_ICaL__gamma_Cai = CHASTE_CONST(0.34100000000000003); // dimensionless + const double var_ICaL__gamma_Cao = CHASTE_CONST(0.34100000000000003); // dimensionless + const double var_ICaL__gamma_Ki = CHASTE_CONST(0.75); // dimensionless + const double var_ICaL__gamma_Ko = CHASTE_CONST(0.75); // dimensionless + const double var_ICaL__gamma_Nai = CHASTE_CONST(0.75); // dimensionless + const double var_ICaL__gamma_Nao = CHASTE_CONST(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_ICab__Fx_CaBk_SL = CHASTE_CONST(0.89000000000000001); // dimensionless + const double var_ICab__Fx_CaBk_jct = CHASTE_CONST(0.11); // dimensionless + const double var_ICab__G_CaBk = CHASTE_CONST(0.00025129999999999998); // milliS_per_microF + const double var_ICap__Fx_SLCaP_SL = CHASTE_CONST(0.89000000000000001); // dimensionless + const double var_ICap__Fx_SLCaP_jct = CHASTE_CONST(0.11); // dimensionless + const double var_ICap__H = CHASTE_CONST(1.6000000000000001); // dimensionless + const double var_ICap__Km = CHASTE_CONST(0.00050000000000000001); // millimolar + const double var_ICap__Q10_SLCaP = CHASTE_CONST(2.3500000000000001); // dimensionless + const double var_ICap__V_maxAF = CHASTE_CONST(0.067299999999999999); // microA_per_microF + const double var_ICl_Ca__Fx_Cl_SL = CHASTE_CONST(0.89000000000000001); // dimensionless + const double var_ICl_Ca__Fx_Cl_jct = CHASTE_CONST(0.11); // dimensionless + const double var_ICl_Ca__G_Cl = CHASTE_CONST(0.109625); // milliS_per_microF + const double var_ICl_Ca__Kd_ClCa = CHASTE_CONST(0.10000000000000001); // millimolar + const double var_IKs__Fx_Ks_SL = CHASTE_CONST(0.89000000000000001); // dimensionless + const double var_IKs__Fx_Ks_jct = CHASTE_CONST(0.11); // dimensionless + const double var_IKs__pCa_SL = 3 - CHASTE_MATH::Log10(var_chaste_interface__Ca_buffer__Ca_SL); // dimensionless + const double var_IKs__G_Ks_SL = (CHASTE_CONST(0.057000000000000002) + CHASTE_CONST(0.19) / (1 + CHASTE_MATH::Exp(-12 + CHASTE_CONST(1.6666666666666667) * var_IKs__pCa_SL))) * NV_Ith_S(mParameters, 20); // milliS_per_microF + const double var_IKs__pCa_jct = 3 - CHASTE_MATH::Log10(var_chaste_interface__Ca_buffer__Ca_jct); // dimensionless + const double var_IKs__G_Ks_jct = (CHASTE_CONST(0.057000000000000002) + CHASTE_CONST(0.19) / (1 + CHASTE_MATH::Exp(-12 + CHASTE_CONST(1.6666666666666667) * var_IKs__pCa_jct))) * NV_Ith_S(mParameters, 20); // milliS_per_microF + const double var_IKs__pKNa = CHASTE_CONST(0.018329999999999999); // dimensionless + const double var_INa__Fx_Na_SL = CHASTE_CONST(0.89000000000000001); // dimensionless + const double var_INa__Fx_Na_jct = CHASTE_CONST(0.11); // dimensionless + const double var_INaCa__Fx_NCX_SL = CHASTE_CONST(0.89000000000000001); // dimensionless + const double var_INaCa__Fx_NCX_jct = CHASTE_CONST(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_INaCa__K_mCai = CHASTE_CONST(0.0035899999999999999); // millimolar + const double var_INaCa__K_mCao = CHASTE_CONST(1.3); // millimolar + const double var_INaCa__K_mNai = CHASTE_CONST(12.289999999999999); // millimolar + const double var_INaCa__K_mNao = CHASTE_CONST(87.5); // millimolar + const double var_INaCa__Kd_act = CHASTE_CONST(0.00025599999999999999); // millimolar + const double var_INaCa__Ka_SL = 1 / (1 + CHASTE_MATH::Pow(var_INaCa__Kd_act, 3) / CHASTE_MATH::Pow(var_chaste_interface__Ca_buffer__Ca_SL, 3)); // dimensionless + const double var_INaCa__Ka_jct = 1 / (1 + CHASTE_MATH::Pow(var_INaCa__Kd_act, 3) / CHASTE_MATH::Pow(var_chaste_interface__Ca_buffer__Ca_jct, 3)); // dimensionless + const double var_INaCa__Q10_NCX = CHASTE_CONST(1.5700000000000001); // dimensionless + const double var_INaCa__eta = CHASTE_CONST(0.34999999999999998); // dimensionless + const double var_INaCa__ksat = CHASTE_CONST(0.27000000000000002); // dimensionless + const double var_INaK__Fx_NaK_SL = CHASTE_CONST(0.89000000000000001); // dimensionless + const double var_INaK__Fx_NaK_jct = CHASTE_CONST(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__I_NaK_max = CHASTE_CONST(1.9099999999999999); // microA_per_microF + const double var_INaK__Km_Ko = CHASTE_CONST(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_INaK__Q10_Km_Nai = CHASTE_CONST(1.49); // dimensionless + const double var_INaK__Q10_NaK = CHASTE_CONST(1.6299999999999999); // dimensionless + const double var_INa__openProb = CHASTE_MATH::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 = CHASTE_CONST(0.89000000000000001); // dimensionless + const double var_INab__Fx_NaBk_jct = CHASTE_CONST(0.11); // dimensionless + const double var_INab__G_NaBk = CHASTE_CONST(0.00029700000000000001); // milliS_per_microF + const double var_IKr_Rr_gate__Rr = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(1.4732142857142858) + CHASTE_CONST(0.044642857142857144) * var_chaste_interface__cell__V)); // dimensionless + const double var_IK1__G_K1 = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::Sqrt(NV_Ith_S(mParameters, 8)) * NV_Ith_S(mParameters, 18); // milliS_per_microF + const double var_IKr__G_IKr = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::Sqrt(NV_Ith_S(mParameters, 8)) * NV_Ith_S(mParameters, 19); // milliS_per_microF + const double var_INaK__sigma = -CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * CHASTE_MATH::Exp(CHASTE_CONST(0.01485884101040119) * NV_Ith_S(mParameters, 9)); // dimensionless + const double var_ICaL__Q_CaL = CHASTE_MATH::Pow(var_ICaL__Q10_CaL, (-31 + CHASTE_CONST(0.10000000000000001) * NV_Ith_S(mParameters, 23))); // dimensionless + const double var_ICaL__temp = CHASTE_CONST(0.45000000000000001) * CHASTE_MATH::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 * CHASTE_MATH::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 + CHASTE_MATH::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 * CHASTE_MATH::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 + CHASTE_MATH::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) * CHASTE_MATH::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 + CHASTE_MATH::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 * CHASTE_MATH::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 + CHASTE_MATH::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 * CHASTE_MATH::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 + CHASTE_MATH::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_ICaL__i_CaL_converted = CHASTE_CAP() * var_ICaL__i_CaL; // uA_per_cm2 + const double var_ICap__Q_SLCaP = CHASTE_MATH::Pow(var_ICap__Q10_SLCaP, (-31 + CHASTE_CONST(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 + CHASTE_MATH::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 + CHASTE_MATH::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_ICap__i_Cap_converted = CHASTE_CAP() * var_ICap__i_Cap; // uA_per_cm2 + const double var_IKs__E_Ks = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * CHASTE_MATH::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 = CHASTE_MATH::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 = CHASTE_MATH::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_IKs__i_Ks_converted = CHASTE_CAP() * var_IKs__i_Ks; // uA_per_cm2 + const double var_INaCa__Q_NCX = CHASTE_MATH::Pow(var_INaCa__Q10_NCX, (-31 + CHASTE_CONST(0.10000000000000001) * NV_Ith_S(mParameters, 23))); // dimensionless + const double var_INaCa__temp_SL = (CHASTE_MATH::Pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) * CHASTE_MATH::Exp(var_INaCa__eta * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23))) - CHASTE_MATH::Pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_SL * CHASTE_MATH::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 * CHASTE_MATH::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 / (CHASTE_MATH::Pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * var_INaCa__K_mCao + CHASTE_MATH::Pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) + CHASTE_MATH::Pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_SL + CHASTE_MATH::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 + CHASTE_MATH::Pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * (1 + CHASTE_MATH::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 = (CHASTE_MATH::Pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) * CHASTE_MATH::Exp(var_INaCa__eta * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23))) - CHASTE_MATH::Pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_jct * CHASTE_MATH::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 * CHASTE_MATH::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 / (CHASTE_MATH::Pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * var_INaCa__K_mCao + CHASTE_MATH::Pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) + CHASTE_MATH::Pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_jct + CHASTE_MATH::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 + CHASTE_MATH::Pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * (1 + CHASTE_MATH::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_INaCa__i_NaCa_converted = CHASTE_CAP() * var_INaCa__i_NaCa; // uA_per_cm2 + const double var_INaK__Q_Km_Nai = CHASTE_MATH::Pow(var_INaK__Q10_Km_Nai, (-31 + CHASTE_CONST(0.10000000000000001) * NV_Ith_S(mParameters, 23))); // dimensionless + const double var_INaK__Q_NaK = CHASTE_MATH::Pow(var_INaK__Q10_NaK, (-31 + CHASTE_CONST(0.10000000000000001) * NV_Ith_S(mParameters, 23))); // dimensionless + const double var_INaK__f_NaK = 1 / (1 + CHASTE_CONST(0.1245) * CHASTE_MATH::Exp(-CHASTE_CONST(0.10000000000000001) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23))) + CHASTE_CONST(0.036499999999999998) * var_INaK__sigma * CHASTE_MATH::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 + CHASTE_MATH::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 + CHASTE_MATH::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_reversal_potentials__E_Ca_SL = CHASTE_CONST(0.5) * NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * CHASTE_MATH::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_reversal_potentials__E_Ca_jct = CHASTE_CONST(0.5) * NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * CHASTE_MATH::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_ICab__i_Cab_converted = CHASTE_CAP() * var_ICab__i_Cab; // uA_per_cm2 + const double var_reversal_potentials__E_Cl = -NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * CHASTE_MATH::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_IClb__i_Clb_converted = CHASTE_CAP() * var_IClb__i_Clb; // uA_per_cm2 + const double var_reversal_potentials__E_K = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * CHASTE_MATH::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 = CHASTE_CONST(1.02) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__cell__V - CHASTE_CONST(0.23849999999999999) * var_reversal_potentials__E_K)); // per_millisecond + const double var_IK1_K1_gate__beta_K1 = (CHASTE_MATH::Exp(-CHASTE_CONST(36.698642499999998) + CHASTE_CONST(0.061749999999999999) * var_chaste_interface__cell__V - CHASTE_CONST(0.061749999999999999) * var_reversal_potentials__E_K) + CHASTE_CONST(0.49124000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.43983232) + CHASTE_CONST(0.080320000000000003) * var_chaste_interface__cell__V - CHASTE_CONST(0.080320000000000003) * var_reversal_potentials__E_K)) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.4444678999999998) + CHASTE_CONST(0.51429999999999998) * var_reversal_potentials__E_K - CHASTE_CONST(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_IK1__i_K1_converted = CHASTE_CAP() * 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_IKr__i_Kr_converted = CHASTE_CAP() * 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_Itof__i_tof_converted = CHASTE_CAP() * var_Itof__i_tof; // uA_per_cm2 + const double var_Itos__i_tos = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * (CHASTE_CONST(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 = CHASTE_CAP() * 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) * CHASTE_MATH::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_reversal_potentials__E_Na_jct = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * CHASTE_MATH::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_INa__i_Na_converted = CHASTE_CAP() * 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 var_INab__i_Nab_converted = CHASTE_CAP() * var_INab__i_Nab; // uA_per_cm2 + const double var_chaste_interface__i_ionic = CHASTE_CAP() * var_ICl_Ca__i_Cl_Ca + CHASTE_CAP() * 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) @@ -339,7 +341,7 @@ bool Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode::registered = Mo { // Inputs: // Time units: millisecond - double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -432,217 +434,217 @@ bool Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode::registered = Mo // 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__Bmax_Calsequestrin = CHASTE_CONST(0.14000000000000001); // millimolar + const double var_Ca_buffer__Bmax_SLB_SL = CHASTE_CONST(0.037400000000000003); // millimolar + const double var_Ca_buffer__Bmax_SLB_jct = CHASTE_CONST(0.0045999999999999999); // millimolar + const double var_Ca_buffer__Bmax_SLHigh_SL = CHASTE_CONST(0.0134); // millimolar + const double var_Ca_buffer__Bmax_SLHigh_jct = CHASTE_CONST(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__koff_SLB = CHASTE_CONST(1.3); // per_millisecond + const double var_Ca_buffer__koff_SLHigh = CHASTE_CONST(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__Fx_ICaL_SL = CHASTE_CONST(0.10000000000000001); // dimensionless + const double var_ICaL__Fx_ICaL_jct = CHASTE_CONST(0.90000000000000002); // dimensionless + const double var_ICaL__PNa = CHASTE_CONST(1.4999999999999999e-8); // litre_per_farad_millisecond + const double var_ICaL__Q10_CaL = CHASTE_CONST(1.8); // dimensionless + const double var_ICaL__gamma_Cai = CHASTE_CONST(0.34100000000000003); // dimensionless + const double var_ICaL__gamma_Cao = CHASTE_CONST(0.34100000000000003); // dimensionless + const double var_ICaL__gamma_Nai = CHASTE_CONST(0.75); // dimensionless + const double var_ICaL__gamma_Nao = CHASTE_CONST(0.75); // dimensionless + const double d_dt_chaste_interface_var_ICaL_fCa_gate__fCaB_SL = -CHASTE_CONST(0.011900000000000001) * var_chaste_interface__ICaL_fCa_gate__fCaB_SL + CHASTE_CONST(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 = -CHASTE_CONST(0.011900000000000001) * var_chaste_interface__ICaL_fCa_gate__fCaB_jct + CHASTE_CONST(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_ICab__Fx_CaBk_SL = CHASTE_CONST(0.89000000000000001); // dimensionless + const double var_ICab__Fx_CaBk_jct = CHASTE_CONST(0.11); // dimensionless + const double var_ICab__G_CaBk = CHASTE_CONST(0.00025129999999999998); // milliS_per_microF + const double var_ICap__Fx_SLCaP_SL = CHASTE_CONST(0.89000000000000001); // dimensionless + const double var_ICap__Fx_SLCaP_jct = CHASTE_CONST(0.11); // dimensionless + const double var_ICap__H = CHASTE_CONST(1.6000000000000001); // dimensionless + const double var_ICap__Km = CHASTE_CONST(0.00050000000000000001); // millimolar + const double var_ICap__Q10_SLCaP = CHASTE_CONST(2.3500000000000001); // dimensionless + const double var_ICap__V_maxAF = CHASTE_CONST(0.067299999999999999); // microA_per_microF + const double var_INa__Fx_Na_SL = CHASTE_CONST(0.89000000000000001); // dimensionless + const double var_INa__Fx_Na_jct = CHASTE_CONST(0.11); // dimensionless + const double var_INaCa__Fx_NCX_SL = CHASTE_CONST(0.89000000000000001); // dimensionless + const double var_INaCa__Fx_NCX_jct = CHASTE_CONST(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_INaCa__K_mCai = CHASTE_CONST(0.0035899999999999999); // millimolar + const double var_INaCa__K_mCao = CHASTE_CONST(1.3); // millimolar + const double var_INaCa__K_mNai = CHASTE_CONST(12.289999999999999); // millimolar + const double var_INaCa__K_mNao = CHASTE_CONST(87.5); // millimolar + const double var_INaCa__Kd_act = CHASTE_CONST(0.00025599999999999999); // millimolar + const double var_INaCa__Ka_SL = 1 / (1 + CHASTE_MATH::Pow(var_INaCa__Kd_act, 3) / CHASTE_MATH::Pow(var_chaste_interface__Ca_buffer__Ca_SL, 3)); // dimensionless + const double var_INaCa__Ka_jct = 1 / (1 + CHASTE_MATH::Pow(var_INaCa__Kd_act, 3) / CHASTE_MATH::Pow(var_chaste_interface__Ca_buffer__Ca_jct, 3)); // dimensionless + const double var_INaCa__Q10_NCX = CHASTE_CONST(1.5700000000000001); // dimensionless + const double var_INaCa__eta = CHASTE_CONST(0.34999999999999998); // dimensionless + const double var_INaCa__ksat = CHASTE_CONST(0.27000000000000002); // dimensionless + const double var_INaK__Fx_NaK_SL = CHASTE_CONST(0.89000000000000001); // dimensionless + const double var_INaK__Fx_NaK_jct = CHASTE_CONST(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__I_NaK_max = CHASTE_CONST(1.9099999999999999); // microA_per_microF + const double var_INaK__Km_Ko = CHASTE_CONST(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_INaK__Q10_Km_Nai = CHASTE_CONST(1.49); // dimensionless + const double var_INaK__Q10_NaK = CHASTE_CONST(1.6299999999999999); // dimensionless + const double var_INa__openProb = CHASTE_MATH::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 = CHASTE_CONST(0.89000000000000001); // dimensionless + const double var_INab__Fx_NaBk_jct = CHASTE_CONST(0.11); // dimensionless + const double var_INab__G_NaBk = CHASTE_CONST(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_Jpump_SR__H = CHASTE_CONST(1.7869999999999999); // dimensionless + const double var_Jpump_SR__Kmf = CHASTE_CONST(0.00024600000000000002); // millimolar + const double var_Jpump_SR__Kmr = CHASTE_CONST(1.7); // millimolar + const double var_Jpump_SR__Q10_SRCaP = CHASTE_CONST(2.6000000000000001); // dimensionless + const double var_Jrel_SR__EC50_SR = CHASTE_CONST(0.45000000000000001); // millimolar + const double var_Jrel_SR__HSR = CHASTE_CONST(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__kCaSR = -(-var_Jrel_SR__Min_SR + var_Jrel_SR__Max_SR) / (1 + CHASTE_MATH::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 = CHASTE_CONST(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__kim = CHASTE_CONST(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__kom = CHASTE_CONST(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 + CHASTE_MATH::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 + CHASTE_MATH::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 - CHASTE_MATH::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__Bmax_SL = CHASTE_CONST(1.6499999999999999); // millimolar + const double var_Na_buffer__Bmax_jct = CHASTE_CONST(7.5609999999999999); // millimolar + const double var_Na_buffer__koff = CHASTE_CONST(0.001); // per_millisecond + const double var_Na_buffer__kon = CHASTE_CONST(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 var_ICaL_d_gate__d_infinity = 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.4166666666666665) - CHASTE_CONST(0.16666666666666666) * var_chaste_interface__cell__V)); // dimensionless + const double var_ICaL_d_gate__tau_d = CHASTE_CONST(28.571428571428569) * (1 - CHASTE_MATH::Exp(-CHASTE_CONST(2.4166666666666665) - CHASTE_CONST(0.16666666666666666) * var_chaste_interface__cell__V)) * var_ICaL_d_gate__d_infinity / (CHASTE_CONST(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 var_ICaL_f_gate__f_infinity = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(9.7388888888888889) + CHASTE_CONST(0.27777777777777779) * var_chaste_interface__cell__V)) + CHASTE_CONST(0.59999999999999998) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(2.5) - CHASTE_CONST(0.050000000000000003) * var_chaste_interface__cell__V)); // dimensionless + const double var_ICaL_f_gate__tau_f = 1 / (CHASTE_CONST(0.02) + CHASTE_CONST(0.019699999999999999) * CHASTE_MATH::Exp(-CHASTE_CONST(0.23877882250000002) * CHASTE_MATH::Pow((1 + CHASTE_CONST(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 var_IKr_Xr_gate__Xr_infinity = 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(6.666666666666667) - CHASTE_CONST(0.13333333333333333) * var_chaste_interface__cell__V)); // dimensionless + const double var_IKr_Xr_gate__tau_Xr = 1 / (CHASTE_CONST(0.00060999999999999997) * (10 + var_chaste_interface__cell__V) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(1.45) + CHASTE_CONST(0.14499999999999999) * var_chaste_interface__cell__V)) + CHASTE_CONST(0.0013799999999999999) * (7 + var_chaste_interface__cell__V) / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(0.86099999999999999) - CHASTE_CONST(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 var_IKs_Xs_gate__Xs_infinity = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(0.089820359281437126) - CHASTE_CONST(0.059880239520958084) * var_chaste_interface__cell__V)); // dimensionless + const double var_IKs_Xs_gate__tau_Xs = 1 / (CHASTE_CONST(0.00013100000000000001) * (30 + var_chaste_interface__cell__V) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(2.0609999999999999) + CHASTE_CONST(0.068699999999999997) * var_chaste_interface__cell__V)) + CHASTE_CONST(7.1899999999999999e-5) * (30 + var_chaste_interface__cell__V) / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(4.4399999999999995) - CHASTE_CONST(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__alpha_h = ((var_chaste_interface__cell__V < -40) ? (CHASTE_CONST(0.13500000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(11.764705882352942) + CHASTE_CONST(0.14705882352941177) * NV_Ith_S(mParameters, 16) - CHASTE_CONST(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 * CHASTE_MATH::Exp(CHASTE_CONST(0.34999999999999998) * var_chaste_interface__cell__V - CHASTE_CONST(0.34999999999999998) * NV_Ith_S(mParameters, 16)) + CHASTE_CONST(3.5600000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.079000000000000001) * var_chaste_interface__cell__V - CHASTE_CONST(0.079000000000000001) * NV_Ith_S(mParameters, 16))) : (CHASTE_CONST(7.6923076923076916) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.96036036036036043) + CHASTE_CONST(0.0900900900900901) * NV_Ith_S(mParameters, 16) - CHASTE_CONST(0.0900900900900901) * var_chaste_interface__cell__V)))); // per_millisecond + const double var_INa_h_gate__h_infinity = CHASTE_CONST(0.01) * NV_Ith_S(mParameters, 15) + (1 - CHASTE_CONST(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__alpha_j = ((var_chaste_interface__cell__V < -40) ? ((CHASTE_CONST(37.780000000000001) + var_chaste_interface__cell__V) * (-127140 * CHASTE_MATH::Exp(CHASTE_CONST(0.24440000000000001) * var_chaste_interface__cell__V - CHASTE_CONST(0.24440000000000001) * NV_Ith_S(mParameters, 16)) - CHASTE_CONST(3.4740000000000003e-5) * CHASTE_MATH::Exp(CHASTE_CONST(0.043909999999999998) * NV_Ith_S(mParameters, 16) - CHASTE_CONST(0.043909999999999998) * var_chaste_interface__cell__V)) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(24.640530000000002) + CHASTE_CONST(0.311) * var_chaste_interface__cell__V - CHASTE_CONST(0.311) * NV_Ith_S(mParameters, 16)))) : (0)); // per_millisecond + const double var_INa_j_gate__beta_j = ((var_chaste_interface__cell__V < -40) ? (CHASTE_CONST(0.1212) * CHASTE_MATH::Exp(CHASTE_CONST(0.01052) * NV_Ith_S(mParameters, 16) - CHASTE_CONST(0.01052) * var_chaste_interface__cell__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(5.5312920000000005) + CHASTE_CONST(0.13780000000000001) * NV_Ith_S(mParameters, 16) - CHASTE_CONST(0.13780000000000001) * var_chaste_interface__cell__V))) : (CHASTE_CONST(0.29999999999999999) * CHASTE_MATH::Exp(CHASTE_CONST(2.5349999999999999e-7) * NV_Ith_S(mParameters, 16) - CHASTE_CONST(2.5349999999999999e-7) * var_chaste_interface__cell__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(3.2000000000000002) + CHASTE_CONST(0.10000000000000001) * NV_Ith_S(mParameters, 16) - CHASTE_CONST(0.10000000000000001) * var_chaste_interface__cell__V)))); // per_millisecond + const double var_INa_j_gate__j_infinity = CHASTE_CONST(0.01) * NV_Ith_S(mParameters, 15) + (1 - CHASTE_CONST(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__alpha_m = CHASTE_CONST(0.32000000000000001) * (CHASTE_CONST(47.130000000000003) + var_chaste_interface__cell__V) / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(4.7130000000000001) - CHASTE_CONST(0.10000000000000001) * var_chaste_interface__cell__V)); // per_millisecond + const double var_INa_m_gate__beta_m = CHASTE_CONST(0.080000000000000002) * CHASTE_MATH::Exp(-CHASTE_CONST(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 var_Itof_X_gate__X_tof_infinity = 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.20000000000000001) - CHASTE_CONST(0.066666666666666666) * var_chaste_interface__cell__V)); // dimensionless + const double var_Itof_X_gate__tau_X_tof = CHASTE_CONST(1.5) + CHASTE_CONST(3.5) * CHASTE_MATH::Exp(-CHASTE_CONST(0.0011111111111111111) * CHASTE_MATH::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 var_Itof_Y_gate__Y_tof_infinity = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(3.3500000000000001) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__cell__V)); // dimensionless + const double var_Itof_Y_gate__tau_Y_tof = 20 + 20 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(3.3500000000000001) + CHASTE_CONST(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 var_Itos_R_gate__R_tos_infinity = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(3.3500000000000001) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__cell__V)); // dimensionless + const double var_Itos_R_gate__tau_R_tos = 220 + 2800 / (1 + CHASTE_MATH::Exp(6 + CHASTE_CONST(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 var_Itos_X_gate__X_tos_infinity = 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.20000000000000001) - CHASTE_CONST(0.066666666666666666) * var_chaste_interface__cell__V)); // dimensionless + const double var_Itos_X_gate__tau_X_tos = CHASTE_CONST(0.5) + 9 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(0.20000000000000001) + CHASTE_CONST(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 var_Itos_Y_gate__Y_tos_infinity = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(3.3500000000000001) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__cell__V)); // dimensionless + const double var_Itos_Y_gate__tau_Y_tos = 30 + 3000 / (1 + CHASTE_MATH::Exp(6 + CHASTE_CONST(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__Bmax_Calmodulin = CHASTE_CONST(0.024); // millimolar + const double var_cytosolic_Ca_buffer__Bmax_Myosin_Ca = CHASTE_CONST(0.14000000000000001); // millimolar + const double var_cytosolic_Ca_buffer__Bmax_Myosin_Mg = CHASTE_CONST(0.14000000000000001); // millimolar + const double var_cytosolic_Ca_buffer__Bmax_SRB = CHASTE_CONST(0.017100000000000001); // millimolar + const double var_cytosolic_Ca_buffer__Bmax_TroponinC = CHASTE_CONST(0.070000000000000007); // millimolar + const double var_cytosolic_Ca_buffer__Bmax_TroponinC_Ca_Mg_Ca = CHASTE_CONST(0.14000000000000001); // millimolar + const double var_cytosolic_Ca_buffer__Bmax_TroponinC_Ca_Mg_Mg = CHASTE_CONST(0.14000000000000001); // millimolar + const double var_cytosolic_Ca_buffer__koff_Calmodulin = CHASTE_CONST(0.23799999999999999); // per_millisecond + const double var_cytosolic_Ca_buffer__koff_Myosin_Ca = CHASTE_CONST(0.00046000000000000001); // per_millisecond + const double var_cytosolic_Ca_buffer__koff_Myosin_Mg = CHASTE_CONST(5.7000000000000003e-5); // per_millisecond + const double var_cytosolic_Ca_buffer__koff_SRB = CHASTE_CONST(0.059999999999999998); // per_millisecond + const double var_cytosolic_Ca_buffer__koff_TroponinC = CHASTE_CONST(0.019599999999999999); // per_millisecond + const double var_cytosolic_Ca_buffer__koff_TroponinC_Ca_Mg_Ca = CHASTE_CONST(3.1999999999999999e-5); // per_millisecond + const double var_cytosolic_Ca_buffer__koff_TroponinC_Ca_Mg_Mg = CHASTE_CONST(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__kon_Myosin_Ca = CHASTE_CONST(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_Myosin_Mg = CHASTE_CONST(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__kon_TroponinC = CHASTE_CONST(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__kon_TroponinC_Ca_Mg_Ca = CHASTE_CONST(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_cytosolic_Ca_buffer__kon_TroponinC_Ca_Mg_Mg = CHASTE_CONST(0.0030000000000000001); // per_millimolar_per_millisecond + const double var_indo_fluo_Ca_buffer_not_connected__Bmax_Fluo3_Cytosol = CHASTE_CONST(0.025000000000000001); // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__Bmax_Fluo3_SL = CHASTE_CONST(0.00076999999999999996); // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__Bmax_Fluo3_jct = CHASTE_CONST(2.0000000000000002e-5); // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__Bmax_Indo1_Cytosol = CHASTE_CONST(0.025000000000000001); // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__Bmax_Indo1_SL = CHASTE_CONST(0.00076999999999999996); // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__Bmax_Indo1_jct = CHASTE_CONST(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__koff_Fluo3 = CHASTE_CONST(0.11); // per_millisecond + const double var_indo_fluo_Ca_buffer_not_connected__koff_Indo1 = CHASTE_CONST(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_ion_diffusion__J_Ca_SL_cytosol = CHASTE_CONST(3.7243000000000002e-12) * var_chaste_interface__Ca_buffer__Ca_SL - CHASTE_CONST(3.7243000000000002e-12) * var_chaste_interface__Ca_buffer__Cai; // millimole_per_millisecond + const double var_ion_diffusion__J_Ca_jct_SL = CHASTE_CONST(8.2413000000000004e-13) * var_chaste_interface__Ca_buffer__Ca_jct - CHASTE_CONST(8.2413000000000004e-13) * var_chaste_interface__Ca_buffer__Ca_SL; // millimole_per_millisecond + const double var_ion_diffusion__J_Na_SL_cytosol = CHASTE_CONST(1.6385999999999999e-12) * var_chaste_interface__Na_buffer__Na_SL - CHASTE_CONST(1.6385999999999999e-12) * var_chaste_interface__Na_buffer__Nai; // millimole_per_millisecond + const double var_ion_diffusion__J_Na_jct_SL = CHASTE_CONST(1.8312999999999999e-14) * var_chaste_interface__Na_buffer__Na_jct - CHASTE_CONST(1.8312999999999999e-14) * var_chaste_interface__Na_buffer__Na_SL; // millimole_per_millisecond + const double var_model_parameters__Cm_per_area = CHASTE_CONST(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_INaK__sigma = -CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * CHASTE_MATH::Exp(CHASTE_CONST(0.01485884101040119) * NV_Ith_S(mParameters, 9)); // dimensionless + const double var_ICaL__Q_CaL = CHASTE_MATH::Pow(var_ICaL__Q10_CaL, (-31 + CHASTE_CONST(0.10000000000000001) * NV_Ith_S(mParameters, 23))); // dimensionless + const double var_ICaL__temp = CHASTE_CONST(0.45000000000000001) * CHASTE_MATH::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 * CHASTE_MATH::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 + CHASTE_MATH::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 * CHASTE_MATH::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 + CHASTE_MATH::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 * CHASTE_MATH::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 + CHASTE_MATH::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 * CHASTE_MATH::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 + CHASTE_MATH::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 = CHASTE_MATH::Pow(var_ICap__Q10_SLCaP, (-31 + CHASTE_CONST(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 + CHASTE_MATH::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 + CHASTE_MATH::Pow((var_ICap__Km / var_chaste_interface__Ca_buffer__Ca_jct), var_ICap__H)); // microA_per_microF + const double var_INaCa__Q_NCX = CHASTE_MATH::Pow(var_INaCa__Q10_NCX, (-31 + CHASTE_CONST(0.10000000000000001) * NV_Ith_S(mParameters, 23))); // dimensionless + const double var_INaCa__temp_SL = (CHASTE_MATH::Pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) * CHASTE_MATH::Exp(var_INaCa__eta * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23))) - CHASTE_MATH::Pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_SL * CHASTE_MATH::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 * CHASTE_MATH::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 / (CHASTE_MATH::Pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * var_INaCa__K_mCao + CHASTE_MATH::Pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) + CHASTE_MATH::Pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_SL + CHASTE_MATH::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 + CHASTE_MATH::Pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * (1 + CHASTE_MATH::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 = (CHASTE_MATH::Pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) * CHASTE_MATH::Exp(var_INaCa__eta * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23))) - CHASTE_MATH::Pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_jct * CHASTE_MATH::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 * CHASTE_MATH::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 / (CHASTE_MATH::Pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * var_INaCa__K_mCao + CHASTE_MATH::Pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) + CHASTE_MATH::Pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_jct + CHASTE_MATH::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 + CHASTE_MATH::Pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * (1 + CHASTE_MATH::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 = CHASTE_MATH::Pow(var_INaK__Q10_Km_Nai, (-31 + CHASTE_CONST(0.10000000000000001) * NV_Ith_S(mParameters, 23))); // dimensionless + const double var_INaK__Q_NaK = CHASTE_MATH::Pow(var_INaK__Q10_NaK, (-31 + CHASTE_CONST(0.10000000000000001) * NV_Ith_S(mParameters, 23))); // dimensionless + const double var_INaK__f_NaK = 1 / (1 + CHASTE_CONST(0.1245) * CHASTE_MATH::Exp(-CHASTE_CONST(0.10000000000000001) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23))) + CHASTE_CONST(0.036499999999999998) * var_INaK__sigma * CHASTE_MATH::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 + CHASTE_MATH::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 + CHASTE_MATH::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 = CHASTE_MATH::Pow(var_Jpump_SR__Q10_SRCaP, (-31 + CHASTE_CONST(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_model_parameters__cell_radius = CHASTE_CONST(10.25); // micrometre + const double var_model_parameters__Cm = CHASTE_CONST(2.0e-8) * CHASTE_CONST(CHASTE_MATH::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 = CHASTE_CONST(3.1415926540000002e-15) * CHASTE_MATH::Pow(var_model_parameters__cell_radius, 2) * var_model_parameters__cell_length; // liter + const double var_model_parameters__Vol_SL = CHASTE_CONST(0.02) * var_model_parameters__Vol_Cell; // liter + const double var_model_parameters__Vol_SR = CHASTE_CONST(0.035000000000000003) * var_model_parameters__Vol_Cell; // liter + const double var_model_parameters__Vol_cytosol = CHASTE_CONST(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 @@ -651,12 +653,12 @@ bool Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode::registered = Mo 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 var_Jpump_SR__j_pump_SR = (CHASTE_MATH::Pow((var_chaste_interface__Ca_buffer__Cai / var_Jpump_SR__Kmf), var_Jpump_SR__H) - CHASTE_MATH::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 + CHASTE_MATH::Pow((var_chaste_interface__Ca_buffer__Cai / var_Jpump_SR__Kmf), var_Jpump_SR__H) + CHASTE_MATH::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_model_parameters__Vol_jct = CHASTE_CONST(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 + CHASTE_CONST(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 + CHASTE_CONST(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 @@ -674,19 +676,19 @@ bool Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode::registered = Mo 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_reversal_potentials__E_Ca_SL = CHASTE_CONST(0.5) * NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * CHASTE_MATH::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 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 - CHASTE_CONST(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 = CHASTE_CONST(0.5) * NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * CHASTE_MATH::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 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 - CHASTE_CONST(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) * CHASTE_MATH::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_reversal_potentials__E_Na_jct = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * CHASTE_MATH::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 @@ -697,46 +699,46 @@ bool Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode::registered = Mo } 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__PK = CHASTE_CONST(2.7000000000000001e-7); // litre_per_farad_millisecond + const double var_ICaL__gamma_Ki = CHASTE_CONST(0.75); // dimensionless + const double var_ICaL__gamma_Ko = CHASTE_CONST(0.75); // dimensionless + const double var_ICl_Ca__Fx_Cl_SL = CHASTE_CONST(0.89000000000000001); // dimensionless + const double var_ICl_Ca__Fx_Cl_jct = CHASTE_CONST(0.11); // dimensionless + const double var_ICl_Ca__G_Cl = CHASTE_CONST(0.109625); // milliS_per_microF + const double var_ICl_Ca__Kd_ClCa = CHASTE_CONST(0.10000000000000001); // millimolar + const double var_IKs__Fx_Ks_SL = CHASTE_CONST(0.89000000000000001); // dimensionless + const double var_IKs__Fx_Ks_jct = CHASTE_CONST(0.11); // dimensionless + const double var_IKs__pCa_SL = 3 - CHASTE_MATH::Log10(var_chaste_interface__Ca_buffer__Ca_SL); // dimensionless + const double var_IKs__G_Ks_SL = (CHASTE_CONST(0.057000000000000002) + CHASTE_CONST(0.19) / (1 + CHASTE_MATH::Exp(-12 + CHASTE_CONST(1.6666666666666667) * var_IKs__pCa_SL))) * NV_Ith_S(mParameters, 20); // milliS_per_microF + const double var_IKs__pCa_jct = 3 - CHASTE_MATH::Log10(var_chaste_interface__Ca_buffer__Ca_jct); // dimensionless + const double var_IKs__G_Ks_jct = (CHASTE_CONST(0.057000000000000002) + CHASTE_CONST(0.19) / (1 + CHASTE_MATH::Exp(-12 + CHASTE_CONST(1.6666666666666667) * var_IKs__pCa_jct))) * NV_Ith_S(mParameters, 20); // milliS_per_microF + const double var_IKs__pKNa = CHASTE_CONST(0.018329999999999999); // dimensionless + const double var_IKr_Rr_gate__Rr = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(1.4732142857142858) + CHASTE_CONST(0.044642857142857144) * var_chaste_interface__cell__V)); // dimensionless + const double var_cell__i_Stim_converted = CHASTE_STIM(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_cell__i_Stim = var_cell__i_Stim_converted / CHASTE_CAP(); // microA_per_microF + const double var_IK1__G_K1 = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::Sqrt(NV_Ith_S(mParameters, 8)) * NV_Ith_S(mParameters, 18); // milliS_per_microF + const double var_IKr__G_IKr = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::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) * CHASTE_MATH::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 + CHASTE_MATH::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__E_Ks = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * CHASTE_MATH::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 = CHASTE_MATH::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 = CHASTE_MATH::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_reversal_potentials__E_Cl = -NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * CHASTE_MATH::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_reversal_potentials__E_K = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * CHASTE_MATH::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 = CHASTE_CONST(1.02) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__cell__V - CHASTE_CONST(0.23849999999999999) * var_reversal_potentials__E_K)); // per_millisecond + const double var_IK1_K1_gate__beta_K1 = (CHASTE_MATH::Exp(-CHASTE_CONST(36.698642499999998) + CHASTE_CONST(0.061749999999999999) * var_chaste_interface__cell__V - CHASTE_CONST(0.061749999999999999) * var_reversal_potentials__E_K) + CHASTE_CONST(0.49124000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.43983232) + CHASTE_CONST(0.080320000000000003) * var_chaste_interface__cell__V - CHASTE_CONST(0.080320000000000003) * var_reversal_potentials__E_K)) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.4444678999999998) + CHASTE_CONST(0.51429999999999998) * var_reversal_potentials__E_K - CHASTE_CONST(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_Itos__i_tos = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * (CHASTE_CONST(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 @@ -791,7 +793,7 @@ bool Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode::registered = Mo 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)); + double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -882,177 +884,177 @@ bool Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode::registered = Mo 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_x1 = 1 + CHASTE_CONST(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_x3 = 1 + CHASTE_CONST(0.10000000000000001) * var_x2; const double var_x4 = NV_Ith_S(mParameters, 17) * var_chaste_interface__Itof_Y_gate__Y_tof; - const double var_x5 = -var_chaste_interface__Itos_Y_gate__Y_tos - 0.5 * var_chaste_interface__Itos_R_gate__R_tos; - const double var_x6 = exp(-7.0000000000000009 - 1.6666666666666667 * log10(var_chaste_interface__Ca_buffer__Ca_jct)); + const double var_x5 = -var_chaste_interface__Itos_Y_gate__Y_tos - CHASTE_CONST(0.5) * var_chaste_interface__Itos_R_gate__R_tos; + const double var_x6 = CHASTE_MATH::Exp(-CHASTE_CONST(7.0000000000000009) - CHASTE_CONST(1.6666666666666667) * CHASTE_MATH::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_x8 = CHASTE_CONST(0.057000000000000002) + CHASTE_CONST(0.19) / var_x7; + const double var_x9 = CHASTE_MATH::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_x11 = CHASTE_MATH::Exp(-CHASTE_CONST(7.0000000000000009) - CHASTE_CONST(1.6666666666666667) * CHASTE_MATH::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_x13 = CHASTE_CONST(0.057000000000000002) + CHASTE_CONST(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_x15 = CHASTE_MATH::Sqrt(NV_Ith_S(mParameters, 8)); + const double var_x16 = CHASTE_MATH::Exp(CHASTE_CONST(1.4732142857142858) + CHASTE_CONST(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_x18 = CHASTE_CONST(0.43033148291193518) / var_x17; + const double var_x19 = CHASTE_MATH::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_x22 = CHASTE_MATH::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_x26 = CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__cell__V - CHASTE_CONST(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_x29 = CHASTE_MATH::Exp(-CHASTE_CONST(2.4444678999999998) - CHASTE_CONST(0.51429999999999998) * var_chaste_interface__cell__V + CHASTE_CONST(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_x32 = CHASTE_MATH::Exp(-CHASTE_CONST(36.698642499999998) + CHASTE_CONST(0.061749999999999999) * var_chaste_interface__cell__V - CHASTE_CONST(0.061749999999999999) * var_x25); + const double var_x33 = CHASTE_MATH::Exp(CHASTE_CONST(0.43983232) + CHASTE_CONST(0.080320000000000003) * var_chaste_interface__cell__V - CHASTE_CONST(0.080320000000000003) * var_x25); + const double var_x34 = var_x32 + CHASTE_CONST(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_x36 = 1 / (var_x35 + CHASTE_CONST(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_x39 = CHASTE_MATH::Exp(CHASTE_CONST(0.34999999999999998) * var_x38 * var_chaste_interface__cell__V); + const double var_x40 = CHASTE_MATH::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_x43 = CHASTE_CONST(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_x45 = CHASTE_MATH::Exp(-CHASTE_CONST(0.65000000000000002) * var_x44); + const double var_x46 = CHASTE_MATH::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_x49 = CHASTE_CONST(0.65000000000000002) * var_x38; + const double var_x50 = (1 + CHASTE_CONST(278.55153203342621) * var_chaste_interface__Ca_buffer__Ca_jct) * var_chaste_interface__Ca_buffer__Ca_jct; + const double var_x51 = 1 + CHASTE_CONST(0.00053869674493876331) * var_x40; + const double var_x52 = CHASTE_CONST(0.0035899999999999999) * var_x46; + const double var_x53 = 1 / (var_x41 + var_x47 + CHASTE_CONST(669921.875) * var_x50 + CHASTE_CONST(1.3) * var_x40 + var_x51 * var_x52); + const double var_x54 = 1 + CHASTE_CONST(1.6777215999999998e-11) / CHASTE_MATH::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_x56 = 1 + CHASTE_CONST(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_x58 = -31 + CHASTE_CONST(0.10000000000000001) * NV_Ith_S(mParameters, 23); + const double var_x59 = CHASTE_MATH::Pow(CHASTE_CONST(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_x65 = CHASTE_MATH::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_x70 = (1 + CHASTE_CONST(278.55153203342621) * var_chaste_interface__Ca_buffer__Ca_SL) * var_chaste_interface__Ca_buffer__Ca_SL; + const double var_x71 = 1 + CHASTE_CONST(0.00053869674493876331) * var_x65; + const double var_x72 = 1 / (var_x66 + var_x68 + CHASTE_CONST(669921.875) * var_x70 + CHASTE_CONST(1.3) * var_x65 + var_x52 * var_x71); + const double var_x73 = 1 + CHASTE_CONST(1.6777215999999998e-11) / CHASTE_MATH::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_x78 = CHASTE_MATH::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_x81 = CHASTE_MATH::Pow(CHASTE_CONST(1.49), (-124 + CHASTE_CONST(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 = exp(0.01485884101040119 * NV_Ith_S(mParameters, 9)); - const double var_x87 = exp(-var_x44); - 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_x58) * NV_Ith_S(mParameters, 8) / (1.5 + NV_Ith_S(mParameters, 8)); - const double var_x90 = var_x89 * (0.012450000000000001 * var_x38 * var_x85 + var_x38 * var_x87 * (-0.0052142857142857138 + 0.0052142857142857138 * var_x86)) / pow(var_x88, 2); + const double var_x83 = var_x81 * CHASTE_MATH::Pow(var_x82, 4); + const double var_x84 = CHASTE_CONST(0.10000000000000001) * var_chaste_interface__cell__V; + const double var_x85 = CHASTE_MATH::Exp(-var_x38 * var_x84); + const double var_x86 = CHASTE_MATH::Exp(CHASTE_CONST(0.01485884101040119) * NV_Ith_S(mParameters, 9)); + const double var_x87 = CHASTE_MATH::Exp(-var_x44); + const double var_x88 = 1 + CHASTE_CONST(0.1245) * var_x85 + CHASTE_CONST(0.036499999999999998) * var_x87 * (-CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * var_x86); + const double var_x89 = CHASTE_MATH::Pow(CHASTE_CONST(1.6299999999999999), var_x58) * NV_Ith_S(mParameters, 8) / (CHASTE_CONST(1.5) + NV_Ith_S(mParameters, 8)); + const double var_x90 = var_x89 * (CHASTE_CONST(0.012450000000000001) * var_x38 * var_x85 + var_x38 * var_x87 * (-CHASTE_CONST(0.0052142857142857138) + CHASTE_CONST(0.0052142857142857138) * var_x86)) / CHASTE_MATH::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_x93 = var_x81 * CHASTE_MATH::Pow(var_x92, 4); const double var_x94 = var_x90 / (1 + 14641 * var_x93); - const double var_x95 = exp(var_x44); - const double var_x96 = 0.75 * var_x95; - const double var_x97 = -0.75 * NV_Ith_S(mParameters, 8) + var_x96 * NV_Ith_S(mParameters, 5); - const double var_x98 = var_x37 * pow(NV_Ith_S(mParameters, 10), 2); + const double var_x95 = CHASTE_MATH::Exp(var_x44); + const double var_x96 = CHASTE_CONST(0.75) * var_x95; + const double var_x97 = -CHASTE_CONST(0.75) * NV_Ith_S(mParameters, 8) + var_x96 * NV_Ith_S(mParameters, 5); + const double var_x98 = var_x37 * CHASTE_MATH::Pow(NV_Ith_S(mParameters, 10), 2); const double var_x99 = -1 + var_x95; const double var_x100 = 1 / var_x99; - const double var_x101 = pow(1.8, var_x58); + const double var_x101 = CHASTE_MATH::Pow(CHASTE_CONST(1.8), var_x58); 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 = var_x105 * var_x97; - const double var_x107 = 1 - 0.10000000000000001 * var_chaste_interface__ICaL_fCa_gate__fCaB_SL - 0.90000000000000002 * var_chaste_interface__ICaL_fCa_gate__fCaB_jct; - const double var_x108 = 1.215e-7 * var_x107; + const double var_x107 = 1 - CHASTE_CONST(0.10000000000000001) * var_chaste_interface__ICaL_fCa_gate__fCaB_SL - CHASTE_CONST(0.90000000000000002) * var_chaste_interface__ICaL_fCa_gate__fCaB_jct; + const double var_x108 = CHASTE_CONST(1.215e-7) * var_x107; const double var_x109 = var_x67 - var_x69; const double var_x110 = var_x109 * var_x72; - const double var_x111 = var_x38 * var_x45 * var_x60 / pow(var_x56, 2); + const double var_x111 = var_x38 * var_x45 * var_x60 / CHASTE_MATH::Pow(var_x56, 2); const double var_x112 = var_x110 * var_x111 * var_x74; const double var_x113 = var_x42 - var_x48; const double var_x114 = var_x113 * var_x53; const double var_x115 = var_x111 * var_x114 * var_x55; const double var_x116 = 1 - var_chaste_interface__ICaL_fCa_gate__fCaB_SL; - const double var_x117 = exp(2 * var_x44); + const double var_x117 = CHASTE_MATH::Exp(2 * var_x44); const double var_x118 = -1 + var_x117; const double var_x119 = NV_Ith_S(mParameters, 12) / var_x118; const double var_x120 = var_x103 * var_x119; const double var_x121 = var_x116 * var_x120; - const double var_x122 = -0.34100000000000003 * NV_Ith_S(mParameters, 6); - const double var_x123 = 0.34100000000000003 * var_x117; + const double var_x122 = -CHASTE_CONST(0.34100000000000003) * NV_Ith_S(mParameters, 6); + const double var_x123 = CHASTE_CONST(0.34100000000000003) * var_x117; const double var_x124 = var_x122 + var_x123 * var_chaste_interface__Ca_buffer__Ca_SL; - const double var_x125 = 0.18000000000000002 * var_x124; + const double var_x125 = CHASTE_CONST(0.18000000000000002) * var_x124; const double var_x126 = var_x121 * var_x125 * var_x98; const double var_x127 = 1 - var_chaste_interface__ICaL_fCa_gate__fCaB_jct; const double var_x128 = var_x127 * var_x98; const double var_x129 = var_x120 * var_x128; const double var_x130 = var_x122 + var_x123 * var_chaste_interface__Ca_buffer__Ca_jct; - const double var_x131 = 1.6200000000000001 * var_x130; + const double var_x131 = CHASTE_CONST(1.6200000000000001) * var_x130; const double var_x132 = var_x129 * var_x131; const double var_x133 = var_x104 * var_x95; - const double var_x134 = pow(NV_Ith_S(mParameters, 10), 3); - const double var_x135 = pow(NV_Ith_S(mParameters, 11), (-2)); - const double var_x136 = pow(NV_Ith_S(mParameters, 23), (-2)); + const double var_x134 = CHASTE_MATH::Pow(NV_Ith_S(mParameters, 10), 3); + const double var_x135 = CHASTE_MATH::Pow(NV_Ith_S(mParameters, 11), (-2)); + const double var_x136 = CHASTE_MATH::Pow(NV_Ith_S(mParameters, 23), (-2)); const double var_x137 = var_x134 * var_x135 * var_x136 * var_chaste_interface__cell__V; - const double var_x138 = pow(var_x99, (-2)); + const double var_x138 = CHASTE_MATH::Pow(var_x99, (-2)); const double var_x139 = var_x127 * var_x137; - const double var_x140 = 1.10484 * var_x117 * var_x120 * var_x139 * var_chaste_interface__Ca_buffer__Ca_jct; + const double var_x140 = CHASTE_CONST(1.10484) * var_x117 * var_x120 * var_x139 * var_chaste_interface__Ca_buffer__Ca_jct; const double var_x141 = var_x117 * var_x121; - const double var_x142 = 0.12276000000000002 * var_x137 * var_x141 * var_chaste_interface__Ca_buffer__Ca_SL; + const double var_x142 = CHASTE_CONST(0.12276000000000002) * var_x137 * var_x141 * var_chaste_interface__Ca_buffer__Ca_SL; const double var_x143 = var_x103 * var_x137; - const double var_x144 = var_x117 * var_x143 * NV_Ith_S(mParameters, 12) / pow(var_x118, 2); - const double var_x145 = 0.36000000000000004 * var_x116 * var_x124 * var_x144; + const double var_x144 = var_x117 * var_x143 * NV_Ith_S(mParameters, 12) / CHASTE_MATH::Pow(var_x118, 2); + const double var_x145 = CHASTE_CONST(0.36000000000000004) * var_x116 * var_x124 * var_x144; const double var_x146 = var_x127 * var_x130; - const double var_x147 = 3.2400000000000002 * var_x144 * var_x146; - const double var_x148 = -0.75 * NV_Ith_S(mParameters, 9); + const double var_x147 = CHASTE_CONST(3.2400000000000002) * var_x144 * var_x146; + const double var_x148 = -CHASTE_CONST(0.75) * NV_Ith_S(mParameters, 9); const double var_x149 = var_x148 + var_x96 * var_chaste_interface__Na_buffer__Na_SL; const double var_x150 = var_x116 * var_x149; - const double var_x151 = 6.7499999999999994e-10 * var_x150; - const double var_x152 = 5.0624999999999998e-10 * var_x116 * var_x95; + const double var_x151 = CHASTE_CONST(6.7499999999999994e-10) * var_x150; + const double var_x152 = CHASTE_CONST(5.0624999999999998e-10) * var_x116 * var_x95; const double var_x153 = var_x138 * var_x143 * var_x95; const double var_x154 = var_x105 * var_x151 - var_x151 * var_x153 + var_x104 * var_x137 * var_x152 * var_chaste_interface__Na_buffer__Na_SL; const double var_x155 = var_x148 + var_x96 * var_chaste_interface__Na_buffer__Na_jct; const double var_x156 = var_x104 * var_x155; - const double var_x157 = 6.0749999999999998e-9 * var_x128; - const double var_x158 = 4.5562499999999999e-9 * var_x133; + const double var_x157 = CHASTE_CONST(6.0749999999999998e-9) * var_x128; + const double var_x158 = CHASTE_CONST(4.5562499999999999e-9) * var_x133; const double var_x159 = var_x127 * var_x155; - const double var_x160 = var_x156 * var_x157 - 6.0749999999999998e-9 * var_x153 * var_x159 + var_x139 * var_x158 * var_chaste_interface__Na_buffer__Na_jct; - const double var_x161 = -var_x24 * log(var_x82 * NV_Ith_S(mParameters, 9)) + var_chaste_interface__cell__V; - const double var_x162 = 0.11 * var_x161; - const double var_x163 = -var_x24 * log(var_x92 * NV_Ith_S(mParameters, 9)) + var_chaste_interface__cell__V; - const double var_x164 = 0.89000000000000001 * var_x163; + const double var_x160 = var_x156 * var_x157 - CHASTE_CONST(6.0749999999999998e-9) * var_x153 * var_x159 + var_x139 * var_x158 * var_chaste_interface__Na_buffer__Na_jct; + const double var_x161 = -var_x24 * CHASTE_MATH::Log(var_x82 * NV_Ith_S(mParameters, 9)) + var_chaste_interface__cell__V; + const double var_x162 = CHASTE_CONST(0.11) * var_x161; + const double var_x163 = -var_x24 * CHASTE_MATH::Log(var_x92 * NV_Ith_S(mParameters, 9)) + var_chaste_interface__cell__V; + const double var_x164 = CHASTE_CONST(0.89000000000000001) * var_x163; const double var_x165 = NV_Ith_S(mParameters, 14) * var_chaste_interface__INa_h_gate__h; const double var_x166 = var_x165 * var_x19; - const double var_x167 = var_x165 * pow(var_chaste_interface__INa_m_gate__m, 2) * var_chaste_interface__INa_j_gate__j; + const double var_x167 = var_x165 * CHASTE_MATH::Pow(var_chaste_interface__INa_m_gate__m, 2) * var_chaste_interface__INa_j_gate__j; const double var_x168 = var_x161 * var_x167; const double var_x169 = var_x163 * var_x167; - const double var_x170 = 1 / (0.018329999999999999 * var_chaste_interface__Na_buffer__Nai + NV_Ith_S(mParameters, 5)); - const double var_x171 = -var_x24 * log(var_x170 * (0.018329999999999999 * NV_Ith_S(mParameters, 9) + NV_Ith_S(mParameters, 8))) + var_chaste_interface__cell__V; + const double var_x170 = 1 / (CHASTE_CONST(0.018329999999999999) * var_chaste_interface__Na_buffer__Nai + NV_Ith_S(mParameters, 5)); + const double var_x171 = -var_x24 * CHASTE_MATH::Log(var_x170 * (CHASTE_CONST(0.018329999999999999) * NV_Ith_S(mParameters, 9) + NV_Ith_S(mParameters, 8))) + var_chaste_interface__cell__V; const double var_x172 = var_x171 * NV_Ith_S(mParameters, 20) * var_chaste_interface__IKs_Xs_gate__Xs; const double var_x173 = -var_x79; const double var_x174 = NV_Ith_S(mParameters, 21) * var_chaste_interface__Itos_X_gate__X_tos; @@ -1074,284 +1076,284 @@ bool Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode::registered = Mo const double var_x190 = var_x116 * var_x189; const double var_x191 = var_x105 * var_chaste_interface__cell__V; const double var_x192 = var_x106 * var_chaste_interface__cell__V; - const double var_x193 = pow(var_chaste_interface__Na_buffer__Na_SL, 2); + const double var_x193 = CHASTE_MATH::Pow(var_chaste_interface__Na_buffer__Na_SL, 2); const double var_x194 = 3 * NV_Ith_S(mParameters, 6); - const double var_x195 = 5.8017639429904805e-6 * var_x46; - const double var_x196 = -3.9000000000000004 * var_x193 - var_x193 * var_x194 - var_x193 * var_x195; - const double var_x197 = 5.3588338192419823e-9 * var_x46; - const double var_x198 = var_x109 * var_x75 / pow((var_x70 + 1.9405247813411081e-6 * var_x65 + 1.4927113702623908e-6 * var_x66 + 1.4927113702623908e-6 * var_x68 + var_x197 * var_x71), 2); - const double var_x199 = 1.9830866390704556e-12 * var_x198; + const double var_x195 = CHASTE_CONST(5.8017639429904805e-6) * var_x46; + const double var_x196 = -CHASTE_CONST(3.9000000000000004) * var_x193 - var_x193 * var_x194 - var_x193 * var_x195; + const double var_x197 = CHASTE_CONST(5.3588338192419823e-9) * var_x46; + const double var_x198 = var_x109 * var_x75 / CHASTE_MATH::Pow((var_x70 + CHASTE_CONST(1.9405247813411081e-6) * var_x65 + CHASTE_CONST(1.4927113702623908e-6) * var_x66 + CHASTE_CONST(1.4927113702623908e-6) * var_x68 + var_x197 * var_x71), 2); + const double var_x199 = CHASTE_CONST(1.9830866390704556e-12) * var_x198; const double var_x200 = var_x39 * NV_Ith_S(mParameters, 6); const double var_x201 = var_x193 * var_x200 * var_x76; const double var_x202 = var_x89 / var_x88; - const double var_x203 = var_x202 * var_x92 * var_x93 / pow((6.8301345536507063e-5 + var_x93), 2); + const double var_x203 = var_x202 * var_x92 * var_x93 / CHASTE_MATH::Pow((CHASTE_CONST(6.8301345536507063e-5) + var_x93), 2); const double var_x204 = var_x24 * var_x92; - const double var_x205 = 0.89000000000000001 * var_x21; - const double var_x206 = 0.00026433000000000001 * var_x204 + var_x152 * var_x191 + var_x204 * var_x205; - const double var_x207 = pow(var_chaste_interface__Na_buffer__Na_jct, 2); - const double var_x208 = -3.9000000000000004 * var_x207 - var_x194 * var_x207 - var_x195 * var_x207; - const double var_x209 = var_x113 * var_x62 / pow((var_x50 + 1.9405247813411081e-6 * var_x40 + 1.4927113702623908e-6 * var_x41 + 1.4927113702623908e-6 * var_x47 + var_x197 * var_x51), 2); - const double var_x210 = 2.4510059584016866e-13 * var_x209; + const double var_x205 = CHASTE_CONST(0.89000000000000001) * var_x21; + const double var_x206 = CHASTE_CONST(0.00026433000000000001) * var_x204 + var_x152 * var_x191 + var_x204 * var_x205; + const double var_x207 = CHASTE_MATH::Pow(var_chaste_interface__Na_buffer__Na_jct, 2); + const double var_x208 = -CHASTE_CONST(3.9000000000000004) * var_x207 - var_x194 * var_x207 - var_x195 * var_x207; + const double var_x209 = var_x113 * var_x62 / CHASTE_MATH::Pow((var_x50 + CHASTE_CONST(1.9405247813411081e-6) * var_x40 + CHASTE_CONST(1.4927113702623908e-6) * var_x41 + CHASTE_CONST(1.4927113702623908e-6) * var_x47 + var_x197 * var_x51), 2); + const double var_x210 = CHASTE_CONST(2.4510059584016866e-13) * var_x209; const double var_x211 = var_x200 * var_x207 * var_x63; - const double var_x212 = var_x202 * var_x82 * var_x83 / pow((6.8301345536507063e-5 + var_x83), 2); + const double var_x212 = var_x202 * var_x82 * var_x83 / CHASTE_MATH::Pow((CHASTE_CONST(6.8301345536507063e-5) + var_x83), 2); const double var_x213 = var_x24 * var_x82; - const double var_x214 = 0.11 * var_x21; - const double var_x215 = 3.2670000000000004e-5 * var_x213 + var_x158 * var_x184 + var_x213 * var_x214; + const double var_x214 = CHASTE_CONST(0.11) * var_x21; + const double var_x215 = CHASTE_CONST(3.2670000000000004e-5) * var_x213 + var_x158 * var_x184 + var_x213 * var_x214; const double var_x216 = var_x170 * var_x24; - const double var_x217 = var_x24 * log(NV_Ith_S(mParameters, 7) / NV_Ith_S(mParameters, 4)) + var_chaste_interface__cell__V; - const double var_x218 = var_x171 * var_x9 / log(10); - const double var_x219 = var_x110 * var_x61 / (pow(var_x73, 2) * pow(var_chaste_interface__Ca_buffer__Ca_SL, 4)); - const double var_x220 = 669921.875 + var_x46; - const double var_x221 = -var_x220 - 373215529.24791086 * var_chaste_interface__Ca_buffer__Ca_SL; - const double var_x222 = pow(2.3500000000000001, var_x58); - const double var_x223 = pow(var_x2, 1.6000000000000001); - const double var_x224 = 0.00011182849999999999 * var_x2 * var_x24 + 0.061380000000000011 * var_x141 * var_x180 + 5.0104537825247566e-7 * var_x2 * var_x222 * var_x223 / pow((1 + 5.2281977629563632e-6 * var_x223), 2); - const double var_x225 = pow(var_chaste_interface__Ca_buffer__Ca_jct, 2); - const double var_x226 = -var_x220 - 373215529.24791086 * var_chaste_interface__Ca_buffer__Ca_jct; - const double var_x227 = var_x114 * var_x61 / (pow(var_x54, 2) * pow(var_chaste_interface__Ca_buffer__Ca_jct, 4)); - const double var_x228 = pow(var_x0, 1.6000000000000001); - const double var_x229 = 1.38215e-5 * var_x0 * var_x24 + 0.55242000000000002 * var_x117 * var_x129 * var_chaste_interface__cell__V + 6.1926956862665531e-8 * var_x0 * var_x222 * var_x228 / pow((1 + 5.2281977629563632e-6 * var_x228), 2); - const double var_x230 = 32.700000000000003 * var_chaste_interface__cytosolic_Ca_buffer__Ca_TroponinC; + const double var_x217 = var_x24 * CHASTE_MATH::Log(NV_Ith_S(mParameters, 7) / NV_Ith_S(mParameters, 4)) + var_chaste_interface__cell__V; + const double var_x218 = var_x171 * var_x9 / CHASTE_MATH::Log(10); + const double var_x219 = var_x110 * var_x61 / (CHASTE_MATH::Pow(var_x73, 2) * CHASTE_MATH::Pow(var_chaste_interface__Ca_buffer__Ca_SL, 4)); + const double var_x220 = CHASTE_CONST(669921.875) + var_x46; + const double var_x221 = -var_x220 - CHASTE_CONST(373215529.24791086) * var_chaste_interface__Ca_buffer__Ca_SL; + const double var_x222 = CHASTE_MATH::Pow(CHASTE_CONST(2.3500000000000001), var_x58); + const double var_x223 = CHASTE_MATH::Pow(var_x2, CHASTE_CONST(1.6000000000000001)); + const double var_x224 = CHASTE_CONST(0.00011182849999999999) * var_x2 * var_x24 + CHASTE_CONST(0.061380000000000011) * var_x141 * var_x180 + CHASTE_CONST(5.0104537825247566e-7) * var_x2 * var_x222 * var_x223 / CHASTE_MATH::Pow((1 + CHASTE_CONST(5.2281977629563632e-6) * var_x223), 2); + const double var_x225 = CHASTE_MATH::Pow(var_chaste_interface__Ca_buffer__Ca_jct, 2); + const double var_x226 = -var_x220 - CHASTE_CONST(373215529.24791086) * var_chaste_interface__Ca_buffer__Ca_jct; + const double var_x227 = var_x114 * var_x61 / (CHASTE_MATH::Pow(var_x54, 2) * CHASTE_MATH::Pow(var_chaste_interface__Ca_buffer__Ca_jct, 4)); + const double var_x228 = CHASTE_MATH::Pow(var_x0, CHASTE_CONST(1.6000000000000001)); + const double var_x229 = CHASTE_CONST(1.38215e-5) * var_x0 * var_x24 + CHASTE_CONST(0.55242000000000002) * var_x117 * var_x129 * var_chaste_interface__cell__V + CHASTE_CONST(6.1926956862665531e-8) * var_x0 * var_x222 * var_x228 / CHASTE_MATH::Pow((1 + CHASTE_CONST(5.2281977629563632e-6) * var_x228), 2); + const double var_x230 = CHASTE_CONST(32.700000000000003) * var_chaste_interface__cytosolic_Ca_buffer__Ca_TroponinC; const double var_x231 = 34 * var_chaste_interface__cytosolic_Ca_buffer__Ca_Calmodulin; const double var_x232 = 100 * var_chaste_interface__cytosolic_Ca_buffer__Ca_SRB; - const double var_x233 = pow(var_chaste_interface__Ca_buffer__Cai, 0.78699999999999992); - const double var_x234 = pow(var_chaste_interface__Ca_buffer__Ca_SR, 1.7869999999999999); - const double var_x235 = 0.38742512113256738 * var_x234; - const double var_x236 = pow(var_chaste_interface__Ca_buffer__Cai, 1.7869999999999999); - const double var_x237 = 1 / (1 + var_x235 + 2814485.1633595936 * var_x236); - const double var_x238 = pow(2.6000000000000001, var_x58); + const double var_x233 = CHASTE_MATH::Pow(var_chaste_interface__Ca_buffer__Cai, CHASTE_CONST(0.78699999999999992)); + const double var_x234 = CHASTE_MATH::Pow(var_chaste_interface__Ca_buffer__Ca_SR, CHASTE_CONST(1.7869999999999999)); + const double var_x235 = CHASTE_CONST(0.38742512113256738) * var_x234; + const double var_x236 = CHASTE_MATH::Pow(var_chaste_interface__Ca_buffer__Cai, CHASTE_CONST(1.7869999999999999)); + const double var_x237 = 1 / (1 + var_x235 + CHASTE_CONST(2814485.1633595936) * var_x236); + const double var_x238 = CHASTE_MATH::Pow(CHASTE_CONST(2.6000000000000001), var_x58); const double var_x239 = var_x238 * NV_Ith_S(mParameters, 2); const double var_x240 = var_x237 * var_x239; - const double var_x241 = var_x239 * (-var_x235 + 2814485.1633595936 * var_x236) / pow((3.5530476870814998e-7 + var_x236 + 1.3765399305573384e-7 * var_x234), 2); + const double var_x241 = var_x239 * (-var_x235 + CHASTE_CONST(2814485.1633595936) * var_x236) / CHASTE_MATH::Pow((CHASTE_CONST(3.5530476870814998e-7) + var_x236 + CHASTE_CONST(1.3765399305573384e-7) * var_x234), 2); const double var_x242 = var_x233 * var_x241; - const double var_x243 = 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_x244 = 13.800000000000001 * var_chaste_interface__cytosolic_Ca_buffer__Ca_Myosin + 13.800000000000001 * var_chaste_interface__cytosolic_Ca_buffer__Mg_Myosin; - const double var_x245 = pow(var_chaste_interface__Ca_buffer__Ca_SR, 0.78699999999999992); + const double var_x243 = CHASTE_CONST(2.3700000000000001) * var_chaste_interface__cytosolic_Ca_buffer__Ca_TroponinC_Ca_Mg + CHASTE_CONST(2.3700000000000001) * var_chaste_interface__cytosolic_Ca_buffer__Mg_TroponinC_Ca_Mg; + const double var_x244 = CHASTE_CONST(13.800000000000001) * var_chaste_interface__cytosolic_Ca_buffer__Ca_Myosin + CHASTE_CONST(13.800000000000001) * var_chaste_interface__cytosolic_Ca_buffer__Mg_Myosin; + const double var_x245 = CHASTE_MATH::Pow(var_chaste_interface__Ca_buffer__Ca_SR, CHASTE_CONST(0.78699999999999992)); const double var_x246 = var_x240 * var_x245; const double var_x247 = var_x241 * var_x245; - const double var_x248 = 0.019599999999999999 + 32.700000000000003 * var_chaste_interface__Ca_buffer__Cai; - const double var_x249 = 2.3700000000000001 * var_chaste_interface__Ca_buffer__Cai; - const double var_x250 = 0.23799999999999999 + 34 * var_chaste_interface__Ca_buffer__Cai; - const double var_x251 = 13.800000000000001 * var_chaste_interface__Ca_buffer__Cai; - const double var_x252 = 0.059999999999999998 + 100 * var_chaste_interface__Ca_buffer__Cai; - const double var_x253 = exp(-11.764705882352942 + 0.14705882352941177 * NV_Ith_S(mParameters, 16) - 0.14705882352941177 * var_chaste_interface__cell__V); + const double var_x248 = CHASTE_CONST(0.019599999999999999) + CHASTE_CONST(32.700000000000003) * var_chaste_interface__Ca_buffer__Cai; + const double var_x249 = CHASTE_CONST(2.3700000000000001) * var_chaste_interface__Ca_buffer__Cai; + const double var_x250 = CHASTE_CONST(0.23799999999999999) + 34 * var_chaste_interface__Ca_buffer__Cai; + const double var_x251 = CHASTE_CONST(13.800000000000001) * var_chaste_interface__Ca_buffer__Cai; + const double var_x252 = CHASTE_CONST(0.059999999999999998) + 100 * var_chaste_interface__Ca_buffer__Cai; + const double var_x253 = CHASTE_MATH::Exp(-CHASTE_CONST(11.764705882352942) + CHASTE_CONST(0.14705882352941177) * NV_Ith_S(mParameters, 16) - CHASTE_CONST(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_x255 = ((var_x254) ? (CHASTE_CONST(0.13500000000000001) * var_x253) : (0)); + const double var_x256 = CHASTE_MATH::Exp(CHASTE_CONST(0.34999999999999998) * var_chaste_interface__cell__V - CHASTE_CONST(0.34999999999999998) * NV_Ith_S(mParameters, 16)); + const double var_x257 = CHASTE_MATH::Exp(CHASTE_CONST(0.079000000000000001) * var_chaste_interface__cell__V - CHASTE_CONST(0.079000000000000001) * NV_Ith_S(mParameters, 16)); + const double var_x258 = CHASTE_MATH::Exp(-CHASTE_CONST(0.96036036036036043) + CHASTE_CONST(0.0900900900900901) * NV_Ith_S(mParameters, 16) - CHASTE_CONST(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_x260 = ((var_x254) ? (310000 * var_x256 + CHASTE_CONST(3.5600000000000001) * var_x257) : (CHASTE_CONST(7.6923076923076916) / var_x259)); const double var_x261 = var_x255 + var_x260; - const double var_x262 = ((var_x254) ? (-0.019852941176470591 * var_x253) : (0)); + const double var_x262 = ((var_x254) ? (-CHASTE_CONST(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_x264 = CHASTE_CONST(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_x267 = ((var_x254) ? (CHASTE_CONST(0.28123999999999999) * var_x257 + 108500 * var_x256) : (CHASTE_CONST(0.693000693000693) * var_x258 / CHASTE_MATH::Pow(var_x259, 2))); + const double var_x268 = CHASTE_MATH::Exp(-CHASTE_CONST(5.5312920000000005) + CHASTE_CONST(0.13780000000000001) * NV_Ith_S(mParameters, 16) - CHASTE_CONST(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_x270 = CHASTE_MATH::Exp(CHASTE_CONST(0.01052) * NV_Ith_S(mParameters, 16) - CHASTE_CONST(0.01052) * var_chaste_interface__cell__V); const double var_x271 = var_x270 / var_x269; - const double var_x272 = exp(-3.2000000000000002 - var_x84 + 0.10000000000000001 * NV_Ith_S(mParameters, 16)); + const double var_x272 = CHASTE_MATH::Exp(-CHASTE_CONST(3.2000000000000002) - var_x84 + CHASTE_CONST(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_x274 = CHASTE_MATH::Exp(CHASTE_CONST(2.5349999999999999e-7) * NV_Ith_S(mParameters, 16) - CHASTE_CONST(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_x276 = ((var_x254) ? (CHASTE_CONST(0.1212) * var_x271) : (CHASTE_CONST(0.29999999999999999) * var_x275)); + const double var_x277 = CHASTE_CONST(37.780000000000001) + var_chaste_interface__cell__V; + const double var_x278 = CHASTE_MATH::Exp(CHASTE_CONST(0.24440000000000001) * var_chaste_interface__cell__V - CHASTE_CONST(0.24440000000000001) * NV_Ith_S(mParameters, 16)); + const double var_x279 = CHASTE_MATH::Exp(CHASTE_CONST(0.043909999999999998) * NV_Ith_S(mParameters, 16) - CHASTE_CONST(0.043909999999999998) * var_chaste_interface__cell__V); + const double var_x280 = -127140 * var_x278 - CHASTE_CONST(3.4740000000000003e-5) * var_x279; + const double var_x281 = CHASTE_MATH::Exp(CHASTE_CONST(24.640530000000002) + CHASTE_CONST(0.311) * var_chaste_interface__cell__V - CHASTE_CONST(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 = var_x276 + 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_x287 = ((var_x254) ? (var_x284 + var_x277 * var_x283 * (CHASTE_CONST(1.5254334000000001e-6) * var_x279 - CHASTE_CONST(31073.016) * var_x278) - CHASTE_CONST(0.311) * var_x277 * var_x280 * var_x281 / CHASTE_MATH::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_x84); + const double var_x290 = ((var_x254) ? (-CHASTE_CONST(0.001275024) * var_x271 + CHASTE_CONST(0.016701360000000002) * var_x268 * var_x270 / CHASTE_MATH::Pow(var_x269, 2)) : (-CHASTE_CONST(7.6049999999999996e-8) * var_x275 + CHASTE_CONST(0.029999999999999999) * var_x272 * var_x274 / CHASTE_MATH::Pow(var_x273, 2))); + const double var_x291 = CHASTE_MATH::Exp(-CHASTE_CONST(4.7130000000000001) - var_x84); 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 = 0.080000000000000002 * var_x294 + var_x295 * var_x296; + const double var_x294 = CHASTE_MATH::Exp(-CHASTE_CONST(0.090909090909090912) * var_chaste_interface__cell__V); + const double var_x295 = CHASTE_CONST(47.130000000000003) + var_chaste_interface__cell__V; + const double var_x296 = CHASTE_CONST(0.32000000000000001) * var_x293; + const double var_x297 = CHASTE_CONST(0.080000000000000002) * var_x294 + var_x295 * var_x296; const double var_x298 = 1 / var_x297; - const double var_x299 = 0.032000000000000001 * var_x291 * var_x295 / pow(var_x292, 2); - const double var_x300 = var_x299 + 0.0072727272727272727 * var_x294 - 0.32000000000000001 * var_x293; + const double var_x299 = CHASTE_CONST(0.032000000000000001) * var_x291 * var_x295 / CHASTE_MATH::Pow(var_x292, 2); + const double var_x300 = var_x299 + CHASTE_CONST(0.0072727272727272727) * var_x294 - CHASTE_CONST(0.32000000000000001) * var_x293; const double var_x301 = var_x293 * var_x295; - const double var_x302 = exp(-6.666666666666667 - 0.13333333333333333 * var_chaste_interface__cell__V); + const double var_x302 = CHASTE_MATH::Exp(-CHASTE_CONST(6.666666666666667) - CHASTE_CONST(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_x304 = CHASTE_MATH::Exp(CHASTE_CONST(1.45) + CHASTE_CONST(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_x307 = CHASTE_MATH::Exp(-CHASTE_CONST(0.86099999999999999) - CHASTE_CONST(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_x312 = CHASTE_CONST(0.00060999999999999997) * var_x306 * var_x311 + CHASTE_CONST(0.0013799999999999999) * var_x309 * var_x310; + const double var_x313 = CHASTE_MATH::Exp(CHASTE_CONST(0.089820359281437126) - CHASTE_CONST(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_x315 = CHASTE_MATH::Exp(CHASTE_CONST(2.0609999999999999) + CHASTE_CONST(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_x318 = CHASTE_MATH::Exp(-CHASTE_CONST(4.4399999999999995) - CHASTE_CONST(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_x322 = CHASTE_CONST(0.00013100000000000001) * var_x317 * var_x321 + CHASTE_CONST(7.1899999999999999e-5) * var_x320 * var_x321; + const double var_x323 = CHASTE_CONST(0.20000000000000001) + CHASTE_CONST(0.066666666666666666) * var_chaste_interface__cell__V; + const double var_x324 = CHASTE_MATH::Exp(var_x323); const double var_x325 = 1 + var_x324; const double var_x326 = 1 / var_x325; - const double var_x327 = 1 / (0.5 + 9 * var_x326); - const double var_x328 = exp(-var_x323); + const double var_x327 = 1 / (CHASTE_CONST(0.5) + 9 * var_x326); + const double var_x328 = CHASTE_MATH::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_x330 = CHASTE_CONST(0.066666666666666666) * var_x328 / CHASTE_MATH::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_x332 = CHASTE_CONST(0.10000000000000001) * var_chaste_interface__cell__V; + const double var_x333 = CHASTE_MATH::Exp(6 + var_x332); const double var_x334 = 1 + var_x333; const double var_x335 = 1 / var_x334; const double var_x336 = 1 / (30 + 3000 * var_x335); - const double var_x337 = exp(3.3500000000000001 + var_x332); + const double var_x337 = CHASTE_MATH::Exp(CHASTE_CONST(3.3500000000000001) + var_x332); const double var_x338 = 1 + var_x337; - const double var_x339 = pow(var_x338, (-2)); - const double var_x340 = 0.10000000000000001 * var_x337 * var_x339; - const double var_x341 = pow(var_x334, (-2)); + const double var_x339 = CHASTE_MATH::Pow(var_x338, (-2)); + const double var_x340 = CHASTE_CONST(0.10000000000000001) * var_x337 * var_x339; + const double var_x341 = CHASTE_MATH::Pow(var_x334, (-2)); const double var_x342 = 1 / var_x338; const double var_x343 = -var_x342; const double var_x344 = 1 / (220 + 2800 * var_x335); - const double var_x345 = exp(-0.0011111111111111111 * pow(var_chaste_interface__cell__V, 2)); - const double var_x346 = 1 / (1.5 + 3.5 * var_x345); + const double var_x345 = CHASTE_MATH::Exp(-CHASTE_CONST(0.0011111111111111111) * CHASTE_MATH::Pow(var_chaste_interface__cell__V, 2)); + const double var_x346 = 1 / (CHASTE_CONST(1.5) + CHASTE_CONST(3.5) * var_x345); const double var_x347 = 1 / (20 + 20 * var_x342); - const double var_x348 = exp(-2.4166666666666665 - 0.16666666666666666 * var_chaste_interface__cell__V); + const double var_x348 = CHASTE_MATH::Exp(-CHASTE_CONST(2.4166666666666665) - CHASTE_CONST(0.16666666666666666) * var_chaste_interface__cell__V); const double var_x349 = 1 - var_x348; const double var_x350 = 1 / var_x349; const double var_x351 = 1 + var_x348; const double var_x352 = 1 / var_x351; const double var_x353 = -var_chaste_interface__ICaL_d_gate__d + var_x352; - const double var_x354 = 14.5 + var_chaste_interface__cell__V; - const double var_x355 = 0.0058333333333333336 * var_x348 * var_x354; - const double var_x356 = 0.019699999999999999 * exp(-0.23877882250000002 * pow((1 + 0.068965517241379309 * var_chaste_interface__cell__V), 2)); - const double var_x357 = 0.02 + var_x356; - const double var_x358 = exp(9.7388888888888889 + 0.27777777777777779 * var_chaste_interface__cell__V); + const double var_x354 = CHASTE_CONST(14.5) + var_chaste_interface__cell__V; + const double var_x355 = CHASTE_CONST(0.0058333333333333336) * var_x348 * var_x354; + const double var_x356 = CHASTE_CONST(0.019699999999999999) * CHASTE_MATH::Exp(-CHASTE_CONST(0.23877882250000002) * CHASTE_MATH::Pow((1 + CHASTE_CONST(0.068965517241379309) * var_chaste_interface__cell__V), 2)); + const double var_x357 = CHASTE_CONST(0.02) + var_x356; + const double var_x358 = CHASTE_MATH::Exp(CHASTE_CONST(9.7388888888888889) + CHASTE_CONST(0.27777777777777779) * var_chaste_interface__cell__V); const double var_x359 = 1 + var_x358; - const double var_x360 = exp(2.5 - 0.050000000000000003 * var_chaste_interface__cell__V); + const double var_x360 = CHASTE_MATH::Exp(CHASTE_CONST(2.5) - CHASTE_CONST(0.050000000000000003) * var_chaste_interface__cell__V); const double var_x361 = 1 + var_x360; const double var_x362 = 1 / var_chaste_interface__Ca_buffer__Ca_SR; - const double var_x363 = pow(var_x362, 2.5); - const double var_x364 = 1 + 0.13584112963311223 * var_x363; + const double var_x363 = CHASTE_MATH::Pow(var_x362, CHASTE_CONST(2.5)); + const double var_x364 = 1 + CHASTE_CONST(0.13584112963311223) * var_x363; const double var_x365 = 1 / var_x364; - const double var_x366 = 7.5 - 7 * var_x365; + const double var_x366 = CHASTE_CONST(7.5) - 7 * var_x365; const double var_x367 = -var_x366; const double var_x368 = 1 / (15 - 14 * var_x365); const double var_x369 = 10 * var_x225 * var_x368; - const double var_x370 = pow(var_x364, (-2)); + const double var_x370 = CHASTE_MATH::Pow(var_x364, (-2)); const double var_x371 = var_x362 * var_x363 * var_x370; - const double var_x372 = 0.21130842387373014 * var_x225 * var_x371 / pow((1 - 0.93333333333333335 * var_x365), 2); + const double var_x372 = CHASTE_CONST(0.21130842387373014) * var_x225 * var_x371 / CHASTE_MATH::Pow((1 - CHASTE_CONST(0.93333333333333335) * var_x365), 2); const double var_x373 = var_x372 * var_chaste_interface__Jrel_SR__R; const double var_x374 = 20 * var_x368; const double var_x375 = var_x374 * var_chaste_interface__Ca_buffer__Ca_jct * var_chaste_interface__Jrel_SR__R; - const double var_x376 = 2.3772197685794643 * var_x371 * var_chaste_interface__Ca_buffer__Ca_jct * var_chaste_interface__Jrel_SR__O; + const double var_x376 = CHASTE_CONST(2.3772197685794643) * var_x371 * var_chaste_interface__Ca_buffer__Ca_jct * var_chaste_interface__Jrel_SR__O; const double var_x377 = 1 - var_chaste_interface__Jrel_SR__I - var_chaste_interface__Jrel_SR__O - var_chaste_interface__Jrel_SR__R; - const double var_x378 = M_PI * var_x23; - const double var_x379 = 62.109246076532294 * var_x378; + const double var_x378 = CHASTE_CONST(CHASTE_MATH::Pi) * var_x23; + const double var_x379 = CHASTE_CONST(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_x163; + const double var_x383 = CHASTE_CONST(55.277229008113743) * var_x163; const double var_x384 = var_x166 * var_x381; const double var_x385 = var_x100 * var_x102; - const double var_x386 = M_PI * var_x44; + const double var_x386 = CHASTE_CONST(CHASTE_MATH::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_x388 = CHASTE_CONST(4.1923741101659298e-8) * var_x387; const double var_x389 = var_x150 * var_x388; const double var_x390 = var_x100 * var_x186; - const double var_x391 = 0.0001 * var_chaste_interface__Na_buffer__Na_SL_buf; - const double var_x392 = 5.9492599172113663e-12 * var_x198; - const double var_x393 = 0.001 + 0.0001 * var_chaste_interface__Na_buffer__Na_SL; + const double var_x391 = CHASTE_CONST(0.0001) * var_chaste_interface__Na_buffer__Na_SL_buf; + const double var_x392 = CHASTE_CONST(5.9492599172113663e-12) * var_x198; + const double var_x393 = CHASTE_CONST(0.001) + CHASTE_CONST(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_x396 = CHASTE_CONST(2435.6567088836191) * var_x378; const double var_x397 = var_x396 * NV_Ith_S(mParameters, 3); - const double var_x398 = 267.92223797719811 * var_x161; - const double var_x399 = 1.4796614506467986e-5 * var_x387; + const double var_x398 = CHASTE_CONST(267.92223797719811) * var_x161; + const double var_x399 = CHASTE_CONST(1.4796614506467986e-5) * var_x387; const double var_x400 = var_x159 * var_x399; - const double var_x401 = 0.0001 * var_chaste_interface__Na_buffer__Na_jct_buf; - const double var_x402 = 7.3530178752050587e-13 * var_x209; - const double var_x403 = 0.001 + 0.0001 * var_chaste_interface__Na_buffer__Na_jct; + const double var_x401 = CHASTE_CONST(0.0001) * var_chaste_interface__Na_buffer__Na_jct_buf; + const double var_x402 = CHASTE_CONST(7.3530178752050587e-13) * var_x209; + const double var_x403 = CHASTE_CONST(0.001) + CHASTE_CONST(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_x405 = CHASTE_CONST(0.076376893524206985) * NV_Ith_S(mParameters, 3); const double var_x406 = 100 * var_chaste_interface__Ca_buffer__Ca_Calsequestrin; const double var_x407 = var_chaste_interface__Jrel_SR__O * NV_Ith_S(mParameters, 1); - const double var_x408 = var_x407 + 18.571428571428569 * NV_Ith_S(mParameters, 0); + const double var_x408 = var_x407 + CHASTE_CONST(18.571428571428569) * NV_Ith_S(mParameters, 0); const double var_x409 = 65 + 100 * var_chaste_interface__Ca_buffer__Ca_SR; - const double var_x410 = 31.054623038266147 * var_x378; - const double var_x411 = 5.5898321468879066 * var_x124 * var_x386; - const double var_x412 = 3.9661732781409111e-12 * var_x198; + const double var_x410 = CHASTE_CONST(31.054623038266147) * var_x378; + const double var_x411 = CHASTE_CONST(5.5898321468879066) * var_x124 * var_x386; + const double var_x412 = CHASTE_CONST(3.9661732781409111e-12) * var_x198; const double var_x413 = 100 * var_chaste_interface__Ca_buffer__Ca_SLB_SL; const double var_x414 = 100 * var_chaste_interface__Ca_buffer__Ca_SLHigh_SL; const double var_x415 = 100 * var_chaste_interface__Ca_buffer__Ca_SL; - const double var_x416 = 1.3 + var_x415; - const double var_x417 = 0.029999999999999999 + var_x415; - const double var_x418 = 1217.8283544418096 * var_x378; - const double var_x419 = 1972.8819341957317 * var_x386; + const double var_x416 = CHASTE_CONST(1.3) + var_x415; + const double var_x417 = CHASTE_CONST(0.029999999999999999) + var_x415; + const double var_x418 = CHASTE_CONST(1217.8283544418096) * var_x378; + const double var_x419 = CHASTE_CONST(1972.8819341957317) * var_x386; const double var_x420 = var_x146 * var_x419; - const double var_x421 = 4.9020119168033731e-13 * var_x209; - const double var_x422 = 68.627450980392155 * var_x407 + 1274.5098039215686 * NV_Ith_S(mParameters, 0); + const double var_x421 = CHASTE_CONST(4.9020119168033731e-13) * var_x209; + const double var_x422 = CHASTE_CONST(68.627450980392155) * var_x407 + CHASTE_CONST(1274.5098039215686) * NV_Ith_S(mParameters, 0); const double var_x423 = 100 * var_chaste_interface__Ca_buffer__Ca_SLB_jct; const double var_x424 = 100 * var_chaste_interface__Ca_buffer__Ca_SLHigh_jct; const double var_x425 = 100 * var_chaste_interface__Ca_buffer__Ca_jct; - const double var_x426 = 1.3 + var_x425; - const double var_x427 = 0.029999999999999999 + var_x425; + const double var_x426 = CHASTE_CONST(1.3) + var_x425; + const double var_x427 = CHASTE_CONST(0.029999999999999999) + var_x425; const double var_x428 = 100 * var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_Cytosol; - const double var_x429 = -2.5 + var_x428; - 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 = 0.078461538461538471 * var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_jct; - const double var_x432 = 3.0769230769230771 * var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_SL; + const double var_x429 = -CHASTE_CONST(2.5) + var_x428; + const double var_x430 = -var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_Cytosol - CHASTE_CONST(0.030769230769230767) * var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_SL - CHASTE_CONST(0.00078461538461538469) * var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_jct; + const double var_x431 = CHASTE_CONST(0.078461538461538471) * var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_jct; + const double var_x432 = CHASTE_CONST(3.0769230769230771) * var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_SL; const double var_x433 = var_x428 + var_x431 + var_x432; - const double var_x434 = -2.5024999999999999 + 100 * var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_SL; - const double var_x435 = -2.5490196078431375 + 100 * var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_jct; + const double var_x434 = -CHASTE_CONST(2.5024999999999999) + 100 * var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_SL; + const double var_x435 = -CHASTE_CONST(2.5490196078431375) + 100 * var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_jct; const double var_x436 = 100 * var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_Cytosol; - const double var_x437 = -2.5 + var_x436; - 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 = 0.078461538461538471 * var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_jct; - const double var_x440 = 3.0769230769230771 * var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_SL; + const double var_x437 = -CHASTE_CONST(2.5) + var_x436; + const double var_x438 = -var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_Cytosol - CHASTE_CONST(0.030769230769230767) * var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_SL - CHASTE_CONST(0.00078461538461538469) * var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_jct; + const double var_x439 = CHASTE_CONST(0.078461538461538471) * var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_jct; + const double var_x440 = CHASTE_CONST(3.0769230769230771) * var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_SL; const double var_x441 = var_x436 + var_x439 + var_x440; - const double var_x442 = -2.5024999999999999 + 100 * var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_SL; - const double var_x443 = -2.5490196078431375 + 100 * var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_jct; + const double var_x442 = -CHASTE_CONST(2.5024999999999999) + 100 * var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_SL; + const double var_x443 = -CHASTE_CONST(2.5490196078431375) + 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_x145 + var_x147 - var_x126 - var_x132 - var_x140 - var_x142 - var_x154 - var_x160 - NV_Ith_S(mParameters, 13) - 0.11 * var_x10 - 0.11 * var_x64 - 0.89000000000000001 * var_x14 - 0.89000000000000001 * var_x77 - 0.15619500000000003 * var_x112 - 1 * var_x21 - 0.01205875 / var_x1 - 0.019305000000000003 * var_x115 - 0.097566250000000007 / var_x3 - 0.21009999999999998 * var_x91 - 1.6999 * var_x94 - var_x106 * var_x108 - var_x4 * var_chaste_interface__Itof_X_gate__X_tof + var_x5 * NV_Ith_S(mParameters, 21) * var_chaste_interface__Itos_X_gate__X_tos - var_x15 * var_x18 * NV_Ith_S(mParameters, 19) * var_chaste_interface__IKr_Xr_gate__Xr - 9.1125000000000004e-8 * var_x107 * var_x133 * var_x137 * 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_x101 * var_x107 * var_x134 * var_x135 * var_x136 * var_x138 * var_x95 * var_x97 * 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)) + (var_x262 + 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)) + (var_x287 + var_x290) * (var_x264 - var_chaste_interface__INa_j_gate__j + var_x285 * var_x289); - IJth(rJacobian, 4, 0) = var_x297 * (var_x296 * var_x298 - var_x298 * var_x299 + 3.125 * var_x300 * var_x301 / pow((var_x301 + 0.25 * var_x294), 2)) - var_x300 * (-var_chaste_interface__INa_m_gate__m + 0.32000000000000001 * var_x293 * var_x295 * var_x298); - 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.0074074074074074077 * var_x324 * (-var_x331 - var_chaste_interface__Itos_X_gate__X_tos) / (pow(var_x325, 2) * pow((0.055555555555555552 + var_x326), 2)); - IJth(rJacobian, 8, 0) = -var_x336 * var_x340 + 3.3333333333333335e-5 * var_x333 * var_x341 * (-var_x343 - var_chaste_interface__Itos_Y_gate__Y_tos) / pow((0.01 + var_x335), 2); - IJth(rJacobian, 9, 0) = -var_x340 * var_x344 + 3.5714285714285717e-5 * var_x333 * var_x341 * (-var_x343 - var_chaste_interface__Itos_R_gate__R_tos) / pow((0.07857142857142857 + var_x335), 2); - IJth(rJacobian, 10, 0) = var_x330 * var_x346 + 0.00063492063492063492 * var_x345 * (-var_x331 - var_chaste_interface__Itof_X_gate__X_tof) * var_chaste_interface__cell__V / pow((0.42857142857142855 + var_x345), 2); - IJth(rJacobian, 11, 0) = -var_x340 * var_x347 + 0.0050000000000000001 * var_x337 * var_x339 * (-var_x343 - var_chaste_interface__Itof_Y_gate__Y_tof) / pow((1 + var_x342), 2); - IJth(rJacobian, 12, 0) = -var_x350 * var_x353 * var_x355 + 0.035000000000000003 * var_x350 * var_x351 * var_x353 - var_x351 * var_x353 * var_x355 / pow(var_x349, 2) + 0.0058333333333333336 * var_x348 * var_x350 * var_x352 * var_x354; - IJth(rJacobian, 13, 0) = var_x357 * (0.029999999999999999 * var_x360 / pow(var_x361, 2) - 0.27777777777777779 * var_x358 / pow(var_x359, 2)) + var_x356 * (-0.032935010000000001 - 0.0022713799999999999 * var_chaste_interface__cell__V) * (-var_chaste_interface__ICaL_f_gate__f + 1 / var_x359 + 0.59999999999999998 / var_x361); - IJth(rJacobian, 19, 0) = -var_x380 * (0.00026433000000000001 + var_x154 + var_x205 + 2.6699999999999999 * var_x77 + 5.0996999999999995 * var_x94 + 0.46858500000000003 * var_x112); - IJth(rJacobian, 20, 0) = -var_x397 * (3.2670000000000004e-5 + var_x160 + var_x214 + 0.33000000000000002 * var_x64 + 0.63029999999999997 * var_x91 + 0.057915000000000008 * var_x115); - IJth(rJacobian, 25, 0) = -var_x410 * (0.00022365699999999999 + var_x126 + var_x142 - var_x145 - 1.78 * var_x77 - 0.31239000000000006 * var_x112); - IJth(rJacobian, 26, 0) = -var_x418 * (2.7642999999999999e-5 + var_x132 + var_x140 - var_x147 - 0.22 * var_x64 - 0.038610000000000005 * var_x115); - IJth(rJacobian, 1, 1) = -7.2523935948689155 + var_x230 + var_x231 + var_x232 + var_x243 + var_x244 + 6.3492962168146398e-7 * var_x242 - 5029484.9869235931 * var_x233 * var_x240; - IJth(rJacobian, 24, 1) = -1.1791550116941473e-5 * var_x242 + 93404721.185723871 * var_x233 * var_x237 * var_x238 * NV_Ith_S(mParameters, 2); - IJth(rJacobian, 25, 1) = 5.6417918332397381; - IJth(rJacobian, 32, 1) = 2.2890000000000006 - var_x230; - IJth(rJacobian, 33, 1) = 0.33180000000000004 - var_x243; - IJth(rJacobian, 35, 1) = 0.81600000000000006 - var_x231; - IJth(rJacobian, 36, 1) = 1.9320000000000004 - var_x244; - IJth(rJacobian, 38, 1) = 1.71 - var_x232; + IJth(rJacobian, 0, 0) = mSetVoltageDerivativeToZero ? 0.0 : (-CHASTE_CONST(0.00054830000000000005) + var_x145 + var_x147 - var_x126 - var_x132 - var_x140 - var_x142 - var_x154 - var_x160 - NV_Ith_S(mParameters, 13) - CHASTE_CONST(0.11) * var_x10 - CHASTE_CONST(0.11) * var_x64 - CHASTE_CONST(0.89000000000000001) * var_x14 - CHASTE_CONST(0.89000000000000001) * var_x77 - CHASTE_CONST(0.15619500000000003) * var_x112 - 1 * var_x21 - CHASTE_CONST(0.01205875) / var_x1 - CHASTE_CONST(0.019305000000000003) * var_x115 - CHASTE_CONST(0.097566250000000007) / var_x3 - CHASTE_CONST(0.21009999999999998) * var_x91 - CHASTE_CONST(1.6999) * var_x94 - var_x106 * var_x108 - var_x4 * var_chaste_interface__Itof_X_gate__X_tof + var_x5 * NV_Ith_S(mParameters, 21) * var_chaste_interface__Itos_X_gate__X_tos - var_x15 * var_x18 * NV_Ith_S(mParameters, 19) * var_chaste_interface__IKr_Xr_gate__Xr - CHASTE_CONST(9.1125000000000004e-8) * var_x107 * var_x133 * var_x137 * NV_Ith_S(mParameters, 5) - CHASTE_CONST(0.4389381125701739) * var_x15 * var_x28 * var_x36 * NV_Ith_S(mParameters, 18) - CHASTE_CONST(0.42189361069797565) * var_x28 * var_x80 * (-var_x31 * (CHASTE_CONST(0.061749999999999999) * var_x32 + CHASTE_CONST(0.039456396800000001) * var_x33) + CHASTE_CONST(0.24326999999999999) * var_x26 * var_x78 - CHASTE_CONST(0.51429999999999998) * var_x29 * var_x34 / CHASTE_MATH::Pow(var_x30, 2)) * NV_Ith_S(mParameters, 18) / CHASTE_MATH::Pow((var_x28 + CHASTE_CONST(0.98039215686274506) * var_x35), 2) + CHASTE_CONST(0.10468673984798647) * var_x15 * var_x26 * var_x36 * var_x78 * var_x79 * NV_Ith_S(mParameters, 18) + CHASTE_CONST(0.019211226915711394) * var_x15 * var_x16 * var_x79 * NV_Ith_S(mParameters, 19) * var_chaste_interface__IKr_Xr_gate__Xr / CHASTE_MATH::Pow(var_x17, 2) + CHASTE_CONST(1.215e-7) * var_x101 * var_x107 * var_x134 * var_x135 * var_x136 * var_x138 * var_x95 * var_x97 * 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) / CHASTE_MATH::Pow(var_x263, 2)) + (var_x262 + 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) / CHASTE_MATH::Pow(var_x288, 2)) + (var_x287 + var_x290) * (var_x264 - var_chaste_interface__INa_j_gate__j + var_x285 * var_x289); + IJth(rJacobian, 4, 0) = var_x297 * (var_x296 * var_x298 - var_x298 * var_x299 + CHASTE_CONST(3.125) * var_x300 * var_x301 / CHASTE_MATH::Pow((var_x301 + CHASTE_CONST(0.25) * var_x294), 2)) - var_x300 * (-var_chaste_interface__INa_m_gate__m + CHASTE_CONST(0.32000000000000001) * var_x293 * var_x295 * var_x298); + IJth(rJacobian, 5, 0) = (-var_chaste_interface__IKr_Xr_gate__Xr + 1 / var_x303) * (CHASTE_CONST(0.00060999999999999997) * var_x306 + CHASTE_CONST(0.0013799999999999999) * var_x309 - CHASTE_CONST(0.00016973999999999998) * var_x307 * var_x310 / CHASTE_MATH::Pow(var_x308, 2) - CHASTE_CONST(8.8449999999999995e-5) * var_x304 * var_x311 / CHASTE_MATH::Pow(var_x305, 2)) + CHASTE_CONST(0.13333333333333333) * var_x302 * var_x312 / CHASTE_MATH::Pow(var_x303, 2); + IJth(rJacobian, 6, 0) = (-var_chaste_interface__IKs_Xs_gate__Xs + 1 / var_x314) * (CHASTE_CONST(0.00013100000000000001) * var_x317 + CHASTE_CONST(7.1899999999999999e-5) * var_x320 - CHASTE_CONST(8.9997000000000013e-6) * var_x315 * var_x321 / CHASTE_MATH::Pow(var_x316, 2) - CHASTE_CONST(1.0641199999999999e-5) * var_x318 * var_x321 / CHASTE_MATH::Pow(var_x319, 2)) + CHASTE_CONST(0.059880239520958084) * var_x313 * var_x322 / CHASTE_MATH::Pow(var_x314, 2); + IJth(rJacobian, 7, 0) = var_x327 * var_x330 + CHASTE_CONST(0.0074074074074074077) * var_x324 * (-var_x331 - var_chaste_interface__Itos_X_gate__X_tos) / (CHASTE_MATH::Pow(var_x325, 2) * CHASTE_MATH::Pow((CHASTE_CONST(0.055555555555555552) + var_x326), 2)); + IJth(rJacobian, 8, 0) = -var_x336 * var_x340 + CHASTE_CONST(3.3333333333333335e-5) * var_x333 * var_x341 * (-var_x343 - var_chaste_interface__Itos_Y_gate__Y_tos) / CHASTE_MATH::Pow((CHASTE_CONST(0.01) + var_x335), 2); + IJth(rJacobian, 9, 0) = -var_x340 * var_x344 + CHASTE_CONST(3.5714285714285717e-5) * var_x333 * var_x341 * (-var_x343 - var_chaste_interface__Itos_R_gate__R_tos) / CHASTE_MATH::Pow((CHASTE_CONST(0.07857142857142857) + var_x335), 2); + IJth(rJacobian, 10, 0) = var_x330 * var_x346 + CHASTE_CONST(0.00063492063492063492) * var_x345 * (-var_x331 - var_chaste_interface__Itof_X_gate__X_tof) * var_chaste_interface__cell__V / CHASTE_MATH::Pow((CHASTE_CONST(0.42857142857142855) + var_x345), 2); + IJth(rJacobian, 11, 0) = -var_x340 * var_x347 + CHASTE_CONST(0.0050000000000000001) * var_x337 * var_x339 * (-var_x343 - var_chaste_interface__Itof_Y_gate__Y_tof) / CHASTE_MATH::Pow((1 + var_x342), 2); + IJth(rJacobian, 12, 0) = -var_x350 * var_x353 * var_x355 + CHASTE_CONST(0.035000000000000003) * var_x350 * var_x351 * var_x353 - var_x351 * var_x353 * var_x355 / CHASTE_MATH::Pow(var_x349, 2) + CHASTE_CONST(0.0058333333333333336) * var_x348 * var_x350 * var_x352 * var_x354; + IJth(rJacobian, 13, 0) = var_x357 * (CHASTE_CONST(0.029999999999999999) * var_x360 / CHASTE_MATH::Pow(var_x361, 2) - CHASTE_CONST(0.27777777777777779) * var_x358 / CHASTE_MATH::Pow(var_x359, 2)) + var_x356 * (-CHASTE_CONST(0.032935010000000001) - CHASTE_CONST(0.0022713799999999999) * var_chaste_interface__cell__V) * (-var_chaste_interface__ICaL_f_gate__f + 1 / var_x359 + CHASTE_CONST(0.59999999999999998) / var_x361); + IJth(rJacobian, 19, 0) = -var_x380 * (CHASTE_CONST(0.00026433000000000001) + var_x154 + var_x205 + CHASTE_CONST(2.6699999999999999) * var_x77 + CHASTE_CONST(5.0996999999999995) * var_x94 + CHASTE_CONST(0.46858500000000003) * var_x112); + IJth(rJacobian, 20, 0) = -var_x397 * (CHASTE_CONST(3.2670000000000004e-5) + var_x160 + var_x214 + CHASTE_CONST(0.33000000000000002) * var_x64 + CHASTE_CONST(0.63029999999999997) * var_x91 + CHASTE_CONST(0.057915000000000008) * var_x115); + IJth(rJacobian, 25, 0) = -var_x410 * (CHASTE_CONST(0.00022365699999999999) + var_x126 + var_x142 - var_x145 - CHASTE_CONST(1.78) * var_x77 - CHASTE_CONST(0.31239000000000006) * var_x112); + IJth(rJacobian, 26, 0) = -var_x418 * (CHASTE_CONST(2.7642999999999999e-5) + var_x132 + var_x140 - var_x147 - CHASTE_CONST(0.22) * var_x64 - CHASTE_CONST(0.038610000000000005) * var_x115); + IJth(rJacobian, 1, 1) = -CHASTE_CONST(7.2523935948689155) + var_x230 + var_x231 + var_x232 + var_x243 + var_x244 + CHASTE_CONST(6.3492962168146398e-7) * var_x242 - CHASTE_CONST(5029484.9869235931) * var_x233 * var_x240; + IJth(rJacobian, 24, 1) = -CHASTE_CONST(1.1791550116941473e-5) * var_x242 + CHASTE_CONST(93404721.185723871) * var_x233 * var_x237 * var_x238 * NV_Ith_S(mParameters, 2); + IJth(rJacobian, 25, 1) = CHASTE_CONST(5.6417918332397381); + IJth(rJacobian, 32, 1) = CHASTE_CONST(2.2890000000000006) - var_x230; + IJth(rJacobian, 33, 1) = CHASTE_CONST(0.33180000000000004) - var_x243; + IJth(rJacobian, 35, 1) = CHASTE_CONST(0.81600000000000006) - var_x231; + IJth(rJacobian, 36, 1) = CHASTE_CONST(1.9320000000000004) - var_x244; + IJth(rJacobian, 38, 1) = CHASTE_CONST(1.71) - var_x232; IJth(rJacobian, 39, 1) = -var_x429 * var_x430; IJth(rJacobian, 42, 1) = -var_x437 * var_x438; IJth(rJacobian, 0, 2) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x162 * var_x20 - var_x164 * var_x20); @@ -1362,26 +1364,26 @@ bool Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode::registered = Mo IJth(rJacobian, 3, 3) = -var_x286; 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_x168 - 2.6699999999999999 * var_x169); + IJth(rJacobian, 0, 4) = mSetVoltageDerivativeToZero ? 0.0 : (-CHASTE_CONST(0.33000000000000002) * var_x168 - CHASTE_CONST(2.6699999999999999) * var_x169); IJth(rJacobian, 4, 4) = -var_x297; - IJth(rJacobian, 19, 4) = -165.83168702434122 * var_x169 * var_x381; - IJth(rJacobian, 20, 4) = -803.76671393159438 * var_x168 * var_x381; + IJth(rJacobian, 19, 4) = -CHASTE_CONST(165.83168702434122) * var_x169 * var_x381; + IJth(rJacobian, 20, 4) = -CHASTE_CONST(803.76671393159438) * var_x168 * var_x381; IJth(rJacobian, 0, 5) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x18 * var_x80 * NV_Ith_S(mParameters, 19)); IJth(rJacobian, 5, 5) = -var_x312; - IJth(rJacobian, 0, 6) = mSetVoltageDerivativeToZero ? 0.0 : (-0.22 * var_x172 * var_x8 - 1.78 * var_x13 * var_x172); + IJth(rJacobian, 0, 6) = mSetVoltageDerivativeToZero ? 0.0 : (-CHASTE_CONST(0.22) * var_x172 * var_x8 - CHASTE_CONST(1.78) * var_x13 * var_x172); IJth(rJacobian, 6, 6) = -var_x322; IJth(rJacobian, 0, 7) = mSetVoltageDerivativeToZero ? 0.0 : (var_x5 * var_x79 * NV_Ith_S(mParameters, 21)); IJth(rJacobian, 7, 7) = -var_x327; IJth(rJacobian, 0, 8) = mSetVoltageDerivativeToZero ? 0.0 : (var_x173 * var_x174); IJth(rJacobian, 8, 8) = -var_x336; - IJth(rJacobian, 0, 9) = mSetVoltageDerivativeToZero ? 0.0 : (var_x174 * (-0.5 * var_chaste_interface__cell__V + 0.5 * var_x22 * var_x23 * NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23))); + IJth(rJacobian, 0, 9) = mSetVoltageDerivativeToZero ? 0.0 : (var_x174 * (-CHASTE_CONST(0.5) * var_chaste_interface__cell__V + CHASTE_CONST(0.5) * var_x22 * var_x23 * NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23))); IJth(rJacobian, 9, 9) = -var_x344; IJth(rJacobian, 0, 10) = mSetVoltageDerivativeToZero ? 0.0 : (var_x173 * var_x4); IJth(rJacobian, 10, 10) = -var_x346; IJth(rJacobian, 0, 11) = mSetVoltageDerivativeToZero ? 0.0 : (var_x173 * NV_Ith_S(mParameters, 17) * var_chaste_interface__Itof_X_gate__X_tof); IJth(rJacobian, 11, 11) = -var_x347; IJth(rJacobian, 0, 12) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x151 * var_x178 - var_x176 * var_x177 - var_x178 * var_x179 - var_x181 * var_x183 - var_x182 * var_x185); - IJth(rJacobian, 12, 12) = -0.035000000000000003 * var_x350 * var_x351 * var_x354; + IJth(rJacobian, 12, 12) = -CHASTE_CONST(0.035000000000000003) * var_x350 * var_x351 * var_x354; IJth(rJacobian, 19, 12) = -var_x385 * var_x389; IJth(rJacobian, 20, 12) = -var_x385 * var_x400; IJth(rJacobian, 25, 12) = -var_x183 * var_x411; @@ -1392,71 +1394,71 @@ bool Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode::registered = Mo IJth(rJacobian, 20, 13) = -var_x390 * var_x400; IJth(rJacobian, 25, 13) = -var_x190 * var_x411; IJth(rJacobian, 26, 13) = -var_x189 * var_x420; - IJth(rJacobian, 0, 14) = mSetVoltageDerivativeToZero ? 0.0 : (1.2150000000000001e-8 * var_x192 + var_x120 * var_x181 + 6.7499999999999994e-10 * var_x149 * var_x191); - IJth(rJacobian, 14, 14) = -0.011900000000000001 - 1.7 * var_chaste_interface__Ca_buffer__Ca_SL; + IJth(rJacobian, 0, 14) = mSetVoltageDerivativeToZero ? 0.0 : (CHASTE_CONST(1.2150000000000001e-8) * var_x192 + var_x120 * var_x181 + CHASTE_CONST(6.7499999999999994e-10) * var_x149 * var_x191); + IJth(rJacobian, 14, 14) = -CHASTE_CONST(0.011900000000000001) - CHASTE_CONST(1.7) * var_chaste_interface__Ca_buffer__Ca_SL; IJth(rJacobian, 19, 14) = var_x104 * var_x149 * var_x388; IJth(rJacobian, 25, 14) = var_x120 * var_x411; - IJth(rJacobian, 0, 15) = mSetVoltageDerivativeToZero ? 0.0 : (1.0935000000000001e-7 * var_x192 + 6.0749999999999998e-9 * var_x156 * var_x180 + var_x120 * var_x131 * var_x180); - IJth(rJacobian, 15, 15) = -0.011900000000000001 - 1.7 * var_chaste_interface__Ca_buffer__Ca_jct; + IJth(rJacobian, 0, 15) = mSetVoltageDerivativeToZero ? 0.0 : (CHASTE_CONST(1.0935000000000001e-7) * var_x192 + CHASTE_CONST(6.0749999999999998e-9) * var_x156 * var_x180 + var_x120 * var_x131 * var_x180); + IJth(rJacobian, 15, 15) = -CHASTE_CONST(0.011900000000000001) - CHASTE_CONST(1.7) * var_chaste_interface__Ca_buffer__Ca_jct; IJth(rJacobian, 20, 15) = var_x156 * var_x399; IJth(rJacobian, 26, 15) = var_x120 * var_x130 * var_x419; - IJth(rJacobian, 16, 16) = -0.0050000000000000001 - var_x369 + var_x367 * var_chaste_interface__Ca_buffer__Ca_jct; + IJth(rJacobian, 16, 16) = -CHASTE_CONST(0.0050000000000000001) - var_x369 + var_x367 * var_chaste_interface__Ca_buffer__Ca_jct; IJth(rJacobian, 17, 16) = -var_x369; IJth(rJacobian, 18, 16) = var_x369; - IJth(rJacobian, 16, 17) = -0.0050000000000000001; - IJth(rJacobian, 17, 17) = -0.065000000000000002 - var_x369; - IJth(rJacobian, 18, 17) = 0.0050000000000000001; - IJth(rJacobian, 16, 18) = 0.055; + IJth(rJacobian, 16, 17) = -CHASTE_CONST(0.0050000000000000001); + IJth(rJacobian, 17, 17) = -CHASTE_CONST(0.065000000000000002) - var_x369; + IJth(rJacobian, 18, 17) = CHASTE_CONST(0.0050000000000000001); + IJth(rJacobian, 16, 18) = CHASTE_CONST(0.055); IJth(rJacobian, 17, 18) = -var_x369 + var_x366 * var_chaste_interface__Ca_buffer__Ca_jct; - IJth(rJacobian, 18, 18) = -0.059999999999999998 + var_x367 * var_chaste_interface__Ca_buffer__Ca_jct; + IJth(rJacobian, 18, 18) = -CHASTE_CONST(0.059999999999999998) + var_x367 * var_chaste_interface__Ca_buffer__Ca_jct; 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_x206 - 2.6699999999999999 * var_x201 - 0.00046442182911003347 * var_x203 - var_x196 * var_x199); - IJth(rJacobian, 19, 19) = (-2.5101556644976917 + var_x391 - var_x379 * (var_x206 + 8.0099999999999998 * var_x201 + 0.0013932654873301004 * var_x203 + var_x196 * 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, 26, 18) = (CHASTE_CONST(68.627450980392155) * var_chaste_interface__Ca_buffer__Ca_SR - CHASTE_CONST(68.627450980392155) * var_chaste_interface__Ca_buffer__Ca_jct) * NV_Ith_S(mParameters, 1); + IJth(rJacobian, 0, 19) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x206 - CHASTE_CONST(2.6699999999999999) * var_x201 - CHASTE_CONST(0.00046442182911003347) * var_x203 - var_x196 * var_x199); + IJth(rJacobian, 19, 19) = (-CHASTE_CONST(2.5101556644976917) + var_x391 - var_x379 * (var_x206 + CHASTE_CONST(8.0099999999999998) * var_x201 + CHASTE_CONST(0.0013932654873301004) * var_x203 + var_x196 * var_x392)) * NV_Ith_S(mParameters, 3); + IJth(rJacobian, 20, 19) = CHASTE_CONST(1.0879068612142859) * NV_Ith_S(mParameters, 3); + IJth(rJacobian, 21, 19) = CHASTE_CONST(0.000165) - var_x391; IJth(rJacobian, 23, 19) = var_x405; - IJth(rJacobian, 25, 19) = -var_x410 * (-5.3399999999999999 * var_x201 - var_x196 * var_x412); - IJth(rJacobian, 0, 20) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x215 - 0.33000000000000002 * var_x211 - 5.7400450788880541e-5 * var_x212 - var_x208 * var_x210); - IJth(rJacobian, 19, 20) = 0.02774162496096429 * NV_Ith_S(mParameters, 3); - IJth(rJacobian, 20, 20) = (-1.0886629612142857 + var_x401 - var_x396 * (var_x215 + 0.98999999999999999 * var_x211 + 0.00017220135236664162 * var_x212 + var_x208 * var_x402)) * NV_Ith_S(mParameters, 3); - IJth(rJacobian, 22, 20) = 0.0007561 - var_x401; - IJth(rJacobian, 26, 20) = -var_x418 * (-0.66000000000000003 * var_x211 - var_x208 * var_x421); + IJth(rJacobian, 25, 19) = -var_x410 * (-CHASTE_CONST(5.3399999999999999) * var_x201 - var_x196 * var_x412); + IJth(rJacobian, 0, 20) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x215 - CHASTE_CONST(0.33000000000000002) * var_x211 - CHASTE_CONST(5.7400450788880541e-5) * var_x212 - var_x208 * var_x210); + IJth(rJacobian, 19, 20) = CHASTE_CONST(0.02774162496096429) * NV_Ith_S(mParameters, 3); + IJth(rJacobian, 20, 20) = (-CHASTE_CONST(1.0886629612142857) + var_x401 - var_x396 * (var_x215 + CHASTE_CONST(0.98999999999999999) * var_x211 + CHASTE_CONST(0.00017220135236664162) * var_x212 + var_x208 * var_x402)) * NV_Ith_S(mParameters, 3); + IJth(rJacobian, 22, 20) = CHASTE_CONST(0.0007561) - var_x401; + IJth(rJacobian, 26, 20) = -var_x418 * (-CHASTE_CONST(0.66000000000000003) * var_x211 - var_x208 * var_x421); 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_x216 - 0.0163137 * var_x14 * var_x216); - IJth(rJacobian, 19, 23) = 2.4822490395367272 * NV_Ith_S(mParameters, 3); + IJth(rJacobian, 0, 23) = mSetVoltageDerivativeToZero ? 0.0 : (-CHASTE_CONST(0.0020162999999999999) * var_x10 * var_x216 - CHASTE_CONST(0.0163137) * var_x14 * var_x216); + IJth(rJacobian, 19, 23) = CHASTE_CONST(2.4822490395367272) * NV_Ith_S(mParameters, 3); IJth(rJacobian, 23, 23) = -var_x405; - IJth(rJacobian, 1, 24) = 0.69232869146389786 * var_x246 + 8.7400597733819945e-14 * var_x247; - IJth(rJacobian, 16, 24) = -var_x373 + 2.3772197685794643 * var_x362 * var_x363 * var_x370 * var_chaste_interface__Ca_buffer__Ca_jct * var_chaste_interface__Jrel_SR__R; + IJth(rJacobian, 1, 24) = CHASTE_CONST(0.69232869146389786) * var_x246 + CHASTE_CONST(8.7400597733819945e-14) * var_x247; + IJth(rJacobian, 16, 24) = -var_x373 + CHASTE_CONST(2.3772197685794643) * var_x362 * var_x363 * var_x370 * var_chaste_interface__Ca_buffer__Ca_jct * var_chaste_interface__Jrel_SR__R; IJth(rJacobian, 17, 24) = -var_x376 + var_x372 * var_x377; IJth(rJacobian, 18, 24) = var_x373 + var_x376; - IJth(rJacobian, 24, 24) = -260 + var_x406 - var_x408 - 1.6231539579137989e-12 * var_x247 - 12.857532841472388 * var_x246; + IJth(rJacobian, 24, 24) = -260 + var_x406 - var_x408 - CHASTE_CONST(1.6231539579137989e-12) * var_x247 - CHASTE_CONST(12.857532841472388) * var_x246; IJth(rJacobian, 26, 24) = var_x422; IJth(rJacobian, 31, 24) = 260 - var_x406; - IJth(rJacobian, 0, 25) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x224 - 4.4795166719999994e-11 * var_x219 - var_x199 * var_x221 - 0.0097566250000000014 * var_x217 / (pow(var_x3, 2) * pow(var_chaste_interface__Ca_buffer__Ca_SL, 2)) - 0.28183333333333332 * var_x11 * var_x2 * var_x218 / 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_x219 - 2.6699999999999999 * var_x395 + var_x221 * var_x392); - IJth(rJacobian, 25, 25) = -171.99023312516786 + var_x413 + var_x414 - var_x410 * (var_x224 + 1.78 * var_x395 - 8.9590333439999989e-11 * var_x219 - var_x221 * var_x412); - IJth(rJacobian, 26, 25) = 48.958482036396518; - IJth(rJacobian, 27, 25) = 121.55000000000001 - var_x413; - IJth(rJacobian, 29, 25) = 43.550000000000004 - var_x414; + IJth(rJacobian, 0, 25) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x224 - CHASTE_CONST(4.4795166719999994e-11) * var_x219 - var_x199 * var_x221 - CHASTE_CONST(0.0097566250000000014) * var_x217 / (CHASTE_MATH::Pow(var_x3, 2) * CHASTE_MATH::Pow(var_chaste_interface__Ca_buffer__Ca_SL, 2)) - CHASTE_CONST(0.28183333333333332) * var_x11 * var_x2 * var_x218 / CHASTE_MATH::Pow(var_x12, 2) + CHASTE_CONST(0.89000000000000001) * var_x45 * var_x46 * var_x57 * var_x59 * var_x72 * var_x74 * NV_Ith_S(mParameters, 22)); + IJth(rJacobian, 1, 25) = CHASTE_CONST(0.17359359486891501); + IJth(rJacobian, 14, 25) = CHASTE_CONST(1.7) - CHASTE_CONST(1.7) * var_chaste_interface__ICaL_fCa_gate__fCaB_SL; + IJth(rJacobian, 19, 25) = -var_x380 * (CHASTE_CONST(1.3438550016e-10) * var_x219 - CHASTE_CONST(2.6699999999999999) * var_x395 + var_x221 * var_x392); + IJth(rJacobian, 25, 25) = -CHASTE_CONST(171.99023312516786) + var_x413 + var_x414 - var_x410 * (var_x224 + CHASTE_CONST(1.78) * var_x395 - CHASTE_CONST(8.9590333439999989e-11) * var_x219 - var_x221 * var_x412); + IJth(rJacobian, 26, 25) = CHASTE_CONST(48.958482036396518); + IJth(rJacobian, 27, 25) = CHASTE_CONST(121.55000000000001) - var_x413; + IJth(rJacobian, 29, 25) = CHASTE_CONST(43.550000000000004) - var_x414; IJth(rJacobian, 40, 25) = -var_x430 * var_x434; IJth(rJacobian, 43, 25) = -var_x438 * var_x442; - IJth(rJacobian, 0, 26) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x229 - 5.5364812799999996e-12 * var_x227 - var_x210 * var_x226 - 0.0012058750000000001 * var_x217 / (pow(var_x1, 2) * var_x225) - 0.034833333333333334 * var_x0 * var_x218 * 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, 0, 26) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x229 - CHASTE_CONST(5.5364812799999996e-12) * var_x227 - var_x210 * var_x226 - CHASTE_CONST(0.0012058750000000001) * var_x217 / (CHASTE_MATH::Pow(var_x1, 2) * var_x225) - CHASTE_CONST(0.034833333333333334) * var_x0 * var_x218 * var_x6 / CHASTE_MATH::Pow(var_x7, 2) + CHASTE_CONST(0.11) * var_x45 * var_x46 * var_x53 * var_x55 * var_x57 * var_x59 * NV_Ith_S(mParameters, 22)); + IJth(rJacobian, 15, 26) = CHASTE_CONST(1.7) - CHASTE_CONST(1.7) * var_chaste_interface__ICaL_fCa_gate__fCaB_jct; IJth(rJacobian, 16, 26) = -var_x375 + var_x367 * var_chaste_interface__Jrel_SR__R; IJth(rJacobian, 17, 26) = var_x366 * var_chaste_interface__Jrel_SR__O + var_x374 * var_x377 * var_chaste_interface__Ca_buffer__Ca_jct; IJth(rJacobian, 18, 26) = var_x375 + var_x367 * var_chaste_interface__Jrel_SR__O; - IJth(rJacobian, 20, 26) = -var_x397 * (1.6609443839999999e-11 * var_x227 - 0.33000000000000002 * var_x404 + var_x226 * var_x402); + IJth(rJacobian, 20, 26) = -var_x397 * (CHASTE_CONST(1.6609443839999999e-11) * var_x227 - CHASTE_CONST(0.33000000000000002) * var_x404 + var_x226 * var_x402); IJth(rJacobian, 24, 26) = var_x408; - IJth(rJacobian, 25, 26) = 1.2484412919281114; - IJth(rJacobian, 26, 26) = -128.61534478149457 + var_x423 + var_x424 - var_x422 - var_x418 * (var_x229 + 0.22 * var_x404 - 1.1072962559999999e-11 * var_x227 - var_x226 * var_x421); - IJth(rJacobian, 28, 26) = 58.627450980392155 - var_x423; - IJth(rJacobian, 30, 26) = 21.029411764705884 - var_x424; + IJth(rJacobian, 25, 26) = CHASTE_CONST(1.2484412919281114); + IJth(rJacobian, 26, 26) = -CHASTE_CONST(128.61534478149457) + var_x423 + var_x424 - var_x422 - var_x418 * (var_x229 + CHASTE_CONST(0.22) * var_x404 - CHASTE_CONST(1.1072962559999999e-11) * var_x227 - var_x226 * var_x421); + IJth(rJacobian, 28, 26) = CHASTE_CONST(58.627450980392155) - var_x423; + IJth(rJacobian, 30, 26) = CHASTE_CONST(21.029411764705884) - var_x424; IJth(rJacobian, 41, 26) = -var_x430 * var_x435; IJth(rJacobian, 44, 26) = -var_x438 * var_x443; IJth(rJacobian, 25, 27) = var_x416; @@ -1471,47 +1473,47 @@ bool Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode::registered = Mo IJth(rJacobian, 31, 31) = -var_x409; IJth(rJacobian, 1, 32) = var_x248; IJth(rJacobian, 32, 32) = -var_x248; - IJth(rJacobian, 1, 33) = 0.003032 + var_x249; - IJth(rJacobian, 33, 33) = -3.1999999999999999e-5 - var_x249; - IJth(rJacobian, 34, 33) = -0.0030000000000000001; - IJth(rJacobian, 1, 34) = 0.0063300000000000006 + var_x249; + IJth(rJacobian, 1, 33) = CHASTE_CONST(0.003032) + var_x249; + IJth(rJacobian, 33, 33) = -CHASTE_CONST(3.1999999999999999e-5) - var_x249; + IJth(rJacobian, 34, 33) = -CHASTE_CONST(0.0030000000000000001); + IJth(rJacobian, 1, 34) = CHASTE_CONST(0.0063300000000000006) + var_x249; IJth(rJacobian, 33, 34) = -var_x249; - IJth(rJacobian, 34, 34) = -0.0063300000000000006; + IJth(rJacobian, 34, 34) = -CHASTE_CONST(0.0063300000000000006); IJth(rJacobian, 1, 35) = var_x250; IJth(rJacobian, 35, 35) = -var_x250; - IJth(rJacobian, 1, 36) = 0.016159999999999997 + var_x251; - IJth(rJacobian, 36, 36) = -0.00046000000000000001 - var_x251; - IJth(rJacobian, 37, 36) = -0.015699999999999999; - IJth(rJacobian, 1, 37) = 0.015757 + var_x251; + IJth(rJacobian, 1, 36) = CHASTE_CONST(0.016159999999999997) + var_x251; + IJth(rJacobian, 36, 36) = -CHASTE_CONST(0.00046000000000000001) - var_x251; + IJth(rJacobian, 37, 36) = -CHASTE_CONST(0.015699999999999999); + IJth(rJacobian, 1, 37) = CHASTE_CONST(0.015757) + var_x251; IJth(rJacobian, 36, 37) = -var_x251; - IJth(rJacobian, 37, 37) = -0.015757; + IJth(rJacobian, 37, 37) = -CHASTE_CONST(0.015757); IJth(rJacobian, 1, 38) = var_x252; IJth(rJacobian, 38, 38) = -var_x252; - IJth(rJacobian, 39, 39) = -0.059999999999999998 + var_x429 * var_chaste_interface__Ca_buffer__Cai + var_x433 * var_chaste_interface__Ca_buffer__Cai; + IJth(rJacobian, 39, 39) = -CHASTE_CONST(0.059999999999999998) + var_x429 * var_chaste_interface__Ca_buffer__Cai + var_x433 * var_chaste_interface__Ca_buffer__Cai; IJth(rJacobian, 40, 39) = var_x434 * var_chaste_interface__Ca_buffer__Ca_SL; IJth(rJacobian, 41, 39) = var_x435 * 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_x433 * var_chaste_interface__Ca_buffer__Ca_SL + (-0.076999999999999999 + var_x432) * 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_x433 * var_chaste_interface__Ca_buffer__Ca_jct + (-0.002 + var_x431) * var_chaste_interface__Ca_buffer__Ca_jct; - IJth(rJacobian, 42, 42) = -0.11 + var_x437 * var_chaste_interface__Ca_buffer__Cai + var_x441 * var_chaste_interface__Ca_buffer__Cai; + IJth(rJacobian, 39, 40) = (-CHASTE_CONST(0.076923076923076927) + CHASTE_CONST(3.0769230769230771) * var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_Cytosol) * var_chaste_interface__Ca_buffer__Cai; + IJth(rJacobian, 40, 40) = -CHASTE_CONST(0.059999999999999998) + var_x433 * var_chaste_interface__Ca_buffer__Ca_SL + (-CHASTE_CONST(0.076999999999999999) + var_x432) * var_chaste_interface__Ca_buffer__Ca_SL; + IJth(rJacobian, 41, 40) = (-CHASTE_CONST(0.078431372549019607) + CHASTE_CONST(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) = (-CHASTE_CONST(0.0019615384615384616) + CHASTE_CONST(0.078461538461538471) * var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_Cytosol) * var_chaste_interface__Ca_buffer__Cai; + IJth(rJacobian, 40, 41) = (-CHASTE_CONST(0.0019635) + CHASTE_CONST(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) = -CHASTE_CONST(0.059999999999999998) + var_x433 * var_chaste_interface__Ca_buffer__Ca_jct + (-CHASTE_CONST(0.002) + var_x431) * var_chaste_interface__Ca_buffer__Ca_jct; + IJth(rJacobian, 42, 42) = -CHASTE_CONST(0.11) + var_x437 * var_chaste_interface__Ca_buffer__Cai + var_x441 * var_chaste_interface__Ca_buffer__Cai; IJth(rJacobian, 43, 42) = var_x442 * var_chaste_interface__Ca_buffer__Ca_SL; IJth(rJacobian, 44, 42) = var_x443 * 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_x441 * var_chaste_interface__Ca_buffer__Ca_SL + (-0.076999999999999999 + var_x440) * 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_x441 * var_chaste_interface__Ca_buffer__Ca_jct + (-0.002 + var_x439) * var_chaste_interface__Ca_buffer__Ca_jct; + IJth(rJacobian, 42, 43) = (-CHASTE_CONST(0.076923076923076927) + CHASTE_CONST(3.0769230769230771) * var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_Cytosol) * var_chaste_interface__Ca_buffer__Cai; + IJth(rJacobian, 43, 43) = -CHASTE_CONST(0.11) + var_x441 * var_chaste_interface__Ca_buffer__Ca_SL + (-CHASTE_CONST(0.076999999999999999) + var_x440) * var_chaste_interface__Ca_buffer__Ca_SL; + IJth(rJacobian, 44, 43) = (-CHASTE_CONST(0.078431372549019607) + CHASTE_CONST(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) = (-CHASTE_CONST(0.0019615384615384616) + CHASTE_CONST(0.078461538461538471) * var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_Cytosol) * var_chaste_interface__Ca_buffer__Cai; + IJth(rJacobian, 43, 44) = (-CHASTE_CONST(0.0019635) + CHASTE_CONST(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) = -CHASTE_CONST(0.11) + var_x441 * var_chaste_interface__Ca_buffer__Ca_jct + (-CHASTE_CONST(0.002) + var_x439) * 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)); + double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -1557,128 +1559,128 @@ bool Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode::registered = Mo // 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__Fx_ICaL_SL = CHASTE_CONST(0.10000000000000001); // dimensionless + const double var_ICaL__Fx_ICaL_jct = CHASTE_CONST(0.90000000000000002); // dimensionless + const double var_ICaL__PK = CHASTE_CONST(2.7000000000000001e-7); // litre_per_farad_millisecond + const double var_ICaL__PNa = CHASTE_CONST(1.4999999999999999e-8); // litre_per_farad_millisecond + const double var_ICaL__Q10_CaL = CHASTE_CONST(1.8); // dimensionless + const double var_ICaL__gamma_Cai = CHASTE_CONST(0.34100000000000003); // dimensionless + const double var_ICaL__gamma_Cao = CHASTE_CONST(0.34100000000000003); // dimensionless + const double var_ICaL__gamma_Ki = CHASTE_CONST(0.75); // dimensionless + const double var_ICaL__gamma_Ko = CHASTE_CONST(0.75); // dimensionless + const double var_ICaL__gamma_Nai = CHASTE_CONST(0.75); // dimensionless + const double var_ICaL__gamma_Nao = CHASTE_CONST(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_ICab__Fx_CaBk_SL = CHASTE_CONST(0.89000000000000001); // dimensionless + const double var_ICab__Fx_CaBk_jct = CHASTE_CONST(0.11); // dimensionless + const double var_ICab__G_CaBk = CHASTE_CONST(0.00025129999999999998); // milliS_per_microF + const double var_ICap__Fx_SLCaP_SL = CHASTE_CONST(0.89000000000000001); // dimensionless + const double var_ICap__Fx_SLCaP_jct = CHASTE_CONST(0.11); // dimensionless + const double var_ICap__H = CHASTE_CONST(1.6000000000000001); // dimensionless + const double var_ICap__Km = CHASTE_CONST(0.00050000000000000001); // millimolar + const double var_ICap__Q10_SLCaP = CHASTE_CONST(2.3500000000000001); // dimensionless + const double var_ICap__V_maxAF = CHASTE_CONST(0.067299999999999999); // microA_per_microF + const double var_IKs__Fx_Ks_SL = CHASTE_CONST(0.89000000000000001); // dimensionless + const double var_IKs__Fx_Ks_jct = CHASTE_CONST(0.11); // dimensionless + const double var_IKs__pCa_SL = 3 - CHASTE_MATH::Log10(var_chaste_interface__Ca_buffer__Ca_SL); // dimensionless + const double var_IKs__G_Ks_SL = (CHASTE_CONST(0.057000000000000002) + CHASTE_CONST(0.19) / (1 + CHASTE_MATH::Exp(-12 + CHASTE_CONST(1.6666666666666667) * var_IKs__pCa_SL))) * NV_Ith_S(mParameters, 20); // milliS_per_microF + const double var_IKs__pCa_jct = 3 - CHASTE_MATH::Log10(var_chaste_interface__Ca_buffer__Ca_jct); // dimensionless + const double var_IKs__G_Ks_jct = (CHASTE_CONST(0.057000000000000002) + CHASTE_CONST(0.19) / (1 + CHASTE_MATH::Exp(-12 + CHASTE_CONST(1.6666666666666667) * var_IKs__pCa_jct))) * NV_Ith_S(mParameters, 20); // milliS_per_microF + const double var_IKs__pKNa = CHASTE_CONST(0.018329999999999999); // dimensionless + const double var_INa__Fx_Na_SL = CHASTE_CONST(0.89000000000000001); // dimensionless + const double var_INa__Fx_Na_jct = CHASTE_CONST(0.11); // dimensionless + const double var_INaCa__Fx_NCX_SL = CHASTE_CONST(0.89000000000000001); // dimensionless + const double var_INaCa__Fx_NCX_jct = CHASTE_CONST(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_INaCa__K_mCai = CHASTE_CONST(0.0035899999999999999); // millimolar + const double var_INaCa__K_mCao = CHASTE_CONST(1.3); // millimolar + const double var_INaCa__K_mNai = CHASTE_CONST(12.289999999999999); // millimolar + const double var_INaCa__K_mNao = CHASTE_CONST(87.5); // millimolar + const double var_INaCa__Kd_act = CHASTE_CONST(0.00025599999999999999); // millimolar + const double var_INaCa__Ka_SL = 1 / (1 + CHASTE_MATH::Pow(var_INaCa__Kd_act, 3) / CHASTE_MATH::Pow(var_chaste_interface__Ca_buffer__Ca_SL, 3)); // dimensionless + const double var_INaCa__Ka_jct = 1 / (1 + CHASTE_MATH::Pow(var_INaCa__Kd_act, 3) / CHASTE_MATH::Pow(var_chaste_interface__Ca_buffer__Ca_jct, 3)); // dimensionless + const double var_INaCa__Q10_NCX = CHASTE_CONST(1.5700000000000001); // dimensionless + const double var_INaCa__eta = CHASTE_CONST(0.34999999999999998); // dimensionless + const double var_INaCa__ksat = CHASTE_CONST(0.27000000000000002); // dimensionless + const double var_INa__openProb = CHASTE_MATH::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 = CHASTE_CONST(0.89000000000000001); // dimensionless + const double var_INab__Fx_NaBk_jct = CHASTE_CONST(0.11); // dimensionless + const double var_INab__G_NaBk = CHASTE_CONST(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_ICaL_f_gate__tau_f = 1 / (CHASTE_CONST(0.02) + CHASTE_CONST(0.019699999999999999) * CHASTE_MATH::Exp(-CHASTE_CONST(0.23877882250000002) * CHASTE_MATH::Pow((1 + CHASTE_CONST(0.068965517241379309) * var_chaste_interface__cell__V), 2))); // millisecond + const double var_IKr_Rr_gate__Rr = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(1.4732142857142858) + CHASTE_CONST(0.044642857142857144) * var_chaste_interface__cell__V)); // dimensionless + const double var_INa_h_gate__alpha_h = ((var_chaste_interface__cell__V < -40) ? (CHASTE_CONST(0.13500000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(11.764705882352942) + CHASTE_CONST(0.14705882352941177) * NV_Ith_S(mParameters, 16) - CHASTE_CONST(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 * CHASTE_MATH::Exp(CHASTE_CONST(0.34999999999999998) * var_chaste_interface__cell__V - CHASTE_CONST(0.34999999999999998) * NV_Ith_S(mParameters, 16)) + CHASTE_CONST(3.5600000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.079000000000000001) * var_chaste_interface__cell__V - CHASTE_CONST(0.079000000000000001) * NV_Ith_S(mParameters, 16))) : (CHASTE_CONST(7.6923076923076916) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.96036036036036043) + CHASTE_CONST(0.0900900900900901) * NV_Ith_S(mParameters, 16) - CHASTE_CONST(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__alpha_j = ((var_chaste_interface__cell__V < -40) ? ((CHASTE_CONST(37.780000000000001) + var_chaste_interface__cell__V) * (-127140 * CHASTE_MATH::Exp(CHASTE_CONST(0.24440000000000001) * var_chaste_interface__cell__V - CHASTE_CONST(0.24440000000000001) * NV_Ith_S(mParameters, 16)) - CHASTE_CONST(3.4740000000000003e-5) * CHASTE_MATH::Exp(CHASTE_CONST(0.043909999999999998) * NV_Ith_S(mParameters, 16) - CHASTE_CONST(0.043909999999999998) * var_chaste_interface__cell__V)) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(24.640530000000002) + CHASTE_CONST(0.311) * var_chaste_interface__cell__V - CHASTE_CONST(0.311) * NV_Ith_S(mParameters, 16)))) : (0)); // per_millisecond + const double var_INa_j_gate__beta_j = ((var_chaste_interface__cell__V < -40) ? (CHASTE_CONST(0.1212) * CHASTE_MATH::Exp(CHASTE_CONST(0.01052) * NV_Ith_S(mParameters, 16) - CHASTE_CONST(0.01052) * var_chaste_interface__cell__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(5.5312920000000005) + CHASTE_CONST(0.13780000000000001) * NV_Ith_S(mParameters, 16) - CHASTE_CONST(0.13780000000000001) * var_chaste_interface__cell__V))) : (CHASTE_CONST(0.29999999999999999) * CHASTE_MATH::Exp(CHASTE_CONST(2.5349999999999999e-7) * NV_Ith_S(mParameters, 16) - CHASTE_CONST(2.5349999999999999e-7) * var_chaste_interface__cell__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(3.2000000000000002) + CHASTE_CONST(0.10000000000000001) * NV_Ith_S(mParameters, 16) - CHASTE_CONST(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_cell__i_Stim_converted = CHASTE_STIM(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_model_parameters__Cm_per_area = CHASTE_CONST(1.9999999999999999e-6); // farad_per_cm2 + const double var_IK1__G_K1 = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::Sqrt(NV_Ith_S(mParameters, 8)) * NV_Ith_S(mParameters, 18); // milliS_per_microF + const double var_IKr__G_IKr = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::Sqrt(NV_Ith_S(mParameters, 8)) * NV_Ith_S(mParameters, 19); // milliS_per_microF + const double var_ICaL__Q_CaL = CHASTE_MATH::Pow(var_ICaL__Q10_CaL, (-31 + CHASTE_CONST(0.10000000000000001) * NV_Ith_S(mParameters, 23))); // dimensionless + const double var_ICaL__temp = CHASTE_CONST(0.45000000000000001) * CHASTE_MATH::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 * CHASTE_MATH::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 + CHASTE_MATH::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 * CHASTE_MATH::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 + CHASTE_MATH::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) * CHASTE_MATH::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 + CHASTE_MATH::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 * CHASTE_MATH::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 + CHASTE_MATH::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 * CHASTE_MATH::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 + CHASTE_MATH::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_ICaL__i_CaL_converted = CHASTE_CAP() * var_ICaL__i_CaL; // uA_per_cm2 + const double var_ICap__Q_SLCaP = CHASTE_MATH::Pow(var_ICap__Q10_SLCaP, (-31 + CHASTE_CONST(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 + CHASTE_MATH::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 + CHASTE_MATH::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_ICap__i_Cap_converted = CHASTE_CAP() * var_ICap__i_Cap; // uA_per_cm2 + const double var_IKs__E_Ks = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * CHASTE_MATH::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 = CHASTE_MATH::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 = CHASTE_MATH::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_IKs__i_Ks_converted = CHASTE_CAP() * var_IKs__i_Ks; // uA_per_cm2 + const double var_INaCa__Q_NCX = CHASTE_MATH::Pow(var_INaCa__Q10_NCX, (-31 + CHASTE_CONST(0.10000000000000001) * NV_Ith_S(mParameters, 23))); // dimensionless + const double var_INaCa__temp_SL = (CHASTE_MATH::Pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) * CHASTE_MATH::Exp(var_INaCa__eta * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23))) - CHASTE_MATH::Pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_SL * CHASTE_MATH::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 * CHASTE_MATH::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 / (CHASTE_MATH::Pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * var_INaCa__K_mCao + CHASTE_MATH::Pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) + CHASTE_MATH::Pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_SL + CHASTE_MATH::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 + CHASTE_MATH::Pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * (1 + CHASTE_MATH::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 = (CHASTE_MATH::Pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) * CHASTE_MATH::Exp(var_INaCa__eta * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23))) - CHASTE_MATH::Pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_jct * CHASTE_MATH::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 * CHASTE_MATH::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 / (CHASTE_MATH::Pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * var_INaCa__K_mCao + CHASTE_MATH::Pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) + CHASTE_MATH::Pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_jct + CHASTE_MATH::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 + CHASTE_MATH::Pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * (1 + CHASTE_MATH::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_INaCa__i_NaCa_converted = CHASTE_CAP() * 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__cell_radius = CHASTE_CONST(10.25); // micrometre + const double var_model_parameters__Cm = CHASTE_CONST(2.0e-8) * CHASTE_CONST(CHASTE_MATH::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_reversal_potentials__E_Ca_SL = CHASTE_CONST(0.5) * NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * CHASTE_MATH::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_reversal_potentials__E_Ca_jct = CHASTE_CONST(0.5) * NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * CHASTE_MATH::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_ICab__i_Cab_converted = CHASTE_CAP() * var_ICab__i_Cab; // uA_per_cm2 + const double var_reversal_potentials__E_Cl = -NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * CHASTE_MATH::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_IClb__i_Clb_converted = CHASTE_CAP() * var_IClb__i_Clb; // uA_per_cm2 + const double var_reversal_potentials__E_K = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * CHASTE_MATH::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 = CHASTE_CONST(1.02) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__cell__V - CHASTE_CONST(0.23849999999999999) * var_reversal_potentials__E_K)); // per_millisecond + const double var_IK1_K1_gate__beta_K1 = (CHASTE_MATH::Exp(-CHASTE_CONST(36.698642499999998) + CHASTE_CONST(0.061749999999999999) * var_chaste_interface__cell__V - CHASTE_CONST(0.061749999999999999) * var_reversal_potentials__E_K) + CHASTE_CONST(0.49124000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.43983232) + CHASTE_CONST(0.080320000000000003) * var_chaste_interface__cell__V - CHASTE_CONST(0.080320000000000003) * var_reversal_potentials__E_K)) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.4444678999999998) + CHASTE_CONST(0.51429999999999998) * var_reversal_potentials__E_K - CHASTE_CONST(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_IK1__i_K1_converted = CHASTE_CAP() * 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_IKr__i_Kr_converted = CHASTE_CAP() * 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_Itof__i_tof_converted = CHASTE_CAP() * var_Itof__i_tof; // uA_per_cm2 + const double var_Itos__i_tos = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * (CHASTE_CONST(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 = CHASTE_CAP() * 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) * CHASTE_MATH::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_reversal_potentials__E_Na_jct = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * CHASTE_MATH::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_INa__i_Na_converted = CHASTE_CAP() * 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_INab__i_Nab_converted = CHASTE_CAP() * var_INab__i_Nab; // uA_per_cm2 #if CHASTE_SUNDIALS_VERSION >= 60000 N_Vector dqs = N_VNew_Serial(23, CvodeContextManager::Instance()->GetSundialsContext()); @@ -2147,4 +2149,5 @@ extern "C" } } + #endif // CHASTE_CVODE diff --git a/chaste_codegen/data/tests/chaste_reference_models/Cvode_with_jacobian/dynamic_Shannon2004.hpp b/chaste_codegen/data/tests/chaste_reference_models/Cvode_with_jacobian/dynamic_Shannon2004.hpp index 739ac6c6a..2f3586b03 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/Cvode_with_jacobian/dynamic_Shannon2004.hpp +++ b/chaste_codegen/data/tests/chaste_reference_models/Cvode_with_jacobian/dynamic_Shannon2004.hpp @@ -18,7 +18,11 @@ #include #include "AbstractDynamicallyLoadableEntity.hpp" #include "AbstractStimulusFunction.hpp" +#if USING_DEVICE_COMPILER +#include "StimulusEvaluatorCuda.hpp" +#endif #include "AbstractCvodeCell.hpp" +#include "HostDeviceMacros.hpp" class Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode : public AbstractCvodeCell, public AbstractDynamicallyLoadableEntity { @@ -41,6 +45,10 @@ class Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode : public Abstra const bool is_concentration[45] = {false, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true, false, false, true, true, true, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false}; const bool is_probability[45] = {false, false, true, true, true, false, false, false, false, false, false, false, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false}; public: + static constexpr unsigned TOTAL_SIZE = 45u; + static constexpr unsigned NNZ = 178u; + static inline const int sparse_rowptr[] = { 0, 20, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 63, 68, 73, 85, 96, 98, 100, 102, 107, 117, 128, 130, 132, 134, 136, 138, 140, 143, 145, 147, 150, 152, 154, 158, 162, 166, 170, 174, 178 }; + static inline const int sparse_colind[] = { 0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 19, 20, 23, 25, 26, 1, 24, 25, 32, 33, 34, 35, 36, 37, 38, 0, 2, 0, 3, 0, 4, 0, 5, 0, 6, 0, 7, 0, 8, 0, 9, 0, 10, 0, 11, 0, 12, 0, 13, 14, 25, 15, 26, 16, 17, 18, 24, 26, 16, 17, 18, 24, 26, 16, 17, 18, 24, 26, 0, 2, 3, 4, 12, 13, 14, 19, 20, 21, 23, 25, 0, 2, 3, 4, 12, 13, 15, 19, 20, 22, 26, 19, 21, 20, 22, 19, 23, 1, 18, 24, 26, 31, 0, 1, 12, 13, 14, 19, 25, 26, 27, 29, 0, 12, 13, 15, 18, 20, 24, 25, 26, 28, 30, 25, 27, 26, 28, 25, 29, 26, 30, 24, 31, 1, 32, 1, 33, 34, 33, 34, 1, 35, 1, 36, 37, 36, 37, 1, 38, 1, 39, 40, 41, 25, 39, 40, 41, 26, 39, 40, 41, 1, 42, 43, 44, 25, 42, 43, 44, 26, 42, 43, 44 }; boost::shared_ptr UseCellMLDefaultStimulus(); double GetIntracellularCalciumConcentration(); @@ -49,8 +57,19 @@ const bool is_probability[45] = {false, false, true, true, true, false, false, f void VerifyStateVariables(); double GetIIonic(const std::vector* pStateVariables=NULL); void EvaluateYDerivatives(double var_chaste_interface__environment__time, const N_Vector rY, N_Vector rDY); - N_Vector ComputeDerivedQuantities(double var_chaste_interface__environment__time, const N_Vector & rY); void 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); + N_Vector ComputeDerivedQuantities(double var_chaste_interface__environment__time, const N_Vector & rY); +#if USING_DEVICE_COMPILER + template + DEVICE + static void EvaluateYDerivativesDevice(ValueType var_chaste_interface__environment__time, const ValueType* rY, ValueType* rDY, const ValueType mSetVoltageDerivativeToZero, const ValueType mFixedVoltage, const ValueType* mParameters, const ValueType capacitance, const DeviceStimulusFunctor stim); + template + DEVICE + static void EvaluateAnalyticJacobianDevice(ValueType var_chaste_interface__environment__time, const ValueType *rY, ValueType *rDY, ValueType *rJacobian, ValueType *rTmp1, ValueType *rTmp2, ValueType *rTmp3, const unsigned nvars, const ValueType mSetVoltageDerivativeToZero, const ValueType mFixedVoltage, const ValueType *mParameters, const ValueType capacitance, const DeviceStimulusFunctor stim); + template + DEVICE + static void EvaluateSparseAnalyticJacobianDevice(ValueType var_chaste_interface__environment__time, const ValueType *rY, ValueType *rDY, ValueType *rJacobian, ValueType *rTmp1, ValueType *rTmp2, ValueType *rTmp3, const unsigned nvars, const ValueType mSetVoltageDerivativeToZero, const ValueType mFixedVoltage, const ValueType *mParameters, const ValueType capacitance, const DeviceStimulusFunctor stim); +#endif }; // Needs to be included last @@ -87,4 +106,10 @@ namespace boost } #endif // DYNAMICSHANNON_WANG_PUGLISI_WEBER_BERS_2004FROMCELLMLCVODE_HPP_ + + + +#if USING_DEVICE_COMPILER + #include "dynamic_Shannon2004Kernels.hpp" +#endif #endif // CHASTE_CVODE \ No newline at end of file diff --git a/chaste_codegen/data/tests/chaste_reference_models/Cvode_with_jacobian/hodgkin_huxley_squid_axon_model_1952_modified.cpp b/chaste_codegen/data/tests/chaste_reference_models/Cvode_with_jacobian/hodgkin_huxley_squid_axon_model_1952_modified.cpp index f37e178d1..b3d8c2d6b 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/Cvode_with_jacobian/hodgkin_huxley_squid_axon_model_1952_modified.cpp +++ b/chaste_codegen/data/tests/chaste_reference_models/Cvode_with_jacobian/hodgkin_huxley_squid_axon_model_1952_modified.cpp @@ -22,6 +22,8 @@ #include "HeartConfig.hpp" #include "IsNan.hpp" #include "MathsCustomFunctions.hpp" +#include "ChasteMathDeviceNamespaces.hpp" +#include "ChasteCpuMacros.hpp" #if CHASTE_SUNDIALS_VERSION >= 60000 #include "CvodeContextManager.hpp" @@ -35,7 +37,7 @@ { // 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_duration = CHASTE_CONST(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( @@ -67,7 +69,7 @@ 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, 2) = CHASTE_CONST(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] } @@ -124,7 +126,7 @@ made_new_cvode_vector = true; rY = MakeNVector(*pStateVariables); } - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -134,12 +136,12 @@ // 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__E_L = CHASTE_CONST(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_potassium_channel__i_K = CHASTE_MATH::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_sodium_channel__i_Na = CHASTE_MATH::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; @@ -155,7 +157,7 @@ { // Inputs: // Time units: millisecond - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -166,22 +168,22 @@ // 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__B = -CHASTE_CONST(0.10000000000000001); // per_millivolt + const double var_potassium_channel_n_gate__A = -CHASTE_CONST(0.01) / var_potassium_channel_n_gate__B; // per_millisecond + const double var_potassium_channel_n_gate__beta_n = CHASTE_CONST(0.125) * CHASTE_MATH::Exp(CHASTE_CONST(0.9375) + CHASTE_CONST(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_potassium_channel_n_gate__alpha_n = (((var_potassium_channel_n_gate__U >= -CHASTE_CONST(9.9999999999999995e-8)) && (var_potassium_channel_n_gate__U <= CHASTE_CONST(9.9999999999999995e-8))) ? ((1 - CHASTE_CONST(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 + CHASTE_MATH::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 var_sodium_channel_h_gate__alpha_h = CHASTE_CONST(0.070000000000000007) * CHASTE_MATH::Exp(-CHASTE_CONST(3.75) - CHASTE_CONST(0.050000000000000003) * var_chaste_interface__membrane__V); // per_millisecond + const double var_sodium_channel_h_gate__beta_h = 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(4.5) - CHASTE_CONST(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__B = -CHASTE_CONST(0.10000000000000001); // per_millivolt + const double var_sodium_channel_m_gate__A = -CHASTE_CONST(0.10000000000000001) / var_sodium_channel_m_gate__B; // per_millisecond + const double var_sodium_channel_m_gate__beta_m = 4 * CHASTE_MATH::Exp(-CHASTE_CONST(4.166666666666667) - CHASTE_CONST(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 var_sodium_channel_m_gate__alpha_m = (((var_sodium_channel_m_gate__U >= -CHASTE_CONST(9.9999999999999995e-8)) && (var_sodium_channel_m_gate__U <= CHASTE_CONST(9.9999999999999995e-8))) ? ((1 - CHASTE_CONST(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 + CHASTE_MATH::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) @@ -191,13 +193,13 @@ 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__E_L = CHASTE_CONST(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_membrane__i_Stim = CHASTE_STIM(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_potassium_channel__i_K = CHASTE_MATH::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_sodium_channel__i_Na = CHASTE_MATH::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 } @@ -209,7 +211,7 @@ 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)); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -218,43 +220,43 @@ 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_x1 = CHASTE_MATH::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_x3 = CHASTE_CONST(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_x5 = (var_x4 >= -CHASTE_CONST(9.9999999999999995e-8)) && (var_x4 <= CHASTE_CONST(9.9999999999999995e-8)); + const double var_x6 = CHASTE_MATH::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_x9 = CHASTE_MATH::Exp(-CHASTE_CONST(4.166666666666667) - CHASTE_CONST(0.055555555555555552) * var_chaste_interface__membrane__V); + const double var_x10 = CHASTE_MATH::Exp(-CHASTE_CONST(3.75) - CHASTE_CONST(0.050000000000000003) * var_chaste_interface__membrane__V); + const double var_x11 = CHASTE_MATH::Exp(-CHASTE_CONST(4.5) - CHASTE_CONST(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_x13 = CHASTE_CONST(6.5) + var_x3; + const double var_x14 = (var_x13 >= -CHASTE_CONST(9.9999999999999995e-8)) && (var_x13 <= CHASTE_CONST(9.9999999999999995e-8)); + const double var_x15 = CHASTE_MATH::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); + const double var_x18 = CHASTE_MATH::Exp(CHASTE_CONST(0.9375) + CHASTE_CONST(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.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_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) : (-var_x4 * var_x8)) - 4 * var_x9; + IJth(rJacobian, 0, 0) = mSetVoltageDerivativeToZero ? 0.0 : (var_x0 * (-NV_Ith_S(mParameters, 2) - var_x1 * var_chaste_interface__sodium_channel_h_gate__h - CHASTE_MATH::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) ? (CHASTE_CONST(0.050000000000000003)) : (-CHASTE_CONST(0.10000000000000001) * var_x8 - CHASTE_CONST(0.10000000000000001) * var_x4 * var_x6 / CHASTE_MATH::Pow(var_x7, 2))) + CHASTE_CONST(0.22222222222222221) * var_x9 * var_chaste_interface__sodium_channel_m_gate__m; + IJth(rJacobian, 2, 0) = -CHASTE_CONST(0.050000000000000003) * var_x10 * (CHASTE_CONST(0.070000000000000007) - CHASTE_CONST(0.070000000000000007) * var_chaste_interface__sodium_channel_h_gate__h) - CHASTE_CONST(0.10000000000000001) * var_x11 * var_chaste_interface__sodium_channel_h_gate__h / CHASTE_MATH::Pow(var_x12, 2); + IJth(rJacobian, 3, 0) = (1 - var_chaste_interface__potassium_channel_n_gate__n) * ((var_x14) ? (CHASTE_CONST(0.0050000000000000001)) : (-CHASTE_CONST(0.01) * var_x17 - CHASTE_CONST(0.01) * var_x13 * var_x15 / CHASTE_MATH::Pow(var_x16, 2))) - CHASTE_CONST(0.0015625000000000001) * var_x18 * var_chaste_interface__potassium_channel_n_gate__n; + IJth(rJacobian, 0, 1) = mSetVoltageDerivativeToZero ? 0.0 : (-3 * var_x2 * CHASTE_MATH::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) ? (CHASTE_CONST(3.5) + CHASTE_CONST(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_x14) ? (0.42499999999999999 + 0.0050000000000000001 * var_chaste_interface__membrane__V) : (-0.099999999999999992 * var_x13 * var_x17)) - 0.125 * var_x18; + IJth(rJacobian, 2, 2) = -1 / var_x12 - CHASTE_CONST(0.070000000000000007) * var_x10; + IJth(rJacobian, 0, 3) = mSetVoltageDerivativeToZero ? 0.0 : (-4 * var_x0 * CHASTE_MATH::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) ? (CHASTE_CONST(0.42499999999999999) + CHASTE_CONST(0.0050000000000000001) * var_chaste_interface__membrane__V) : (-CHASTE_CONST(0.099999999999999992) * var_x13 * var_x17)) - CHASTE_CONST(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)); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -265,13 +267,13 @@ // 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__E_L = CHASTE_CONST(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_membrane__i_Stim = CHASTE_STIM(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_potassium_channel__i_K = CHASTE_MATH::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_sodium_channel__i_Na = CHASTE_MATH::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()); @@ -356,4 +358,5 @@ void OdeSystemInformation #include "AbstractStimulusFunction.hpp" +#if USING_DEVICE_COMPILER +#include "StimulusEvaluatorCuda.hpp" +#endif #include "AbstractCvodeCell.hpp" +#include "HostDeviceMacros.hpp" class Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLCvode : public AbstractCvodeCell { @@ -38,6 +42,10 @@ class Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLCvode : public const bool is_concentration[4] = {false, false, false, false}; const bool is_probability[4] = {false, false, false, false}; public: + static constexpr unsigned TOTAL_SIZE = 4u; + static constexpr unsigned NNZ = 10u; + static inline const int sparse_rowptr[] = { 0, 4, 6, 8, 10 }; + static inline const int sparse_colind[] = { 0, 1, 2, 3, 0, 1, 0, 2, 0, 3 }; boost::shared_ptr UseCellMLDefaultStimulus(); Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLCvode(boost::shared_ptr pOdeSolver /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus); @@ -45,8 +53,19 @@ const bool is_probability[4] = {false, false, false, false}; void VerifyStateVariables(); double GetIIonic(const std::vector* pStateVariables=NULL); void EvaluateYDerivatives(double var_chaste_interface__environment__time, const N_Vector rY, N_Vector rDY); - N_Vector ComputeDerivedQuantities(double var_chaste_interface__environment__time, const N_Vector & rY); void 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); + N_Vector ComputeDerivedQuantities(double var_chaste_interface__environment__time, const N_Vector & rY); +#if USING_DEVICE_COMPILER + template + DEVICE + static void EvaluateYDerivativesDevice(ValueType var_chaste_interface__environment__time, const ValueType* rY, ValueType* rDY, const ValueType mSetVoltageDerivativeToZero, const ValueType mFixedVoltage, const ValueType* mParameters, const ValueType capacitance, const DeviceStimulusFunctor stim); + template + DEVICE + static void EvaluateAnalyticJacobianDevice(ValueType var_chaste_interface__environment__time, const ValueType *rY, ValueType *rDY, ValueType *rJacobian, ValueType *rTmp1, ValueType *rTmp2, ValueType *rTmp3, const unsigned nvars, const ValueType mSetVoltageDerivativeToZero, const ValueType mFixedVoltage, const ValueType *mParameters, const ValueType capacitance, const DeviceStimulusFunctor stim); + template + DEVICE + static void EvaluateSparseAnalyticJacobianDevice(ValueType var_chaste_interface__environment__time, const ValueType *rY, ValueType *rDY, ValueType *rJacobian, ValueType *rTmp1, ValueType *rTmp2, ValueType *rTmp3, const unsigned nvars, const ValueType mSetVoltageDerivativeToZero, const ValueType mFixedVoltage, const ValueType *mParameters, const ValueType capacitance, const DeviceStimulusFunctor stim); +#endif }; // Needs to be included last @@ -83,4 +102,10 @@ namespace boost } #endif // CELLHODGKIN_HUXLEY_SQUID_AXON_MODEL_1952_MODIFIEDFROMCELLMLCVODE_HPP_ + + + +#if USING_DEVICE_COMPILER + #include "hodgkin_huxley_squid_axon_model_1952_modifiedKernels.hpp" +#endif #endif // CHASTE_CVODE \ No newline at end of file diff --git a/chaste_codegen/data/tests/chaste_reference_models/Cvode_with_jacobian/hodgkin_huxley_squid_axon_model_1952_modifiedKernels.hpp b/chaste_codegen/data/tests/chaste_reference_models/Cvode_with_jacobian/hodgkin_huxley_squid_axon_model_1952_modifiedKernels.hpp new file mode 100644 index 000000000..508029ea1 --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/Cvode_with_jacobian/hodgkin_huxley_squid_axon_model_1952_modifiedKernels.hpp @@ -0,0 +1,161 @@ +#ifndef CELLHODGKIN_HUXLEY_SQUID_AXON_MODEL_1952_MODIFIEDFROMCELLMLCVODEKERNELS_HPP_ +#define CELLHODGKIN_HUXLEY_SQUID_AXON_MODEL_1952_MODIFIEDFROMCELLMLCVODEKERNELS_HPP_ + +//! @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 "MathsCustomFunctions.hpp" +#include "ChasteDeviceMacros.hpp" + + +template +DEVICE +void Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLCvode::EvaluateYDerivativesDevice(ValueType var_chaste_interface__environment__time, const ValueType *rY, ValueType *rDY, const ValueType mSetVoltageDerivativeToZero, const ValueType mFixedVoltage, const ValueType *mParameters, const ValueType capacitance, const DeviceStimulusFunctor stim) +{ + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 = -CHASTE_CONST(0.10000000000000001); // per_millivolt + const double var_potassium_channel_n_gate__A = -CHASTE_CONST(0.01) / var_potassium_channel_n_gate__B; // per_millisecond + const double var_potassium_channel_n_gate__beta_n = CHASTE_CONST(0.125) * CHASTE_MATH::Exp(CHASTE_CONST(0.9375) + CHASTE_CONST(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 >= -CHASTE_CONST(9.9999999999999995e-8)) && (var_potassium_channel_n_gate__U <= CHASTE_CONST(9.9999999999999995e-8))) ? ((1 - CHASTE_CONST(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 + CHASTE_MATH::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 = CHASTE_CONST(0.070000000000000007) * CHASTE_MATH::Exp(-CHASTE_CONST(3.75) - CHASTE_CONST(0.050000000000000003) * var_chaste_interface__membrane__V); // per_millisecond + const double var_sodium_channel_h_gate__beta_h = 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(4.5) - CHASTE_CONST(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 = -CHASTE_CONST(0.10000000000000001); // per_millivolt + const double var_sodium_channel_m_gate__A = -CHASTE_CONST(0.10000000000000001) / var_sodium_channel_m_gate__B; // per_millisecond + const double var_sodium_channel_m_gate__beta_m = 4 * CHASTE_MATH::Exp(-CHASTE_CONST(4.166666666666667) - CHASTE_CONST(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 >= -CHASTE_CONST(9.9999999999999995e-8)) && (var_sodium_channel_m_gate__U <= CHASTE_CONST(9.9999999999999995e-8))) ? ((1 - CHASTE_CONST(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 + CHASTE_MATH::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;const double var_leakage_current__E_L = CHASTE_CONST(10.613) + var_membrane__E_R;const double var_leakage_current__i_L = (-var_leakage_current__E_L + var_chaste_interface__membrane__V) * mParameters[2];const double var_membrane__i_Stim = CHASTE_STIM(var_chaste_interface__environment__time);const double var_potassium_channel__E_K = -12 + var_membrane__E_R;const double var_potassium_channel__i_K = CHASTE_MATH::Pow(var_chaste_interface__potassium_channel_n_gate__n, 4) * (-var_potassium_channel__E_K + var_chaste_interface__membrane__V) * mParameters[3];const double var_sodium_channel__E_Na = 115 + var_membrane__E_R;const double var_sodium_channel__i_Na = CHASTE_MATH::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;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]; + } + + rDY[0] = d_dt_chaste_interface_var_membrane__V; + rDY[1] = d_dt_chaste_interface_var_sodium_channel_m_gate__m; + rDY[2] = d_dt_chaste_interface_var_sodium_channel_h_gate__h; + rDY[3] = d_dt_chaste_interface_var_potassium_channel_n_gate__n; +} + +template +DEVICE +void Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLCvode::EvaluateAnalyticJacobianDevice(ValueType var_chaste_interface__environment__time, const ValueType *rY, ValueType *rDY, ValueType *rJacobian, ValueType *rTmp1, ValueType *rTmp2, ValueType *rTmp3, const unsigned nvars, const ValueType mSetVoltageDerivativeToZero, const ValueType mFixedVoltage, const ValueType *mParameters, const ValueType capacitance, const DeviceStimulusFunctor stim) +{ + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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_x0 = 1 / mParameters[0]; + const double var_x1 = CHASTE_MATH::Pow(var_chaste_interface__sodium_channel_m_gate__m, 3) * mParameters[1]; + const double var_x2 = var_x0 * (-40 + var_chaste_interface__membrane__V); + const double var_x3 = CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V; + const double var_x4 = 5 + var_x3; + const double var_x5 = (var_x4 >= -CHASTE_CONST(9.9999999999999995e-8)) && (var_x4 <= CHASTE_CONST(9.9999999999999995e-8)); + const double var_x6 = CHASTE_MATH::Exp(-var_x4); + const double var_x7 = -1 + var_x6; + const double var_x8 = 1 / var_x7; + const double var_x9 = CHASTE_MATH::Exp(-CHASTE_CONST(4.166666666666667) - CHASTE_CONST(0.055555555555555552) * var_chaste_interface__membrane__V); + const double var_x10 = CHASTE_MATH::Exp(-CHASTE_CONST(3.75) - CHASTE_CONST(0.050000000000000003) * var_chaste_interface__membrane__V); + const double var_x11 = CHASTE_MATH::Exp(-CHASTE_CONST(4.5) - CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V); + const double var_x12 = 1 + var_x11; + const double var_x13 = CHASTE_CONST(6.5) + var_x3; + const double var_x14 = (var_x13 >= -CHASTE_CONST(9.9999999999999995e-8)) && (var_x13 <= CHASTE_CONST(9.9999999999999995e-8)); + const double var_x15 = CHASTE_MATH::Exp(-var_x13); + const double var_x16 = -1 + var_x15; + const double var_x17 = 1 / var_x16; + const double var_x18 = CHASTE_MATH::Exp(CHASTE_CONST(0.9375) + CHASTE_CONST(0.012500000000000001) * var_chaste_interface__membrane__V); + + // Matrix entries + rJacobian[0 * nvars + 0] = mSetVoltageDerivativeToZero ? CHASTE_CONST(0.0) : (var_x0 * (-mParameters[2] - var_x1 * var_chaste_interface__sodium_channel_h_gate__h - CHASTE_MATH::Pow(var_chaste_interface__potassium_channel_n_gate__n, 4) * mParameters[3])); + rJacobian[0 * nvars + 1] = (1 - var_chaste_interface__sodium_channel_m_gate__m) * ((var_x5) ? (CHASTE_CONST(0.050000000000000003)) : (-CHASTE_CONST(0.10000000000000001) * var_x8 - CHASTE_CONST(0.10000000000000001) * var_x4 * var_x6 / CHASTE_MATH::Pow(var_x7, 2))) + CHASTE_CONST(0.22222222222222221) * var_x9 * var_chaste_interface__sodium_channel_m_gate__m; + rJacobian[0 * nvars + 2] = -CHASTE_CONST(0.050000000000000003) * var_x10 * (CHASTE_CONST(0.070000000000000007) - CHASTE_CONST(0.070000000000000007) * var_chaste_interface__sodium_channel_h_gate__h) - CHASTE_CONST(0.10000000000000001) * var_x11 * var_chaste_interface__sodium_channel_h_gate__h / CHASTE_MATH::Pow(var_x12, 2); + rJacobian[0 * nvars + 3] = (1 - var_chaste_interface__potassium_channel_n_gate__n) * ((var_x14) ? (CHASTE_CONST(0.0050000000000000001)) : (-CHASTE_CONST(0.01) * var_x17 - CHASTE_CONST(0.01) * var_x13 * var_x15 / CHASTE_MATH::Pow(var_x16, 2))) - CHASTE_CONST(0.0015625000000000001) * var_x18 * var_chaste_interface__potassium_channel_n_gate__n; + rJacobian[1 * nvars + 0] = mSetVoltageDerivativeToZero ? CHASTE_CONST(0.0) : (-3 * var_x2 * CHASTE_MATH::Pow(var_chaste_interface__sodium_channel_m_gate__m, 2) * mParameters[1] * var_chaste_interface__sodium_channel_h_gate__h); + rJacobian[1 * nvars + 1] = -((var_x5) ? (CHASTE_CONST(3.5) + CHASTE_CONST(0.050000000000000003) * var_chaste_interface__membrane__V) : (-var_x4 * var_x8)) - 4 * var_x9; + rJacobian[2 * nvars + 0] = mSetVoltageDerivativeToZero ? CHASTE_CONST(0.0) : (-var_x1 * var_x2); + rJacobian[2 * nvars + 2] = -1 / var_x12 - CHASTE_CONST(0.070000000000000007) * var_x10; + rJacobian[3 * nvars + 0] = mSetVoltageDerivativeToZero ? CHASTE_CONST(0.0) : (-4 * var_x0 * CHASTE_MATH::Pow(var_chaste_interface__potassium_channel_n_gate__n, 3) * (87 + var_chaste_interface__membrane__V) * mParameters[3]); + rJacobian[3 * nvars + 3] = -((var_x14) ? (CHASTE_CONST(0.42499999999999999) + CHASTE_CONST(0.0050000000000000001) * var_chaste_interface__membrane__V) : (-CHASTE_CONST(0.099999999999999992) * var_x13 * var_x17)) - CHASTE_CONST(0.125) * var_x18; +} + +template +DEVICE +void Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLCvode::EvaluateSparseAnalyticJacobianDevice(ValueType var_chaste_interface__environment__time, const ValueType *rY, ValueType *rDY, ValueType *rJacobian, ValueType *rTmp1, ValueType *rTmp2, ValueType *rTmp3, const unsigned nvars, const ValueType mSetVoltageDerivativeToZero, const ValueType mFixedVoltage, const ValueType *mParameters, const ValueType capacitance, const DeviceStimulusFunctor stim) +{ + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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_x0 = 1 / mParameters[0]; + const double var_x1 = CHASTE_MATH::Pow(var_chaste_interface__sodium_channel_m_gate__m, 3) * mParameters[1]; + const double var_x2 = var_x0 * (-40 + var_chaste_interface__membrane__V); + const double var_x3 = CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V; + const double var_x4 = 5 + var_x3; + const double var_x5 = (var_x4 >= -CHASTE_CONST(9.9999999999999995e-8)) && (var_x4 <= CHASTE_CONST(9.9999999999999995e-8)); + const double var_x6 = CHASTE_MATH::Exp(-var_x4); + const double var_x7 = -1 + var_x6; + const double var_x8 = 1 / var_x7; + const double var_x9 = CHASTE_MATH::Exp(-CHASTE_CONST(4.166666666666667) - CHASTE_CONST(0.055555555555555552) * var_chaste_interface__membrane__V); + const double var_x10 = CHASTE_MATH::Exp(-CHASTE_CONST(3.75) - CHASTE_CONST(0.050000000000000003) * var_chaste_interface__membrane__V); + const double var_x11 = CHASTE_MATH::Exp(-CHASTE_CONST(4.5) - CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V); + const double var_x12 = 1 + var_x11; + const double var_x13 = CHASTE_CONST(6.5) + var_x3; + const double var_x14 = (var_x13 >= -CHASTE_CONST(9.9999999999999995e-8)) && (var_x13 <= CHASTE_CONST(9.9999999999999995e-8)); + const double var_x15 = CHASTE_MATH::Exp(-var_x13); + const double var_x16 = -1 + var_x15; + const double var_x17 = 1 / var_x16; + const double var_x18 = CHASTE_MATH::Exp(CHASTE_CONST(0.9375) + CHASTE_CONST(0.012500000000000001) * var_chaste_interface__membrane__V); + + // Matrix entries + rJacobian[0] = mSetVoltageDerivativeToZero ? CHASTE_CONST(0.0) : (var_x0 * (-mParameters[2] - var_x1 * var_chaste_interface__sodium_channel_h_gate__h - CHASTE_MATH::Pow(var_chaste_interface__potassium_channel_n_gate__n, 4) * mParameters[3])); + rJacobian[1] = (1 - var_chaste_interface__sodium_channel_m_gate__m) * ((var_x5) ? (CHASTE_CONST(0.050000000000000003)) : (-CHASTE_CONST(0.10000000000000001) * var_x8 - CHASTE_CONST(0.10000000000000001) * var_x4 * var_x6 / CHASTE_MATH::Pow(var_x7, 2))) + CHASTE_CONST(0.22222222222222221) * var_x9 * var_chaste_interface__sodium_channel_m_gate__m; + rJacobian[2] = -CHASTE_CONST(0.050000000000000003) * var_x10 * (CHASTE_CONST(0.070000000000000007) - CHASTE_CONST(0.070000000000000007) * var_chaste_interface__sodium_channel_h_gate__h) - CHASTE_CONST(0.10000000000000001) * var_x11 * var_chaste_interface__sodium_channel_h_gate__h / CHASTE_MATH::Pow(var_x12, 2); + rJacobian[3] = (1 - var_chaste_interface__potassium_channel_n_gate__n) * ((var_x14) ? (CHASTE_CONST(0.0050000000000000001)) : (-CHASTE_CONST(0.01) * var_x17 - CHASTE_CONST(0.01) * var_x13 * var_x15 / CHASTE_MATH::Pow(var_x16, 2))) - CHASTE_CONST(0.0015625000000000001) * var_x18 * var_chaste_interface__potassium_channel_n_gate__n; + rJacobian[4] = mSetVoltageDerivativeToZero ? CHASTE_CONST(0.0) : (-3 * var_x2 * CHASTE_MATH::Pow(var_chaste_interface__sodium_channel_m_gate__m, 2) * mParameters[1] * var_chaste_interface__sodium_channel_h_gate__h); + rJacobian[5] = -((var_x5) ? (CHASTE_CONST(3.5) + CHASTE_CONST(0.050000000000000003) * var_chaste_interface__membrane__V) : (-var_x4 * var_x8)) - 4 * var_x9; + rJacobian[6] = mSetVoltageDerivativeToZero ? CHASTE_CONST(0.0) : (-var_x1 * var_x2); + rJacobian[7] = -1 / var_x12 - CHASTE_CONST(0.070000000000000007) * var_x10; + rJacobian[8] = mSetVoltageDerivativeToZero ? CHASTE_CONST(0.0) : (-4 * var_x0 * CHASTE_MATH::Pow(var_chaste_interface__potassium_channel_n_gate__n, 3) * (87 + var_chaste_interface__membrane__V) * mParameters[3]); + rJacobian[9] = -((var_x14) ? (CHASTE_CONST(0.42499999999999999) + CHASTE_CONST(0.0050000000000000001) * var_chaste_interface__membrane__V) : (-CHASTE_CONST(0.099999999999999992) * var_x13 * var_x17)) - CHASTE_CONST(0.125) * var_x18; +} + +#include "ChasteCpuMacros.hpp" +#endif // CELLHODGKIN_HUXLEY_SQUID_AXON_MODEL_1952_MODIFIEDFROMCELLMLCVODEKERNELS_HPP_ \ No newline at end of file diff --git a/chaste_codegen/data/tests/chaste_reference_models/GRL1/dynamic_demir_model_1994.cpp b/chaste_codegen/data/tests/chaste_reference_models/GRL1/dynamic_demir_model_1994.cpp index 4be991895..b519d575d 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/GRL1/dynamic_demir_model_1994.cpp +++ b/chaste_codegen/data/tests/chaste_reference_models/GRL1/dynamic_demir_model_1994.cpp @@ -21,6 +21,8 @@ #include "HeartConfig.hpp" #include "IsNan.hpp" #include "MathsCustomFunctions.hpp" +#include "ChasteMathDeviceNamespaces.hpp" +#include "ChasteCpuMacros.hpp" @@ -41,12 +43,12 @@ 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] + this->mParameters[0] = CHASTE_CONST(0.021149999999999999); // (var_L_type_Ca_channel__g_Ca_L) [microS] + this->mParameters[1] = CHASTE_CONST(5.5000000000000002e-5); // (var_membrane__Cm) [microF] + this->mParameters[2] = CHASTE_CONST(0.0069300000000000004); // (var_delayed_rectifying_potassium_current__g_K_max) [microS] + this->mParameters[3] = CHASTE_CONST(0.0034399999999999999); // (var_sodium_current__P_Na) [mul_per_second] + this->mParameters[4] = CHASTE_CONST(0.0128821); // (var_hyperpolarisation_activated_current__g_f_K) [microS] + this->mParameters[5] = CHASTE_CONST(0.0067478); // (var_hyperpolarisation_activated_current__g_f_Na) [microS] } Dynamicdemir_model_1994FromCellMLGRL1::~Dynamicdemir_model_1994FromCellMLGRL1() @@ -93,7 +95,7 @@ // 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -128,47 +130,47 @@ 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_L_type_Ca_channel__E_Ca_L = CHASTE_CONST(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_T_type_Ca_channel__g_Ca_T = CHASTE_CONST(0.02521); // microS + const double var_calcium_pump_current__i_Ca_P_max = CHASTE_CONST(0.02869); // nanoA + const double var_cleft_space_equations__K_b = CHASTE_CONST(5.4000000000000004); // millimolar + const double var_delayed_rectifying_potassium_current__g_K = CHASTE_MATH::Pow(var_cleft_space_equations__K_b, CHASTE_CONST(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 / (CHASTE_CONST(0.00040000000000000002) + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i); // nanoA + const double var_linear_background_current__g_B_Ca = CHASTE_CONST(3.6399999999999997e-5); // microS + const double var_linear_background_current__g_B_K = CHASTE_CONST(6.9400000000000006e-5); // microS + const double var_linear_background_current__g_B_Na = CHASTE_CONST(0.00016000000000000001); // microS + const double var_membrane__F = CHASTE_CONST(96485.341499999995); // coulomb_per_mole + const double var_membrane__R = CHASTE_CONST(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_L_type_Ca_channel_d_gate__d_L_infinity = 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.3500000000000001) - CHASTE_CONST(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) * (CHASTE_CONST(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 = CHASTE_CONST(0.001) * CHASTE_CAP() * 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_K = CHASTE_MATH::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 = CHASTE_MATH::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_hyperpolarisation_activated_current__i_f_converted = CHASTE_CONST(0.001) * CHASTE_CAP() * var_hyperpolarisation_activated_current__i_f / mParameters[1]; // uA_per_cm2 + const double var_reversal_potentials__E_Ca = CHASTE_CONST(0.5) * var_membrane__R * var_membrane__T * CHASTE_MATH::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_reversal_potentials__E_K = var_membrane__R * var_membrane__T * CHASTE_MATH::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_delayed_rectifying_potassium_current__i_K_converted = CHASTE_CONST(0.001) * CHASTE_CAP() * 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_reversal_potentials__E_Na = var_membrane__R * var_membrane__T * CHASTE_MATH::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 var_sodium_calcium_pump__K_NaCa = CHASTE_CONST(1.2480000000000001e-5); // nanoA + const double var_sodium_calcium_pump__d_NaCa = CHASTE_CONST(0.0001); // dimensionless + const double var_sodium_calcium_pump__gamma = CHASTE_CONST(0.5); // dimensionless + const double var_sodium_calcium_pump__i_NaCa = (CHASTE_MATH::Pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_chaste_interface__cleft_space_equations__Ca_c * CHASTE_MATH::Exp(CHASTE_CONST(0.037429999999999998) * var_chaste_interface__membrane__V * var_sodium_calcium_pump__gamma) - CHASTE_MATH::Pow(var_chaste_interface__cleft_space_equations__Na_c, 3) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i * CHASTE_MATH::Exp(CHASTE_CONST(0.037429999999999998) * (-1 + var_sodium_calcium_pump__gamma) * var_chaste_interface__membrane__V)) * var_sodium_calcium_pump__K_NaCa / (1 + (CHASTE_MATH::Pow(var_chaste_interface__cleft_space_equations__Na_c, 3) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i + CHASTE_MATH::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 = CHASTE_MATH::Pow(var_membrane__F, 2) * CHASTE_MATH::Pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + CHASTE_MATH::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 + CHASTE_MATH::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 = CHASTE_CONST(0.001) * CHASTE_CAP() * var_sodium_current__i_Na / mParameters[1]; // uA_per_cm2 + const double var_sodium_potassium_pump__K_m_K = CHASTE_CONST(0.621); // millimolar + const double var_sodium_potassium_pump__K_m_Na = CHASTE_CONST(5.46); // millimolar + const double var_sodium_potassium_pump__i_NaK_max = CHASTE_CONST(0.21920000000000001); // nanoA + const double var_sodium_potassium_pump__i_NaK = CHASTE_CONST(1.6000000000000001) * CHASTE_MATH::Pow(var_chaste_interface__cleft_space_equations__K_c, 2) * CHASTE_MATH::Pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_sodium_potassium_pump__i_NaK_max / ((CHASTE_CONST(1.5) + CHASTE_MATH::Exp(-CHASTE_CONST(1.5) - CHASTE_CONST(0.025000000000000001) * var_chaste_interface__membrane__V)) * CHASTE_MATH::Pow((var_chaste_interface__cleft_space_equations__K_c + var_sodium_potassium_pump__K_m_K), 2) * CHASTE_MATH::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] + CHASTE_CONST(0.001) * CHASTE_CAP() * var_T_type_Ca_channel__i_Ca_T + CHASTE_CONST(0.001) * CHASTE_CAP() * var_calcium_pump_current__i_Ca_P + CHASTE_CONST(0.001) * CHASTE_CAP() * var_linear_background_current__i_B + CHASTE_CONST(0.001) * CHASTE_CAP() * var_sodium_calcium_pump__i_NaCa + CHASTE_CONST(0.001) * CHASTE_CAP() * 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)); @@ -182,7 +184,7 @@ const double delta = 1e-8; double d_dt_chaste_interface_var_membrane__V; - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -219,44 +221,44 @@ // Mathematics - const double var_L_type_Ca_channel__E_Ca_L = 46.399999999999999; // millivolt + const double var_L_type_Ca_channel__E_Ca_L = CHASTE_CONST(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_T_type_Ca_channel__g_Ca_T = CHASTE_CONST(0.02521); // microS + const double var_calcium_pump_current__i_Ca_P_max = CHASTE_CONST(0.02869); // nanoA + const double var_cleft_space_equations__K_b = CHASTE_CONST(5.4000000000000004); // millimolar + const double var_delayed_rectifying_potassium_current__g_K = CHASTE_MATH::Pow(var_cleft_space_equations__K_b, CHASTE_CONST(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 / (CHASTE_CONST(0.00040000000000000002) + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i); // nanoA + const double var_linear_background_current__g_B_Ca = CHASTE_CONST(3.6399999999999997e-5); // microS + const double var_linear_background_current__g_B_K = CHASTE_CONST(6.9400000000000006e-5); // microS + const double var_linear_background_current__g_B_Na = CHASTE_CONST(0.00016000000000000001); // microS + const double var_membrane__F = CHASTE_CONST(96485.341499999995); // coulomb_per_mole + const double var_membrane__R = CHASTE_CONST(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_d_gate__d_L_infinity = 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.3500000000000001) - CHASTE_CONST(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) * (CHASTE_CONST(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_K = CHASTE_MATH::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 = CHASTE_MATH::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_reversal_potentials__E_Ca = CHASTE_CONST(0.5) * var_membrane__R * var_membrane__T * CHASTE_MATH::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_reversal_potentials__E_K = var_membrane__R * var_membrane__T * CHASTE_MATH::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_reversal_potentials__E_Na = var_membrane__R * var_membrane__T * CHASTE_MATH::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_sodium_calcium_pump__K_NaCa = CHASTE_CONST(1.2480000000000001e-5); // nanoA + const double var_sodium_calcium_pump__d_NaCa = CHASTE_CONST(0.0001); // dimensionless + const double var_sodium_calcium_pump__gamma = CHASTE_CONST(0.5); // dimensionless + const double var_sodium_calcium_pump__i_NaCa = (CHASTE_MATH::Pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_chaste_interface__cleft_space_equations__Ca_c * CHASTE_MATH::Exp(CHASTE_CONST(0.037429999999999998) * var_chaste_interface__membrane__V * var_sodium_calcium_pump__gamma) - CHASTE_MATH::Pow(var_chaste_interface__cleft_space_equations__Na_c, 3) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i * CHASTE_MATH::Exp(CHASTE_CONST(0.037429999999999998) * (-1 + var_sodium_calcium_pump__gamma) * var_chaste_interface__membrane__V)) * var_sodium_calcium_pump__K_NaCa / (1 + (CHASTE_MATH::Pow(var_chaste_interface__cleft_space_equations__Na_c, 3) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i + CHASTE_MATH::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 = CHASTE_MATH::Pow(var_membrane__F, 2) * CHASTE_MATH::Pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + CHASTE_MATH::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 + CHASTE_MATH::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 = CHASTE_CONST(0.621); // millimolar + const double var_sodium_potassium_pump__K_m_Na = CHASTE_CONST(5.46); // millimolar + const double var_sodium_potassium_pump__i_NaK_max = CHASTE_CONST(0.21920000000000001); // nanoA + const double var_sodium_potassium_pump__i_NaK = CHASTE_CONST(1.6000000000000001) * CHASTE_MATH::Pow(var_chaste_interface__cleft_space_equations__K_c, 2) * CHASTE_MATH::Pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_sodium_potassium_pump__i_NaK_max / ((CHASTE_CONST(1.5) + CHASTE_MATH::Exp(-CHASTE_CONST(1.5) - CHASTE_CONST(0.025000000000000001) * var_chaste_interface__membrane__V)) * CHASTE_MATH::Pow((var_chaste_interface__cleft_space_equations__K_c + var_sodium_potassium_pump__K_m_K), 2) * CHASTE_MATH::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 + d_dt_chaste_interface_var_membrane__V = CHASTE_CONST(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; @@ -276,7 +278,7 @@ std::vector& rY = rGetStateVariables(); const double delta = 1e-8; - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -333,155 +335,155 @@ // 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_L_type_Ca_channel__E_Ca_L = CHASTE_CONST(46.399999999999999); // millivolt + const double var_SR_Ca_uptake_and_release__alpha_rel = CHASTE_CONST(0.5); // nanoA_per_millimolar + const double var_SR_Ca_uptake_and_release__alpha_up = CHASTE_CONST(0.080000000000000002); // nanoA + const double var_SR_Ca_uptake_and_release__beta_up = CHASTE_CONST(0.071999999999999995); // nanoA + const double var_SR_Ca_uptake_and_release__i_rel = CHASTE_MATH::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 / CHASTE_MATH::Pow((CHASTE_CONST(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__k_cyca = CHASTE_CONST(5.0000000000000002e-5); // millimolar + const double var_SR_Ca_uptake_and_release__k_rel = CHASTE_CONST(0.0040000000000000001); // millimolar + const double var_SR_Ca_uptake_and_release__k_xcs = CHASTE_CONST(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 d_dt_chaste_interface_var_SR_Ca_uptake_and_release__Ca_Calse = CHASTE_CONST(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_T_type_Ca_channel__g_Ca_T = CHASTE_CONST(0.02521); // microS + const double var_calcium_pump_current__i_Ca_P_max = CHASTE_CONST(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__K_b = CHASTE_CONST(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_cleft_space_equations__Vol = CHASTE_CONST(3.4970000000000001e-6); // microLitre + const double var_cleft_space_equations__V_c = CHASTE_CONST(0.13600000000000001) * var_cleft_space_equations__Vol; // microLitre + const double var_cleft_space_equations__tau_p = CHASTE_CONST(0.01); // second + const double var_delayed_rectifying_potassium_current__g_K = CHASTE_MATH::Pow(var_cleft_space_equations__K_b, CHASTE_CONST(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_SR_Ca_uptake_and_release__r_inact = 40 + 240 * CHASTE_MATH::Pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i, 4) / CHASTE_MATH::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 = -CHASTE_CONST(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 = CHASTE_CONST(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 / (CHASTE_CONST(0.00040000000000000002) + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i); // nanoA + const double var_intracellular_concentrations_and_buffer_equations__Mg_i = CHASTE_CONST(2.5); // millimolar + const double var_intracellular_concentrations_and_buffer_equations__V_i = CHASTE_CONST(0.46500000000000002) * var_cleft_space_equations__Vol; // microLitre + const double var_SR_Ca_uptake_and_release__V_rel = CHASTE_CONST(0.0012960000000000001) * var_intracellular_concentrations_and_buffer_equations__V_i; // microLitre + const double var_SR_Ca_uptake_and_release__V_up = CHASTE_CONST(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 d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_Calmod = CHASTE_CONST(0.001) * var_intracellular_concentrations_and_buffer_equations__Ca_Calmod_orig_deriv; // 1 / millisecond + const double var_intracellular_concentrations_and_buffer_equations__F_C = CHASTE_CONST(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 d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_Trop = CHASTE_CONST(0.001) * var_intracellular_concentrations_and_buffer_equations__Ca_Trop_orig_deriv; // 1 / millisecond + const double var_intracellular_concentrations_and_buffer_equations__F_TC = CHASTE_CONST(0.031) * var_intracellular_concentrations_and_buffer_equations__phi_TC; // millimolar_per_second + const double var_intracellular_concentrations_and_buffer_equations__phi_TMgC = -CHASTE_CONST(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 d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop = CHASTE_CONST(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 = CHASTE_CONST(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 d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop = CHASTE_CONST(0.001) * var_intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop_orig_deriv; // 1 / millisecond + const double var_linear_background_current__g_B_Ca = CHASTE_CONST(3.6399999999999997e-5); // microS + const double var_linear_background_current__g_B_K = CHASTE_CONST(6.9400000000000006e-5); // microS + const double var_linear_background_current__g_B_Na = CHASTE_CONST(0.00016000000000000001); // microS + const double var_membrane__F = CHASTE_CONST(96485.341499999995); // coulomb_per_mole + const double var_SR_Ca_uptake_and_release__i_tr = CHASTE_CONST(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 = -CHASTE_CONST(11.48) * var_SR_Ca_uptake_and_release__phi_Calse + CHASTE_CONST(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 = CHASTE_CONST(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 = CHASTE_CONST(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 = CHASTE_CONST(0.001) * var_SR_Ca_uptake_and_release__Ca_up_orig_deriv; // millimolar / millisecond + const double var_membrane__R = CHASTE_CONST(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__alpha_d_L = -CHASTE_CONST(28.390000000000001) * (35 + var_chaste_interface__membrane__V) / (-1 + CHASTE_MATH::Exp(-14 - CHASTE_CONST(0.40000000000000002) * var_chaste_interface__membrane__V)) - CHASTE_CONST(84.900000000000006) * var_chaste_interface__membrane__V / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.20799999999999999) * var_chaste_interface__membrane__V)); // per_second + const double var_L_type_Ca_channel_d_gate__beta_d_L = CHASTE_CONST(11.43) * (-5 + var_chaste_interface__membrane__V) / (-1 + CHASTE_MATH::Exp(-2 + CHASTE_CONST(0.40000000000000002) * var_chaste_interface__membrane__V)); // per_second + const double var_L_type_Ca_channel_d_gate__d_L_infinity = 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.3500000000000001) - CHASTE_CONST(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) * (CHASTE_CONST(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 d_dt_chaste_interface_var_L_type_Ca_channel_d_gate__d_L = CHASTE_CONST(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 = CHASTE_CONST(3.75) * (28 + var_chaste_interface__membrane__V) / (-1 + CHASTE_MATH::Exp(7 + CHASTE_CONST(0.25) * var_chaste_interface__membrane__V)); // per_second + const double var_L_type_Ca_channel_f_gate__beta_f_L = 30 / (1 + CHASTE_MATH::Exp(-7 - CHASTE_CONST(0.25) * var_chaste_interface__membrane__V)); // per_second + const double var_L_type_Ca_channel_f_gate__f_L_infinity = 1 / (1 + CHASTE_MATH::Exp(6 + CHASTE_CONST(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 d_dt_chaste_interface_var_L_type_Ca_channel_f_gate__f_L = CHASTE_CONST(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 * CHASTE_MATH::Exp(-CHASTE_CONST(3.2000000000000002) + CHASTE_CONST(0.080000000000000002) * var_chaste_interface__membrane__V) + 240 * CHASTE_MATH::Pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i, 4) / CHASTE_MATH::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 = CHASTE_CONST(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 = CHASTE_CONST(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 d_dt_chaste_interface_var_SR_Ca_uptake_and_release__F2 = CHASTE_CONST(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__alpha_d_T = 1068 * CHASTE_MATH::Exp(CHASTE_CONST(0.87666666666666671) + CHASTE_CONST(0.033333333333333333) * var_chaste_interface__membrane__V); // per_second + const double var_T_type_Ca_channel_d_gate__beta_d_T = 1068 * CHASTE_MATH::Exp(-CHASTE_CONST(0.87666666666666671) - CHASTE_CONST(0.033333333333333333) * var_chaste_interface__membrane__V); // per_second + const double var_T_type_Ca_channel_d_gate__d_T_infinity = 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(4.3833333333333337) - CHASTE_CONST(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 d_dt_chaste_interface_var_T_type_Ca_channel_d_gate__d_T = CHASTE_CONST(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 = CHASTE_CONST(15.300000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(0.74069627851140463) - CHASTE_CONST(0.012004801920768308) * var_chaste_interface__membrane__V); // per_second + const double var_T_type_Ca_channel_f_gate__beta_f_T = 15 * CHASTE_MATH::Exp(CHASTE_CONST(4.0117035110533159) + CHASTE_CONST(0.065019505851755519) * var_chaste_interface__membrane__V); // per_second + const double var_T_type_Ca_channel_f_gate__f_T_infinity = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(11.017857142857144) + CHASTE_CONST(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 d_dt_chaste_interface_var_T_type_Ca_channel_f_gate__f_T = CHASTE_CONST(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 + CHASTE_MATH::Exp(-CHASTE_CONST(0.68918918918918914) - CHASTE_CONST(0.13513513513513511) * var_chaste_interface__membrane__V)); // dimensionless + const double var_delayed_rectifying_potassium_current_P_a_gate__tau_P_a = 1 / (17 * CHASTE_MATH::Exp(CHASTE_CONST(0.039800000000000002) * var_chaste_interface__membrane__V) + CHASTE_CONST(2.1099999999999999) * CHASTE_MATH::Exp(-CHASTE_CONST(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 d_dt_chaste_interface_var_delayed_rectifying_potassium_current_P_a_gate__P_a = CHASTE_CONST(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 * CHASTE_MATH::Exp(-CHASTE_CONST(0.0183) * var_chaste_interface__membrane__V); // per_second + const double var_delayed_rectifying_potassium_current_P_i_gate__beta_P_i = 656 * CHASTE_MATH::Exp(CHASTE_CONST(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 d_dt_chaste_interface_var_delayed_rectifying_potassium_current_P_i_gate__P_i = CHASTE_CONST(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 = CHASTE_MATH::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 = CHASTE_MATH::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 / (CHASTE_CONST(1.6483000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(2.2219482120838472) - CHASTE_CONST(0.041101520756267988) * var_chaste_interface__membrane__V) + CHASTE_CONST(14.01055) / (CHASTE_CONST(0.69999999999999996) + CHASTE_MATH::Exp(-CHASTE_CONST(10.909090909090908) - CHASTE_CONST(0.18181818181818182) * var_chaste_interface__membrane__V))); // second + const double var_hyperpolarisation_activated_current_y_gate__y_infinity = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(8.0222222222222221) + CHASTE_CONST(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 d_dt_chaste_interface_var_hyperpolarisation_activated_current_y_gate__y = CHASTE_CONST(0.001) * var_hyperpolarisation_activated_current_y_gate__y_orig_deriv; // 1 / millisecond + const double var_reversal_potentials__E_Ca = CHASTE_CONST(0.5) * var_membrane__R * var_membrane__T * CHASTE_MATH::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_reversal_potentials__E_K = var_membrane__R * var_membrane__T * CHASTE_MATH::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_reversal_potentials__E_Na = var_membrane__R * var_membrane__T * CHASTE_MATH::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_calcium_pump__K_NaCa = CHASTE_CONST(1.2480000000000001e-5); // nanoA + const double var_sodium_calcium_pump__d_NaCa = CHASTE_CONST(0.0001); // dimensionless + const double var_sodium_calcium_pump__gamma = CHASTE_CONST(0.5); // dimensionless + const double var_sodium_calcium_pump__i_NaCa = (CHASTE_MATH::Pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_chaste_interface__cleft_space_equations__Ca_c * CHASTE_MATH::Exp(CHASTE_CONST(0.037429999999999998) * var_chaste_interface__membrane__V * var_sodium_calcium_pump__gamma) - CHASTE_MATH::Pow(var_chaste_interface__cleft_space_equations__Na_c, 3) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i * CHASTE_MATH::Exp(CHASTE_CONST(0.037429999999999998) * (-1 + var_sodium_calcium_pump__gamma) * var_chaste_interface__membrane__V)) * var_sodium_calcium_pump__K_NaCa / (1 + (CHASTE_MATH::Pow(var_chaste_interface__cleft_space_equations__Na_c, 3) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i + CHASTE_MATH::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 + CHASTE_CONST(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 = CHASTE_CONST(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 + CHASTE_CONST(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 = CHASTE_CONST(0.001) * var_intracellular_concentrations_and_buffer_equations__Ca_i_orig_deriv; // millimolar / millisecond + const double var_sodium_current_h_gate__alpha_h1 = 165 * CHASTE_MATH::Exp(-CHASTE_CONST(8.0396825396825395) - CHASTE_CONST(0.079365079365079361) * var_chaste_interface__membrane__V); // per_second + const double var_sodium_current_h_gate__beta_h1 = 12360 / (1 + 320 * CHASTE_MATH::Exp(-CHASTE_CONST(8.0396825396825395) - CHASTE_CONST(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 d_dt_chaste_interface_var_sodium_current_h_gate__h1 = CHASTE_CONST(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 d_dt_chaste_interface_var_sodium_current_h_gate__h2 = CHASTE_CONST(0.001) * var_sodium_current_h_gate__h2_orig_deriv; // 1 / millisecond + const double var_sodium_current_m_gate__alpha_m = -824 * (CHASTE_CONST(51.899999999999999) + var_chaste_interface__membrane__V) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(5.8314606741573032) - CHASTE_CONST(0.11235955056179775) * var_chaste_interface__membrane__V)); // per_second + const double var_sodium_current_m_gate__beta_m = 32960 * CHASTE_MATH::Exp(-CHASTE_CONST(5.8314606741573032) - CHASTE_CONST(0.11235955056179775) * var_chaste_interface__membrane__V); // per_second + const double var_sodium_current__i_Na = CHASTE_MATH::Pow(var_membrane__F, 2) * CHASTE_MATH::Pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + CHASTE_MATH::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 + CHASTE_MATH::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__tau_m = CHASTE_CONST(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 d_dt_chaste_interface_var_sodium_current_m_gate__m = CHASTE_CONST(0.001) * var_sodium_current_m_gate__m_orig_deriv; // 1 / millisecond + const double var_sodium_potassium_pump__K_m_K = CHASTE_CONST(0.621); // millimolar + const double var_sodium_potassium_pump__K_m_Na = CHASTE_CONST(5.46); // millimolar + const double var_sodium_potassium_pump__i_NaK_max = CHASTE_CONST(0.21920000000000001); // nanoA + const double var_sodium_potassium_pump__i_NaK = CHASTE_CONST(1.6000000000000001) * CHASTE_MATH::Pow(var_chaste_interface__cleft_space_equations__K_c, 2) * CHASTE_MATH::Pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_sodium_potassium_pump__i_NaK_max / ((CHASTE_CONST(1.5) + CHASTE_MATH::Exp(-CHASTE_CONST(1.5) - CHASTE_CONST(0.025000000000000001) * var_chaste_interface__membrane__V)) * CHASTE_MATH::Pow((var_chaste_interface__cleft_space_equations__K_c + var_sodium_potassium_pump__K_m_K), 2) * CHASTE_MATH::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 d_dt_chaste_interface_var_cleft_space_equations__K_c = CHASTE_CONST(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 d_dt_chaste_interface_var_cleft_space_equations__Na_c = CHASTE_CONST(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 d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__K_i = CHASTE_CONST(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 + const double d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Na_i = CHASTE_CONST(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); @@ -803,7 +805,7 @@ 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -840,44 +842,44 @@ // Mathematics - const double var_L_type_Ca_channel__E_Ca_L = 46.399999999999999; // millivolt + const double var_L_type_Ca_channel__E_Ca_L = CHASTE_CONST(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_T_type_Ca_channel__g_Ca_T = CHASTE_CONST(0.02521); // microS + const double var_calcium_pump_current__i_Ca_P_max = CHASTE_CONST(0.02869); // nanoA + const double var_cleft_space_equations__K_b = CHASTE_CONST(5.4000000000000004); // millimolar + const double var_delayed_rectifying_potassium_current__g_K = CHASTE_MATH::Pow(var_cleft_space_equations__K_b, CHASTE_CONST(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 / (CHASTE_CONST(0.00040000000000000002) + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i); // nanoA + const double var_linear_background_current__g_B_Ca = CHASTE_CONST(3.6399999999999997e-5); // microS + const double var_linear_background_current__g_B_K = CHASTE_CONST(6.9400000000000006e-5); // microS + const double var_linear_background_current__g_B_Na = CHASTE_CONST(0.00016000000000000001); // microS + const double var_membrane__F = CHASTE_CONST(96485.341499999995); // coulomb_per_mole + const double var_membrane__R = CHASTE_CONST(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_d_gate__d_L_infinity = 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.3500000000000001) - CHASTE_CONST(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) * (CHASTE_CONST(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_K = CHASTE_MATH::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 = CHASTE_MATH::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_reversal_potentials__E_Ca = CHASTE_CONST(0.5) * var_membrane__R * var_membrane__T * CHASTE_MATH::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_reversal_potentials__E_K = var_membrane__R * var_membrane__T * CHASTE_MATH::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_reversal_potentials__E_Na = var_membrane__R * var_membrane__T * CHASTE_MATH::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_sodium_calcium_pump__K_NaCa = CHASTE_CONST(1.2480000000000001e-5); // nanoA + const double var_sodium_calcium_pump__d_NaCa = CHASTE_CONST(0.0001); // dimensionless + const double var_sodium_calcium_pump__gamma = CHASTE_CONST(0.5); // dimensionless + const double var_sodium_calcium_pump__i_NaCa = (CHASTE_MATH::Pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_chaste_interface__cleft_space_equations__Ca_c * CHASTE_MATH::Exp(CHASTE_CONST(0.037429999999999998) * var_chaste_interface__membrane__V * var_sodium_calcium_pump__gamma) - CHASTE_MATH::Pow(var_chaste_interface__cleft_space_equations__Na_c, 3) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i * CHASTE_MATH::Exp(CHASTE_CONST(0.037429999999999998) * (-1 + var_sodium_calcium_pump__gamma) * var_chaste_interface__membrane__V)) * var_sodium_calcium_pump__K_NaCa / (1 + (CHASTE_MATH::Pow(var_chaste_interface__cleft_space_equations__Na_c, 3) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i + CHASTE_MATH::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 = CHASTE_MATH::Pow(var_membrane__F, 2) * CHASTE_MATH::Pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + CHASTE_MATH::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 + CHASTE_MATH::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 = CHASTE_CONST(0.621); // millimolar + const double var_sodium_potassium_pump__K_m_Na = CHASTE_CONST(5.46); // millimolar + const double var_sodium_potassium_pump__i_NaK_max = CHASTE_CONST(0.21920000000000001); // nanoA + const double var_sodium_potassium_pump__i_NaK = CHASTE_CONST(1.6000000000000001) * CHASTE_MATH::Pow(var_chaste_interface__cleft_space_equations__K_c, 2) * CHASTE_MATH::Pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_sodium_potassium_pump__i_NaK_max / ((CHASTE_CONST(1.5) + CHASTE_MATH::Exp(-CHASTE_CONST(1.5) - CHASTE_CONST(0.025000000000000001) * var_chaste_interface__membrane__V)) * CHASTE_MATH::Pow((var_chaste_interface__cleft_space_equations__K_c + var_sodium_potassium_pump__K_m_K), 2) * CHASTE_MATH::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 + d_dt_chaste_interface_var_membrane__V = CHASTE_CONST(0.001) * var_membrane__V_orig_deriv; // millivolt / millisecond return d_dt_chaste_interface_var_membrane__V; } @@ -887,7 +889,7 @@ double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -921,59 +923,59 @@ // Units: millimolar; Initial value: 5.389014 - const double var_x0 = pow(var_chaste_interface__hyperpolarisation_activated_current_y_gate__y, 2); + const double var_x0 = CHASTE_MATH::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_x3 = CHASTE_CONST(0.16666666666666666) * var_chaste_interface__membrane__V; + const double var_x4 = CHASTE_MATH::Exp(-CHASTE_CONST(2.3500000000000001) - var_x3); const double var_x5 = 1 + var_x4; const double var_x6 = 1 / var_x5; const double var_x7 = 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_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_x9 = CHASTE_MATH::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_x11 = CHASTE_MATH::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_x13 = 1 + CHASTE_CONST(0.0001) * var_x10 + CHASTE_CONST(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_x15 = CHASTE_CONST(0.018714999999999999) * var_chaste_interface__membrane__V; + const double var_x16 = CHASTE_MATH::Exp(-var_x15); const double var_x17 = var_x10 * var_x16; - const double var_x18 = exp(var_x15); + const double var_x18 = CHASTE_MATH::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_x20 = var_x14 * (CHASTE_CONST(0.018714999999999999) * var_x17 + CHASTE_CONST(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 = pow(var_x5, (-2)); - const double var_x24 = 46.399999999999999 - var_chaste_interface__membrane__V; - const double var_x25 = exp(-1.5 - 0.025000000000000001 * var_chaste_interface__membrane__V); - const double var_x26 = 0.621 + var_chaste_interface__cleft_space_equations__K_c; - const double var_x27 = pow(var_x26, (-2)); - const double var_x28 = pow(var_chaste_interface__cleft_space_equations__K_c, 2); - const double var_x29 = 1 + 0.18315018315018314 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i; - const double var_x30 = pow(var_x29, (-3)); - const double var_x31 = pow((1 + 0.66666666666666663 * var_x25), (-2)); + const double var_x23 = CHASTE_MATH::Pow(var_x5, (-2)); + const double var_x24 = CHASTE_CONST(46.399999999999999) - var_chaste_interface__membrane__V; + const double var_x25 = CHASTE_MATH::Exp(-CHASTE_CONST(1.5) - CHASTE_CONST(0.025000000000000001) * var_chaste_interface__membrane__V); + const double var_x26 = CHASTE_CONST(0.621) + var_chaste_interface__cleft_space_equations__K_c; + const double var_x27 = CHASTE_MATH::Pow(var_x26, (-2)); + const double var_x28 = CHASTE_MATH::Pow(var_chaste_interface__cleft_space_equations__K_c, 2); + const double var_x29 = 1 + CHASTE_CONST(0.18315018315018314) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i; + const double var_x30 = CHASTE_MATH::Pow(var_x29, (-3)); + const double var_x31 = CHASTE_MATH::Pow((1 + CHASTE_CONST(0.66666666666666663) * var_x25), (-2)); const double var_x32 = var_x11 * var_x25 * var_x27 * var_x28 * var_x30 * var_x31; - const double var_x33 = 0.037433890822745473 * var_chaste_interface__membrane__V; + const double var_x33 = CHASTE_CONST(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_x36 = CHASTE_MATH::Exp(var_x33 - 1 * CHASTE_MATH::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_x39 = CHASTE_MATH::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_x42 = CHASTE_MATH::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_x44 = CHASTE_CONST(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 = pow(var_x40, (-2)); + const double var_x48 = CHASTE_MATH::Pow(var_x40, (-2)); const double var_x49 = 1 / mParameters[1]; - const double var_x50 = 0.001 * var_x49; + const double var_x50 = CHASTE_CONST(0.001) * var_x49; - partialF = var_x50 * (-0.00026580000000000001 - var_x1 - var_x2 - 0.02521 * var_x8 - 1.2480000000000001e-5 * var_x20 - 135.20454067538472 * var_x47 - 2.7046577588354044 * var_x22 - 2.3940879178437715e-5 * var_x32 + (-var_x7 - 0.095000000000000001 * var_x6) * mParameters[0] - var_x38 * var_x44 + 0.015833333333333335 * var_x23 * var_x24 * var_x4 * mParameters[0] + 135.20454067538472 * var_x37 * var_x39 * var_x42 * var_x48 * 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); + partialF = var_x50 * (-CHASTE_CONST(0.00026580000000000001) - var_x1 - var_x2 - CHASTE_CONST(0.02521) * var_x8 - CHASTE_CONST(1.2480000000000001e-5) * var_x20 - CHASTE_CONST(135.20454067538472) * var_x47 - CHASTE_CONST(2.7046577588354044) * var_x22 - CHASTE_CONST(2.3940879178437715e-5) * var_x32 + (-var_x7 - CHASTE_CONST(0.095000000000000001) * var_x6) * mParameters[0] - var_x38 * var_x44 + CHASTE_CONST(0.015833333333333335) * var_x23 * var_x24 * var_x4 * mParameters[0] + CHASTE_CONST(135.20454067538472) * var_x37 * var_x39 * var_x42 * var_x48 * 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 { @@ -988,7 +990,7 @@ 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -1023,45 +1025,45 @@ // 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_L_type_Ca_channel__E_Ca_L = CHASTE_CONST(46.399999999999999); // millivolt + const double var_SR_Ca_uptake_and_release__alpha_rel = CHASTE_CONST(0.5); // nanoA_per_millimolar + const double var_SR_Ca_uptake_and_release__alpha_up = CHASTE_CONST(0.080000000000000002); // nanoA + const double var_SR_Ca_uptake_and_release__beta_up = CHASTE_CONST(0.071999999999999995); // nanoA + const double var_SR_Ca_uptake_and_release__i_rel = CHASTE_MATH::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 / CHASTE_MATH::Pow((CHASTE_CONST(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__k_cyca = CHASTE_CONST(5.0000000000000002e-5); // millimolar + const double var_SR_Ca_uptake_and_release__k_xcs = CHASTE_CONST(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_T_type_Ca_channel__g_Ca_T = CHASTE_CONST(0.02521); // microS + const double var_calcium_pump_current__i_Ca_P_max = CHASTE_CONST(0.02869); // nanoA + const double var_cleft_space_equations__Vol = CHASTE_CONST(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_calcium_pump_current__i_Ca_P = var_calcium_pump_current__i_Ca_P_max * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i / (CHASTE_CONST(0.00040000000000000002) + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i); // nanoA + const double var_intracellular_concentrations_and_buffer_equations__V_i = CHASTE_CONST(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__F_C = CHASTE_CONST(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__F_TC = CHASTE_CONST(0.031) * var_intracellular_concentrations_and_buffer_equations__phi_TC; // millimolar_per_second + const double var_intracellular_concentrations_and_buffer_equations__phi_TMgC = -CHASTE_CONST(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 = CHASTE_CONST(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_linear_background_current__g_B_Ca = CHASTE_CONST(3.6399999999999997e-5); // microS + const double var_membrane__F = CHASTE_CONST(96485.341499999995); // coulomb_per_mole + const double var_membrane__R = CHASTE_CONST(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_d_gate__d_L_infinity = 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.3500000000000001) - CHASTE_CONST(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) * (CHASTE_CONST(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_reversal_potentials__E_Ca = CHASTE_CONST(0.5) * var_membrane__R * var_membrane__T * CHASTE_MATH::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 + const double var_sodium_calcium_pump__K_NaCa = CHASTE_CONST(1.2480000000000001e-5); // nanoA + const double var_sodium_calcium_pump__d_NaCa = CHASTE_CONST(0.0001); // dimensionless + const double var_sodium_calcium_pump__gamma = CHASTE_CONST(0.5); // dimensionless + const double var_sodium_calcium_pump__i_NaCa = (CHASTE_MATH::Pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_chaste_interface__cleft_space_equations__Ca_c * CHASTE_MATH::Exp(CHASTE_CONST(0.037429999999999998) * var_chaste_interface__membrane__V * var_sodium_calcium_pump__gamma) - CHASTE_MATH::Pow(var_chaste_interface__cleft_space_equations__Na_c, 3) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i * CHASTE_MATH::Exp(CHASTE_CONST(0.037429999999999998) * (-1 + var_sodium_calcium_pump__gamma) * var_chaste_interface__membrane__V)) * var_sodium_calcium_pump__K_NaCa / (1 + (CHASTE_MATH::Pow(var_chaste_interface__cleft_space_equations__Na_c, 3) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i + CHASTE_MATH::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 + CHASTE_CONST(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 = CHASTE_CONST(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; } @@ -1071,7 +1073,7 @@ double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -1093,33 +1095,33 @@ // Units: millimolar; Initial value: 16.95311 - const double var_x9 = pow(var_chaste_interface__cleft_space_equations__Na_c, 3); + const double var_x9 = CHASTE_MATH::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_x11 = CHASTE_MATH::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_x13 = 1 + CHASTE_CONST(0.0001) * var_x10 + CHASTE_CONST(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_x15 = CHASTE_CONST(0.018714999999999999) * var_chaste_interface__membrane__V; + const double var_x16 = CHASTE_MATH::Exp(-var_x15); const double var_x17 = var_x10 * var_x16; - const double var_x18 = exp(var_x15); + const double var_x18 = CHASTE_MATH::Exp(var_x15); const double var_x19 = var_x12 * var_x18; - const double var_x51 = 0.00040000000000000002 + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; + const double var_x51 = CHASTE_CONST(0.00040000000000000002) + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; const double var_x52 = 1 / var_x51; const double var_x53 = 1 / var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; - const double var_x54 = pow(var_x51, (-2)); + const double var_x54 = CHASTE_MATH::Pow(var_x51, (-2)); const double var_x57 = var_x16 * var_x9; - const double var_x58 = pow(var_x13, (-2)); + const double var_x58 = CHASTE_MATH::Pow(var_x13, (-2)); const double var_x59 = var_x19 - var_x17; const double var_x60 = var_x58 * var_x59; - const double var_x104 = 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_x104 = CHASTE_CONST(9.5000000000000005e-5) + CHASTE_CONST(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_x105 = 1 / var_x104; - const double var_x106 = pow(var_x104, (-2)); - const double var_x107 = 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_x108 = 7.9543493648916639e-12 * var_x60; - const double var_x109 = 7.9543493648916641e-8 * var_x14; + const double var_x106 = CHASTE_MATH::Pow(var_x104, (-2)); + const double var_x107 = CHASTE_CONST(0.080000000000000002) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i - CHASTE_CONST(1.4727272727272728e-7) * var_chaste_interface__SR_Ca_uptake_and_release__Ca_up; + const double var_x108 = CHASTE_CONST(7.9543493648916639e-12) * var_x60; + const double var_x109 = CHASTE_CONST(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_x52 - 0.00025494709502857897 * var_x105 - 1.5494105166262771e-6 * var_x53 - var_x108 * var_x9 - var_x109 * var_x57 + 9.1430401954624137e-5 * var_x54 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i + 0.0031868386878572369 * var_x106 * var_x107; + partialF = -CHASTE_CONST(21.173500000000001) + CHASTE_CONST(11.609999999999999) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Calmod + CHASTE_CONST(1.5654999999999999) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Trop + CHASTE_CONST(7.9980000000000002) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop + CHASTE_CONST(7.9980000000000002) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop - CHASTE_CONST(9.1430401954624137e-5) * var_x52 - CHASTE_CONST(0.00025494709502857897) * var_x105 - CHASTE_CONST(1.5494105166262771e-6) * var_x53 - var_x108 * var_x9 - var_x109 * var_x57 + CHASTE_CONST(9.1430401954624137e-5) * var_x54 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i + CHASTE_CONST(0.0031868386878572369) * var_x106 * var_x107; } else { @@ -1134,19 +1136,19 @@ 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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__alpha_m = -824 * (CHASTE_CONST(51.899999999999999) + var_chaste_interface__membrane__V) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(5.8314606741573032) - CHASTE_CONST(0.11235955056179775) * var_chaste_interface__membrane__V)); // per_second + const double var_sodium_current_m_gate__beta_m = 32960 * CHASTE_MATH::Exp(-CHASTE_CONST(5.8314606741573032) - CHASTE_CONST(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__tau_m = CHASTE_CONST(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 d_dt_chaste_interface_var_sodium_current_m_gate__m = CHASTE_CONST(0.001) * var_sodium_current_m_gate__m_orig_deriv; // 1 / millisecond return d_dt_chaste_interface_var_sodium_current_m_gate__m; } @@ -1156,19 +1158,19 @@ double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -49.54105 - const double var_x119 = exp(-5.8314606741573032 - 0.11235955056179775 * var_chaste_interface__membrane__V); - const double var_x120 = 51.899999999999999 + var_chaste_interface__membrane__V; + const double var_x119 = CHASTE_MATH::Exp(-CHASTE_CONST(5.8314606741573032) - CHASTE_CONST(0.11235955056179775) * var_chaste_interface__membrane__V); + const double var_x120 = CHASTE_CONST(51.899999999999999) + var_chaste_interface__membrane__V; const double var_x121 = -1 + var_x119; const double var_x122 = 1 / var_x121; const double var_x123 = 824 * var_x122; const double var_x124 = var_x120 * var_x123; const double var_x125 = 1 / (-var_x124 + 32960 * var_x119); - const double var_x129 = 1.5e-5 + var_x125; - const double var_x130 = 0.001 / var_x129; + const double var_x129 = CHASTE_CONST(1.5e-5) + var_x125; + const double var_x130 = CHASTE_CONST(0.001) / var_x129; partialF = -var_x130; } @@ -1185,19 +1187,19 @@ 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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__alpha_h1 = 165 * CHASTE_MATH::Exp(-CHASTE_CONST(8.0396825396825395) - CHASTE_CONST(0.079365079365079361) * var_chaste_interface__membrane__V); // per_second + const double var_sodium_current_h_gate__beta_h1 = 12360 / (1 + 320 * CHASTE_MATH::Exp(-CHASTE_CONST(8.0396825396825395) - CHASTE_CONST(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 + const double d_dt_chaste_interface_var_sodium_current_h_gate__h1 = CHASTE_CONST(0.001) * var_sodium_current_h_gate__h1_orig_deriv; // 1 / millisecond return d_dt_chaste_interface_var_sodium_current_h_gate__h1; } @@ -1207,14 +1209,14 @@ double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -49.54105 - const double var_x131 = exp(-8.0396825396825395 - 0.079365079365079361 * var_chaste_interface__membrane__V); + const double var_x131 = CHASTE_MATH::Exp(-CHASTE_CONST(8.0396825396825395) - CHASTE_CONST(0.079365079365079361) * var_chaste_interface__membrane__V); const double var_x132 = 1 / (1 + 320 * var_x131); - partialF = -0.16500000000000001 * var_x131 - 12.359999999999999 * var_x132; + partialF = -CHASTE_CONST(0.16500000000000001) * var_x131 - CHASTE_CONST(12.359999999999999) * var_x132; } else { @@ -1229,21 +1231,21 @@ 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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__alpha_h1 = 165 * CHASTE_MATH::Exp(-CHASTE_CONST(8.0396825396825395) - CHASTE_CONST(0.079365079365079361) * var_chaste_interface__membrane__V); // per_second + const double var_sodium_current_h_gate__beta_h1 = 12360 / (1 + 320 * CHASTE_MATH::Exp(-CHASTE_CONST(8.0396825396825395) - CHASTE_CONST(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 + const double d_dt_chaste_interface_var_sodium_current_h_gate__h2 = CHASTE_CONST(0.001) * var_sodium_current_h_gate__h2_orig_deriv; // 1 / millisecond return d_dt_chaste_interface_var_sodium_current_h_gate__h2; } @@ -1253,14 +1255,14 @@ double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -49.54105 - const double var_x131 = exp(-8.0396825396825395 - 0.079365079365079361 * var_chaste_interface__membrane__V); + const double var_x131 = CHASTE_MATH::Exp(-CHASTE_CONST(8.0396825396825395) - CHASTE_CONST(0.079365079365079361) * var_chaste_interface__membrane__V); const double var_x132 = 1 / (1 + 320 * var_x131); - partialF = -0.61799999999999999 * var_x132 - 0.0082500000000000004 * var_x131; + partialF = -CHASTE_CONST(0.61799999999999999) * var_x132 - CHASTE_CONST(0.0082500000000000004) * var_x131; } else { @@ -1275,19 +1277,19 @@ 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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__alpha_d_L = -CHASTE_CONST(28.390000000000001) * (35 + var_chaste_interface__membrane__V) / (-1 + CHASTE_MATH::Exp(-14 - CHASTE_CONST(0.40000000000000002) * var_chaste_interface__membrane__V)) - CHASTE_CONST(84.900000000000006) * var_chaste_interface__membrane__V / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.20799999999999999) * var_chaste_interface__membrane__V)); // per_second + const double var_L_type_Ca_channel_d_gate__beta_d_L = CHASTE_CONST(11.43) * (-5 + var_chaste_interface__membrane__V) / (-1 + CHASTE_MATH::Exp(-2 + CHASTE_CONST(0.40000000000000002) * var_chaste_interface__membrane__V)); // per_second + const double var_L_type_Ca_channel_d_gate__d_L_infinity = 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.3500000000000001) - CHASTE_CONST(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 + const double d_dt_chaste_interface_var_L_type_Ca_channel_d_gate__d_L = CHASTE_CONST(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; } @@ -1297,23 +1299,23 @@ double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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_x139 = CHASTE_MATH::Exp(-14 - CHASTE_CONST(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_x143 = CHASTE_MATH::Exp(-CHASTE_CONST(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_x147 = CHASTE_MATH::Exp(-2 + CHASTE_CONST(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; + partialF = CHASTE_CONST(0.028390000000000002) * var_x141 * var_x150 + CHASTE_CONST(0.084900000000000003) * var_x145 * var_chaste_interface__membrane__V - CHASTE_CONST(0.011429999999999999) * var_x149 * var_x151; } else { @@ -1328,19 +1330,19 @@ 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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__alpha_f_L = CHASTE_CONST(3.75) * (28 + var_chaste_interface__membrane__V) / (-1 + CHASTE_MATH::Exp(7 + CHASTE_CONST(0.25) * var_chaste_interface__membrane__V)); // per_second + const double var_L_type_Ca_channel_f_gate__beta_f_L = 30 / (1 + CHASTE_MATH::Exp(-7 - CHASTE_CONST(0.25) * var_chaste_interface__membrane__V)); // per_second + const double var_L_type_Ca_channel_f_gate__f_L_infinity = 1 / (1 + CHASTE_MATH::Exp(6 + CHASTE_CONST(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 d_dt_chaste_interface_var_L_type_Ca_channel_f_gate__f_L = CHASTE_CONST(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; } @@ -1350,20 +1352,20 @@ double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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_x154 = 7 + CHASTE_CONST(0.25) * var_chaste_interface__membrane__V; + const double var_x155 = CHASTE_MATH::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_x159 = CHASTE_MATH::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; + partialF = -CHASTE_CONST(0.029999999999999999) * var_x162 - CHASTE_CONST(0.0037499999999999999) * var_x157 * var_x161; } else { @@ -1378,19 +1380,19 @@ 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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__alpha_d_T = 1068 * CHASTE_MATH::Exp(CHASTE_CONST(0.87666666666666671) + CHASTE_CONST(0.033333333333333333) * var_chaste_interface__membrane__V); // per_second + const double var_T_type_Ca_channel_d_gate__beta_d_T = 1068 * CHASTE_MATH::Exp(-CHASTE_CONST(0.87666666666666671) - CHASTE_CONST(0.033333333333333333) * var_chaste_interface__membrane__V); // per_second + const double var_T_type_Ca_channel_d_gate__d_T_infinity = 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(4.3833333333333337) - CHASTE_CONST(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 d_dt_chaste_interface_var_T_type_Ca_channel_d_gate__d_T = CHASTE_CONST(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; } @@ -1400,15 +1402,15 @@ double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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); + const double var_x165 = CHASTE_CONST(0.87666666666666671) + CHASTE_CONST(0.033333333333333333) * var_chaste_interface__membrane__V; + const double var_x166 = CHASTE_MATH::Exp(-var_x165); + const double var_x167 = CHASTE_MATH::Exp(var_x165); - partialF = -1.0680000000000001 * var_x166 - 1.0680000000000001 * var_x167; + partialF = -CHASTE_CONST(1.0680000000000001) * var_x166 - CHASTE_CONST(1.0680000000000001) * var_x167; } else { @@ -1423,19 +1425,19 @@ 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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__alpha_f_T = CHASTE_CONST(15.300000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(0.74069627851140463) - CHASTE_CONST(0.012004801920768308) * var_chaste_interface__membrane__V); // per_second + const double var_T_type_Ca_channel_f_gate__beta_f_T = 15 * CHASTE_MATH::Exp(CHASTE_CONST(4.0117035110533159) + CHASTE_CONST(0.065019505851755519) * var_chaste_interface__membrane__V); // per_second + const double var_T_type_Ca_channel_f_gate__f_T_infinity = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(11.017857142857144) + CHASTE_CONST(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 d_dt_chaste_interface_var_T_type_Ca_channel_f_gate__f_T = CHASTE_CONST(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; } @@ -1445,14 +1447,14 @@ double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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); + const double var_x170 = CHASTE_MATH::Exp(-CHASTE_CONST(0.74069627851140463) - CHASTE_CONST(0.012004801920768308) * var_chaste_interface__membrane__V); + const double var_x171 = CHASTE_MATH::Exp(CHASTE_CONST(4.0117035110533159) + CHASTE_CONST(0.065019505851755519) * var_chaste_interface__membrane__V); - partialF = -0.015300000000000001 * var_x170 - 0.014999999999999999 * var_x171; + partialF = -CHASTE_CONST(0.015300000000000001) * var_x170 - CHASTE_CONST(0.014999999999999999) * var_x171; } else { @@ -1467,17 +1469,17 @@ 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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_infinity = 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.68918918918918914) - CHASTE_CONST(0.13513513513513511) * var_chaste_interface__membrane__V)); // dimensionless + const double var_delayed_rectifying_potassium_current_P_a_gate__tau_P_a = 1 / (17 * CHASTE_MATH::Exp(CHASTE_CONST(0.039800000000000002) * var_chaste_interface__membrane__V) + CHASTE_CONST(2.1099999999999999) * CHASTE_MATH::Exp(-CHASTE_CONST(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 d_dt_chaste_interface_var_delayed_rectifying_potassium_current_P_a_gate__P_a = CHASTE_CONST(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; } @@ -1487,14 +1489,14 @@ double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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); + const double var_x172 = CHASTE_MATH::Exp(-CHASTE_CONST(0.050999999999999997) * var_chaste_interface__membrane__V); + const double var_x173 = CHASTE_MATH::Exp(CHASTE_CONST(0.039800000000000002) * var_chaste_interface__membrane__V); - partialF = -0.0021099999999999999 * var_x172 - 0.017000000000000001 * var_x173; + partialF = -CHASTE_CONST(0.0021099999999999999) * var_x172 - CHASTE_CONST(0.017000000000000001) * var_x173; } else { @@ -1509,17 +1511,17 @@ 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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__alpha_P_i = 100 * CHASTE_MATH::Exp(-CHASTE_CONST(0.0183) * var_chaste_interface__membrane__V); // per_second + const double var_delayed_rectifying_potassium_current_P_i_gate__beta_P_i = 656 * CHASTE_MATH::Exp(CHASTE_CONST(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 d_dt_chaste_interface_var_delayed_rectifying_potassium_current_P_i_gate__P_i = CHASTE_CONST(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; } @@ -1529,14 +1531,14 @@ double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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); + const double var_x176 = CHASTE_MATH::Exp(-CHASTE_CONST(0.0183) * var_chaste_interface__membrane__V); + const double var_x177 = CHASTE_MATH::Exp(CHASTE_CONST(0.0094199999999999996) * var_chaste_interface__membrane__V); - partialF = -0.65600000000000003 * var_x177 - 0.10000000000000001 * var_x176; + partialF = -CHASTE_CONST(0.65600000000000003) * var_x177 - CHASTE_CONST(0.10000000000000001) * var_x176; } else { @@ -1551,17 +1553,17 @@ 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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__tau_y = 1 / (CHASTE_CONST(1.6483000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(2.2219482120838472) - CHASTE_CONST(0.041101520756267988) * var_chaste_interface__membrane__V) + CHASTE_CONST(14.01055) / (CHASTE_CONST(0.69999999999999996) + CHASTE_MATH::Exp(-CHASTE_CONST(10.909090909090908) - CHASTE_CONST(0.18181818181818182) * var_chaste_interface__membrane__V))); // second + const double var_hyperpolarisation_activated_current_y_gate__y_infinity = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(8.0222222222222221) + CHASTE_CONST(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 d_dt_chaste_interface_var_hyperpolarisation_activated_current_y_gate__y = CHASTE_CONST(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; } @@ -1571,16 +1573,16 @@ double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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_x180 = CHASTE_MATH::Exp(-CHASTE_CONST(2.2219482120838472) - CHASTE_CONST(0.041101520756267988) * var_chaste_interface__membrane__V); + const double var_x181 = CHASTE_MATH::Exp(-CHASTE_CONST(10.909090909090908) - CHASTE_CONST(0.18181818181818182) * var_chaste_interface__membrane__V); + const double var_x182 = CHASTE_CONST(0.69999999999999996) + var_x181; const double var_x183 = 1 / var_x182; - partialF = -0.0016483000000000001 * var_x180 - 0.01401055 * var_x183; + partialF = -CHASTE_CONST(0.0016483000000000001) * var_x180 - CHASTE_CONST(0.01401055) * var_x183; } else { @@ -1595,7 +1597,7 @@ 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -1618,26 +1620,26 @@ // 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_cleft_space_equations__Vol = CHASTE_CONST(3.4970000000000001e-6); // microLitre + const double var_intracellular_concentrations_and_buffer_equations__V_i = CHASTE_CONST(0.46500000000000002) * var_cleft_space_equations__Vol; // microLitre + const double var_linear_background_current__g_B_Na = CHASTE_CONST(0.00016000000000000001); // microS + const double var_membrane__F = CHASTE_CONST(96485.341499999995); // coulomb_per_mole + const double var_membrane__R = CHASTE_CONST(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_hyperpolarisation_activated_current__i_f_Na = CHASTE_MATH::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 * CHASTE_MATH::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_sodium_calcium_pump__K_NaCa = CHASTE_CONST(1.2480000000000001e-5); // nanoA + const double var_sodium_calcium_pump__d_NaCa = CHASTE_CONST(0.0001); // dimensionless + const double var_sodium_calcium_pump__gamma = CHASTE_CONST(0.5); // dimensionless + const double var_sodium_calcium_pump__i_NaCa = (CHASTE_MATH::Pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_chaste_interface__cleft_space_equations__Ca_c * CHASTE_MATH::Exp(CHASTE_CONST(0.037429999999999998) * var_chaste_interface__membrane__V * var_sodium_calcium_pump__gamma) - CHASTE_MATH::Pow(var_chaste_interface__cleft_space_equations__Na_c, 3) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i * CHASTE_MATH::Exp(CHASTE_CONST(0.037429999999999998) * (-1 + var_sodium_calcium_pump__gamma) * var_chaste_interface__membrane__V)) * var_sodium_calcium_pump__K_NaCa / (1 + (CHASTE_MATH::Pow(var_chaste_interface__cleft_space_equations__Na_c, 3) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i + CHASTE_MATH::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 = CHASTE_MATH::Pow(var_membrane__F, 2) * CHASTE_MATH::Pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + CHASTE_MATH::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 + CHASTE_MATH::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 = CHASTE_CONST(0.621); // millimolar + const double var_sodium_potassium_pump__K_m_Na = CHASTE_CONST(5.46); // millimolar + const double var_sodium_potassium_pump__i_NaK_max = CHASTE_CONST(0.21920000000000001); // nanoA + const double var_sodium_potassium_pump__i_NaK = CHASTE_CONST(1.6000000000000001) * CHASTE_MATH::Pow(var_chaste_interface__cleft_space_equations__K_c, 2) * CHASTE_MATH::Pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_sodium_potassium_pump__i_NaK_max / ((CHASTE_CONST(1.5) + CHASTE_MATH::Exp(-CHASTE_CONST(1.5) - CHASTE_CONST(0.025000000000000001) * var_chaste_interface__membrane__V)) * CHASTE_MATH::Pow((var_chaste_interface__cleft_space_equations__K_c + var_sodium_potassium_pump__K_m_K), 2) * CHASTE_MATH::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 + const double d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Na_i = CHASTE_CONST(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; } @@ -1647,7 +1649,7 @@ double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -1667,47 +1669,47 @@ // Units: millimolar; Initial value: 5.389014 - const double var_x9 = pow(var_chaste_interface__cleft_space_equations__Na_c, 3); + const double var_x9 = CHASTE_MATH::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_x11 = CHASTE_MATH::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_x13 = 1 + CHASTE_CONST(0.0001) * var_x10 + CHASTE_CONST(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_x15 = CHASTE_CONST(0.018714999999999999) * var_chaste_interface__membrane__V; + const double var_x16 = CHASTE_MATH::Exp(-var_x15); const double var_x17 = var_x10 * var_x16; - const double var_x18 = exp(var_x15); + const double var_x18 = CHASTE_MATH::Exp(var_x15); const double var_x19 = var_x12 * var_x18; - const double var_x25 = exp(-1.5 - 0.025000000000000001 * var_chaste_interface__membrane__V); - const double var_x26 = 0.621 + var_chaste_interface__cleft_space_equations__K_c; - const double var_x27 = pow(var_x26, (-2)); - const double var_x28 = pow(var_chaste_interface__cleft_space_equations__K_c, 2); - const double var_x29 = 1 + 0.18315018315018314 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i; - const double var_x30 = pow(var_x29, (-3)); - const double var_x33 = 0.037433890822745473 * var_chaste_interface__membrane__V; + const double var_x25 = CHASTE_MATH::Exp(-CHASTE_CONST(1.5) - CHASTE_CONST(0.025000000000000001) * var_chaste_interface__membrane__V); + const double var_x26 = CHASTE_CONST(0.621) + var_chaste_interface__cleft_space_equations__K_c; + const double var_x27 = CHASTE_MATH::Pow(var_x26, (-2)); + const double var_x28 = CHASTE_MATH::Pow(var_chaste_interface__cleft_space_equations__K_c, 2); + const double var_x29 = 1 + CHASTE_CONST(0.18315018315018314) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i; + const double var_x30 = CHASTE_MATH::Pow(var_x29, (-3)); + const double var_x33 = CHASTE_CONST(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_x36 = CHASTE_MATH::Exp(var_x33 - 1 * CHASTE_MATH::Log(var_x35)); + const double var_x39 = CHASTE_MATH::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_x42 = CHASTE_MATH::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_x58 = pow(var_x13, (-2)); + const double var_x58 = CHASTE_MATH::Pow(var_x13, (-2)); const double var_x59 = var_x19 - var_x17; - const double var_x81 = pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 2); + const double var_x81 = CHASTE_MATH::Pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 2); const double var_x82 = var_x81 * var_chaste_interface__cleft_space_equations__Ca_c; const double var_x83 = var_x18 * var_x82; - const double var_x84 = 1 / (1.5 + var_x25); + const double var_x84 = 1 / (CHASTE_CONST(1.5) + var_x25); const double var_x85 = var_x27 * var_x28 * var_x84; const double var_x86 = var_x30 * var_x81 * var_x85; - const double var_x87 = pow(var_x29, (-4)); - const double var_x191 = 7.1589144284024978e-7 * var_x14; - const double var_x192 = 23.020586507479816 * var_x46; + const double var_x87 = CHASTE_MATH::Pow(var_x29, (-4)); + const double var_x191 = CHASTE_CONST(7.1589144284024978e-7) * var_x14; + const double var_x192 = CHASTE_CONST(23.020586507479816) * var_x46; - partialF = -0.00012359906637920097 * var_x86 - 2.7242382709912566e-5 * var_x34 - var_x191 * var_x83 - var_x192 * var_x35 + 7.158914428402498e-11 * var_x58 * var_x59 * var_x81 * var_chaste_interface__cleft_space_equations__Ca_c + 2.2637191644542304e-5 * var_x11 * var_x27 * var_x28 * var_x84 * var_x87; + partialF = -CHASTE_CONST(0.00012359906637920097) * var_x86 - CHASTE_CONST(2.7242382709912566e-5) * var_x34 - var_x191 * var_x83 - var_x192 * var_x35 + CHASTE_CONST(7.158914428402498e-11) * var_x58 * var_x59 * var_x81 * var_chaste_interface__cleft_space_equations__Ca_c + CHASTE_CONST(2.2637191644542304e-5) * var_x11 * var_x27 * var_x28 * var_x84 * var_x87; } else { @@ -1722,7 +1724,7 @@ 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -1739,24 +1741,24 @@ // 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_cleft_space_equations__K_b = CHASTE_CONST(5.4000000000000004); // millimolar + const double var_cleft_space_equations__Vol = CHASTE_CONST(3.4970000000000001e-6); // microLitre + const double var_delayed_rectifying_potassium_current__g_K = CHASTE_MATH::Pow(var_cleft_space_equations__K_b, CHASTE_CONST(0.58999999999999997)) * mParameters[2]; // microS + const double var_intracellular_concentrations_and_buffer_equations__V_i = CHASTE_CONST(0.46500000000000002) * var_cleft_space_equations__Vol; // microLitre + const double var_linear_background_current__g_B_K = CHASTE_CONST(6.9400000000000006e-5); // microS + const double var_membrane__F = CHASTE_CONST(96485.341499999995); // coulomb_per_mole + const double var_membrane__R = CHASTE_CONST(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_hyperpolarisation_activated_current__i_f_K = CHASTE_MATH::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 * CHASTE_MATH::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_sodium_potassium_pump__K_m_K = CHASTE_CONST(0.621); // millimolar + const double var_sodium_potassium_pump__K_m_Na = CHASTE_CONST(5.46); // millimolar + const double var_sodium_potassium_pump__i_NaK_max = CHASTE_CONST(0.21920000000000001); // nanoA + const double var_sodium_potassium_pump__i_NaK = CHASTE_CONST(1.6000000000000001) * CHASTE_MATH::Pow(var_chaste_interface__cleft_space_equations__K_c, 2) * CHASTE_MATH::Pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_sodium_potassium_pump__i_NaK_max / ((CHASTE_CONST(1.5) + CHASTE_MATH::Exp(-CHASTE_CONST(1.5) - CHASTE_CONST(0.025000000000000001) * var_chaste_interface__membrane__V)) * CHASTE_MATH::Pow((var_chaste_interface__cleft_space_equations__K_c + var_sodium_potassium_pump__K_m_K), 2) * CHASTE_MATH::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 + const double d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__K_i = CHASTE_CONST(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; } @@ -1777,9 +1779,9 @@ 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_x73 = 1 / var_chaste_interface__intracellular_concentrations_and_buffer_equations__K_i; - const double var_x196 = 0.46050826103455306 * var_x22; + const double var_x196 = CHASTE_CONST(0.46050826103455306) * var_x22; - partialF = -1.1816383500424576e-5 * var_x73 - var_x196 * var_x73; + partialF = -CHASTE_CONST(1.1816383500424576e-5) * var_x73 - var_x196 * var_x73; } else { @@ -1803,7 +1805,7 @@ // 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 + const double d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_Calmod = CHASTE_CONST(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; } @@ -1819,7 +1821,7 @@ const double var_x198 = 129 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; - partialF = -0.307 - var_x198; + partialF = -CHASTE_CONST(0.307) - var_x198; } else { @@ -1843,7 +1845,7 @@ // 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 + const double d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_Trop = CHASTE_CONST(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; } @@ -1858,7 +1860,7 @@ - partialF = -0.252 - 50.5 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; + partialF = -CHASTE_CONST(0.252) - CHASTE_CONST(50.5) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; } else { @@ -1882,9 +1884,9 @@ // 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__phi_TMgC = -CHASTE_CONST(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 d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop = CHASTE_CONST(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; } @@ -1900,7 +1902,7 @@ const double var_x198 = 129 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; - partialF = -0.0042500000000000003 - var_x198; + partialF = -CHASTE_CONST(0.0042500000000000003) - var_x198; } else { @@ -1922,10 +1924,10 @@ // Mathematics - const double var_intracellular_concentrations_and_buffer_equations__Mg_i = 2.5; // millimolar + const double var_intracellular_concentrations_and_buffer_equations__Mg_i = CHASTE_CONST(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 + const double d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop = CHASTE_CONST(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; } @@ -1938,7 +1940,7 @@ - partialF = -3.6539999999999999; + partialF = -CHASTE_CONST(3.6539999999999999); } else { @@ -1953,7 +1955,7 @@ 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -1977,27 +1979,27 @@ // 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_cleft_space_equations__Vol = CHASTE_CONST(3.4970000000000001e-6); // microLitre + const double var_cleft_space_equations__V_c = CHASTE_CONST(0.13600000000000001) * var_cleft_space_equations__Vol; // microLitre + const double var_cleft_space_equations__tau_p = CHASTE_CONST(0.01); // second + const double var_linear_background_current__g_B_Na = CHASTE_CONST(0.00016000000000000001); // microS + const double var_membrane__F = CHASTE_CONST(96485.341499999995); // coulomb_per_mole + const double var_membrane__R = CHASTE_CONST(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_hyperpolarisation_activated_current__i_f_Na = CHASTE_MATH::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 * CHASTE_MATH::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_sodium_calcium_pump__K_NaCa = CHASTE_CONST(1.2480000000000001e-5); // nanoA + const double var_sodium_calcium_pump__d_NaCa = CHASTE_CONST(0.0001); // dimensionless + const double var_sodium_calcium_pump__gamma = CHASTE_CONST(0.5); // dimensionless + const double var_sodium_calcium_pump__i_NaCa = (CHASTE_MATH::Pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_chaste_interface__cleft_space_equations__Ca_c * CHASTE_MATH::Exp(CHASTE_CONST(0.037429999999999998) * var_chaste_interface__membrane__V * var_sodium_calcium_pump__gamma) - CHASTE_MATH::Pow(var_chaste_interface__cleft_space_equations__Na_c, 3) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i * CHASTE_MATH::Exp(CHASTE_CONST(0.037429999999999998) * (-1 + var_sodium_calcium_pump__gamma) * var_chaste_interface__membrane__V)) * var_sodium_calcium_pump__K_NaCa / (1 + (CHASTE_MATH::Pow(var_chaste_interface__cleft_space_equations__Na_c, 3) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i + CHASTE_MATH::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 = CHASTE_MATH::Pow(var_membrane__F, 2) * CHASTE_MATH::Pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + CHASTE_MATH::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 + CHASTE_MATH::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 = CHASTE_CONST(0.621); // millimolar + const double var_sodium_potassium_pump__K_m_Na = CHASTE_CONST(5.46); // millimolar + const double var_sodium_potassium_pump__i_NaK_max = CHASTE_CONST(0.21920000000000001); // nanoA + const double var_sodium_potassium_pump__i_NaK = CHASTE_CONST(1.6000000000000001) * CHASTE_MATH::Pow(var_chaste_interface__cleft_space_equations__K_c, 2) * CHASTE_MATH::Pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_sodium_potassium_pump__i_NaK_max / ((CHASTE_CONST(1.5) + CHASTE_MATH::Exp(-CHASTE_CONST(1.5) - CHASTE_CONST(0.025000000000000001) * var_chaste_interface__membrane__V)) * CHASTE_MATH::Pow((var_chaste_interface__cleft_space_equations__K_c + var_sodium_potassium_pump__K_m_K), 2) * CHASTE_MATH::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 + const double d_dt_chaste_interface_var_cleft_space_equations__Na_c = CHASTE_CONST(0.001) * var_cleft_space_equations__Na_c_orig_deriv; // millimolar / millisecond return d_dt_chaste_interface_var_cleft_space_equations__Na_c; } @@ -2007,7 +2009,7 @@ double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -2025,40 +2027,40 @@ // Units: millimolar; Initial value: 2.00474 - const double var_x9 = pow(var_chaste_interface__cleft_space_equations__Na_c, 3); + const double var_x9 = CHASTE_MATH::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_x11 = CHASTE_MATH::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_x13 = 1 + CHASTE_CONST(0.0001) * var_x10 + CHASTE_CONST(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_x15 = CHASTE_CONST(0.018714999999999999) * var_chaste_interface__membrane__V; + const double var_x16 = CHASTE_MATH::Exp(-var_x15); const double var_x17 = var_x10 * var_x16; - const double var_x18 = exp(var_x15); + const double var_x18 = CHASTE_MATH::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_x33 = CHASTE_CONST(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_x36 = CHASTE_MATH::Exp(var_x33 - 1 * CHASTE_MATH::Log(var_x35)); const double var_x37 = -1 + var_x36; - const double var_x39 = exp(var_x33); + const double var_x39 = CHASTE_MATH::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_x42 = CHASTE_MATH::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_x58 = pow(var_x13, (-2)); + const double var_x58 = CHASTE_MATH::Pow(var_x13, (-2)); const double var_x59 = var_x19 - var_x17; const double var_x60 = var_x58 * var_x59; const double var_x90 = 1 / var_chaste_interface__cleft_space_equations__Na_c; - const double var_x91 = pow(var_chaste_interface__cleft_space_equations__Na_c, 2) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; + const double var_x91 = CHASTE_MATH::Pow(var_chaste_interface__cleft_space_equations__Na_c, 2) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; const double var_x92 = var_x16 * var_x91; - const double var_x204 = 2.447717065593501e-6 * var_x14; - const double var_x205 = 2.4477170655935014e-10 * var_x60; - const double var_x206 = 78.710093573368496 * var_x46; + const double var_x204 = CHASTE_CONST(2.447717065593501e-6) * var_x14; + const double var_x205 = CHASTE_CONST(2.4477170655935014e-10) * var_x60; + const double var_x206 = CHASTE_CONST(78.710093573368496) * var_x46; - partialF = -0.099999999999999992 - var_x206 - 9.3144911471392233e-5 * var_x90 - var_x204 * var_x92 - var_x205 * var_x91 + 78.710093573368496 * var_x37 * var_x41 * var_x42 * var_chaste_interface__membrane__V * mParameters[3] * var_chaste_interface__sodium_current_h_gate__h1 * var_chaste_interface__sodium_current_h_gate__h2; + partialF = -CHASTE_CONST(0.099999999999999992) - var_x206 - CHASTE_CONST(9.3144911471392233e-5) * var_x90 - var_x204 * var_x92 - var_x205 * var_x91 + CHASTE_CONST(78.710093573368496) * var_x37 * var_x41 * var_x42 * var_chaste_interface__membrane__V * mParameters[3] * var_chaste_interface__sodium_current_h_gate__h1 * var_chaste_interface__sodium_current_h_gate__h2; } else { @@ -2073,7 +2075,7 @@ 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -2094,30 +2096,30 @@ // Mathematics - const double var_L_type_Ca_channel__E_Ca_L = 46.399999999999999; // millivolt + const double var_L_type_Ca_channel__E_Ca_L = CHASTE_CONST(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_T_type_Ca_channel__g_Ca_T = CHASTE_CONST(0.02521); // microS + const double var_calcium_pump_current__i_Ca_P_max = CHASTE_CONST(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_cleft_space_equations__Vol = CHASTE_CONST(3.4970000000000001e-6); // microLitre + const double var_cleft_space_equations__V_c = CHASTE_CONST(0.13600000000000001) * var_cleft_space_equations__Vol; // microLitre + const double var_cleft_space_equations__tau_p = CHASTE_CONST(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 / (CHASTE_CONST(0.00040000000000000002) + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i); // nanoA + const double var_linear_background_current__g_B_Ca = CHASTE_CONST(3.6399999999999997e-5); // microS + const double var_membrane__F = CHASTE_CONST(96485.341499999995); // coulomb_per_mole + const double var_membrane__R = CHASTE_CONST(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_d_gate__d_L_infinity = 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.3500000000000001) - CHASTE_CONST(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) * (CHASTE_CONST(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_reversal_potentials__E_Ca = CHASTE_CONST(0.5) * var_membrane__R * var_membrane__T * CHASTE_MATH::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 + const double var_sodium_calcium_pump__K_NaCa = CHASTE_CONST(1.2480000000000001e-5); // nanoA + const double var_sodium_calcium_pump__d_NaCa = CHASTE_CONST(0.0001); // dimensionless + const double var_sodium_calcium_pump__gamma = CHASTE_CONST(0.5); // dimensionless + const double var_sodium_calcium_pump__i_NaCa = (CHASTE_MATH::Pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_chaste_interface__cleft_space_equations__Ca_c * CHASTE_MATH::Exp(CHASTE_CONST(0.037429999999999998) * var_chaste_interface__membrane__V * var_sodium_calcium_pump__gamma) - CHASTE_MATH::Pow(var_chaste_interface__cleft_space_equations__Na_c, 3) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i * CHASTE_MATH::Exp(CHASTE_CONST(0.037429999999999998) * (-1 + var_sodium_calcium_pump__gamma) * var_chaste_interface__membrane__V)) * var_sodium_calcium_pump__K_NaCa / (1 + (CHASTE_MATH::Pow(var_chaste_interface__cleft_space_equations__Na_c, 3) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i + CHASTE_MATH::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 + CHASTE_CONST(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 = CHASTE_CONST(0.001) * var_cleft_space_equations__Ca_c_orig_deriv; // millimolar / millisecond return d_dt_chaste_interface_var_cleft_space_equations__Ca_c; } @@ -2127,7 +2129,7 @@ double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -2139,24 +2141,24 @@ // Units: millimolar; Initial value: 2.00474 - const double var_x9 = pow(var_chaste_interface__cleft_space_equations__Na_c, 3); + const double var_x9 = CHASTE_MATH::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_x11 = CHASTE_MATH::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_x13 = 1 + CHASTE_CONST(0.0001) * var_x10 + CHASTE_CONST(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_x15 = CHASTE_CONST(0.018714999999999999) * var_chaste_interface__membrane__V; + const double var_x16 = CHASTE_MATH::Exp(-var_x15); const double var_x17 = var_x10 * var_x16; - const double var_x18 = exp(var_x15); + const double var_x18 = CHASTE_MATH::Exp(var_x15); const double var_x19 = var_x12 * var_x18; - const double var_x58 = pow(var_x13, (-2)); + const double var_x58 = CHASTE_MATH::Pow(var_x13, (-2)); const double var_x59 = var_x19 - var_x17; const double var_x93 = 1 / var_chaste_interface__cleft_space_equations__Ca_c; const double var_x94 = var_x11 * var_x18; - const double var_x208 = 2.7196856284372236e-7 * var_x14; + const double var_x208 = CHASTE_CONST(2.7196856284372236e-7) * var_x14; - partialF = -0.099999999999999992 - 5.2976168399354324e-6 * var_x93 - var_x208 * var_x94 + 2.7196856284372237e-11 * var_x11 * var_x58 * var_x59; + partialF = -CHASTE_CONST(0.099999999999999992) - CHASTE_CONST(5.2976168399354324e-6) * var_x93 - var_x208 * var_x94 + CHASTE_CONST(2.7196856284372237e-11) * var_x11 * var_x58 * var_x59; } else { @@ -2171,7 +2173,7 @@ 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -2188,25 +2190,25 @@ // 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_cleft_space_equations__K_b = CHASTE_CONST(5.4000000000000004); // millimolar + const double var_cleft_space_equations__Vol = CHASTE_CONST(3.4970000000000001e-6); // microLitre + const double var_cleft_space_equations__V_c = CHASTE_CONST(0.13600000000000001) * var_cleft_space_equations__Vol; // microLitre + const double var_cleft_space_equations__tau_p = CHASTE_CONST(0.01); // second + const double var_delayed_rectifying_potassium_current__g_K = CHASTE_MATH::Pow(var_cleft_space_equations__K_b, CHASTE_CONST(0.58999999999999997)) * mParameters[2]; // microS + const double var_linear_background_current__g_B_K = CHASTE_CONST(6.9400000000000006e-5); // microS + const double var_membrane__F = CHASTE_CONST(96485.341499999995); // coulomb_per_mole + const double var_membrane__R = CHASTE_CONST(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_hyperpolarisation_activated_current__i_f_K = CHASTE_MATH::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 * CHASTE_MATH::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_sodium_potassium_pump__K_m_K = CHASTE_CONST(0.621); // millimolar + const double var_sodium_potassium_pump__K_m_Na = CHASTE_CONST(5.46); // millimolar + const double var_sodium_potassium_pump__i_NaK_max = CHASTE_CONST(0.21920000000000001); // nanoA + const double var_sodium_potassium_pump__i_NaK = CHASTE_CONST(1.6000000000000001) * CHASTE_MATH::Pow(var_chaste_interface__cleft_space_equations__K_c, 2) * CHASTE_MATH::Pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_sodium_potassium_pump__i_NaK_max / ((CHASTE_CONST(1.5) + CHASTE_MATH::Exp(-CHASTE_CONST(1.5) - CHASTE_CONST(0.025000000000000001) * var_chaste_interface__membrane__V)) * CHASTE_MATH::Pow((var_chaste_interface__cleft_space_equations__K_c + var_sodium_potassium_pump__K_m_K), 2) * CHASTE_MATH::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 d_dt_chaste_interface_var_cleft_space_equations__K_c = CHASTE_CONST(0.001) * var_cleft_space_equations__K_c_orig_deriv; // millimolar / millisecond return d_dt_chaste_interface_var_cleft_space_equations__K_c; } @@ -2216,7 +2218,7 @@ double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -2228,23 +2230,23 @@ // 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_x11 = CHASTE_MATH::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_x25 = exp(-1.5 - 0.025000000000000001 * var_chaste_interface__membrane__V); - const double var_x26 = 0.621 + var_chaste_interface__cleft_space_equations__K_c; - const double var_x27 = pow(var_x26, (-2)); - const double var_x28 = pow(var_chaste_interface__cleft_space_equations__K_c, 2); - const double var_x29 = 1 + 0.18315018315018314 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i; - const double var_x30 = pow(var_x29, (-3)); - const double var_x84 = 1 / (1.5 + var_x25); + const double var_x25 = CHASTE_MATH::Exp(-CHASTE_CONST(1.5) - CHASTE_CONST(0.025000000000000001) * var_chaste_interface__membrane__V); + const double var_x26 = CHASTE_CONST(0.621) + var_chaste_interface__cleft_space_equations__K_c; + const double var_x27 = CHASTE_MATH::Pow(var_x26, (-2)); + const double var_x28 = CHASTE_MATH::Pow(var_chaste_interface__cleft_space_equations__K_c, 2); + const double var_x29 = 1 + CHASTE_CONST(0.18315018315018314) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i; + const double var_x30 = CHASTE_MATH::Pow(var_x29, (-3)); + const double var_x84 = 1 / (CHASTE_CONST(1.5) + var_x25); const double var_x95 = 1 / var_chaste_interface__cleft_space_equations__K_c; const double var_x96 = var_x11 * var_x30 * var_x84; - const double var_x98 = pow(var_x26, (-3)); + const double var_x98 = CHASTE_MATH::Pow(var_x26, (-3)); const double var_x100 = var_x27 * var_chaste_interface__cleft_space_equations__K_c; - const double var_x211 = 1.5745319219196114 * var_x22; + const double var_x211 = CHASTE_CONST(1.5745319219196114) * var_x22; - partialF = -0.099999999999999992 - 4.040160535071638e-5 * var_x95 - var_x211 * var_x95 - 0.00018782211067427598 * var_x100 * var_x96 + 0.00018782211067427598 * var_x11 * var_x28 * var_x30 * var_x84 * var_x98; + partialF = -CHASTE_CONST(0.099999999999999992) - CHASTE_CONST(4.040160535071638e-5) * var_x95 - var_x211 * var_x95 - CHASTE_CONST(0.00018782211067427598) * var_x100 * var_x96 + CHASTE_CONST(0.00018782211067427598) * var_x11 * var_x28 * var_x30 * var_x84 * var_x98; } else { @@ -2268,21 +2270,21 @@ // 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__alpha_up = CHASTE_CONST(0.080000000000000002); // nanoA + const double var_SR_Ca_uptake_and_release__beta_up = CHASTE_CONST(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__k_cyca = CHASTE_CONST(5.0000000000000002e-5); // millimolar + const double var_SR_Ca_uptake_and_release__k_xcs = CHASTE_CONST(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_cleft_space_equations__Vol = CHASTE_CONST(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 + const double var_intracellular_concentrations_and_buffer_equations__V_i = CHASTE_CONST(0.46500000000000002) * var_cleft_space_equations__Vol; // microLitre + const double var_SR_Ca_uptake_and_release__V_up = CHASTE_CONST(0.01166) * var_intracellular_concentrations_and_buffer_equations__V_i; // microLitre + const double var_membrane__F = CHASTE_CONST(96485.341499999995); // coulomb_per_mole + const double var_SR_Ca_uptake_and_release__i_tr = CHASTE_CONST(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 = CHASTE_CONST(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 = CHASTE_CONST(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; } @@ -2298,13 +2300,13 @@ // Units: millimolar; Initial value: 16.95311 - const double var_x104 = 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_x104 = CHASTE_CONST(9.5000000000000005e-5) + CHASTE_CONST(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_x105 = 1 / var_x104; - const double var_x106 = pow(var_x104, (-2)); - const double var_x107 = 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_x106 = CHASTE_MATH::Pow(var_x104, (-2)); + const double var_x107 = CHASTE_CONST(0.080000000000000002) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i - CHASTE_CONST(1.4727272727272728e-7) * var_chaste_interface__SR_Ca_uptake_and_release__Ca_up; const double var_x113 = var_x106 * var_x107; - partialF = -0.015581177937052042 - 4.0251665946738841e-8 * var_x105 - 5.5905091592692838e-7 * var_x113; + partialF = -CHASTE_CONST(0.015581177937052042) - CHASTE_CONST(4.0251665946738841e-8) * var_x105 - CHASTE_CONST(5.5905091592692838e-7) * var_x113; } else { @@ -2330,17 +2332,17 @@ // 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__alpha_rel = CHASTE_CONST(0.5); // nanoA_per_millimolar + const double var_SR_Ca_uptake_and_release__i_rel = CHASTE_MATH::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 / CHASTE_MATH::Pow((CHASTE_CONST(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 + const double var_cleft_space_equations__Vol = CHASTE_CONST(3.4970000000000001e-6); // microLitre + const double var_intracellular_concentrations_and_buffer_equations__V_i = CHASTE_CONST(0.46500000000000002) * var_cleft_space_equations__Vol; // microLitre + const double var_SR_Ca_uptake_and_release__V_rel = CHASTE_CONST(0.0012960000000000001) * var_intracellular_concentrations_and_buffer_equations__V_i; // microLitre + const double var_SR_Ca_uptake_and_release__V_up = CHASTE_CONST(0.01166) * var_intracellular_concentrations_and_buffer_equations__V_i; // microLitre + const double var_membrane__F = CHASTE_CONST(96485.341499999995); // coulomb_per_mole + const double var_SR_Ca_uptake_and_release__i_tr = CHASTE_CONST(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 = -CHASTE_CONST(11.48) * var_SR_Ca_uptake_and_release__phi_Calse + CHASTE_CONST(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 = CHASTE_CONST(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; } @@ -2356,12 +2358,12 @@ // Units: dimensionless; Initial value: 0.0007594214 - const double var_x114 = 0.25 + var_chaste_interface__SR_Ca_uptake_and_release__F2; - const double var_x115 = pow(var_x114, (-2)); - const double var_x116 = pow(var_chaste_interface__SR_Ca_uptake_and_release__F2, 2); + const double var_x114 = CHASTE_CONST(0.25) + var_chaste_interface__SR_Ca_uptake_and_release__F2; + const double var_x115 = CHASTE_MATH::Pow(var_x114, (-2)); + const double var_x116 = CHASTE_MATH::Pow(var_chaste_interface__SR_Ca_uptake_and_release__F2, 2); const double var_x117 = var_x115 * var_x116; - partialF = -8.979782511378108 + 8.8396000000000008 * var_chaste_interface__SR_Ca_uptake_and_release__Ca_Calse - 1.2294902345128229 * var_x117; + partialF = -CHASTE_CONST(8.979782511378108) + CHASTE_CONST(8.8396000000000008) * var_chaste_interface__SR_Ca_uptake_and_release__Ca_Calse - CHASTE_CONST(1.2294902345128229) * var_x117; } else { @@ -2385,7 +2387,7 @@ // 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 + const double d_dt_chaste_interface_var_SR_Ca_uptake_and_release__Ca_Calse = CHASTE_CONST(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; } @@ -2400,7 +2402,7 @@ - partialF = -0.64100000000000001 - 0.77000000000000002 * var_chaste_interface__SR_Ca_uptake_and_release__Ca_rel; + partialF = -CHASTE_CONST(0.64100000000000001) - CHASTE_CONST(0.77000000000000002) * var_chaste_interface__SR_Ca_uptake_and_release__Ca_rel; } else { @@ -2415,7 +2417,7 @@ 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -2426,10 +2428,10 @@ // 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 + const double var_SR_Ca_uptake_and_release__k_rel = CHASTE_CONST(0.0040000000000000001); // millimolar + const double var_SR_Ca_uptake_and_release__r_act = 240 * CHASTE_MATH::Exp(-CHASTE_CONST(3.2000000000000002) + CHASTE_CONST(0.080000000000000002) * var_chaste_interface__membrane__V) + 240 * CHASTE_MATH::Pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i, 4) / CHASTE_MATH::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 = CHASTE_CONST(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 = CHASTE_CONST(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; } @@ -2439,18 +2441,18 @@ double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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_x219 = 0.23999999999999999 * var_x216 * var_x217; - const double var_x220 = var_x219 + 0.23999999999999999 * var_x213; + const double var_x213 = CHASTE_MATH::Exp(-CHASTE_CONST(3.2000000000000002) + CHASTE_CONST(0.080000000000000002) * var_chaste_interface__membrane__V); + const double var_x215 = CHASTE_CONST(0.0040000000000000001) + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; + const double var_x216 = CHASTE_MATH::Pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i, 4); + const double var_x217 = CHASTE_MATH::Pow(var_x215, (-4)); + const double var_x219 = CHASTE_CONST(0.23999999999999999) * var_x216 * var_x217; + const double var_x220 = var_x219 + CHASTE_CONST(0.23999999999999999) * var_x213; partialF = -var_x220; } @@ -2467,7 +2469,7 @@ 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -2478,11 +2480,11 @@ // 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__k_rel = CHASTE_CONST(0.0040000000000000001); // millimolar + const double var_SR_Ca_uptake_and_release__r_inact = 40 + 240 * CHASTE_MATH::Pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i, 4) / CHASTE_MATH::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 * CHASTE_MATH::Exp(-CHASTE_CONST(3.2000000000000002) + CHASTE_CONST(0.080000000000000002) * var_chaste_interface__membrane__V) + 240 * CHASTE_MATH::Pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i, 4) / CHASTE_MATH::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 + const double d_dt_chaste_interface_var_SR_Ca_uptake_and_release__F2 = CHASTE_CONST(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; } @@ -2496,11 +2498,11 @@ // 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_x219 = 0.23999999999999999 * var_x216 * var_x217; - const double var_x222 = 0.040000000000000001 + var_x219; + const double var_x215 = CHASTE_CONST(0.0040000000000000001) + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; + const double var_x216 = CHASTE_MATH::Pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i, 4); + const double var_x217 = CHASTE_MATH::Pow(var_x215, (-4)); + const double var_x219 = CHASTE_CONST(0.23999999999999999) * var_x216 * var_x217; + const double var_x222 = CHASTE_CONST(0.040000000000000001) + var_x219; partialF = -var_x222; } @@ -2526,10 +2528,10 @@ // 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 + const double var_SR_Ca_uptake_and_release__k_rel = CHASTE_CONST(0.0040000000000000001); // millimolar + const double var_SR_Ca_uptake_and_release__r_inact = 40 + 240 * CHASTE_MATH::Pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i, 4) / CHASTE_MATH::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 = -CHASTE_CONST(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 = CHASTE_CONST(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; } @@ -2542,7 +2544,7 @@ - partialF = -0.00095999999999999992; + partialF = -CHASTE_CONST(0.00095999999999999992); } else { @@ -2559,7 +2561,7 @@ { // Inputs: // Time units: millisecond - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -2587,25 +2589,25 @@ // 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_L_type_Ca_channel__E_Ca_L = CHASTE_CONST(46.399999999999999); // millivolt + const double var_cleft_space_equations__K_b = CHASTE_CONST(5.4000000000000004); // millimolar + const double var_delayed_rectifying_potassium_current__g_K = CHASTE_MATH::Pow(var_cleft_space_equations__K_b, CHASTE_CONST(0.58999999999999997)) * mParameters[2]; // microS + const double var_membrane__F = CHASTE_CONST(96485.341499999995); // coulomb_per_mole + const double var_membrane__R = CHASTE_CONST(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_L_type_Ca_channel_d_gate__d_L_infinity = 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.3500000000000001) - CHASTE_CONST(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) * (CHASTE_CONST(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 = CHASTE_CONST(0.001) * CHASTE_CAP() * var_L_type_Ca_channel__i_Ca_L / mParameters[1]; // uA_per_cm2 + const double var_hyperpolarisation_activated_current__i_f_K = CHASTE_MATH::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 = CHASTE_MATH::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_hyperpolarisation_activated_current__i_f_converted = CHASTE_CONST(0.001) * CHASTE_CAP() * var_hyperpolarisation_activated_current__i_f / mParameters[1]; // uA_per_cm2 + const double var_reversal_potentials__E_K = var_membrane__R * var_membrane__T * CHASTE_MATH::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 + const double var_delayed_rectifying_potassium_current__i_K_converted = CHASTE_CONST(0.001) * CHASTE_CAP() * 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 * CHASTE_MATH::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 = CHASTE_MATH::Pow(var_membrane__F, 2) * CHASTE_MATH::Pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + CHASTE_MATH::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 + CHASTE_MATH::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 = CHASTE_CONST(0.001) * CHASTE_CAP() * 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; diff --git a/chaste_codegen/data/tests/chaste_reference_models/GRL1/dynamic_demir_model_1994.hpp b/chaste_codegen/data/tests/chaste_reference_models/GRL1/dynamic_demir_model_1994.hpp index 0e9c0c7a2..fdcc3cea0 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/GRL1/dynamic_demir_model_1994.hpp +++ b/chaste_codegen/data/tests/chaste_reference_models/GRL1/dynamic_demir_model_1994.hpp @@ -17,6 +17,9 @@ #include #include "AbstractDynamicallyLoadableEntity.hpp" #include "AbstractStimulusFunction.hpp" +#if USING_DEVICE_COMPILER +#include "StimulusEvaluatorCuda.hpp" +#endif #include "AbstractGeneralizedRushLarsenCardiacCell.hpp" class Dynamicdemir_model_1994FromCellMLGRL1 : public AbstractGeneralizedRushLarsenCardiacCell, public AbstractDynamicallyLoadableEntity diff --git a/chaste_codegen/data/tests/chaste_reference_models/GRL1/hodgkin_huxley_squid_axon_model_1952_modified.cpp b/chaste_codegen/data/tests/chaste_reference_models/GRL1/hodgkin_huxley_squid_axon_model_1952_modified.cpp index 93d90713f..a650d192b 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/GRL1/hodgkin_huxley_squid_axon_model_1952_modified.cpp +++ b/chaste_codegen/data/tests/chaste_reference_models/GRL1/hodgkin_huxley_squid_axon_model_1952_modified.cpp @@ -21,6 +21,8 @@ #include "HeartConfig.hpp" #include "IsNan.hpp" #include "MathsCustomFunctions.hpp" +#include "ChasteMathDeviceNamespaces.hpp" +#include "ChasteCpuMacros.hpp" @@ -30,7 +32,7 @@ { // 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_duration = CHASTE_CONST(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( @@ -59,7 +61,7 @@ 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[2] = CHASTE_CONST(0.29999999999999999); // (var_leakage_current__g_L) [milliS_per_cm2] this->mParameters[3] = 36; // (var_potassium_channel__g_K) [milliS_per_cm2] } @@ -107,7 +109,7 @@ // 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -117,12 +119,12 @@ // 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__E_L = CHASTE_CONST(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_potassium_channel__i_K = CHASTE_MATH::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_sodium_channel__i_Na = CHASTE_MATH::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; @@ -137,7 +139,7 @@ const double delta = 1e-8; double d_dt_chaste_interface_var_membrane__V; - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -149,13 +151,13 @@ // 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__E_L = CHASTE_CONST(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_membrane__i_Stim = CHASTE_STIM(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_potassium_channel__i_K = CHASTE_MATH::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_sodium_channel__i_Na = CHASTE_MATH::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 double evalF = d_dt_chaste_interface_var_membrane__V; @@ -176,7 +178,7 @@ std::vector& rY = rGetStateVariables(); const double delta = 1e-8; - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -187,22 +189,22 @@ // Mathematics - 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__B = -CHASTE_CONST(0.10000000000000001); // per_millivolt + const double var_potassium_channel_n_gate__A = -CHASTE_CONST(0.01) / var_potassium_channel_n_gate__B; // per_millisecond + const double var_potassium_channel_n_gate__beta_n = CHASTE_CONST(0.125) * CHASTE_MATH::Exp(CHASTE_CONST(0.9375) + CHASTE_CONST(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_potassium_channel_n_gate__alpha_n = (((var_potassium_channel_n_gate__U >= -CHASTE_CONST(9.9999999999999995e-8)) && (var_potassium_channel_n_gate__U <= CHASTE_CONST(9.9999999999999995e-8))) ? ((1 - CHASTE_CONST(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 + CHASTE_MATH::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 var_sodium_channel_h_gate__alpha_h = CHASTE_CONST(0.070000000000000007) * CHASTE_MATH::Exp(-CHASTE_CONST(3.75) - CHASTE_CONST(0.050000000000000003) * var_chaste_interface__membrane__V); // per_millisecond + const double var_sodium_channel_h_gate__beta_h = 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(4.5) - CHASTE_CONST(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__B = -CHASTE_CONST(0.10000000000000001); // per_millivolt + const double var_sodium_channel_m_gate__A = -CHASTE_CONST(0.10000000000000001) / var_sodium_channel_m_gate__B; // per_millisecond + const double var_sodium_channel_m_gate__beta_m = 4 * CHASTE_MATH::Exp(-CHASTE_CONST(4.166666666666667) - CHASTE_CONST(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 var_sodium_channel_m_gate__alpha_m = (((var_sodium_channel_m_gate__U >= -CHASTE_CONST(9.9999999999999995e-8)) && (var_sodium_channel_m_gate__U <= CHASTE_CONST(9.9999999999999995e-8))) ? ((1 - CHASTE_CONST(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 + CHASTE_MATH::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 mEvalF[1] = d_dt_chaste_interface_var_sodium_channel_m_gate__m; @@ -249,7 +251,7 @@ double Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLGRL1::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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -261,13 +263,13 @@ // 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__E_L = CHASTE_CONST(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_membrane__i_Stim = CHASTE_STIM(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_potassium_channel__i_K = CHASTE_MATH::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_sodium_channel__i_Na = CHASTE_MATH::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 return d_dt_chaste_interface_var_membrane__V; @@ -287,9 +289,9 @@ const double var_x0 = 1 / mParameters[0]; - const double var_x1 = pow(var_chaste_interface__sodium_channel_m_gate__m, 3) * mParameters[1]; + const double var_x1 = CHASTE_MATH::Pow(var_chaste_interface__sodium_channel_m_gate__m, 3) * mParameters[1]; - partialF = var_x0 * (-mParameters[2] - var_x1 * var_chaste_interface__sodium_channel_h_gate__h - pow(var_chaste_interface__potassium_channel_n_gate__n, 4) * mParameters[3]); + partialF = var_x0 * (-mParameters[2] - var_x1 * var_chaste_interface__sodium_channel_h_gate__h - CHASTE_MATH::Pow(var_chaste_interface__potassium_channel_n_gate__n, 4) * mParameters[3]); } else { @@ -304,19 +306,19 @@ double Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLGRL1::EvaluateYDerivative1(double var_chaste_interface__environment__time, std::vector& rY) { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 // Mathematics - 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__B = -CHASTE_CONST(0.10000000000000001); // per_millivolt + const double var_sodium_channel_m_gate__A = -CHASTE_CONST(0.10000000000000001) / var_sodium_channel_m_gate__B; // per_millisecond + const double var_sodium_channel_m_gate__beta_m = 4 * CHASTE_MATH::Exp(-CHASTE_CONST(4.166666666666667) - CHASTE_CONST(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 var_sodium_channel_m_gate__alpha_m = (((var_sodium_channel_m_gate__U >= -CHASTE_CONST(9.9999999999999995e-8)) && (var_sodium_channel_m_gate__U <= CHASTE_CONST(9.9999999999999995e-8))) ? ((1 - CHASTE_CONST(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 + CHASTE_MATH::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 return d_dt_chaste_interface_var_sodium_channel_m_gate__m; @@ -327,19 +329,19 @@ double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -75.0 - const double var_x3 = 0.10000000000000001 * var_chaste_interface__membrane__V; + const double var_x3 = CHASTE_CONST(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_x5 = (var_x4 >= -CHASTE_CONST(9.9999999999999995e-8)) && (var_x4 <= CHASTE_CONST(9.9999999999999995e-8)); + const double var_x6 = CHASTE_MATH::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_x9 = CHASTE_MATH::Exp(-CHASTE_CONST(4.166666666666667) - CHASTE_CONST(0.055555555555555552) * var_chaste_interface__membrane__V); - partialF = -((var_x5) ? (3.5 + 0.050000000000000003 * var_chaste_interface__membrane__V) : (-var_x4 * var_x8)) - 4 * var_x9; + partialF = -((var_x5) ? (CHASTE_CONST(3.5) + CHASTE_CONST(0.050000000000000003) * var_chaste_interface__membrane__V) : (-var_x4 * var_x8)) - 4 * var_x9; } else { @@ -354,15 +356,15 @@ double Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLGRL1::EvaluateYDerivative2(double var_chaste_interface__environment__time, std::vector& rY) { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -75.0 double var_chaste_interface__sodium_channel_h_gate__h = rY[2]; // Units: dimensionless; Initial value: 0.6 // Mathematics - 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_h_gate__alpha_h = CHASTE_CONST(0.070000000000000007) * CHASTE_MATH::Exp(-CHASTE_CONST(3.75) - CHASTE_CONST(0.050000000000000003) * var_chaste_interface__membrane__V); // per_millisecond + const double var_sodium_channel_h_gate__beta_h = 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(4.5) - CHASTE_CONST(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 return d_dt_chaste_interface_var_sodium_channel_h_gate__h; @@ -373,15 +375,15 @@ double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -75.0 - 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_x10 = CHASTE_MATH::Exp(-CHASTE_CONST(3.75) - CHASTE_CONST(0.050000000000000003) * var_chaste_interface__membrane__V); + const double var_x11 = CHASTE_MATH::Exp(-CHASTE_CONST(4.5) - CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V); const double var_x12 = 1 + var_x11; - partialF = -1 / var_x12 - 0.070000000000000007 * var_x10; + partialF = -1 / var_x12 - CHASTE_CONST(0.070000000000000007) * var_x10; } else { @@ -396,19 +398,19 @@ double Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLGRL1::EvaluateYDerivative3(double var_chaste_interface__environment__time, std::vector& rY) { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -75.0 double var_chaste_interface__potassium_channel_n_gate__n = rY[3]; // Units: dimensionless; Initial value: 0.325 // Mathematics - 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__B = -CHASTE_CONST(0.10000000000000001); // per_millivolt + const double var_potassium_channel_n_gate__A = -CHASTE_CONST(0.01) / var_potassium_channel_n_gate__B; // per_millisecond + const double var_potassium_channel_n_gate__beta_n = CHASTE_CONST(0.125) * CHASTE_MATH::Exp(CHASTE_CONST(0.9375) + CHASTE_CONST(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_potassium_channel_n_gate__alpha_n = (((var_potassium_channel_n_gate__U >= -CHASTE_CONST(9.9999999999999995e-8)) && (var_potassium_channel_n_gate__U <= CHASTE_CONST(9.9999999999999995e-8))) ? ((1 - CHASTE_CONST(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 + CHASTE_MATH::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 return d_dt_chaste_interface_var_potassium_channel_n_gate__n; @@ -419,19 +421,19 @@ double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -75.0 - 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_x3 = CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V; + const double var_x13 = CHASTE_CONST(6.5) + var_x3; + const double var_x14 = (var_x13 >= -CHASTE_CONST(9.9999999999999995e-8)) && (var_x13 <= CHASTE_CONST(9.9999999999999995e-8)); + const double var_x15 = CHASTE_MATH::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); + const double var_x18 = CHASTE_MATH::Exp(CHASTE_CONST(0.9375) + CHASTE_CONST(0.012500000000000001) * var_chaste_interface__membrane__V); - partialF = -((var_x14) ? (0.42499999999999999 + 0.0050000000000000001 * var_chaste_interface__membrane__V) : (-0.099999999999999992 * var_x13 * var_x17)) - 0.125 * var_x18; + partialF = -((var_x14) ? (CHASTE_CONST(0.42499999999999999) + CHASTE_CONST(0.0050000000000000001) * var_chaste_interface__membrane__V) : (-CHASTE_CONST(0.099999999999999992) * var_x13 * var_x17)) - CHASTE_CONST(0.125) * var_x18; } else { @@ -448,7 +450,7 @@ { // Inputs: // Time units: millisecond - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -459,13 +461,13 @@ // 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__E_L = CHASTE_CONST(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_membrane__i_Stim = CHASTE_STIM(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_potassium_channel__i_K = CHASTE_MATH::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_sodium_channel__i_Na = CHASTE_MATH::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; diff --git a/chaste_codegen/data/tests/chaste_reference_models/GRL1/hodgkin_huxley_squid_axon_model_1952_modified.hpp b/chaste_codegen/data/tests/chaste_reference_models/GRL1/hodgkin_huxley_squid_axon_model_1952_modified.hpp index 8616dfcf7..85c8a6bd2 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/GRL1/hodgkin_huxley_squid_axon_model_1952_modified.hpp +++ b/chaste_codegen/data/tests/chaste_reference_models/GRL1/hodgkin_huxley_squid_axon_model_1952_modified.hpp @@ -16,6 +16,9 @@ #include "ChasteSerialization.hpp" #include #include "AbstractStimulusFunction.hpp" +#if USING_DEVICE_COMPILER +#include "StimulusEvaluatorCuda.hpp" +#endif #include "AbstractGeneralizedRushLarsenCardiacCell.hpp" class Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLGRL1 : public AbstractGeneralizedRushLarsenCardiacCell diff --git a/chaste_codegen/data/tests/chaste_reference_models/GRL1Opt/beeler_reuter_model_1977.cpp b/chaste_codegen/data/tests/chaste_reference_models/GRL1Opt/beeler_reuter_model_1977.cpp index 164285d9f..42462fed9 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/GRL1Opt/beeler_reuter_model_1977.cpp +++ b/chaste_codegen/data/tests/chaste_reference_models/GRL1Opt/beeler_reuter_model_1977.cpp @@ -21,6 +21,8 @@ #include "HeartConfig.hpp" #include "IsNan.hpp" #include "MathsCustomFunctions.hpp" +#include "ChasteMathDeviceNamespaces.hpp" +#include "ChasteCpuMacros.hpp" @@ -143,7 +145,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 exp(1.4000000000000001 + 0.040000000000000001 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(CHASTE_CONST(1.4000000000000001) + CHASTE_CONST(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); @@ -154,7 +156,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 -1 + exp(3.0800000000000001 + 0.040000000000000001 * var_chaste_interface__membrane__V); + return -1 + CHASTE_MATH::Exp(CHASTE_CONST(3.0800000000000001) + CHASTE_CONST(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); @@ -165,7 +167,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)) + (((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)))); + return 4 * (-1 + CHASTE_MATH::Exp(CHASTE_CONST(3.3999999999999999) + CHASTE_CONST(0.040000000000000001) * var_chaste_interface__membrane__V)) / (CHASTE_MATH::Exp(CHASTE_CONST(2.1200000000000001) + CHASTE_CONST(0.040000000000000001) * var_chaste_interface__membrane__V) + CHASTE_MATH::Exp(CHASTE_CONST(4.2400000000000002) + CHASTE_CONST(0.080000000000000002) * var_chaste_interface__membrane__V)) + (((CHASTE_CONST(0.92000000000000004) + CHASTE_CONST(0.040000000000000001) * var_chaste_interface__membrane__V >= -CHASTE_CONST(9.9999999999999995e-8)) && (CHASTE_CONST(0.92000000000000004) + CHASTE_CONST(0.040000000000000001) * var_chaste_interface__membrane__V <= CHASTE_CONST(9.9999999999999995e-8))) ? (CHASTE_CONST(7.3000000000000007) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V) : (-5 * (CHASTE_CONST(0.92000000000000004) + CHASTE_CONST(0.040000000000000001) * var_chaste_interface__membrane__V) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.92000000000000004) - CHASTE_CONST(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); @@ -176,7 +178,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 1 + exp(0.35997120230381568 - 0.071994240460763137 * var_chaste_interface__membrane__V); + return 1 + CHASTE_MATH::Exp(CHASTE_CONST(0.35997120230381568) - CHASTE_CONST(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); @@ -187,7 +189,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 exp(0.050000000000000003 - 0.01 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(CHASTE_CONST(0.050000000000000003) - CHASTE_CONST(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); @@ -198,7 +200,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 1 + exp(2.2000000000000002 + 0.050000000000000003 * var_chaste_interface__membrane__V); + return 1 + CHASTE_MATH::Exp(CHASTE_CONST(2.2000000000000002) + CHASTE_CONST(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); @@ -209,7 +211,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 exp(-0.74576271186440679 - 0.016949152542372881 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(-CHASTE_CONST(0.74576271186440679) - CHASTE_CONST(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); @@ -220,7 +222,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 1 + exp(4.197901049475262 + 0.14992503748125938 * var_chaste_interface__membrane__V); + return 1 + CHASTE_MATH::Exp(CHASTE_CONST(4.197901049475262) + CHASTE_CONST(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); @@ -231,7 +233,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 exp(-0.224 - 0.0080000000000000002 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(-CHASTE_CONST(0.224) - CHASTE_CONST(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); @@ -242,7 +244,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 1 + exp(-6 - 0.20000000000000001 * var_chaste_interface__membrane__V); + return 1 + CHASTE_MATH::Exp(-6 - CHASTE_CONST(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); @@ -253,7 +255,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 exp(-0.59999999999999998 - 0.02 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(-CHASTE_CONST(0.59999999999999998) - CHASTE_CONST(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); @@ -264,7 +266,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.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)))); + return (((CHASTE_CONST(4.7000000000000002) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V >= -CHASTE_CONST(9.9999999999999995e-8)) && (CHASTE_CONST(4.7000000000000002) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V <= CHASTE_CONST(9.9999999999999995e-8))) ? (CHASTE_CONST(33.5) + CHASTE_CONST(0.5) * var_chaste_interface__membrane__V) : (-10 * (CHASTE_CONST(4.7000000000000002) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(4.7000000000000002) - CHASTE_CONST(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); @@ -286,7 +288,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 exp(-4.032 - 0.056000000000000001 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(-CHASTE_CONST(4.032) - CHASTE_CONST(0.056000000000000001) * 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); @@ -297,7 +299,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 1 + exp(2.8571428571428572 + 0.057142857142857141 * var_chaste_interface__membrane__V); + return 1 + CHASTE_MATH::Exp(CHASTE_CONST(2.8571428571428572) + CHASTE_CONST(0.057142857142857141) * 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); @@ -308,7 +310,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 exp(4.1322314049586781 + 0.082644628099173556 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(CHASTE_CONST(4.1322314049586781) + CHASTE_CONST(0.082644628099173556) * 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); @@ -319,7 +321,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 1 + exp(-0.80000000000000004 - 0.040000000000000001 * var_chaste_interface__membrane__V); + return 1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.80000000000000004) - CHASTE_CONST(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); @@ -330,7 +332,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 exp(-1.1997600479904018 - 0.059988002399520089 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(-CHASTE_CONST(1.1997600479904018) - CHASTE_CONST(0.059988002399520089) * 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); @@ -363,7 +365,7 @@ std::shared_ptr Cell 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__IstimAmplitude_converted = CHASTE_CONST(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 @@ -394,13 +396,13 @@ std::shared_ptr Cell // 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[0] = CHASTE_CONST(0.00089999999999999998); // (var_slow_inward_current__g_s) [mS_per_mm2] + this->mParameters[1] = CHASTE_CONST(0.01); // (var_membrane__C) [uF_per_mm2] + this->mParameters[2] = CHASTE_CONST(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[5] = CHASTE_CONST(0.0035000000000000001); // (var_time_independent_outward_current__G_K1) [uA_per_mm2] + this->mParameters[6] = CHASTE_CONST(0.0080000000000000002); // (var_time_dependent_outward_current__G_Kr) [uA_per_mm2] this->mParameters[7] = 50; // (var_sodium_current__E_Na) [mV] } @@ -452,7 +454,7 @@ std::shared_ptr Cell // 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -477,10 +479,10 @@ 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_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[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_slow_inward_current__i_s_converted = CHASTE_CONST(100.00000000000001) * (-CHASTE_CONST(7.6990712032745758) + CHASTE_CONST(13.028700000000001) * CHASTE_MATH::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 = CHASTE_CONST(100.00000000000001) * (CHASTE_CONST(3.0000000000000001e-5) + CHASTE_MATH::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 = CHASTE_CONST(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 = CHASTE_CONST(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; @@ -495,7 +497,7 @@ std::shared_ptr Cell const double delta = 1e-8; double d_dt_chaste_interface_var_membrane__V; - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -522,8 +524,8 @@ std::shared_ptr Cell 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[1]) * mParameters[6] * var_chaste_interface__time_dependent_outward_current_x1_gate__x1 / _lt_0_row[0]) / mParameters[1]; // mV / ms + const double var_slow_inward_current__i_s = (-CHASTE_CONST(7.6990712032745758) + CHASTE_CONST(13.028700000000001) * CHASTE_MATH::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 - CHASTE_CONST(0.0099999999999999985) * CHASTE_STIM(var_chaste_interface__environment__time) - (CHASTE_CONST(3.0000000000000001e-5) + CHASTE_MATH::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 double evalF = d_dt_chaste_interface_var_membrane__V; mEvalF[0] = d_dt_chaste_interface_var_membrane__V; @@ -543,7 +545,7 @@ std::shared_ptr Cell std::vector& rY = rGetStateVariables(); const double delta = 1e-8; - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -570,18 +572,18 @@ std::shared_ptr Cell 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 * (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 + 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 = (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_slow_inward_current_d_gate__d = CHASTE_CONST(0.095000000000000001) * (1 - var_chaste_interface__slow_inward_current_d_gate__d) * _lt_0_row[4] / (_lt_0_row[3]) - CHASTE_CONST(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 = CHASTE_CONST(0.012) * (1 - var_chaste_interface__slow_inward_current_f_gate__f) * _lt_0_row[8] / (_lt_0_row[7]) - CHASTE_CONST(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 = (-CHASTE_CONST(7.6990712032745758) + CHASTE_CONST(13.028700000000001) * CHASTE_MATH::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 = CHASTE_CONST(7.0000000000000007e-6) - CHASTE_CONST(0.070000000000000007) * var_chaste_interface__slow_inward_current__Cai - CHASTE_CONST(0.01) * var_slow_inward_current__i_s; // concentration_units / ms + const double var_sodium_current_h_gate__alpha_h = CHASTE_CONST(0.126) * CHASTE_MATH::Exp(-CHASTE_CONST(19.25) + CHASTE_CONST(0.25) * mParameters[4] - CHASTE_CONST(0.25) * var_chaste_interface__membrane__V); // per_ms + const double var_sodium_current_h_gate__beta_h = CHASTE_CONST(1.7) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(1.845) + CHASTE_CONST(0.082000000000000003) * mParameters[4] - CHASTE_CONST(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 + CHASTE_CONST(0.01) * mParameters[3] + (1 - CHASTE_CONST(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 = CHASTE_CONST(0.055) * CHASTE_MATH::Exp(-CHASTE_CONST(19.5) + CHASTE_CONST(0.25) * mParameters[4] - CHASTE_CONST(0.25) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(15.600000000000001) + CHASTE_CONST(0.20000000000000001) * mParameters[4] - CHASTE_CONST(0.20000000000000001) * var_chaste_interface__membrane__V)); // per_ms + const double var_sodium_current_j_gate__beta_j = CHASTE_CONST(0.29999999999999999) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(3.2000000000000002) + CHASTE_CONST(0.10000000000000001) * mParameters[4] - CHASTE_CONST(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 + CHASTE_CONST(0.01) * mParameters[3] + (1 - CHASTE_CONST(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 + const double d_dt_chaste_interface_var_time_dependent_outward_current_x1_gate__x1 = CHASTE_CONST(0.00050000000000000001) * (1 - var_chaste_interface__time_dependent_outward_current_x1_gate__x1) * _lt_0_row[14] / (_lt_0_row[13]) - CHASTE_CONST(0.0012999999999999999) * var_chaste_interface__time_dependent_outward_current_x1_gate__x1 * _lt_0_row[16] / (_lt_0_row[15]); // 1 / ms mEvalF[1] = d_dt_chaste_interface_var_slow_inward_current__Cai; mPartialF[1] = EvaluatePartialDerivative1(var_chaste_interface__environment__time, rY, delta); @@ -675,7 +677,7 @@ std::shared_ptr Cell 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -702,8 +704,8 @@ std::shared_ptr Cell 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[1]) * mParameters[6] * var_chaste_interface__time_dependent_outward_current_x1_gate__x1 / _lt_0_row[0]) / mParameters[1]; // mV / ms + const double var_slow_inward_current__i_s = (-CHASTE_CONST(7.6990712032745758) + CHASTE_CONST(13.028700000000001) * CHASTE_MATH::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 - CHASTE_CONST(0.0099999999999999985) * CHASTE_STIM(var_chaste_interface__environment__time) - (CHASTE_CONST(3.0000000000000001e-5) + CHASTE_MATH::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 return d_dt_chaste_interface_var_membrane__V; } @@ -713,7 +715,7 @@ std::shared_ptr Cell double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -731,27 +733,27 @@ std::shared_ptr Cell 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_x1 = CHASTE_CONST(0.040000000000000001) * var_chaste_interface__membrane__V; + const double var_x2 = CHASTE_MATH::Exp(CHASTE_CONST(2.1200000000000001) + var_x1); + const double var_x3 = CHASTE_MATH::Exp(CHASTE_CONST(4.2400000000000002) + CHASTE_CONST(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; - const double var_x7 = 4 * (-1 + var_x5) * (-0.040000000000000001 * var_x2 - 0.080000000000000002 * var_x3) / pow(var_x4, 2); + const double var_x5 = CHASTE_MATH::Exp(CHASTE_CONST(3.3999999999999999) + var_x1); + const double var_x6 = CHASTE_CONST(0.16) * var_x5 / var_x4; + const double var_x7 = 4 * (-1 + var_x5) * (-CHASTE_CONST(0.040000000000000001) * var_x2 - CHASTE_CONST(0.080000000000000002) * var_x3) / CHASTE_MATH::Pow(var_x4, 2); const double var_x8 = mParameters[0] * var_chaste_interface__slow_inward_current_f_gate__f; const double var_x9 = var_x8 * var_chaste_interface__slow_inward_current_d_gate__d; - const double var_x10 = pow(var_chaste_interface__sodium_current_m_gate__m, 3); + const double var_x10 = CHASTE_MATH::Pow(var_chaste_interface__sodium_current_m_gate__m, 3); const double var_x11 = var_x10 * mParameters[2] * var_chaste_interface__sodium_current_j_gate__j; - const double var_x12 = exp(3.0800000000000001 + var_x1); - const double var_x13 = 1 / exp(1.4000000000000001 + var_x1); + const double var_x12 = CHASTE_MATH::Exp(CHASTE_CONST(3.0800000000000001) + var_x1); + const double var_x13 = 1 / CHASTE_MATH::Exp(CHASTE_CONST(1.4000000000000001) + var_x1); const double var_x14 = var_x13 * mParameters[6]; const double var_x15 = -1 + var_x12; - const double var_x16 = 3.0000000000000001e-5 + var_x9 + var_x11 * var_chaste_interface__sodium_current_h_gate__h + 0.040000000000000001 * var_x12 * var_x14 * var_chaste_interface__time_dependent_outward_current_x1_gate__x1 - 0.040000000000000001 * var_x13 * var_x15 * mParameters[6] * var_chaste_interface__time_dependent_outward_current_x1_gate__x1; - const double var_x17 = 0.92000000000000004 + var_x1; - const double var_x18 = exp(-var_x17); + const double var_x16 = CHASTE_CONST(3.0000000000000001e-5) + var_x9 + var_x11 * var_chaste_interface__sodium_current_h_gate__h + CHASTE_CONST(0.040000000000000001) * var_x12 * var_x14 * var_chaste_interface__time_dependent_outward_current_x1_gate__x1 - CHASTE_CONST(0.040000000000000001) * var_x13 * var_x15 * mParameters[6] * var_chaste_interface__time_dependent_outward_current_x1_gate__x1; + const double var_x17 = CHASTE_CONST(0.92000000000000004) + var_x1; + const double var_x18 = CHASTE_MATH::Exp(-var_x17); const double var_x19 = -1 + var_x18; - partialF = (((var_x17 >= -9.9999999999999995e-8) && (var_x17 <= 9.9999999999999995e-8)) ? (var_x0 * (-var_x16 + (-0.10000000000000001 - var_x6 - var_x7) * mParameters[5])) : (var_x0 * (-var_x16 + (-var_x6 - var_x7 + 0.20000000000000001 / var_x19 + 0.20000000000000001 * var_x17 * var_x18 / pow(var_x19, 2)) * mParameters[5]))); + partialF = (((var_x17 >= -CHASTE_CONST(9.9999999999999995e-8)) && (var_x17 <= CHASTE_CONST(9.9999999999999995e-8))) ? (var_x0 * (-var_x16 + (-CHASTE_CONST(0.10000000000000001) - var_x6 - var_x7) * mParameters[5])) : (var_x0 * (-var_x16 + (-var_x6 - var_x7 + CHASTE_CONST(0.20000000000000001) / var_x19 + CHASTE_CONST(0.20000000000000001) * var_x17 * var_x18 / CHASTE_MATH::Pow(var_x19, 2)) * mParameters[5]))); } else { @@ -766,7 +768,7 @@ std::shared_ptr Cell 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -778,8 +780,8 @@ std::shared_ptr Cell // 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 + const double var_slow_inward_current__i_s = (-CHASTE_CONST(7.6990712032745758) + CHASTE_CONST(13.028700000000001) * CHASTE_MATH::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 = CHASTE_CONST(7.0000000000000007e-6) - CHASTE_CONST(0.070000000000000007) * var_chaste_interface__slow_inward_current__Cai - CHASTE_CONST(0.01) * var_slow_inward_current__i_s; // concentration_units / ms return d_dt_chaste_interface_var_slow_inward_current__Cai; } @@ -802,7 +804,7 @@ std::shared_ptr Cell const double var_x9 = var_x8 * var_chaste_interface__slow_inward_current_d_gate__d; const double var_x20 = var_x9 / var_chaste_interface__slow_inward_current__Cai; - partialF = -0.070000000000000007 - 0.13028700000000001 * var_x20; + partialF = -CHASTE_CONST(0.070000000000000007) - CHASTE_CONST(0.13028700000000001) * var_x20; } else { @@ -817,7 +819,7 @@ std::shared_ptr Cell 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -842,7 +844,7 @@ std::shared_ptr Cell double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: mV; Initial value: -84.624 @@ -855,15 +857,15 @@ std::shared_ptr Cell const double* const _lt_0_row = Cellbeeler_reuter_model_1977FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); const double var_x27 = _lt_0_row[12]; - const double var_x28 = 0.10000000000000001 * var_chaste_interface__membrane__V; - const double var_x29 = 4.7000000000000002 + var_x28; - const double var_x30 = (var_x29 >= -9.9999999999999995e-8) && (var_x29 <= 9.9999999999999995e-8); - const double var_x31 = exp(-var_x29); + const double var_x28 = CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V; + const double var_x29 = CHASTE_CONST(4.7000000000000002) + var_x28; + const double var_x30 = (var_x29 >= -CHASTE_CONST(9.9999999999999995e-8)) && (var_x29 <= CHASTE_CONST(9.9999999999999995e-8)); + const double var_x31 = CHASTE_MATH::Exp(-var_x29); const double var_x32 = -1 + var_x31; const double var_x33 = 1 / var_x32; const double var_x35 = 40 * var_x27; - partialF = ((var_x30) ? (-33.5 - var_x35 - 0.5 * var_chaste_interface__membrane__V) : (-var_x35 + 10 * var_x29 * var_x33)); + partialF = ((var_x30) ? (-CHASTE_CONST(33.5) - var_x35 - CHASTE_CONST(0.5) * var_chaste_interface__membrane__V) : (-var_x35 + 10 * var_x29 * var_x33)); } else { @@ -878,7 +880,7 @@ std::shared_ptr Cell 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -886,9 +888,9 @@ std::shared_ptr Cell // 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 = (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_h_gate__alpha_h = CHASTE_CONST(0.126) * CHASTE_MATH::Exp(-CHASTE_CONST(19.25) + CHASTE_CONST(0.25) * mParameters[4] - CHASTE_CONST(0.25) * var_chaste_interface__membrane__V); // per_ms + const double var_sodium_current_h_gate__beta_h = CHASTE_CONST(1.7) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(1.845) + CHASTE_CONST(0.082000000000000003) * mParameters[4] - CHASTE_CONST(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 + CHASTE_CONST(0.01) * mParameters[3] + (1 - CHASTE_CONST(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; } @@ -898,18 +900,18 @@ std::shared_ptr Cell double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: mV; Initial value: -84.624 - const double var_x36 = 0.25 * var_chaste_interface__membrane__V - 0.25 * mParameters[4]; - 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_x36 = CHASTE_CONST(0.25) * var_chaste_interface__membrane__V - CHASTE_CONST(0.25) * mParameters[4]; + const double var_x37 = CHASTE_MATH::Exp(-CHASTE_CONST(19.25) - var_x36); + const double var_x38 = CHASTE_CONST(0.126) * var_x37; + const double var_x39 = CHASTE_MATH::Exp(-CHASTE_CONST(1.845) + CHASTE_CONST(0.082000000000000003) * mParameters[4] - CHASTE_CONST(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 = var_x38 + 1.7 * var_x41; + const double var_x42 = var_x38 + CHASTE_CONST(1.7) * var_x41; partialF = -var_x42; } @@ -926,7 +928,7 @@ std::shared_ptr Cell 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -934,9 +936,9 @@ std::shared_ptr Cell // 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 = (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 var_sodium_current_j_gate__alpha_j = CHASTE_CONST(0.055) * CHASTE_MATH::Exp(-CHASTE_CONST(19.5) + CHASTE_CONST(0.25) * mParameters[4] - CHASTE_CONST(0.25) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(15.600000000000001) + CHASTE_CONST(0.20000000000000001) * mParameters[4] - CHASTE_CONST(0.20000000000000001) * var_chaste_interface__membrane__V)); // per_ms + const double var_sodium_current_j_gate__beta_j = CHASTE_CONST(0.29999999999999999) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(3.2000000000000002) + CHASTE_CONST(0.10000000000000001) * mParameters[4] - CHASTE_CONST(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 + CHASTE_CONST(0.01) * mParameters[3] + (1 - CHASTE_CONST(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; } @@ -946,23 +948,23 @@ std::shared_ptr Cell double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: mV; Initial value: -84.624 - const double var_x28 = 0.10000000000000001 * var_chaste_interface__membrane__V; - const double var_x36 = 0.25 * var_chaste_interface__membrane__V - 0.25 * mParameters[4]; - const double var_x48 = exp(-3.2000000000000002 - var_x28 + 0.10000000000000001 * mParameters[4]); + const double var_x28 = CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V; + const double var_x36 = CHASTE_CONST(0.25) * var_chaste_interface__membrane__V - CHASTE_CONST(0.25) * mParameters[4]; + const double var_x48 = CHASTE_MATH::Exp(-CHASTE_CONST(3.2000000000000002) - var_x28 + CHASTE_CONST(0.10000000000000001) * mParameters[4]); const double var_x49 = 1 + var_x48; 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_x51 = CHASTE_MATH::Exp(-CHASTE_CONST(15.600000000000001) + CHASTE_CONST(0.20000000000000001) * mParameters[4] - CHASTE_CONST(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_x36); + const double var_x54 = CHASTE_MATH::Exp(-CHASTE_CONST(19.5) - var_x36); 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; + const double var_x56 = CHASTE_CONST(0.055) * var_x55; + const double var_x57 = var_x56 + CHASTE_CONST(0.29999999999999999) * var_x50; partialF = -var_x57; } @@ -979,7 +981,7 @@ std::shared_ptr Cell 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -994,7 +996,7 @@ std::shared_ptr Cell 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 * (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_d_gate__d = CHASTE_CONST(0.095000000000000001) * (1 - var_chaste_interface__slow_inward_current_d_gate__d) * _lt_0_row[4] / (_lt_0_row[3]) - CHASTE_CONST(0.070000000000000007) * var_chaste_interface__slow_inward_current_d_gate__d * _lt_0_row[6] / (_lt_0_row[5]); // 1 / ms return d_dt_chaste_interface_var_slow_inward_current_d_gate__d; } @@ -1004,7 +1006,7 @@ std::shared_ptr Cell double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: mV; Initial value: -84.624 @@ -1016,16 +1018,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_x61 = exp(2.2000000000000002 + 0.050000000000000003 * var_chaste_interface__membrane__V); + const double var_x61 = CHASTE_MATH::Exp(CHASTE_CONST(2.2000000000000002) + CHASTE_CONST(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_x66 = CHASTE_MATH::Exp(CHASTE_CONST(0.35997120230381568) - CHASTE_CONST(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; + partialF = -CHASTE_CONST(0.070000000000000007) * var_x64 - CHASTE_CONST(0.095000000000000001) * var_x69; } else { @@ -1040,7 +1042,7 @@ std::shared_ptr Cell 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -1055,7 +1057,7 @@ std::shared_ptr Cell 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 * (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 d_dt_chaste_interface_var_slow_inward_current_f_gate__f = CHASTE_CONST(0.012) * (1 - var_chaste_interface__slow_inward_current_f_gate__f) * _lt_0_row[8] / (_lt_0_row[7]) - CHASTE_CONST(0.0064999999999999997) * var_chaste_interface__slow_inward_current_f_gate__f * _lt_0_row[10] / (_lt_0_row[9]); // 1 / ms return d_dt_chaste_interface_var_slow_inward_current_f_gate__f; } @@ -1065,7 +1067,7 @@ std::shared_ptr Cell double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: mV; Initial value: -84.624 @@ -1077,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_x71 = exp(4.197901049475262 + 0.14992503748125938 * var_chaste_interface__membrane__V); + const double var_x71 = CHASTE_MATH::Exp(CHASTE_CONST(4.197901049475262) + CHASTE_CONST(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_x75 = CHASTE_MATH::Exp(-6 - CHASTE_CONST(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; + partialF = -CHASTE_CONST(0.012) * var_x74 - CHASTE_CONST(0.0064999999999999997) * var_x77 * var_x78; } else { @@ -1101,7 +1103,7 @@ std::shared_ptr Cell 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -1116,7 +1118,7 @@ std::shared_ptr Cell 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 * (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 + const double d_dt_chaste_interface_var_time_dependent_outward_current_x1_gate__x1 = CHASTE_CONST(0.00050000000000000001) * (1 - var_chaste_interface__time_dependent_outward_current_x1_gate__x1) * _lt_0_row[14] / (_lt_0_row[13]) - CHASTE_CONST(0.0012999999999999999) * var_chaste_interface__time_dependent_outward_current_x1_gate__x1 * _lt_0_row[16] / (_lt_0_row[15]); // 1 / ms return d_dt_chaste_interface_var_time_dependent_outward_current_x1_gate__x1; } @@ -1126,7 +1128,7 @@ std::shared_ptr Cell double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: mV; Initial value: -84.624 @@ -1138,16 +1140,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_x79 = exp(-0.80000000000000004 - 0.040000000000000001 * var_chaste_interface__membrane__V); + const double var_x79 = CHASTE_MATH::Exp(-CHASTE_CONST(0.80000000000000004) - CHASTE_CONST(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_x84 = CHASTE_MATH::Exp(CHASTE_CONST(2.8571428571428572) + CHASTE_CONST(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; + partialF = -CHASTE_CONST(0.00050000000000000001) * var_x87 - CHASTE_CONST(0.0012999999999999999) * var_x82; } else { @@ -1164,7 +1166,7 @@ std::shared_ptr Cell { // Inputs: // Time units: millisecond - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -1190,28 +1192,28 @@ std::shared_ptr Cell 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__E_s = CHASTE_CONST(7.6990712032745758) - CHASTE_CONST(13.028700000000001) * CHASTE_MATH::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_slow_inward_current__i_s_converted = CHASTE_CONST(100.00000000000001) * var_slow_inward_current__i_s; // uA_per_cm2 + const double var_sodium_current__g_Nac = CHASTE_CONST(3.0000000000000001e-5); // mS_per_mm2 + const double var_sodium_current_h_gate__alpha_h = CHASTE_CONST(0.126) * CHASTE_MATH::Exp(-CHASTE_CONST(19.25) + CHASTE_CONST(0.25) * mParameters[4] - CHASTE_CONST(0.25) * var_chaste_interface__membrane__V); // per_ms + const double var_sodium_current_h_gate__beta_h = CHASTE_CONST(1.7) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(1.845) + CHASTE_CONST(0.082000000000000003) * mParameters[4] - CHASTE_CONST(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__alpha_j = CHASTE_CONST(0.055) * CHASTE_MATH::Exp(-CHASTE_CONST(19.5) + CHASTE_CONST(0.25) * mParameters[4] - CHASTE_CONST(0.25) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(15.600000000000001) + CHASTE_CONST(0.20000000000000001) * mParameters[4] - CHASTE_CONST(0.20000000000000001) * var_chaste_interface__membrane__V)); // per_ms + const double var_sodium_current_j_gate__beta_j = CHASTE_CONST(0.29999999999999999) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(3.2000000000000002) + CHASTE_CONST(0.10000000000000001) * mParameters[4] - CHASTE_CONST(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_sodium_current__i_Na = (-mParameters[7] + var_chaste_interface__membrane__V) * (CHASTE_MATH::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 = CHASTE_CONST(100.00000000000001) * var_sodium_current__i_Na; // uA_per_cm2 + const double var_stimulus_protocol__Istim_converted = -CHASTE_STIM(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_dependent_outward_current__i_x1_converted = CHASTE_CONST(100.00000000000001) * var_time_dependent_outward_current__i_x1; // uA_per_cm2 + const double var_time_independent_outward_current__B = -CHASTE_CONST(0.040000000000000001); // per_mV + const double var_time_independent_outward_current__A = -CHASTE_CONST(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 + const double var_time_independent_outward_current__temp_current = (((var_time_independent_outward_current__U >= -CHASTE_CONST(9.9999999999999995e-8)) && (var_time_independent_outward_current__U <= CHASTE_CONST(9.9999999999999995e-8))) ? ((1 - CHASTE_CONST(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 + CHASTE_MATH::Exp(var_time_independent_outward_current__U)))); // dimensionless + const double var_time_independent_outward_current__i_K1 = (4 * (-1 + CHASTE_MATH::Exp(CHASTE_CONST(3.3999999999999999) + CHASTE_CONST(0.040000000000000001) * var_chaste_interface__membrane__V)) / (CHASTE_MATH::Exp(CHASTE_CONST(2.1200000000000001) + CHASTE_CONST(0.040000000000000001) * var_chaste_interface__membrane__V) + CHASTE_MATH::Exp(CHASTE_CONST(4.2400000000000002) + CHASTE_CONST(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 = CHASTE_CONST(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; diff --git a/chaste_codegen/data/tests/chaste_reference_models/GRL1Opt/beeler_reuter_model_1977.hpp b/chaste_codegen/data/tests/chaste_reference_models/GRL1Opt/beeler_reuter_model_1977.hpp index a8897e424..a43012872 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/GRL1Opt/beeler_reuter_model_1977.hpp +++ b/chaste_codegen/data/tests/chaste_reference_models/GRL1Opt/beeler_reuter_model_1977.hpp @@ -16,6 +16,9 @@ #include "ChasteSerialization.hpp" #include #include "AbstractStimulusFunction.hpp" +#if USING_DEVICE_COMPILER +#include "StimulusEvaluatorCuda.hpp" +#endif #include "AbstractGeneralizedRushLarsenCardiacCell.hpp" class Cellbeeler_reuter_model_1977FromCellMLGRL1Opt : public AbstractGeneralizedRushLarsenCardiacCell diff --git a/chaste_codegen/data/tests/chaste_reference_models/GRL1Opt/dynamic_matsuoka_model_2003.cpp b/chaste_codegen/data/tests/chaste_reference_models/GRL1Opt/dynamic_matsuoka_model_2003.cpp index 357d7df8f..cc6e72223 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/GRL1Opt/dynamic_matsuoka_model_2003.cpp +++ b/chaste_codegen/data/tests/chaste_reference_models/GRL1Opt/dynamic_matsuoka_model_2003.cpp @@ -21,6 +21,8 @@ #include "HeartConfig.hpp" #include "IsNan.hpp" #include "MathsCustomFunctions.hpp" +#include "ChasteMathDeviceNamespaces.hpp" +#include "ChasteCpuMacros.hpp" #include "ModelFactory.hpp" @@ -149,7 +151,7 @@ class Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables : public Abstract for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__Vm) { - return exp(-0.074870384603595908 * var_chaste_interface__membrane__Vm); + return CHASTE_MATH::Exp(-CHASTE_CONST(0.074870384603595908) * 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); @@ -171,7 +173,7 @@ class Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables : public Abstract for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__Vm) { - return 1 - exp(-0.074870384603595908 * var_chaste_interface__membrane__Vm); + return 1 - CHASTE_MATH::Exp(-CHASTE_CONST(0.074870384603595908) * 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); @@ -193,7 +195,7 @@ class Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables : public Abstract for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__Vm) { - return exp(-0.037435192301797954 * var_chaste_interface__membrane__Vm); + return CHASTE_MATH::Exp(-CHASTE_CONST(0.037435192301797954) * 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); @@ -215,7 +217,7 @@ class Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables : public Abstract for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__Vm) { - return 1 - exp(-0.037435192301797954 * var_chaste_interface__membrane__Vm); + return 1 - CHASTE_MATH::Exp(-CHASTE_CONST(0.037435192301797954) * 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); @@ -237,7 +239,7 @@ class Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables : public Abstract for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__Vm) { - return exp(-0.030696857687474322 * var_chaste_interface__membrane__Vm); + return CHASTE_MATH::Exp(-CHASTE_CONST(0.030696857687474322) * 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); @@ -248,7 +250,7 @@ class Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables : public Abstract for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__Vm) { - return exp(0.011979261536575346 * var_chaste_interface__membrane__Vm); + return CHASTE_MATH::Exp(CHASTE_CONST(0.011979261536575346) * 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); @@ -259,7 +261,7 @@ class Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables : public Abstract for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__Vm) { - return exp(-0.025455930765222609 * var_chaste_interface__membrane__Vm); + return CHASTE_MATH::Exp(-CHASTE_CONST(0.025455930765222609) * 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); @@ -270,7 +272,7 @@ class Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables : public Abstract for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__Vm) { - return 1 - exp(-0.23076923076923078 - 0.076923076923076927 * var_chaste_interface__membrane__Vm); + return 1 - CHASTE_MATH::Exp(-CHASTE_CONST(0.23076923076923078) - CHASTE_CONST(0.076923076923076927) * 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); @@ -292,7 +294,7 @@ class Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables : public Abstract for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__Vm) { - return 58 * exp(0.015384615384615385 * var_chaste_interface__membrane__Vm) + 250000 * exp(0.1111111111111111 * var_chaste_interface__membrane__Vm); + return 58 * CHASTE_MATH::Exp(CHASTE_CONST(0.015384615384615385) * var_chaste_interface__membrane__Vm) + 250000 * CHASTE_MATH::Exp(CHASTE_CONST(0.1111111111111111) * 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); @@ -303,7 +305,7 @@ class Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables : public Abstract for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__Vm) { - return 66 * exp(-0.015384615384615385 * var_chaste_interface__membrane__Vm) + 1800 * exp(-0.071428571428571425 * var_chaste_interface__membrane__Vm); + return 66 * CHASTE_MATH::Exp(-CHASTE_CONST(0.015384615384615385) * var_chaste_interface__membrane__Vm) + 1800 * CHASTE_MATH::Exp(-CHASTE_CONST(0.071428571428571425) * 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); @@ -314,7 +316,7 @@ class Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables : public Abstract for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__Vm) { - return 1 / (11 * exp(0.01 * var_chaste_interface__membrane__Vm) + 2200000 * exp(0.13513513513513511 * var_chaste_interface__membrane__Vm)); + return 1 / (11 * CHASTE_MATH::Exp(CHASTE_CONST(0.01) * var_chaste_interface__membrane__Vm) + 2200000 * CHASTE_MATH::Exp(CHASTE_CONST(0.13513513513513511) * 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); @@ -325,7 +327,7 @@ class Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables : public Abstract for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__Vm) { - return 1 / (480 * exp(0.14285714285714285 * var_chaste_interface__membrane__Vm) + 2.2000000000000002 * exp(0.015384615384615385 * var_chaste_interface__membrane__Vm)); + return 1 / (480 * CHASTE_MATH::Exp(CHASTE_CONST(0.14285714285714285) * var_chaste_interface__membrane__Vm) + CHASTE_CONST(2.2000000000000002) * CHASTE_MATH::Exp(CHASTE_CONST(0.015384615384615385) * 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); @@ -336,7 +338,7 @@ class Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables : public Abstract for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__Vm) { - return 1 / (2 * exp(-0.01 * var_chaste_interface__membrane__Vm) + 0.0018 * exp(-0.13513513513513511 * var_chaste_interface__membrane__Vm)); + return 1 / (2 * CHASTE_MATH::Exp(-CHASTE_CONST(0.01) * var_chaste_interface__membrane__Vm) + CHASTE_CONST(0.0018) * CHASTE_MATH::Exp(-CHASTE_CONST(0.13513513513513511) * 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); @@ -347,7 +349,7 @@ class Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables : public Abstract for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__Vm) { - return 1 / (1.5 * exp(-0.015384615384615385 * var_chaste_interface__membrane__Vm) + 0.27000000000000002 * exp(-0.16949152542372881 * var_chaste_interface__membrane__Vm)); + return 1 / (CHASTE_CONST(1.5) * CHASTE_MATH::Exp(-CHASTE_CONST(0.015384615384615385) * var_chaste_interface__membrane__Vm) + CHASTE_CONST(0.27000000000000002) * CHASTE_MATH::Exp(-CHASTE_CONST(0.16949152542372881) * 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); @@ -358,7 +360,7 @@ class Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables : public Abstract for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__Vm) { - return 0.019 * exp(-0.17857142857142858 * var_chaste_interface__membrane__Vm) + 0.81999999999999995 * exp(-0.0040000000000000001 * var_chaste_interface__membrane__Vm); + return CHASTE_CONST(0.019) * CHASTE_MATH::Exp(-CHASTE_CONST(0.17857142857142858) * var_chaste_interface__membrane__Vm) + CHASTE_CONST(0.81999999999999995) * CHASTE_MATH::Exp(-CHASTE_CONST(0.0040000000000000001) * 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); @@ -369,7 +371,7 @@ class Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables : public Abstract for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__Vm) { - return 1.5 * exp(0.0001 * var_chaste_interface__membrane__Vm) + 40 * exp(0.15873015873015872 * var_chaste_interface__membrane__Vm); + return CHASTE_CONST(1.5) * CHASTE_MATH::Exp(CHASTE_CONST(0.0001) * var_chaste_interface__membrane__Vm) + 40 * CHASTE_MATH::Exp(CHASTE_CONST(0.15873015873015872) * 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); @@ -380,7 +382,7 @@ class Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables : public Abstract for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__Vm) { - return 30 * exp(0.00033333333333333332 * var_chaste_interface__membrane__Vm) + 62000 * exp(0.099009900990099015 * var_chaste_interface__membrane__Vm); + return 30 * CHASTE_MATH::Exp(CHASTE_CONST(0.00033333333333333332) * var_chaste_interface__membrane__Vm) + 62000 * CHASTE_MATH::Exp(CHASTE_CONST(0.099009900990099015) * 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); @@ -391,7 +393,7 @@ class Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables : public Abstract for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__Vm) { - return 1.2 * exp(-0.040000000000000001 * var_chaste_interface__membrane__Vm) + 0.00059999999999999995 * exp(-0.14925373134328357 * var_chaste_interface__membrane__Vm); + return CHASTE_CONST(1.2) * CHASTE_MATH::Exp(-CHASTE_CONST(0.040000000000000001) * var_chaste_interface__membrane__Vm) + CHASTE_CONST(0.00059999999999999995) * CHASTE_MATH::Exp(-CHASTE_CONST(0.14925373134328357) * 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); @@ -402,7 +404,7 @@ class Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables : public Abstract for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__Vm) { - return 1 / (160 * exp(0.035714285714285712 * var_chaste_interface__membrane__Vm) + 200 * exp(0.001 * var_chaste_interface__membrane__Vm)) + 0.00040000000000000002 / exp(0.050000000000000003 * var_chaste_interface__membrane__Vm); + return 1 / (160 * CHASTE_MATH::Exp(CHASTE_CONST(0.035714285714285712) * var_chaste_interface__membrane__Vm) + 200 * CHASTE_MATH::Exp(CHASTE_CONST(0.001) * var_chaste_interface__membrane__Vm)) + CHASTE_CONST(0.00040000000000000002) / CHASTE_MATH::Exp(CHASTE_CONST(0.050000000000000003) * 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); @@ -413,7 +415,7 @@ class Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables : public Abstract for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__Vm) { - return 5 * exp(-0.0033333333333333335 * var_chaste_interface__membrane__Vm) + 20 * exp(-0.086956521739130432 * var_chaste_interface__membrane__Vm); + return 5 * CHASTE_MATH::Exp(-CHASTE_CONST(0.0033333333333333335) * var_chaste_interface__membrane__Vm) + 20 * CHASTE_MATH::Exp(-CHASTE_CONST(0.086956521739130432) * 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); @@ -424,7 +426,7 @@ class Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables : public Abstract for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__Vm) { - return 1 / (1600 * exp(0.035714285714285712 * var_chaste_interface__membrane__Vm) + 2000 * exp(0.001 * var_chaste_interface__membrane__Vm)) + 0.0001 / exp(0.050000000000000003 * var_chaste_interface__membrane__Vm); + return 1 / (1600 * CHASTE_MATH::Exp(CHASTE_CONST(0.035714285714285712) * var_chaste_interface__membrane__Vm) + 2000 * CHASTE_MATH::Exp(CHASTE_CONST(0.001) * var_chaste_interface__membrane__Vm)) + CHASTE_CONST(0.0001) / CHASTE_MATH::Exp(CHASTE_CONST(0.050000000000000003) * 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); @@ -435,7 +437,7 @@ class Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables : public Abstract for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__Vm) { - return 20 * exp(-0.0033333333333333335 * var_chaste_interface__membrane__Vm) + 200 * exp(-0.076923076923076927 * var_chaste_interface__membrane__Vm); + return 20 * CHASTE_MATH::Exp(-CHASTE_CONST(0.0033333333333333335) * var_chaste_interface__membrane__Vm) + 200 * CHASTE_MATH::Exp(-CHASTE_CONST(0.076923076923076927) * 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); @@ -446,7 +448,7 @@ class Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables : public Abstract for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__Vm) { - return 2.5 * exp(0.0033333333333333335 * var_chaste_interface__membrane__Vm) + 10 * exp(0.058823529411764705 * var_chaste_interface__membrane__Vm); + return CHASTE_CONST(2.5) * CHASTE_MATH::Exp(CHASTE_CONST(0.0033333333333333335) * var_chaste_interface__membrane__Vm) + 10 * CHASTE_MATH::Exp(CHASTE_CONST(0.058823529411764705) * 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); @@ -457,7 +459,7 @@ class Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables : public Abstract for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__Vm) { - return 2 * exp(-0.0066666666666666671 * var_chaste_interface__membrane__Vm) + 0.34999999999999998 * exp(-0.058823529411764705 * var_chaste_interface__membrane__Vm); + return 2 * CHASTE_MATH::Exp(-CHASTE_CONST(0.0066666666666666671) * var_chaste_interface__membrane__Vm) + CHASTE_CONST(0.34999999999999998) * CHASTE_MATH::Exp(-CHASTE_CONST(0.058823529411764705) * 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); @@ -468,7 +470,7 @@ class Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables : public Abstract for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__Vm) { - return 85 * exp(-0.095238095238095233 * var_chaste_interface__membrane__Vm) + 370 * exp(-0.016129032258064516 * var_chaste_interface__membrane__Vm); + return 85 * CHASTE_MATH::Exp(-CHASTE_CONST(0.095238095238095233) * var_chaste_interface__membrane__Vm) + 370 * CHASTE_MATH::Exp(-CHASTE_CONST(0.016129032258064516) * 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); @@ -479,7 +481,7 @@ class Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables : public Abstract for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__Vm) { - return 260 * exp(0.01 * var_chaste_interface__membrane__Vm) + 1450 * exp(0.050000000000000003 * var_chaste_interface__membrane__Vm); + return 260 * CHASTE_MATH::Exp(CHASTE_CONST(0.01) * var_chaste_interface__membrane__Vm) + 1450 * CHASTE_MATH::Exp(CHASTE_CONST(0.050000000000000003) * 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); @@ -490,7 +492,7 @@ class Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables : public Abstract for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__Vm) { - return exp(0.011979261536575346 * var_chaste_interface__membrane__Vm); + return CHASTE_MATH::Exp(CHASTE_CONST(0.011979261536575346) * 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); @@ -501,7 +503,7 @@ class Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables : public Abstract for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__Vm) { - return exp(-0.025455930765222609 * var_chaste_interface__membrane__Vm); + return CHASTE_MATH::Exp(-CHASTE_CONST(0.025455930765222609) * 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); @@ -512,7 +514,7 @@ class Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables : public Abstract for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__Vm) { - return 8000 * exp(0.01 * var_chaste_interface__membrane__Vm) + 9000000000.0 * exp(0.20000000000000001 * var_chaste_interface__membrane__Vm); + return 8000 * CHASTE_MATH::Exp(CHASTE_CONST(0.01) * var_chaste_interface__membrane__Vm) + CHASTE_CONST(9000000000.0) * CHASTE_MATH::Exp(CHASTE_CONST(0.20000000000000001) * 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); @@ -523,7 +525,7 @@ class Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables : public Abstract for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__Vm) { - return 4000 * exp(-0.01 * var_chaste_interface__membrane__Vm) + 0.014 * exp(-0.20000000000000001 * var_chaste_interface__membrane__Vm); + return 4000 * CHASTE_MATH::Exp(-CHASTE_CONST(0.01) * var_chaste_interface__membrane__Vm) + CHASTE_CONST(0.014) * CHASTE_MATH::Exp(-CHASTE_CONST(0.20000000000000001) * 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); @@ -534,7 +536,7 @@ class Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables : public Abstract for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__Vm) { - return 1 / (1300 * exp(0.050000000000000003 * var_chaste_interface__membrane__Vm) + 0.040000000000000001 * exp(0.00125 * var_chaste_interface__membrane__Vm)); + return 1 / (1300 * CHASTE_MATH::Exp(CHASTE_CONST(0.050000000000000003) * var_chaste_interface__membrane__Vm) + CHASTE_CONST(0.040000000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.00125) * 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); @@ -545,7 +547,7 @@ class Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables : public Abstract for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__Vm) { - return 1.25 / exp(-0.0025000000000000001 * var_chaste_interface__membrane__Vm); + return CHASTE_CONST(1.25) / CHASTE_MATH::Exp(-CHASTE_CONST(0.0025000000000000001) * 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); @@ -556,7 +558,7 @@ class Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables : public Abstract for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__Vm) { - return 1 / (26 * exp(0.058823529411764705 * var_chaste_interface__membrane__Vm) + 0.02 * exp(0.00125 * var_chaste_interface__membrane__Vm)); + return 1 / (26 * CHASTE_MATH::Exp(CHASTE_CONST(0.058823529411764705) * var_chaste_interface__membrane__Vm) + CHASTE_CONST(0.02) * CHASTE_MATH::Exp(CHASTE_CONST(0.00125) * 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); @@ -567,7 +569,7 @@ class Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables : public Abstract for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__Vm) { - return 1 / (5 * exp(-0.0025000000000000001 * var_chaste_interface__membrane__Vm) + 0.0001027 * exp(-0.125 * var_chaste_interface__membrane__Vm)); + return 1 / (5 * CHASTE_MATH::Exp(-CHASTE_CONST(0.0025000000000000001) * var_chaste_interface__membrane__Vm) + CHASTE_CONST(0.0001027) * CHASTE_MATH::Exp(-CHASTE_CONST(0.125) * 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); @@ -578,7 +580,7 @@ class Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables : public Abstract for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__Vm) { - return 1 / (0.25 * exp(-0.02 * var_chaste_interface__membrane__Vm) + 0.1027 * exp(-0.125 * var_chaste_interface__membrane__Vm)); + return 1 / (CHASTE_CONST(0.25) * CHASTE_MATH::Exp(-CHASTE_CONST(0.02) * var_chaste_interface__membrane__Vm) + CHASTE_CONST(0.1027) * CHASTE_MATH::Exp(-CHASTE_CONST(0.125) * 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); @@ -589,7 +591,7 @@ class Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables : public Abstract for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__Vm) { - return 11 * exp(-0.035714285714285712 * var_chaste_interface__membrane__Vm) + 0.20000000000000001 * exp(-0.0025000000000000001 * var_chaste_interface__membrane__Vm); + return 11 * CHASTE_MATH::Exp(-CHASTE_CONST(0.035714285714285712) * var_chaste_interface__membrane__Vm) + CHASTE_CONST(0.20000000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(0.0025000000000000001) * 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); @@ -600,7 +602,7 @@ class Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables : public Abstract for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__Vm) { - return 4.4000000000000004 * exp(0.0625 * var_chaste_interface__membrane__Vm) + 0.20000000000000001 * exp(0.002 * var_chaste_interface__membrane__Vm); + return CHASTE_CONST(4.4000000000000004) * CHASTE_MATH::Exp(CHASTE_CONST(0.0625) * var_chaste_interface__membrane__Vm) + CHASTE_CONST(0.20000000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.002) * 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); @@ -611,7 +613,7 @@ class Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables : public Abstract for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__Vm) { - return 1 + 0.051334999999999999 * exp(-1.1946902654867255 - 0.088495575221238937 * var_chaste_interface__membrane__Vm); + return 1 + CHASTE_CONST(0.051334999999999999) * CHASTE_MATH::Exp(-CHASTE_CONST(1.1946902654867255) - CHASTE_CONST(0.088495575221238937) * 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); @@ -622,7 +624,7 @@ class Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables : public Abstract for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__Vm) { - return exp(-1.1946902654867255 - 0.088495575221238937 * var_chaste_interface__membrane__Vm); + return CHASTE_MATH::Exp(-CHASTE_CONST(1.1946902654867255) - CHASTE_CONST(0.088495575221238937) * 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); @@ -633,7 +635,7 @@ class Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables : public Abstract for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__Vm) { - return 1 + 0.067083000000000004 * exp(1.1946902654867255 + 0.088495575221238937 * var_chaste_interface__membrane__Vm); + return 1 + CHASTE_CONST(0.067083000000000004) * CHASTE_MATH::Exp(CHASTE_CONST(1.1946902654867255) + CHASTE_CONST(0.088495575221238937) * 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); @@ -644,7 +646,7 @@ class Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables : public Abstract for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__Vm) { - return exp(1.1946902654867255 + 0.088495575221238937 * var_chaste_interface__membrane__Vm); + return CHASTE_MATH::Exp(CHASTE_CONST(1.1946902654867255) + CHASTE_CONST(0.088495575221238937) * 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); @@ -677,7 +679,7 @@ std::shared_ptr Dynami 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_amplitude_converted = -4000 * CHASTE_CAP() / 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 @@ -710,17 +712,17 @@ std::shared_ptr Dynami 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[5] = CHASTE_CONST(1.8); // (var_external_ion_concentrations__Cao) [millimolar] + this->mParameters[6] = CHASTE_CONST(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] + this->mParameters[11] = CHASTE_CONST(1.1459999999999999); // (var_time_independent_potassium_current__P_K1_0) [nanoS_per_picoF] + this->mParameters[12] = CHASTE_CONST(0.0086400000000000001); // (var_rapid_time_dependent_potassium_current__P_Kr) [nanoS_per_picoF] + this->mParameters[13] = CHASTE_CONST(5.04); // (var_slow_time_dependent_potassium_current__P_Ks_K) [picoA_per_millimolar] + this->mParameters[14] = CHASTE_CONST(6.8099999999999996); // (var_sodium_calcium_exchanger__P_NaCa) [picoA_per_picoF] + this->mParameters[15] = CHASTE_CONST(0.033000000000000002); // (var_transient_outward_current__P_to_K) [picoA_per_millimolar] } Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::~Dynamicmatsuoka_model_2003FromCellMLGRL1Opt() @@ -771,7 +773,7 @@ std::shared_ptr Dynami // 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]); + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -826,19 +828,19 @@ std::shared_ptr Dynami // 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_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 + CHASTE_CONST(2.7439999999999993) / CHASTE_MATH::Pow(var_chaste_interface__ATP_production__ATPi, 3)); // dimensionless + const double var_internal_ion_concentrations__Cai = -CHASTE_CONST(0.026190000000000001) + CHASTE_CONST(0.5) * CHASTE_MATH::Sqrt(CHASTE_MATH::Pow((CHASTE_CONST(0.052380000000000003) - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + CHASTE_CONST(0.0095200000000000007) * var_chaste_interface__internal_ion_concentrations__Ca_Total) + CHASTE_CONST(0.5) * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar + const double var_background_lCa_current__p_open = 1 / (1 + CHASTE_CONST(1.7279999999999996e-9) / CHASTE_MATH::Pow(var_internal_ion_concentrations__Cai, 3)); // dimensionless + const double var_constant_field_equations__CF_Ca = ((var_chaste_interface__membrane__Vm == 0) ? (-mParameters[5]) : (CHASTE_CONST(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) : (CHASTE_CONST(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]) : (CHASTE_CONST(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 = CHASTE_CONST(26.712831923985377) * CHASTE_MATH::Log(mParameters[6] / var_chaste_interface__internal_ion_concentrations__Ki); // millivolt + const double var_time_independent_potassium_current__lambda = 3 * (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.4319999999999999) + CHASTE_CONST(0.064000000000000001) * var_chaste_interface__membrane__Vm - CHASTE_CONST(0.064000000000000001) * var_time_independent_potassium_current__E_K)) * CHASTE_MATH::Exp(CHASTE_CONST(0.47999999999999998) + CHASTE_CONST(0.048000000000000001) * var_time_independent_potassium_current__E_K - CHASTE_CONST(0.048000000000000001) * var_chaste_interface__membrane__Vm) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.1000000000000001) + CHASTE_CONST(0.029999999999999999) * var_chaste_interface__membrane__Vm - CHASTE_CONST(0.029999999999999999) * var_time_independent_potassium_current__E_K)); // per_millisecond + const double var_time_independent_potassium_current__mu = CHASTE_CONST(0.75) * CHASTE_MATH::Exp(-CHASTE_CONST(0.35000000000000003) + CHASTE_CONST(0.035000000000000003) * var_chaste_interface__membrane__Vm - CHASTE_CONST(0.035000000000000003) * var_time_independent_potassium_current__E_K) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.1000000000000001) + CHASTE_CONST(0.014999999999999999) * var_chaste_interface__membrane__Vm - CHASTE_CONST(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 var_membrane__i_tot = CHASTE_CONST(0.38500000000000001) * var_constant_field_equations__CF_Na + CHASTE_CONST(0.040000000000000001) * var_constant_field_equations__CF_Ca + CHASTE_CONST(0.15400000000000003) * var_constant_field_equations__CF_K + 21 * (-CHASTE_CONST(0.040000000000000001) * (1 - var_chaste_interface__sodium_potassium_pump_y_gate__y) / (1 + CHASTE_CONST(90.050628437051003) * CHASTE_MATH::Pow((1 / (mParameters[7] * _lt_0_row[4])), CHASTE_CONST(1.0600000000000001)) * (1 + CHASTE_CONST(4.560221410801109) * CHASTE_MATH::Pow(mParameters[6], CHASTE_CONST(1.1200000000000001)))) + CHASTE_CONST(0.37) * var_chaste_interface__sodium_potassium_pump_y_gate__y / ((1 + CHASTE_CONST(0.094) / var_chaste_interface__ATP_production__ATPi) * (1 + CHASTE_CONST(4.4045579125871104) * CHASTE_MATH::Pow((1 / var_chaste_interface__internal_ion_concentrations__Nai), CHASTE_CONST(1.0600000000000001)) * (1 + CHASTE_CONST(0.020000293738509214) * CHASTE_MATH::Pow(var_chaste_interface__internal_ion_concentrations__Ki, CHASTE_CONST(1.1200000000000001)))))) * mParameters[9] + CHASTE_CONST(0.11) * var_background_lCa_current__p_open * var_constant_field_equations__CF_K + CHASTE_CONST(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 + CHASTE_CONST(669.921875) * (1 + CHASTE_CONST(724.63768115942037) * var_internal_ion_concentrations__Cai) / CHASTE_MATH::Pow(var_chaste_interface__internal_ion_concentrations__Nai, 3)) - (1 - var_chaste_interface__sodium_calcium_exchanger_y_gate__y) * _lt_0_row[6] / (1 + CHASTE_CONST(669921.875) * (1 + CHASTE_CONST(0.7246376811594204) * mParameters[5]) / CHASTE_MATH::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 + CHASTE_CONST(0.2016) * CHASTE_MATH::Pow(var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1, 2) * (CHASTE_CONST(0.10000000000000001) + CHASTE_CONST(0.90000000000000002) * var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2) * var_constant_field_equations__CF_Na + CHASTE_CONST(0.00036499999999999998) * mParameters[8] * var_L_type_Ca_channel__p_open_CaL * var_constant_field_equations__CF_K + CHASTE_CONST(1.8499999999999999e-5) * mParameters[8] * var_L_type_Ca_channel__p_open_CaL * var_constant_field_equations__CF_Na + CHASTE_CONST(0.00297) * CHASTE_MATH::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 + CHASTE_CONST(44.047040000000003) * CHASTE_MATH::Pow(mParameters[6], CHASTE_CONST(0.23999999999999999)) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) / (1 + CHASTE_CONST(99.999999999999986) * CHASTE_MATH::Pow(var_chaste_interface__ATP_production__ATPi, 2)) + CHASTE_MATH::Pow(var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1, 2) * (CHASTE_CONST(0.10000000000000001) + CHASTE_CONST(0.90000000000000002) * var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2) * var_constant_field_equations__CF_K * mParameters[13] + CHASTE_MATH::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 + CHASTE_CONST(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 + CHASTE_CONST(0.71370912277944121) * CHASTE_MATH::Pow(mParameters[6], CHASTE_CONST(0.20000000000000001)) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) * (CHASTE_CONST(0.40000000000000002) * var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 + CHASTE_CONST(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 + CHASTE_CONST(0.50938071193859957) * CHASTE_MATH::Pow(mParameters[6], CHASTE_CONST(0.40000000000000002)) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) * (CHASTE_MATH::Pow(var_time_independent_potassium_current__fO, 4) + 2 * CHASTE_MATH::Pow(var_time_independent_potassium_current__fB, 2) * CHASTE_MATH::Pow(var_time_independent_potassium_current__fO, 2) + CHASTE_CONST(2.6666666666666665) * CHASTE_MATH::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)) ? (CHASTE_CONST(0.0010924717003124302) * CHASTE_MATH::Pow(mParameters[6], CHASTE_CONST(0.16)) * var_constant_field_equations__CF_K) : (CHASTE_CONST(8.3986538766456042e-5) * CHASTE_MATH::Pow(mParameters[6], CHASTE_CONST(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 = CHASTE_CAP() * 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)); @@ -852,7 +854,7 @@ std::shared_ptr Dynami const double delta = 1e-8; double d_dt_chaste_interface_var_membrane__Vm; - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -909,47 +911,47 @@ std::shared_ptr Dynami 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__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 + CHASTE_CONST(2.7439999999999993) / CHASTE_MATH::Pow(var_chaste_interface__ATP_production__ATPi, 3)); // dimensionless + const double var_internal_ion_concentrations__Cai = -CHASTE_CONST(0.026190000000000001) + CHASTE_CONST(0.5) * CHASTE_MATH::Sqrt(CHASTE_MATH::Pow((CHASTE_CONST(0.052380000000000003) - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + CHASTE_CONST(0.0095200000000000007) * var_chaste_interface__internal_ion_concentrations__Ca_Total) + CHASTE_CONST(0.5) * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar + const double var_background_lCa_current__p_open = 1 / (1 + CHASTE_CONST(1.7279999999999996e-9) / CHASTE_MATH::Pow(var_internal_ion_concentrations__Cai, 3)); // dimensionless + const double var_constant_field_equations__CF_Ca = ((var_chaste_interface__membrane__Vm == 0) ? (-mParameters[5]) : (CHASTE_CONST(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_background_Cab_current__i_Cab = CHASTE_CONST(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) : (CHASTE_CONST(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 = CHASTE_CONST(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)) ? (CHASTE_CONST(0.0010924717003124302) * CHASTE_MATH::Pow(mParameters[6], CHASTE_CONST(0.16)) * var_constant_field_equations__CF_K) : (CHASTE_CONST(8.3986538766456042e-5) * CHASTE_MATH::Pow(mParameters[6], CHASTE_CONST(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 = CHASTE_CONST(0.15400000000000003) * var_constant_field_equations__CF_K; // picoA + const double var_background_lCa_current__i_lCa_K = CHASTE_CONST(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]) : (CHASTE_CONST(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 = CHASTE_CONST(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 = CHASTE_CONST(0.38500000000000001) * var_constant_field_equations__CF_Na; // picoA + const double var_background_lCa_current__i_lCa_Na = CHASTE_CONST(0.11) * var_background_lCa_current__p_open * var_constant_field_equations__CF_Na; // picoA + const double var_membrane__i_ext = 1 * CHASTE_STIM(var_chaste_interface__environment__time) * mParameters[9] / CHASTE_CAP(); // picoA + const double var_slow_time_dependent_potassium_current__i_Ks_K = CHASTE_MATH::Pow(var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1, 2) * (CHASTE_CONST(0.10000000000000001) + CHASTE_CONST(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 = CHASTE_CONST(0.2016) * CHASTE_MATH::Pow(var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1, 2) * (CHASTE_CONST(0.10000000000000001) + CHASTE_CONST(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__p_E1Na = 1 / (1 + CHASTE_CONST(669.921875) * (1 + CHASTE_CONST(724.63768115942037) * var_internal_ion_concentrations__Cai) / CHASTE_MATH::Pow(var_chaste_interface__internal_ion_concentrations__Nai, 3)); // dimensionless + const double var_sodium_calcium_exchanger__p_E2Na = 1 / (1 + CHASTE_CONST(669921.875) * (1 + CHASTE_CONST(0.7246376811594204) * mParameters[5]) / CHASTE_MATH::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_K = CHASTE_CONST(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_sodium_potassium_pump__k1 = CHASTE_CONST(0.37) / (1 + CHASTE_CONST(0.094) / var_chaste_interface__ATP_production__ATPi); // per_millisecond + const double var_sodium_potassium_pump__p_E1Na = 1 / (1 + CHASTE_CONST(4.4045579125871104) * CHASTE_MATH::Pow((1 / var_chaste_interface__internal_ion_concentrations__Nai), CHASTE_CONST(1.0600000000000001)) * (1 + CHASTE_CONST(0.020000293738509214) * CHASTE_MATH::Pow(var_chaste_interface__internal_ion_concentrations__Ki, CHASTE_CONST(1.1200000000000001)))); // dimensionless + const double var_sodium_potassium_pump__p_E2Na = 1 / (1 + CHASTE_CONST(90.050628437051003) * CHASTE_MATH::Pow((1 / var_sodium_potassium_pump__Nao_Eff), CHASTE_CONST(1.0600000000000001)) * (1 + CHASTE_CONST(4.560221410801109) * CHASTE_MATH::Pow(mParameters[6], CHASTE_CONST(1.1200000000000001)))); // dimensionless + const double var_sodium_potassium_pump__i_NaK = 21 * (-CHASTE_CONST(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 = CHASTE_CONST(26.712831923985377) * CHASTE_MATH::Log(mParameters[6] / var_chaste_interface__internal_ion_concentrations__Ki); // millivolt + const double var_background_KATP_current__i_KATP = CHASTE_CONST(44.047040000000003) * CHASTE_MATH::Pow(mParameters[6], CHASTE_CONST(0.23999999999999999)) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) / (1 + CHASTE_CONST(99.999999999999986) * CHASTE_MATH::Pow(var_chaste_interface__ATP_production__ATPi, 2)); // picoA + const double var_rapid_time_dependent_potassium_current__i_Kr = CHASTE_CONST(0.71370912277944121) * CHASTE_MATH::Pow(mParameters[6], CHASTE_CONST(0.20000000000000001)) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) * (CHASTE_CONST(0.40000000000000002) * var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 + CHASTE_CONST(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 + CHASTE_MATH::Exp(-CHASTE_CONST(2.4319999999999999) + CHASTE_CONST(0.064000000000000001) * var_chaste_interface__membrane__Vm - CHASTE_CONST(0.064000000000000001) * var_time_independent_potassium_current__E_K)) * CHASTE_MATH::Exp(CHASTE_CONST(0.47999999999999998) + CHASTE_CONST(0.048000000000000001) * var_time_independent_potassium_current__E_K - CHASTE_CONST(0.048000000000000001) * var_chaste_interface__membrane__Vm) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.1000000000000001) + CHASTE_CONST(0.029999999999999999) * var_chaste_interface__membrane__Vm - CHASTE_CONST(0.029999999999999999) * var_time_independent_potassium_current__E_K)); // per_millisecond + const double var_time_independent_potassium_current__mu = CHASTE_CONST(0.75) * CHASTE_MATH::Exp(-CHASTE_CONST(0.35000000000000003) + CHASTE_CONST(0.035000000000000003) * var_chaste_interface__membrane__Vm - CHASTE_CONST(0.035000000000000003) * var_time_independent_potassium_current__E_K) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.1000000000000001) + CHASTE_CONST(0.014999999999999999) * var_chaste_interface__membrane__Vm - CHASTE_CONST(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 + const double var_time_independent_potassium_current__i_K1 = CHASTE_CONST(0.50938071193859957) * CHASTE_MATH::Pow(mParameters[6], CHASTE_CONST(0.40000000000000002)) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) * (CHASTE_MATH::Pow(var_time_independent_potassium_current__fO, 4) + 2 * CHASTE_MATH::Pow(var_time_independent_potassium_current__fB, 2) * CHASTE_MATH::Pow(var_time_independent_potassium_current__fO, 2) + CHASTE_CONST(2.6666666666666665) * CHASTE_MATH::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 = CHASTE_MATH::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 = CHASTE_CONST(0.00297) * CHASTE_MATH::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; @@ -970,7 +972,7 @@ std::shared_ptr Dynami std::vector& rY = rGetStateVariables(); const double delta = 1e-8; - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -1055,113 +1057,113 @@ std::shared_ptr Dynami 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_Ca_concentrations_in_SR__Carel = -CHASTE_CONST(5.4000000000000004) + CHASTE_CONST(0.5) * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total + CHASTE_CONST(5.4000000000000004) * CHASTE_MATH::Sqrt(CHASTE_MATH::Pow((1 - CHASTE_CONST(0.092592592592592587) * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total), 2) + CHASTE_CONST(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__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 + CHASTE_CONST(2.7439999999999993) / CHASTE_MATH::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 d_dt_chaste_interface_var_NL_model__X = CHASTE_CONST(1.1488559970494261) - CHASTE_CONST(1.2) * var_chaste_interface__NL_model__X; // micrometre / millisecond + const double var_NL_model__Q_a = -CHASTE_CONST(0.0038999999999999998) * var_chaste_interface__NL_model__pCaCB + CHASTE_CONST(0.0038999999999999998) * var_chaste_interface__NL_model__pCa * CHASTE_MATH::Exp(-CHASTE_CONST(0.86212130841993795)); // per_millisecond + const double var_NL_model__Q_d2 = CHASTE_CONST(0.027) * CHASTE_MATH::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 var_SR_calcium_pump__k2 = 1 / (1 + CHASTE_CONST(0.10000000000000001) / var_chaste_interface__ATP_production__ATPi); // per_millisecond + const double var_SR_calcium_pump__p_E1Ca = 1 / (1 + CHASTE_CONST(0.080000000000000002) / var_chaste_interface__Ca_concentrations_in_SR__Caup); // dimensionless + const double var_internal_ion_concentrations__Cai = -CHASTE_CONST(0.026190000000000001) + CHASTE_CONST(0.5) * CHASTE_MATH::Sqrt(CHASTE_MATH::Pow((CHASTE_CONST(0.052380000000000003) - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + CHASTE_CONST(0.0095200000000000007) * var_chaste_interface__internal_ion_concentrations__Ca_Total) + CHASTE_CONST(0.5) * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar + const double var_NL_model__Q_b = -CHASTE_CONST(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 var_NL_model__Q_r = CHASTE_CONST(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 = -CHASTE_CONST(0.12) * var_chaste_interface__NL_model__pCB - CHASTE_CONST(0.027) * CHASTE_MATH::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 var_SR_calcium_pump__p_E2Ca = 1 / (1 + CHASTE_CONST(0.00080000000000000004) / var_internal_ion_concentrations__Cai); // dimensionless + const double var_SR_calcium_pump__i_SR_U = (CHASTE_CONST(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) * (CHASTE_CONST(0.01) - CHASTE_CONST(0.01) * var_SR_calcium_pump__p_E2Ca + var_SR_calcium_pump__k2 * var_SR_calcium_pump__p_E2Ca) - (1 - CHASTE_CONST(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 + CHASTE_CONST(1.7279999999999996e-9) / CHASTE_MATH::Pow(var_internal_ion_concentrations__Cai, 3)); // dimensionless + const double d_dt_chaste_interface_var_Ca_concentrations_in_SR__Ca_Total = CHASTE_CONST(3.2387883511406234e-5) * var_SR_T_current__i_SR_T - CHASTE_CONST(3.2387883511406234e-5) * var_RyR_channel__i_RyR; // millimolar / millisecond + const double d_dt_chaste_interface_var_Ca_concentrations_in_SR__Caup = -CHASTE_CONST(1.2955153404562494e-5) * var_SR_L_current__i_SR_L - CHASTE_CONST(1.2955153404562494e-5) * var_SR_T_current__i_SR_T - CHASTE_CONST(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 d_dt_chaste_interface_var_L_type_Ca_channel_voltage_dependent_gate__p_AI_CaL = CHASTE_CONST(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 - (CHASTE_CONST(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_L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = CHASTE_CONST(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 - (CHASTE_CONST(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 = CHASTE_CONST(0.040000000000000001) / (1 + CHASTE_CONST(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 = (CHASTE_CONST(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_constant_field_equations__CF_Ca = ((var_chaste_interface__membrane__Vm == 0) ? (-mParameters[5]) : (CHASTE_CONST(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_L_type_Ca_channel_Ca_dependent_gate__iCaL = CHASTE_CONST(0.067599999999999993) * var_constant_field_equations__CF_Ca; // picoA + const double var_L_type_Ca_channel_Ca_dependent_gate__Cacm = -CHASTE_CONST(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 = CHASTE_CONST(0.34999999999999998) * var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U + CHASTE_CONST(0.0041999999999999997) * var_L_type_Ca_channel_Ca_dependent_gate__p_CCa - (CHASTE_CONST(0.14299999999999999) + CHASTE_CONST(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 = CHASTE_CONST(6.9539999999999997) * (1 - var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL) * var_internal_ion_concentrations__Cai + CHASTE_CONST(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 = CHASTE_CONST(0.14299999999999999) * var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_C + CHASTE_CONST(2.0019999999999998) * var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa - (CHASTE_CONST(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 = CHASTE_CONST(0.00029999999999999997) * var_L_type_Ca_channel_Ca_dependent_gate__p_CCa - CHASTE_CONST(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 * CHASTE_MATH::Pow(var_internal_ion_concentrations__Cai, 2) / CHASTE_MATH::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 = -(CHASTE_CONST(0.00084900000000000004) + var_RyR_channel__k1) * var_chaste_interface__RyR_channel__p_close_RyR + CHASTE_CONST(0.000377) * CHASTE_MATH::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 - CHASTE_CONST(0.080000000000000002) * var_chaste_interface__RyR_channel__p_open_RyR / (1 + CHASTE_CONST(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 var_background_Cab_current__i_Cab = CHASTE_CONST(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) : (CHASTE_CONST(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 = CHASTE_CONST(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)) ? (CHASTE_CONST(0.0010924717003124302) * CHASTE_MATH::Pow(mParameters[6], CHASTE_CONST(0.16)) * var_constant_field_equations__CF_K) : (CHASTE_CONST(8.3986538766456042e-5) * CHASTE_MATH::Pow(mParameters[6], CHASTE_CONST(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 = CHASTE_CONST(0.15400000000000003) * var_constant_field_equations__CF_K; // picoA + const double var_background_lCa_current__i_lCa_K = CHASTE_CONST(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]) : (CHASTE_CONST(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 = CHASTE_CONST(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 = CHASTE_CONST(0.38500000000000001) * var_constant_field_equations__CF_Na; // picoA + const double var_background_lCa_current__i_lCa_Na = CHASTE_CONST(0.11) * var_background_lCa_current__p_open * var_constant_field_equations__CF_Na; // picoA + const double var_membrane__i_ext = 1 * CHASTE_STIM(var_chaste_interface__environment__time) * mParameters[9] / CHASTE_CAP(); // 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 d_dt_chaste_interface_var_slow_time_dependent_potassium_current_y2_gate__y2 = -CHASTE_CONST(0.004444) * var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2 + CHASTE_CONST(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 = CHASTE_MATH::Pow(var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1, 2) * (CHASTE_CONST(0.10000000000000001) + CHASTE_CONST(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 = CHASTE_CONST(0.2016) * CHASTE_MATH::Pow(var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1, 2) * (CHASTE_CONST(0.10000000000000001) + CHASTE_CONST(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__p_E1Na = 1 / (1 + CHASTE_CONST(669.921875) * (1 + CHASTE_CONST(724.63768115942037) * var_internal_ion_concentrations__Cai) / CHASTE_MATH::Pow(var_chaste_interface__internal_ion_concentrations__Nai, 3)); // dimensionless + const double var_sodium_calcium_exchanger__p_E2Na = 1 / (1 + CHASTE_CONST(669921.875) * (1 + CHASTE_CONST(0.7246376811594204) * mParameters[5]) / CHASTE_MATH::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 + CHASTE_CONST(1.3799999999999999) * (1 + CHASTE_CONST(1.4927113702623908e-6) * CHASTE_MATH::Pow(mParameters[7], 3)) / mParameters[5]) + var_sodium_calcium_exchanger__k2 * var_sodium_calcium_exchanger__p_E2Na) - (1 / (1 + CHASTE_CONST(0.0013799999999999999) * (1 + CHASTE_CONST(0.0014927113702623907) * CHASTE_MATH::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_internal_ion_concentrations__Ca_Total = CHASTE_CONST(0.070000000000000007) * var_NL_model__Q_d2 + CHASTE_CONST(0.070000000000000007) * var_NL_model__Q_r + CHASTE_CONST(6.4775767022812476e-7) * var_RyR_channel__i_RyR + CHASTE_CONST(6.4775767022812476e-7) * var_SR_L_current__i_SR_L + CHASTE_CONST(6.4775767022812476e-7) * var_SR_calcium_pump__i_SR_U + CHASTE_CONST(1.2955153404562495e-6) * var_sodium_calcium_exchanger__i_NaCa - CHASTE_CONST(0.070000000000000007) * var_NL_model__Q_b - CHASTE_CONST(6.4775767022812476e-7) * var_L_type_Ca_channel__i_CaL_Ca - CHASTE_CONST(6.4775767022812476e-7) * var_T_type_Ca_channel__i_Ca_T - CHASTE_CONST(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_voltage_dependent_gate__k_RP_RI = CHASTE_CONST(0.01) / (1 + CHASTE_CONST(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 = CHASTE_CONST(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 d_dt_chaste_interface_var_sodium_current_voltage_dependent_gate__p_AP_Na = CHASTE_CONST(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 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 - (CHASTE_CONST(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 = (CHASTE_CONST(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_sodium_potassium_pump__k1 = CHASTE_CONST(0.37) / (1 + CHASTE_CONST(0.094) / var_chaste_interface__ATP_production__ATPi); // per_millisecond + const double var_sodium_potassium_pump__p_E1Na = 1 / (1 + CHASTE_CONST(4.4045579125871104) * CHASTE_MATH::Pow((1 / var_chaste_interface__internal_ion_concentrations__Nai), CHASTE_CONST(1.0600000000000001)) * (1 + CHASTE_CONST(0.020000293738509214) * CHASTE_MATH::Pow(var_chaste_interface__internal_ion_concentrations__Ki, CHASTE_CONST(1.1200000000000001)))); // dimensionless + const double var_sodium_potassium_pump__p_E2Na = 1 / (1 + CHASTE_CONST(90.050628437051003) * CHASTE_MATH::Pow((1 / var_sodium_potassium_pump__Nao_Eff), CHASTE_CONST(1.0600000000000001)) * (1 + CHASTE_CONST(4.560221410801109) * CHASTE_MATH::Pow(mParameters[6], CHASTE_CONST(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) * (CHASTE_CONST(0.040000000000000001) * var_sodium_potassium_pump__p_E2Na + CHASTE_CONST(0.16500000000000001) / (1 + CHASTE_CONST(0.21928759810465578) * CHASTE_MATH::Pow((1 / mParameters[6]), CHASTE_CONST(1.1200000000000001)) * (1 + CHASTE_CONST(0.011104864200909382) * CHASTE_MATH::Pow(var_sodium_potassium_pump__Nao_Eff, CHASTE_CONST(1.0600000000000001))))) - (CHASTE_CONST(0.01) / (1 + CHASTE_CONST(49.999265664512095) * CHASTE_MATH::Pow((1 / var_chaste_interface__internal_ion_concentrations__Ki), CHASTE_CONST(1.1200000000000001)) * (1 + CHASTE_CONST(0.22703754152993499) * CHASTE_MATH::Pow(var_chaste_interface__internal_ion_concentrations__Nai, CHASTE_CONST(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 * (-CHASTE_CONST(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 = CHASTE_CONST(0.014999999999999999) + CHASTE_CONST(3.2387883511406238e-7) * var_SR_calcium_pump__i_SR_U - CHASTE_CONST(0.0030000000000000001) * var_chaste_interface__ATP_production__ATPi - CHASTE_CONST(0.028000000000000004) * var_chaste_interface__NL_model__pCaCB - CHASTE_CONST(1.2955153404562495e-6) * var_sodium_potassium_pump__i_NaK; // millimolar / millisecond + const double var_time_independent_potassium_current__E_K = CHASTE_CONST(26.712831923985377) * CHASTE_MATH::Log(mParameters[6] / var_chaste_interface__internal_ion_concentrations__Ki); // millivolt + const double var_background_KATP_current__i_KATP = CHASTE_CONST(44.047040000000003) * CHASTE_MATH::Pow(mParameters[6], CHASTE_CONST(0.23999999999999999)) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) / (1 + CHASTE_CONST(99.999999999999986) * CHASTE_MATH::Pow(var_chaste_interface__ATP_production__ATPi, 2)); // picoA + const double var_rapid_time_dependent_potassium_current__i_Kr = CHASTE_CONST(0.71370912277944121) * CHASTE_MATH::Pow(mParameters[6], CHASTE_CONST(0.20000000000000001)) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) * (CHASTE_CONST(0.40000000000000002) * var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 + CHASTE_CONST(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 + CHASTE_MATH::Exp(-CHASTE_CONST(2.4319999999999999) + CHASTE_CONST(0.064000000000000001) * var_chaste_interface__membrane__Vm - CHASTE_CONST(0.064000000000000001) * var_time_independent_potassium_current__E_K)) * CHASTE_MATH::Exp(CHASTE_CONST(0.47999999999999998) + CHASTE_CONST(0.048000000000000001) * var_time_independent_potassium_current__E_K - CHASTE_CONST(0.048000000000000001) * var_chaste_interface__membrane__Vm) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.1000000000000001) + CHASTE_CONST(0.029999999999999999) * var_chaste_interface__membrane__Vm - CHASTE_CONST(0.029999999999999999) * var_time_independent_potassium_current__E_K)); // per_millisecond + const double var_time_independent_potassium_current__mu = CHASTE_CONST(0.75) * CHASTE_MATH::Exp(-CHASTE_CONST(0.35000000000000003) + CHASTE_CONST(0.035000000000000003) * var_chaste_interface__membrane__Vm - CHASTE_CONST(0.035000000000000003) * var_time_independent_potassium_current__E_K) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.1000000000000001) + CHASTE_CONST(0.014999999999999999) * var_chaste_interface__membrane__Vm - CHASTE_CONST(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_time_independent_potassium_current_y_gate__y = (1 - var_chaste_interface__time_independent_potassium_current_y_gate__y) / (7 * CHASTE_MATH::Exp(-CHASTE_CONST(0.32333333333333331) + CHASTE_CONST(0.0033333333333333335) * var_chaste_interface__membrane__Vm - CHASTE_CONST(0.0033333333333333335) * var_time_independent_potassium_current__E_K) + 8000 * CHASTE_MATH::Exp(-CHASTE_CONST(11.411764705882353) + CHASTE_CONST(0.11764705882352941) * var_chaste_interface__membrane__Vm - CHASTE_CONST(0.11764705882352941) * var_time_independent_potassium_current__E_K)) - CHASTE_MATH::Pow(var_time_independent_potassium_current__fO, 4) * var_chaste_interface__time_independent_potassium_current_y_gate__y / (CHASTE_CONST(0.00013999999999999999) * CHASTE_MATH::Exp(CHASTE_CONST(10.659340659340661) + CHASTE_CONST(0.10989010989010989) * var_time_independent_potassium_current__E_K - CHASTE_CONST(0.10989010989010989) * var_chaste_interface__membrane__Vm) + CHASTE_CONST(0.20000000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.19400000000000001) + CHASTE_CONST(0.002) * var_time_independent_potassium_current__E_K - CHASTE_CONST(0.002) * var_chaste_interface__membrane__Vm)); // 1 / millisecond + const double var_time_independent_potassium_current__i_K1 = CHASTE_CONST(0.50938071193859957) * CHASTE_MATH::Pow(mParameters[6], CHASTE_CONST(0.40000000000000002)) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) * (CHASTE_MATH::Pow(var_time_independent_potassium_current__fO, 4) + 2 * CHASTE_MATH::Pow(var_time_independent_potassium_current__fB, 2) * CHASTE_MATH::Pow(var_time_independent_potassium_current__fO, 2) + CHASTE_CONST(2.6666666666666665) * CHASTE_MATH::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 + const double d_dt_chaste_interface_var_transient_outward_current_y2_gate__y2 = CHASTE_CONST(0.0038) * (1 - var_chaste_interface__transient_outward_current_y2_gate__y2) * _lt_0_row[38] / (_lt_0_row[37]) - CHASTE_CONST(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 = CHASTE_MATH::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 = -CHASTE_CONST(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 = CHASTE_CONST(0.00297) * CHASTE_MATH::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 = -CHASTE_CONST(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); @@ -1603,7 +1605,7 @@ std::shared_ptr Dynami 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]); + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -1660,47 +1662,47 @@ std::shared_ptr Dynami 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__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 + CHASTE_CONST(2.7439999999999993) / CHASTE_MATH::Pow(var_chaste_interface__ATP_production__ATPi, 3)); // dimensionless + const double var_internal_ion_concentrations__Cai = -CHASTE_CONST(0.026190000000000001) + CHASTE_CONST(0.5) * CHASTE_MATH::Sqrt(CHASTE_MATH::Pow((CHASTE_CONST(0.052380000000000003) - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + CHASTE_CONST(0.0095200000000000007) * var_chaste_interface__internal_ion_concentrations__Ca_Total) + CHASTE_CONST(0.5) * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar + const double var_background_lCa_current__p_open = 1 / (1 + CHASTE_CONST(1.7279999999999996e-9) / CHASTE_MATH::Pow(var_internal_ion_concentrations__Cai, 3)); // dimensionless + const double var_constant_field_equations__CF_Ca = ((var_chaste_interface__membrane__Vm == 0) ? (-mParameters[5]) : (CHASTE_CONST(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_background_Cab_current__i_Cab = CHASTE_CONST(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) : (CHASTE_CONST(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 = CHASTE_CONST(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)) ? (CHASTE_CONST(0.0010924717003124302) * CHASTE_MATH::Pow(mParameters[6], CHASTE_CONST(0.16)) * var_constant_field_equations__CF_K) : (CHASTE_CONST(8.3986538766456042e-5) * CHASTE_MATH::Pow(mParameters[6], CHASTE_CONST(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 = CHASTE_CONST(0.15400000000000003) * var_constant_field_equations__CF_K; // picoA + const double var_background_lCa_current__i_lCa_K = CHASTE_CONST(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]) : (CHASTE_CONST(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 = CHASTE_CONST(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 = CHASTE_CONST(0.38500000000000001) * var_constant_field_equations__CF_Na; // picoA + const double var_background_lCa_current__i_lCa_Na = CHASTE_CONST(0.11) * var_background_lCa_current__p_open * var_constant_field_equations__CF_Na; // picoA + const double var_membrane__i_ext = 1 * CHASTE_STIM(var_chaste_interface__environment__time) * mParameters[9] / CHASTE_CAP(); // picoA + const double var_slow_time_dependent_potassium_current__i_Ks_K = CHASTE_MATH::Pow(var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1, 2) * (CHASTE_CONST(0.10000000000000001) + CHASTE_CONST(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 = CHASTE_CONST(0.2016) * CHASTE_MATH::Pow(var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1, 2) * (CHASTE_CONST(0.10000000000000001) + CHASTE_CONST(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__p_E1Na = 1 / (1 + CHASTE_CONST(669.921875) * (1 + CHASTE_CONST(724.63768115942037) * var_internal_ion_concentrations__Cai) / CHASTE_MATH::Pow(var_chaste_interface__internal_ion_concentrations__Nai, 3)); // dimensionless + const double var_sodium_calcium_exchanger__p_E2Na = 1 / (1 + CHASTE_CONST(669921.875) * (1 + CHASTE_CONST(0.7246376811594204) * mParameters[5]) / CHASTE_MATH::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_K = CHASTE_CONST(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_sodium_potassium_pump__k1 = CHASTE_CONST(0.37) / (1 + CHASTE_CONST(0.094) / var_chaste_interface__ATP_production__ATPi); // per_millisecond + const double var_sodium_potassium_pump__p_E1Na = 1 / (1 + CHASTE_CONST(4.4045579125871104) * CHASTE_MATH::Pow((1 / var_chaste_interface__internal_ion_concentrations__Nai), CHASTE_CONST(1.0600000000000001)) * (1 + CHASTE_CONST(0.020000293738509214) * CHASTE_MATH::Pow(var_chaste_interface__internal_ion_concentrations__Ki, CHASTE_CONST(1.1200000000000001)))); // dimensionless + const double var_sodium_potassium_pump__p_E2Na = 1 / (1 + CHASTE_CONST(90.050628437051003) * CHASTE_MATH::Pow((1 / var_sodium_potassium_pump__Nao_Eff), CHASTE_CONST(1.0600000000000001)) * (1 + CHASTE_CONST(4.560221410801109) * CHASTE_MATH::Pow(mParameters[6], CHASTE_CONST(1.1200000000000001)))); // dimensionless + const double var_sodium_potassium_pump__i_NaK = 21 * (-CHASTE_CONST(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 = CHASTE_CONST(26.712831923985377) * CHASTE_MATH::Log(mParameters[6] / var_chaste_interface__internal_ion_concentrations__Ki); // millivolt + const double var_background_KATP_current__i_KATP = CHASTE_CONST(44.047040000000003) * CHASTE_MATH::Pow(mParameters[6], CHASTE_CONST(0.23999999999999999)) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) / (1 + CHASTE_CONST(99.999999999999986) * CHASTE_MATH::Pow(var_chaste_interface__ATP_production__ATPi, 2)); // picoA + const double var_rapid_time_dependent_potassium_current__i_Kr = CHASTE_CONST(0.71370912277944121) * CHASTE_MATH::Pow(mParameters[6], CHASTE_CONST(0.20000000000000001)) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) * (CHASTE_CONST(0.40000000000000002) * var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 + CHASTE_CONST(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 + CHASTE_MATH::Exp(-CHASTE_CONST(2.4319999999999999) + CHASTE_CONST(0.064000000000000001) * var_chaste_interface__membrane__Vm - CHASTE_CONST(0.064000000000000001) * var_time_independent_potassium_current__E_K)) * CHASTE_MATH::Exp(CHASTE_CONST(0.47999999999999998) + CHASTE_CONST(0.048000000000000001) * var_time_independent_potassium_current__E_K - CHASTE_CONST(0.048000000000000001) * var_chaste_interface__membrane__Vm) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.1000000000000001) + CHASTE_CONST(0.029999999999999999) * var_chaste_interface__membrane__Vm - CHASTE_CONST(0.029999999999999999) * var_time_independent_potassium_current__E_K)); // per_millisecond + const double var_time_independent_potassium_current__mu = CHASTE_CONST(0.75) * CHASTE_MATH::Exp(-CHASTE_CONST(0.35000000000000003) + CHASTE_CONST(0.035000000000000003) * var_chaste_interface__membrane__Vm - CHASTE_CONST(0.035000000000000003) * var_time_independent_potassium_current__E_K) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.1000000000000001) + CHASTE_CONST(0.014999999999999999) * var_chaste_interface__membrane__Vm - CHASTE_CONST(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 + const double var_time_independent_potassium_current__i_K1 = CHASTE_CONST(0.50938071193859957) * CHASTE_MATH::Pow(mParameters[6], CHASTE_CONST(0.40000000000000002)) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) * (CHASTE_MATH::Pow(var_time_independent_potassium_current__fO, 4) + 2 * CHASTE_MATH::Pow(var_time_independent_potassium_current__fB, 2) * CHASTE_MATH::Pow(var_time_independent_potassium_current__fO, 2) + CHASTE_CONST(2.6666666666666665) * CHASTE_MATH::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 = CHASTE_MATH::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 = CHASTE_CONST(0.00297) * CHASTE_MATH::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; @@ -1711,7 +1713,7 @@ std::shared_ptr Dynami double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -1769,57 +1771,57 @@ std::shared_ptr Dynami 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_x2 = CHASTE_CONST(0.037435192301797954) * var_chaste_interface__membrane__Vm; + const double var_x3 = CHASTE_MATH::Exp(-var_x2); const double var_x4 = var_x3 * mParameters[7]; const double var_x5 = -var_x4 + var_chaste_interface__internal_ion_concentrations__Nai; 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_x8 = CHASTE_CONST(0.037435192301797954) * var_x7; + const double var_x9 = CHASTE_CONST(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_x11 = var_x3 * var_x9 / CHASTE_MATH::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 = 0.074870384603595908 * var_chaste_interface__membrane__Vm; - const double var_x14 = exp(-var_x13); + const double var_x13 = CHASTE_CONST(0.074870384603595908) * var_chaste_interface__membrane__Vm; + const double var_x14 = CHASTE_MATH::Exp(-var_x13); const double var_x15 = 1 - var_x14; const double var_x16 = 1 / var_x15; - const double var_x17 = -0.052380000000000003 + var_chaste_interface__internal_ion_concentrations__Ca_Total; - const double var_x18 = sqrt(pow(var_x17, 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total); + const double var_x17 = -CHASTE_CONST(0.052380000000000003) + var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x18 = CHASTE_MATH::Sqrt(CHASTE_MATH::Pow(var_x17, 2) + CHASTE_CONST(0.0095200000000000007) * var_chaste_interface__internal_ion_concentrations__Ca_Total); const double var_x19 = var_x14 * mParameters[5]; - const double var_x20 = -0.026190000000000001 - var_x19 + 0.5 * var_x18 + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x20 = -CHASTE_CONST(0.026190000000000001) - var_x19 + CHASTE_CONST(0.5) * var_x18 + CHASTE_CONST(0.5) * var_chaste_interface__internal_ion_concentrations__Ca_Total; const double var_x21 = var_x16 * var_x20; - const double var_x22 = 0.0056055744906903715 * var_chaste_interface__membrane__Vm; - const double var_x23 = ((var_x1) ? (0) : (0.074870384603595908 * var_x21 + var_x16 * var_x19 * var_x22 - var_x14 * var_x20 * var_x22 / pow(var_x15, 2))); + const double var_x22 = CHASTE_CONST(0.0056055744906903715) * var_chaste_interface__membrane__Vm; + const double var_x23 = ((var_x1) ? (0) : (CHASTE_CONST(0.074870384603595908) * var_x21 + var_x16 * var_x19 * var_x22 - var_x14 * var_x20 * var_x22 / CHASTE_MATH::Pow(var_x15, 2))); const double var_x24 = var_x3 * mParameters[6]; const double var_x25 = -var_x24 + var_chaste_interface__internal_ion_concentrations__Ki; const double var_x26 = ((var_x1) ? (0) : (var_x10 * var_x24 + var_x25 * var_x8 - var_x11 * var_x25)); const double var_x27 = var_x17 + var_x18; - const double var_x28 = 1 + 1.3823999999999997e-8 / pow(var_x27, 3); + const double var_x28 = 1 + CHASTE_CONST(1.3823999999999997e-8) / CHASTE_MATH::Pow(var_x27, 3); const double var_x29 = 1 / var_x28; - const double var_x30 = 0.11 * var_x29; - const double var_x31 = pow(var_chaste_interface__ATP_production__ATPi, 2); - const double var_x32 = pow(mParameters[6], 0.23999999999999999); - const double var_x33 = var_x32 / (1 + 99.999999999999986 * var_x31); - const double var_x34 = pow(var_chaste_interface__internal_ion_concentrations__Nai, 3); + const double var_x30 = CHASTE_CONST(0.11) * var_x29; + const double var_x31 = CHASTE_MATH::Pow(var_chaste_interface__ATP_production__ATPi, 2); + const double var_x32 = CHASTE_MATH::Pow(mParameters[6], CHASTE_CONST(0.23999999999999999)); + const double var_x33 = var_x32 / (1 + CHASTE_CONST(99.999999999999986) * var_x31); + const double var_x34 = CHASTE_MATH::Pow(var_chaste_interface__internal_ion_concentrations__Nai, 3); const double var_x35 = 1 / var_x34; - const double var_x36 = -17.978260869565219 + 362.31884057971018 * var_x18 + 362.31884057971018 * var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x36 = -CHASTE_CONST(17.978260869565219) + CHASTE_CONST(362.31884057971018) * var_x18 + CHASTE_CONST(362.31884057971018) * var_chaste_interface__internal_ion_concentrations__Ca_Total; const double var_x37 = var_x35 * var_x36; const double var_x38 = _lt_0_row[5]; - const double var_x39 = var_x38 / (1 + 669.921875 * var_x37); + const double var_x39 = var_x38 / (1 + CHASTE_CONST(669.921875) * var_x37); const double var_x40 = var_x39 * var_chaste_interface__sodium_calcium_exchanger_y_gate__y; - const double var_x41 = pow(mParameters[7], 3); - const double var_x42 = _lt_0_row[6] / (1 + 669921.875 * (1 + 0.7246376811594204 * mParameters[5]) / var_x41); + const double var_x41 = CHASTE_MATH::Pow(mParameters[7], 3); + const double var_x42 = _lt_0_row[6] / (1 + CHASTE_CONST(669921.875) * (1 + CHASTE_CONST(0.7246376811594204) * mParameters[5]) / var_x41); const double var_x43 = var_x42 * (1 - var_chaste_interface__sodium_calcium_exchanger_y_gate__y); - const double var_x44 = -0.011979261536575346 * var_x40 - 0.025455930765222609 * var_x43; + const double var_x44 = -CHASTE_CONST(0.011979261536575346) * var_x40 - CHASTE_CONST(0.025455930765222609) * var_x43; const double var_x45 = 612 * var_chaste_interface__T_type_Ca_channel_y2_gate__y2; const double var_x46 = var_x45 * var_chaste_interface__T_type_Ca_channel_y1_gate__y1; - const double var_x47 = pow(var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1, 2); - const double var_x48 = 0.10000000000000001 + 0.90000000000000002 * var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2; + const double var_x47 = CHASTE_MATH::Pow(var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1, 2); + const double var_x48 = CHASTE_CONST(0.10000000000000001) + CHASTE_CONST(0.90000000000000002) * var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2; const double var_x49 = var_x47 * var_x48; - const double var_x50 = 0.2016 * var_x49; - const double var_x51 = pow(var_chaste_interface__transient_outward_current_y1_gate__y1, 3); - const double var_x52 = 0.00297 * var_x51; + const double var_x50 = CHASTE_CONST(0.2016) * var_x49; + const double var_x51 = CHASTE_MATH::Pow(var_chaste_interface__transient_outward_current_y1_gate__y1, 3); + const double var_x52 = CHASTE_CONST(0.00297) * var_x51; const double var_x53 = var_x52 * var_chaste_interface__transient_outward_current_y2_gate__y2; const double var_x54 = var_x49 * mParameters[13]; const double var_x55 = var_x26 * var_x54; @@ -1829,107 +1831,107 @@ std::shared_ptr Dynami const double var_x59 = mParameters[10] * var_chaste_interface__sodium_current_ultra_slow_gate__y; const double var_x60 = var_x59 * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na; const double var_x61 = var_x12 * var_x60; - const double var_x62 = 0.10000000000000001 * var_x60; + const double var_x62 = CHASTE_CONST(0.10000000000000001) * var_x60; const double var_x63 = 1 - var_chaste_interface__sodium_potassium_pump_y_gate__y; const double var_x64 = _lt_0_row[4]; - const double var_x65 = pow((1 / (var_x64 * mParameters[7])), 1.0600000000000001); - const double var_x66 = 1 + 4.560221410801109 * pow(mParameters[6], 1.1200000000000001); + const double var_x65 = CHASTE_MATH::Pow((1 / (var_x64 * mParameters[7])), CHASTE_CONST(1.0600000000000001)); + const double var_x66 = 1 + CHASTE_CONST(4.560221410801109) * CHASTE_MATH::Pow(mParameters[6], CHASTE_CONST(1.1200000000000001)); const double var_x67 = var_x65 * var_x66; - const double var_x68 = pow((0.011104864200909382 + var_x67), (-2)); + const double var_x68 = CHASTE_MATH::Pow((CHASTE_CONST(0.011104864200909382) + var_x67), (-2)); const double var_x69 = var_x67 * var_x68; const double var_x70 = var_x63 * var_x69 * mParameters[9]; - const double var_x71 = 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_x72 = 0.71370912277944121 * var_x71; - const double var_x73 = pow(mParameters[6], 0.20000000000000001); + const double var_x71 = CHASTE_CONST(0.40000000000000002) * var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 + CHASTE_CONST(0.59999999999999998) * var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1; + const double var_x72 = CHASTE_CONST(0.71370912277944121) * var_x71; + const double var_x73 = CHASTE_MATH::Pow(mParameters[6], CHASTE_CONST(0.20000000000000001)); const double var_x74 = var_x73 * mParameters[9] * mParameters[12] * var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3; - const double var_x75 = pow(mParameters[6], 0.40000000000000002); + const double var_x75 = CHASTE_MATH::Pow(mParameters[6], CHASTE_CONST(0.40000000000000002)); const double var_x76 = 1 / var_chaste_interface__internal_ion_concentrations__Ki; - const double var_x77 = log(var_x76 * mParameters[6]); - const double var_x78 = exp(-2.4319999999999999 + 0.064000000000000001 * var_chaste_interface__membrane__Vm - 1.7096212431350641 * var_x77); + const double var_x77 = CHASTE_MATH::Log(var_x76 * mParameters[6]); + const double var_x78 = CHASTE_MATH::Exp(-CHASTE_CONST(2.4319999999999999) + CHASTE_CONST(0.064000000000000001) * var_chaste_interface__membrane__Vm - CHASTE_CONST(1.7096212431350641) * var_x77); const double var_x79 = 1 + var_x78; - const double var_x80 = pow(var_x79, 4); - const double var_x81 = exp(-2.1000000000000001 + 0.029999999999999999 * var_chaste_interface__membrane__Vm - 0.80138495771956131 * var_x77); + const double var_x80 = CHASTE_MATH::Pow(var_x79, 4); + const double var_x81 = CHASTE_MATH::Exp(-CHASTE_CONST(2.1000000000000001) + CHASTE_CONST(0.029999999999999999) * var_chaste_interface__membrane__Vm - CHASTE_CONST(0.80138495771956131) * var_x77); const double var_x82 = 1 + var_x81; - const double var_x83 = pow(var_x82, (-4)); - const double var_x84 = exp(-2.1000000000000001 + 0.014999999999999999 * var_chaste_interface__membrane__Vm - 0.40069247885978065 * var_x77); + const double var_x83 = CHASTE_MATH::Pow(var_x82, (-4)); + const double var_x84 = CHASTE_MATH::Exp(-CHASTE_CONST(2.1000000000000001) + CHASTE_CONST(0.014999999999999999) * var_chaste_interface__membrane__Vm - CHASTE_CONST(0.40069247885978065) * var_x77); const double var_x85 = 1 + var_x84; const double var_x86 = 1 / var_x85; - const double var_x87 = exp(-0.35000000000000003 + 0.035000000000000003 * var_chaste_interface__membrane__Vm - 0.93494911733948827 * var_x77); + const double var_x87 = CHASTE_MATH::Exp(-CHASTE_CONST(0.35000000000000003) + CHASTE_CONST(0.035000000000000003) * var_chaste_interface__membrane__Vm - CHASTE_CONST(0.93494911733948827) * var_x77); const double var_x88 = var_x86 * var_x87; - const double var_x89 = exp(0.47999999999999998 + 1.282215932351298 * var_x77 - 0.048000000000000001 * var_chaste_interface__membrane__Vm); + const double var_x89 = CHASTE_MATH::Exp(CHASTE_CONST(0.47999999999999998) + CHASTE_CONST(1.282215932351298) * var_x77 - CHASTE_CONST(0.048000000000000001) * var_chaste_interface__membrane__Vm); const double var_x90 = var_x89 / var_x82; const double var_x91 = var_x79 * var_x90; - const double var_x92 = var_x91 + 0.25 * var_x88; - const double var_x93 = pow(var_x92, (-4)); - const double var_x94 = pow(var_x89, 4); + const double var_x92 = var_x91 + CHASTE_CONST(0.25) * var_x88; + const double var_x93 = CHASTE_MATH::Pow(var_x92, (-4)); + const double var_x94 = CHASTE_MATH::Pow(var_x89, 4); const double var_x95 = var_x83 * var_x93 * var_x94; const double var_x96 = var_x80 * var_x95; const double var_x97 = var_x96; - const double var_x98 = pow(var_x85, (-2)); - const double var_x99 = pow(var_x89, 2); - const double var_x100 = pow(var_x87, 2); + const double var_x98 = CHASTE_MATH::Pow(var_x85, (-2)); + const double var_x99 = CHASTE_MATH::Pow(var_x89, 2); + const double var_x100 = CHASTE_MATH::Pow(var_x87, 2); const double var_x101 = var_x100 * var_x93 * var_x98 * var_x99; - const double var_x102 = pow(var_x82, (-2)); - const double var_x103 = pow(var_x79, 2); + const double var_x102 = CHASTE_MATH::Pow(var_x82, (-2)); + const double var_x103 = CHASTE_MATH::Pow(var_x79, 2); const double var_x104 = var_x102 * var_x103; const double var_x105 = var_x101 * var_x104; - const double var_x106 = pow(var_x79, 3); - const double var_x107 = pow(var_x82, (-3)); - const double var_x108 = pow(var_x89, 3); - const double var_x109 = pow(var_x92, (-3)); - const double var_x110 = 1 / (0.75 * var_x88 + 3 * var_x91); + const double var_x106 = CHASTE_MATH::Pow(var_x79, 3); + const double var_x107 = CHASTE_MATH::Pow(var_x82, (-3)); + const double var_x108 = CHASTE_MATH::Pow(var_x89, 3); + const double var_x109 = CHASTE_MATH::Pow(var_x92, (-3)); + const double var_x110 = 1 / (CHASTE_CONST(0.75) * var_x88 + 3 * var_x91); const double var_x111 = var_x109 * var_x110; const double var_x112 = var_x106 * var_x107 * var_x108 * var_x111 * var_x88; - const double var_x113 = var_x75 * (var_x97 + 0.125 * var_x105 + 2 * var_x112) * mParameters[11]; - const double var_x114 = 0.50938071193859957 * var_x113; + const double var_x113 = var_x75 * (var_x97 + CHASTE_CONST(0.125) * var_x105 + 2 * var_x112) * mParameters[11]; + const double var_x114 = CHASTE_CONST(0.50938071193859957) * var_x113; const double var_x115 = mParameters[9] * var_chaste_interface__time_independent_potassium_current_y_gate__y; const double var_x116 = var_x23 * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL; const double var_x117 = 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_x118 = pow(var_chaste_interface__ATP_production__ATPi, (-3)); - const double var_x119 = 1 / (1 + 2.7439999999999993 * var_x118); + const double var_x118 = CHASTE_MATH::Pow(var_chaste_interface__ATP_production__ATPi, (-3)); + const double var_x119 = 1 / (1 + CHASTE_CONST(2.7439999999999993) * var_x118); const double var_x120 = var_x119 * mParameters[8] * var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y; const double var_x121 = var_x117 * var_x120; const double var_x122 = var_x116 * var_x121; const double var_x123 = var_x120 * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL; const double var_x124 = var_x117 * var_x123; - const double var_x125 = 0.00036499999999999998 * var_x124; - const double var_x126 = 1.8499999999999999e-5 * var_x124; - const double var_x127 = 0.12 * var_x81; - const double var_x128 = pow(var_x82, (-5)); + const double var_x125 = CHASTE_CONST(0.00036499999999999998) * var_x124; + const double var_x126 = CHASTE_CONST(1.8499999999999999e-5) * var_x124; + const double var_x127 = CHASTE_CONST(0.12) * var_x81; + const double var_x128 = CHASTE_MATH::Pow(var_x82, (-5)); const double var_x129 = var_x80 * var_x94; const double var_x130 = var_x128 * var_x129 * var_x93; - const double var_x131 = pow(var_x92, (-5)); + const double var_x131 = CHASTE_MATH::Pow(var_x92, (-5)); const double var_x132 = var_x84 * var_x87 * var_x98; const double var_x133 = var_x78 * var_x90; const double var_x134 = var_x102 * var_x79 * var_x89; - const double var_x135 = 0.014999999999999999 * var_x132 + 0.192 * var_x91 - 0.25600000000000001 * var_x133 - 0.035000000000000003 * var_x88 + var_x127 * var_x134; - const double var_x136 = var_x100 * var_x104 * var_x84 * var_x93 * var_x99 / pow(var_x85, 3); + const double var_x135 = CHASTE_CONST(0.014999999999999999) * var_x132 + CHASTE_CONST(0.192) * var_x91 - CHASTE_CONST(0.25600000000000001) * var_x133 - CHASTE_CONST(0.035000000000000003) * var_x88 + var_x127 * var_x134; + const double var_x136 = var_x100 * var_x104 * var_x84 * var_x93 * var_x99 / CHASTE_MATH::Pow(var_x85, 3); const double var_x137 = var_x101 * var_x103 * var_x107; const double var_x138 = var_x134 * var_x81; - const double var_x139 = 0.01125 * var_x132 + 0.089999999999999997 * var_x138 + 0.14400000000000002 * var_x91 - 0.192 * var_x133 - 0.026250000000000002 * var_x88; + const double var_x139 = CHASTE_CONST(0.01125) * var_x132 + CHASTE_CONST(0.089999999999999997) * var_x138 + CHASTE_CONST(0.14400000000000002) * var_x91 - CHASTE_CONST(0.192) * var_x133 - CHASTE_CONST(0.026250000000000002) * var_x88; const double var_x140 = var_x108 * var_x111; const double var_x141 = var_x106 * var_x140; const double var_x142 = var_x107 * var_x141; const double var_x143 = var_x81 * var_x83; - const double var_x144 = -0.0032499999999999994 * var_x105 - 0.0037499999999999999 * var_x136 - 0.192 * var_x96 - 0.218 * var_x112 - var_x127 * var_x130 - 0.0074999999999999997 * var_x137 * var_x81 - 0.029999999999999999 * var_x132 * var_x142 - 0.17999999999999999 * var_x106 * var_x140 * var_x143 * var_x88 + var_x131 * var_x135 * var_x80 * var_x83 * var_x94 + 0.25600000000000001 * var_x106 * var_x78 * var_x83 * var_x93 * var_x94 + 0.125 * var_x100 * var_x102 * var_x103 * var_x131 * var_x135 * var_x98 * var_x99 + 0.016 * var_x100 * var_x102 * var_x78 * var_x79 * var_x93 * var_x98 * var_x99 + 0.22222222222222221 * var_x106 * var_x107 * var_x108 * var_x131 * var_x139 * var_x86 * var_x87 + 2 * var_x106 * var_x107 * var_x108 * var_x110 * var_x139 * var_x86 * var_x87 * var_x93 + 0.38400000000000001 * var_x103 * var_x107 * var_x108 * var_x109 * var_x110 * var_x78 * var_x86 * var_x87; - const double var_x145 = -26.712831923985377 * var_x77 + var_chaste_interface__membrane__Vm; + const double var_x144 = -CHASTE_CONST(0.0032499999999999994) * var_x105 - CHASTE_CONST(0.0037499999999999999) * var_x136 - CHASTE_CONST(0.192) * var_x96 - CHASTE_CONST(0.218) * var_x112 - var_x127 * var_x130 - CHASTE_CONST(0.0074999999999999997) * var_x137 * var_x81 - CHASTE_CONST(0.029999999999999999) * var_x132 * var_x142 - CHASTE_CONST(0.17999999999999999) * var_x106 * var_x140 * var_x143 * var_x88 + var_x131 * var_x135 * var_x80 * var_x83 * var_x94 + CHASTE_CONST(0.25600000000000001) * var_x106 * var_x78 * var_x83 * var_x93 * var_x94 + CHASTE_CONST(0.125) * var_x100 * var_x102 * var_x103 * var_x131 * var_x135 * var_x98 * var_x99 + CHASTE_CONST(0.016) * var_x100 * var_x102 * var_x78 * var_x79 * var_x93 * var_x98 * var_x99 + CHASTE_CONST(0.22222222222222221) * var_x106 * var_x107 * var_x108 * var_x131 * var_x139 * var_x86 * var_x87 + 2 * var_x106 * var_x107 * var_x108 * var_x110 * var_x139 * var_x86 * var_x87 * var_x93 + CHASTE_CONST(0.38400000000000001) * var_x103 * var_x107 * var_x108 * var_x109 * var_x110 * var_x78 * var_x86 * var_x87; + const double var_x145 = -CHASTE_CONST(26.712831923985377) * var_x77 + var_chaste_interface__membrane__Vm; const double var_x146 = var_x115 * var_x145 * var_x75 * mParameters[11]; - const double var_x147 = 0.50938071193859957 * var_x146; - const double var_x148 = pow(mParameters[6], 0.16); - const double var_x149 = 0.0010924717003124302 * var_x148; + const double var_x147 = CHASTE_CONST(0.50938071193859957) * var_x146; + const double var_x148 = CHASTE_MATH::Pow(mParameters[6], CHASTE_CONST(0.16)); + const double var_x149 = CHASTE_CONST(0.0010924717003124302) * var_x148; const double var_x150 = var_chaste_interface__membrane__Vm == (-3); const double var_x151 = var_x2 * var_x7; const double var_x152 = ((var_x1) ? (var_chaste_interface__internal_ion_concentrations__Ki) : (var_x151 * var_x25)); const double var_x153 = var_x148 * var_x152; - const double var_x154 = 0.076923076923076927 * var_chaste_interface__membrane__Vm; - const double var_x155 = exp(-0.23076923076923078 - var_x154); + const double var_x154 = CHASTE_CONST(0.076923076923076927) * var_chaste_interface__membrane__Vm; + const double var_x155 = CHASTE_MATH::Exp(-CHASTE_CONST(0.23076923076923078) - var_x154); const double var_x156 = 1 - var_x155; - const double var_x157 = 8.3986538766456042e-5 / var_x156; + const double var_x157 = CHASTE_CONST(8.3986538766456042e-5) / var_x156; const double var_x158 = 3 + var_chaste_interface__membrane__Vm; const double var_x159 = var_x148 * var_x157 * var_x158; - const double var_x160 = ((var_x150) ? (var_x149 * var_x26) : (var_x153 * var_x157 + var_x159 * var_x26 - 6.4605029820350801e-6 * var_x153 * var_x155 * var_x158 / pow(var_x156, 2))); + const double var_x160 = ((var_x150) ? (var_x149 * var_x26) : (var_x153 * var_x157 + var_x159 * var_x26 - CHASTE_CONST(6.4605029820350801e-6) * var_x153 * var_x155 * var_x158 / CHASTE_MATH::Pow(var_x156, 2))); - partialF = var_x0 * (-var_x122 - var_x160 - var_x55 - var_x58 - var_x61 - 0.38500000000000001 * var_x12 - 0.040000000000000001 * var_x23 - 0.0003035235018269044 * var_x70 - 44.047040000000003 * var_x33 - 0.15400000000000003 * var_x26 - var_x114 * var_x115 - var_x12 * var_x126 - var_x12 * var_x30 - var_x12 * var_x50 - var_x12 * var_x53 - var_x125 * var_x26 - var_x144 * var_x147 - var_x23 * var_x46 - var_x26 * var_x30 - var_x26 * var_x62 - var_x72 * var_x74 + var_x44 * mParameters[9] * mParameters[14]); + partialF = var_x0 * (-var_x122 - var_x160 - var_x55 - var_x58 - var_x61 - CHASTE_CONST(0.38500000000000001) * var_x12 - CHASTE_CONST(0.040000000000000001) * var_x23 - CHASTE_CONST(0.0003035235018269044) * var_x70 - CHASTE_CONST(44.047040000000003) * var_x33 - CHASTE_CONST(0.15400000000000003) * var_x26 - var_x114 * var_x115 - var_x12 * var_x126 - var_x12 * var_x30 - var_x12 * var_x50 - var_x12 * var_x53 - var_x125 * var_x26 - var_x144 * var_x147 - var_x23 * var_x46 - var_x26 * var_x30 - var_x26 * var_x62 - var_x72 * var_x74 + var_x44 * mParameters[9] * mParameters[14]); } else { @@ -1944,7 +1946,7 @@ std::shared_ptr Dynami 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]); + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -1989,27 +1991,27 @@ std::shared_ptr Dynami 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_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 + CHASTE_CONST(2.7439999999999993) / CHASTE_MATH::Pow(var_chaste_interface__ATP_production__ATPi, 3)); // dimensionless + const double var_internal_ion_concentrations__Cai = -CHASTE_CONST(0.026190000000000001) + CHASTE_CONST(0.5) * CHASTE_MATH::Sqrt(CHASTE_MATH::Pow((CHASTE_CONST(0.052380000000000003) - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + CHASTE_CONST(0.0095200000000000007) * var_chaste_interface__internal_ion_concentrations__Ca_Total) + CHASTE_CONST(0.5) * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar + const double var_background_lCa_current__p_open = 1 / (1 + CHASTE_CONST(1.7279999999999996e-9) / CHASTE_MATH::Pow(var_internal_ion_concentrations__Cai, 3)); // dimensionless + const double var_constant_field_equations__CF_Na = ((var_chaste_interface__membrane__Vm == 0) ? (-mParameters[7]) : (CHASTE_CONST(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 = CHASTE_CONST(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 = CHASTE_CONST(0.38500000000000001) * var_constant_field_equations__CF_Na; // picoA + const double var_background_lCa_current__i_lCa_Na = CHASTE_CONST(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 = CHASTE_CONST(0.2016) * CHASTE_MATH::Pow(var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1, 2) * (CHASTE_CONST(0.10000000000000001) + CHASTE_CONST(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__p_E1Na = 1 / (1 + CHASTE_CONST(669.921875) * (1 + CHASTE_CONST(724.63768115942037) * var_internal_ion_concentrations__Cai) / CHASTE_MATH::Pow(var_chaste_interface__internal_ion_concentrations__Nai, 3)); // dimensionless + const double var_sodium_calcium_exchanger__p_E2Na = 1 / (1 + CHASTE_CONST(669921.875) * (1 + CHASTE_CONST(0.7246376811594204) * mParameters[5]) / CHASTE_MATH::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 + const double var_sodium_potassium_pump__k1 = CHASTE_CONST(0.37) / (1 + CHASTE_CONST(0.094) / var_chaste_interface__ATP_production__ATPi); // per_millisecond + const double var_sodium_potassium_pump__p_E1Na = 1 / (1 + CHASTE_CONST(4.4045579125871104) * CHASTE_MATH::Pow((1 / var_chaste_interface__internal_ion_concentrations__Nai), CHASTE_CONST(1.0600000000000001)) * (1 + CHASTE_CONST(0.020000293738509214) * CHASTE_MATH::Pow(var_chaste_interface__internal_ion_concentrations__Ki, CHASTE_CONST(1.1200000000000001)))); // dimensionless + const double var_sodium_potassium_pump__p_E2Na = 1 / (1 + CHASTE_CONST(90.050628437051003) * CHASTE_MATH::Pow((1 / var_sodium_potassium_pump__Nao_Eff), CHASTE_CONST(1.0600000000000001)) * (1 + CHASTE_CONST(4.560221410801109) * CHASTE_MATH::Pow(mParameters[6], CHASTE_CONST(1.1200000000000001)))); // dimensionless + const double var_sodium_potassium_pump__i_NaK = 21 * (-CHASTE_CONST(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 = CHASTE_CONST(0.00297) * CHASTE_MATH::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 = -CHASTE_CONST(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; } @@ -2019,7 +2021,7 @@ std::shared_ptr Dynami double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -2064,29 +2066,29 @@ std::shared_ptr Dynami 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_x2 = CHASTE_CONST(0.037435192301797954) * var_chaste_interface__membrane__Vm; + const double var_x3 = CHASTE_MATH::Exp(-var_x2); const double var_x6 = 1 - var_x3; const double var_x7 = 1 / var_x6; - const double var_x17 = -0.052380000000000003 + var_chaste_interface__internal_ion_concentrations__Ca_Total; - const double var_x18 = sqrt(pow(var_x17, 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total); + const double var_x17 = -CHASTE_CONST(0.052380000000000003) + var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x18 = CHASTE_MATH::Sqrt(CHASTE_MATH::Pow(var_x17, 2) + CHASTE_CONST(0.0095200000000000007) * var_chaste_interface__internal_ion_concentrations__Ca_Total); const double var_x27 = var_x17 + var_x18; - const double var_x28 = 1 + 1.3823999999999997e-8 / pow(var_x27, 3); + const double var_x28 = 1 + CHASTE_CONST(1.3823999999999997e-8) / CHASTE_MATH::Pow(var_x27, 3); const double var_x29 = 1 / var_x28; - const double var_x34 = pow(var_chaste_interface__internal_ion_concentrations__Nai, 3); + const double var_x34 = CHASTE_MATH::Pow(var_chaste_interface__internal_ion_concentrations__Nai, 3); const double var_x35 = 1 / var_x34; - const double var_x36 = -17.978260869565219 + 362.31884057971018 * var_x18 + 362.31884057971018 * var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x36 = -CHASTE_CONST(17.978260869565219) + CHASTE_CONST(362.31884057971018) * var_x18 + CHASTE_CONST(362.31884057971018) * var_chaste_interface__internal_ion_concentrations__Ca_Total; const double var_x37 = var_x35 * var_x36; const double var_x38 = _lt_0_row[5]; - const double var_x47 = pow(var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1, 2); - const double var_x48 = 0.10000000000000001 + 0.90000000000000002 * var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2; + const double var_x47 = CHASTE_MATH::Pow(var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1, 2); + const double var_x48 = CHASTE_CONST(0.10000000000000001) + CHASTE_CONST(0.90000000000000002) * var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2; const double var_x49 = var_x47 * var_x48; - const double var_x51 = pow(var_chaste_interface__transient_outward_current_y1_gate__y1, 3); + const double var_x51 = CHASTE_MATH::Pow(var_chaste_interface__transient_outward_current_y1_gate__y1, 3); const double var_x59 = mParameters[10] * var_chaste_interface__sodium_current_ultra_slow_gate__y; const double var_x60 = var_x59 * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na; const double var_x117 = 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_x118 = pow(var_chaste_interface__ATP_production__ATPi, (-3)); - const double var_x119 = 1 / (1 + 2.7439999999999993 * var_x118); + const double var_x118 = CHASTE_MATH::Pow(var_chaste_interface__ATP_production__ATPi, (-3)); + const double var_x119 = 1 / (1 + CHASTE_CONST(2.7439999999999993) * var_x118); const double var_x120 = var_x119 * mParameters[8] * var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y; const double var_x123 = var_x120 * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL; const double var_x124 = var_x117 * var_x123; @@ -2094,29 +2096,29 @@ std::shared_ptr Dynami const double var_x161 = ((var_x1) ? (0) : (var_x151)); const double var_x162 = var_x161 * var_x60; const double var_x163 = 1 / var_chaste_interface__internal_ion_concentrations__Nai; - const double var_x164 = pow(var_x163, 1.0600000000000001); - const double var_x165 = var_x164 * (1 + 0.020000293738509214 * pow(var_chaste_interface__internal_ion_concentrations__Ki, 1.1200000000000001)); + const double var_x164 = CHASTE_MATH::Pow(var_x163, CHASTE_CONST(1.0600000000000001)); + const double var_x165 = var_x164 * (1 + CHASTE_CONST(0.020000293738509214) * CHASTE_MATH::Pow(var_chaste_interface__internal_ion_concentrations__Ki, CHASTE_CONST(1.1200000000000001))); const double var_x166 = 1 / var_chaste_interface__ATP_production__ATPi; - const double var_x167 = 1 + 0.094 * var_x166; + const double var_x167 = 1 + CHASTE_CONST(0.094) * var_x166; const double var_x168 = 1 / var_x167; - const double var_x169 = pow((0.22703754152993499 + var_x165), (-2)); + const double var_x169 = CHASTE_MATH::Pow((CHASTE_CONST(0.22703754152993499) + var_x165), (-2)); const double var_x170 = var_x168 * var_x169; const double var_x171 = var_x163 * var_x165 * var_x170; const double var_x172 = mParameters[9] * var_chaste_interface__sodium_potassium_pump_y_gate__y; const double var_x173 = var_x171 * var_x172; - const double var_x174 = pow((0.0014927113702623907 + var_x37), (-2)); + const double var_x174 = CHASTE_MATH::Pow((CHASTE_CONST(0.0014927113702623907) + var_x37), (-2)); const double var_x175 = var_x174 * var_x38; - const double var_x176 = var_x175 * var_x36 / pow(var_chaste_interface__internal_ion_concentrations__Nai, 4); + const double var_x176 = var_x175 * var_x36 / CHASTE_MATH::Pow(var_chaste_interface__internal_ion_concentrations__Nai, 4); const double var_x178 = mParameters[9] * mParameters[14]; const double var_x179 = var_x178 * var_chaste_interface__sodium_calcium_exchanger_y_gate__y; - const double var_x252 = 1.4250668745018745e-7 * var_x29; - const double var_x253 = 3.8476805611550606e-9 * var_x51; + const double var_x252 = CHASTE_CONST(1.4250668745018745e-7) * var_x29; + const double var_x253 = CHASTE_CONST(3.8476805611550606e-9) * var_x51; const double var_x254 = var_x253 * var_chaste_interface__transient_outward_current_y2_gate__y2; - const double var_x255 = 2.6117589263597991e-7 * var_x49; - const double var_x257 = 2.3967033798440612e-11 * var_x124; + const double var_x255 = CHASTE_CONST(2.6117589263597991e-7) * var_x49; + const double var_x257 = CHASTE_CONST(2.3967033798440612e-11) * var_x124; const double var_x258 = var_x176 * var_x179; - partialF = (-7.2675557857281787e-6 * var_x173 - 4.9877340607565601e-7 * var_x161 - 1.7404474311435562e-8 * var_x258 - 1.2955153404562495e-6 * var_x162 - var_x161 * var_x252 - var_x161 * var_x254 - var_x161 * var_x255 - var_x161 * var_x257) * mParameters[4]; + partialF = (-CHASTE_CONST(7.2675557857281787e-6) * var_x173 - CHASTE_CONST(4.9877340607565601e-7) * var_x161 - CHASTE_CONST(1.7404474311435562e-8) * var_x258 - CHASTE_CONST(1.2955153404562495e-6) * var_x162 - var_x161 * var_x252 - var_x161 * var_x254 - var_x161 * var_x255 - var_x161 * var_x257) * mParameters[4]; } else { @@ -2131,7 +2133,7 @@ std::shared_ptr Dynami 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]); + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -2182,32 +2184,32 @@ std::shared_ptr Dynami 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_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 + CHASTE_CONST(2.7439999999999993) / CHASTE_MATH::Pow(var_chaste_interface__ATP_production__ATPi, 3)); // dimensionless + const double var_internal_ion_concentrations__Cai = -CHASTE_CONST(0.026190000000000001) + CHASTE_CONST(0.5) * CHASTE_MATH::Sqrt(CHASTE_MATH::Pow((CHASTE_CONST(0.052380000000000003) - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + CHASTE_CONST(0.0095200000000000007) * var_chaste_interface__internal_ion_concentrations__Ca_Total) + CHASTE_CONST(0.5) * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar + const double var_background_lCa_current__p_open = 1 / (1 + CHASTE_CONST(1.7279999999999996e-9) / CHASTE_MATH::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) : (CHASTE_CONST(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 = CHASTE_CONST(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)) ? (CHASTE_CONST(0.0010924717003124302) * CHASTE_MATH::Pow(mParameters[6], CHASTE_CONST(0.16)) * var_constant_field_equations__CF_K) : (CHASTE_CONST(8.3986538766456042e-5) * CHASTE_MATH::Pow(mParameters[6], CHASTE_CONST(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 = CHASTE_CONST(0.15400000000000003) * var_constant_field_equations__CF_K; // picoA + const double var_background_lCa_current__i_lCa_K = CHASTE_CONST(0.11) * var_background_lCa_current__p_open * var_constant_field_equations__CF_K; // picoA + const double var_membrane__i_ext = 1 * CHASTE_STIM(var_chaste_interface__environment__time) * mParameters[9] / CHASTE_CAP(); // picoA + const double var_slow_time_dependent_potassium_current__i_Ks_K = CHASTE_MATH::Pow(var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1, 2) * (CHASTE_CONST(0.10000000000000001) + CHASTE_CONST(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 = CHASTE_CONST(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_sodium_potassium_pump__k1 = CHASTE_CONST(0.37) / (1 + CHASTE_CONST(0.094) / var_chaste_interface__ATP_production__ATPi); // per_millisecond + const double var_sodium_potassium_pump__p_E1Na = 1 / (1 + CHASTE_CONST(4.4045579125871104) * CHASTE_MATH::Pow((1 / var_chaste_interface__internal_ion_concentrations__Nai), CHASTE_CONST(1.0600000000000001)) * (1 + CHASTE_CONST(0.020000293738509214) * CHASTE_MATH::Pow(var_chaste_interface__internal_ion_concentrations__Ki, CHASTE_CONST(1.1200000000000001)))); // dimensionless + const double var_sodium_potassium_pump__p_E2Na = 1 / (1 + CHASTE_CONST(90.050628437051003) * CHASTE_MATH::Pow((1 / var_sodium_potassium_pump__Nao_Eff), CHASTE_CONST(1.0600000000000001)) * (1 + CHASTE_CONST(4.560221410801109) * CHASTE_MATH::Pow(mParameters[6], CHASTE_CONST(1.1200000000000001)))); // dimensionless + const double var_sodium_potassium_pump__i_NaK = 21 * (-CHASTE_CONST(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 = CHASTE_CONST(26.712831923985377) * CHASTE_MATH::Log(mParameters[6] / var_chaste_interface__internal_ion_concentrations__Ki); // millivolt + const double var_background_KATP_current__i_KATP = CHASTE_CONST(44.047040000000003) * CHASTE_MATH::Pow(mParameters[6], CHASTE_CONST(0.23999999999999999)) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) / (1 + CHASTE_CONST(99.999999999999986) * CHASTE_MATH::Pow(var_chaste_interface__ATP_production__ATPi, 2)); // picoA + const double var_rapid_time_dependent_potassium_current__i_Kr = CHASTE_CONST(0.71370912277944121) * CHASTE_MATH::Pow(mParameters[6], CHASTE_CONST(0.20000000000000001)) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) * (CHASTE_CONST(0.40000000000000002) * var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 + CHASTE_CONST(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 + CHASTE_MATH::Exp(-CHASTE_CONST(2.4319999999999999) + CHASTE_CONST(0.064000000000000001) * var_chaste_interface__membrane__Vm - CHASTE_CONST(0.064000000000000001) * var_time_independent_potassium_current__E_K)) * CHASTE_MATH::Exp(CHASTE_CONST(0.47999999999999998) + CHASTE_CONST(0.048000000000000001) * var_time_independent_potassium_current__E_K - CHASTE_CONST(0.048000000000000001) * var_chaste_interface__membrane__Vm) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.1000000000000001) + CHASTE_CONST(0.029999999999999999) * var_chaste_interface__membrane__Vm - CHASTE_CONST(0.029999999999999999) * var_time_independent_potassium_current__E_K)); // per_millisecond + const double var_time_independent_potassium_current__mu = CHASTE_CONST(0.75) * CHASTE_MATH::Exp(-CHASTE_CONST(0.35000000000000003) + CHASTE_CONST(0.035000000000000003) * var_chaste_interface__membrane__Vm - CHASTE_CONST(0.035000000000000003) * var_time_independent_potassium_current__E_K) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.1000000000000001) + CHASTE_CONST(0.014999999999999999) * var_chaste_interface__membrane__Vm - CHASTE_CONST(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 + const double var_time_independent_potassium_current__i_K1 = CHASTE_CONST(0.50938071193859957) * CHASTE_MATH::Pow(mParameters[6], CHASTE_CONST(0.40000000000000002)) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) * (CHASTE_MATH::Pow(var_time_independent_potassium_current__fO, 4) + 2 * CHASTE_MATH::Pow(var_time_independent_potassium_current__fB, 2) * CHASTE_MATH::Pow(var_time_independent_potassium_current__fO, 2) + CHASTE_CONST(2.6666666666666665) * CHASTE_MATH::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 = CHASTE_MATH::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 = -CHASTE_CONST(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; } @@ -2217,7 +2219,7 @@ std::shared_ptr Dynami double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -2261,109 +2263,109 @@ std::shared_ptr Dynami 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_x2 = CHASTE_CONST(0.037435192301797954) * var_chaste_interface__membrane__Vm; + const double var_x3 = CHASTE_MATH::Exp(-var_x2); const double var_x6 = 1 - var_x3; const double var_x7 = 1 / var_x6; - const double var_x17 = -0.052380000000000003 + var_chaste_interface__internal_ion_concentrations__Ca_Total; - const double var_x18 = sqrt(pow(var_x17, 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total); + const double var_x17 = -CHASTE_CONST(0.052380000000000003) + var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x18 = CHASTE_MATH::Sqrt(CHASTE_MATH::Pow(var_x17, 2) + CHASTE_CONST(0.0095200000000000007) * var_chaste_interface__internal_ion_concentrations__Ca_Total); const double var_x27 = var_x17 + var_x18; - const double var_x28 = 1 + 1.3823999999999997e-8 / pow(var_x27, 3); + const double var_x28 = 1 + CHASTE_CONST(1.3823999999999997e-8) / CHASTE_MATH::Pow(var_x27, 3); const double var_x29 = 1 / var_x28; - const double var_x31 = pow(var_chaste_interface__ATP_production__ATPi, 2); - const double var_x32 = pow(mParameters[6], 0.23999999999999999); - const double var_x33 = var_x32 / (1 + 99.999999999999986 * var_x31); - const double var_x47 = pow(var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1, 2); - const double var_x48 = 0.10000000000000001 + 0.90000000000000002 * var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2; + const double var_x31 = CHASTE_MATH::Pow(var_chaste_interface__ATP_production__ATPi, 2); + const double var_x32 = CHASTE_MATH::Pow(mParameters[6], CHASTE_CONST(0.23999999999999999)); + const double var_x33 = var_x32 / (1 + CHASTE_CONST(99.999999999999986) * var_x31); + const double var_x47 = CHASTE_MATH::Pow(var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1, 2); + const double var_x48 = CHASTE_CONST(0.10000000000000001) + CHASTE_CONST(0.90000000000000002) * var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2; const double var_x49 = var_x47 * var_x48; - const double var_x51 = pow(var_chaste_interface__transient_outward_current_y1_gate__y1, 3); + const double var_x51 = CHASTE_MATH::Pow(var_chaste_interface__transient_outward_current_y1_gate__y1, 3); const double var_x54 = var_x49 * mParameters[13]; const double var_x56 = var_x51 * mParameters[15]; const double var_x57 = var_x56 * var_chaste_interface__transient_outward_current_y2_gate__y2; const double var_x59 = mParameters[10] * var_chaste_interface__sodium_current_ultra_slow_gate__y; const double var_x60 = var_x59 * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na; - const double var_x71 = 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_x73 = pow(mParameters[6], 0.20000000000000001); + const double var_x71 = CHASTE_CONST(0.40000000000000002) * var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 + CHASTE_CONST(0.59999999999999998) * var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1; + const double var_x73 = CHASTE_MATH::Pow(mParameters[6], CHASTE_CONST(0.20000000000000001)); const double var_x74 = var_x73 * mParameters[9] * mParameters[12] * var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3; - const double var_x75 = pow(mParameters[6], 0.40000000000000002); + const double var_x75 = CHASTE_MATH::Pow(mParameters[6], CHASTE_CONST(0.40000000000000002)); const double var_x76 = 1 / var_chaste_interface__internal_ion_concentrations__Ki; - const double var_x77 = log(var_x76 * mParameters[6]); - const double var_x78 = exp(-2.4319999999999999 + 0.064000000000000001 * var_chaste_interface__membrane__Vm - 1.7096212431350641 * var_x77); + const double var_x77 = CHASTE_MATH::Log(var_x76 * mParameters[6]); + const double var_x78 = CHASTE_MATH::Exp(-CHASTE_CONST(2.4319999999999999) + CHASTE_CONST(0.064000000000000001) * var_chaste_interface__membrane__Vm - CHASTE_CONST(1.7096212431350641) * var_x77); const double var_x79 = 1 + var_x78; - const double var_x80 = pow(var_x79, 4); - const double var_x81 = exp(-2.1000000000000001 + 0.029999999999999999 * var_chaste_interface__membrane__Vm - 0.80138495771956131 * var_x77); + const double var_x80 = CHASTE_MATH::Pow(var_x79, 4); + const double var_x81 = CHASTE_MATH::Exp(-CHASTE_CONST(2.1000000000000001) + CHASTE_CONST(0.029999999999999999) * var_chaste_interface__membrane__Vm - CHASTE_CONST(0.80138495771956131) * var_x77); const double var_x82 = 1 + var_x81; - const double var_x83 = pow(var_x82, (-4)); - const double var_x84 = exp(-2.1000000000000001 + 0.014999999999999999 * var_chaste_interface__membrane__Vm - 0.40069247885978065 * var_x77); + const double var_x83 = CHASTE_MATH::Pow(var_x82, (-4)); + const double var_x84 = CHASTE_MATH::Exp(-CHASTE_CONST(2.1000000000000001) + CHASTE_CONST(0.014999999999999999) * var_chaste_interface__membrane__Vm - CHASTE_CONST(0.40069247885978065) * var_x77); const double var_x85 = 1 + var_x84; const double var_x86 = 1 / var_x85; - const double var_x87 = exp(-0.35000000000000003 + 0.035000000000000003 * var_chaste_interface__membrane__Vm - 0.93494911733948827 * var_x77); + const double var_x87 = CHASTE_MATH::Exp(-CHASTE_CONST(0.35000000000000003) + CHASTE_CONST(0.035000000000000003) * var_chaste_interface__membrane__Vm - CHASTE_CONST(0.93494911733948827) * var_x77); const double var_x88 = var_x86 * var_x87; - const double var_x89 = exp(0.47999999999999998 + 1.282215932351298 * var_x77 - 0.048000000000000001 * var_chaste_interface__membrane__Vm); + const double var_x89 = CHASTE_MATH::Exp(CHASTE_CONST(0.47999999999999998) + CHASTE_CONST(1.282215932351298) * var_x77 - CHASTE_CONST(0.048000000000000001) * var_chaste_interface__membrane__Vm); const double var_x90 = var_x89 / var_x82; const double var_x91 = var_x79 * var_x90; - const double var_x92 = var_x91 + 0.25 * var_x88; - const double var_x93 = pow(var_x92, (-4)); - const double var_x94 = pow(var_x89, 4); + const double var_x92 = var_x91 + CHASTE_CONST(0.25) * var_x88; + const double var_x93 = CHASTE_MATH::Pow(var_x92, (-4)); + const double var_x94 = CHASTE_MATH::Pow(var_x89, 4); const double var_x95 = var_x83 * var_x93 * var_x94; const double var_x96 = var_x80 * var_x95; const double var_x97 = var_x96; - const double var_x98 = pow(var_x85, (-2)); - const double var_x99 = pow(var_x89, 2); - const double var_x100 = pow(var_x87, 2); + const double var_x98 = CHASTE_MATH::Pow(var_x85, (-2)); + const double var_x99 = CHASTE_MATH::Pow(var_x89, 2); + const double var_x100 = CHASTE_MATH::Pow(var_x87, 2); const double var_x101 = var_x100 * var_x93 * var_x98 * var_x99; - const double var_x102 = pow(var_x82, (-2)); - const double var_x103 = pow(var_x79, 2); + const double var_x102 = CHASTE_MATH::Pow(var_x82, (-2)); + const double var_x103 = CHASTE_MATH::Pow(var_x79, 2); const double var_x104 = var_x102 * var_x103; const double var_x105 = var_x101 * var_x104; - const double var_x106 = pow(var_x79, 3); - const double var_x107 = pow(var_x82, (-3)); - const double var_x108 = pow(var_x89, 3); - const double var_x109 = pow(var_x92, (-3)); - const double var_x110 = 1 / (0.75 * var_x88 + 3 * var_x91); + const double var_x106 = CHASTE_MATH::Pow(var_x79, 3); + const double var_x107 = CHASTE_MATH::Pow(var_x82, (-3)); + const double var_x108 = CHASTE_MATH::Pow(var_x89, 3); + const double var_x109 = CHASTE_MATH::Pow(var_x92, (-3)); + const double var_x110 = 1 / (CHASTE_CONST(0.75) * var_x88 + 3 * var_x91); const double var_x111 = var_x109 * var_x110; const double var_x112 = var_x106 * var_x107 * var_x108 * var_x111 * var_x88; - const double var_x113 = var_x75 * (var_x97 + 0.125 * var_x105 + 2 * var_x112) * mParameters[11]; + const double var_x113 = var_x75 * (var_x97 + CHASTE_CONST(0.125) * var_x105 + 2 * var_x112) * mParameters[11]; const double var_x115 = mParameters[9] * var_chaste_interface__time_independent_potassium_current_y_gate__y; const double var_x117 = 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_x118 = pow(var_chaste_interface__ATP_production__ATPi, (-3)); - const double var_x119 = 1 / (1 + 2.7439999999999993 * var_x118); + const double var_x118 = CHASTE_MATH::Pow(var_chaste_interface__ATP_production__ATPi, (-3)); + const double var_x119 = 1 / (1 + CHASTE_CONST(2.7439999999999993) * var_x118); const double var_x120 = var_x119 * mParameters[8] * var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y; const double var_x123 = var_x120 * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL; const double var_x124 = var_x117 * var_x123; - const double var_x128 = pow(var_x82, (-5)); + const double var_x128 = CHASTE_MATH::Pow(var_x82, (-5)); const double var_x129 = var_x80 * var_x94; const double var_x130 = var_x128 * var_x129 * var_x93; - const double var_x131 = pow(var_x92, (-5)); + const double var_x131 = CHASTE_MATH::Pow(var_x92, (-5)); const double var_x132 = var_x84 * var_x87 * var_x98; const double var_x133 = var_x78 * var_x90; const double var_x134 = var_x102 * var_x79 * var_x89; - const double var_x136 = var_x100 * var_x104 * var_x84 * var_x93 * var_x99 / pow(var_x85, 3); + const double var_x136 = var_x100 * var_x104 * var_x84 * var_x93 * var_x99 / CHASTE_MATH::Pow(var_x85, 3); const double var_x137 = var_x101 * var_x103 * var_x107; const double var_x138 = var_x134 * var_x81; const double var_x140 = var_x108 * var_x111; const double var_x141 = var_x106 * var_x140; const double var_x142 = var_x107 * var_x141; const double var_x143 = var_x81 * var_x83; - const double var_x145 = -26.712831923985377 * var_x77 + var_chaste_interface__membrane__Vm; + const double var_x145 = -CHASTE_CONST(26.712831923985377) * var_x77 + var_chaste_interface__membrane__Vm; const double var_x146 = var_x115 * var_x145 * var_x75 * mParameters[11]; - const double var_x148 = pow(mParameters[6], 0.16); - const double var_x149 = 0.0010924717003124302 * var_x148; + const double var_x148 = CHASTE_MATH::Pow(mParameters[6], CHASTE_CONST(0.16)); + const double var_x149 = CHASTE_CONST(0.0010924717003124302) * var_x148; const double var_x150 = var_chaste_interface__membrane__Vm == (-3); const double var_x151 = var_x2 * var_x7; - const double var_x154 = 0.076923076923076927 * var_chaste_interface__membrane__Vm; - const double var_x155 = exp(-0.23076923076923078 - var_x154); + const double var_x154 = CHASTE_CONST(0.076923076923076927) * var_chaste_interface__membrane__Vm; + const double var_x155 = CHASTE_MATH::Exp(-CHASTE_CONST(0.23076923076923078) - var_x154); const double var_x156 = 1 - var_x155; - const double var_x157 = 8.3986538766456042e-5 / var_x156; + const double var_x157 = CHASTE_CONST(8.3986538766456042e-5) / var_x156; const double var_x158 = 3 + var_chaste_interface__membrane__Vm; const double var_x159 = var_x148 * var_x157 * var_x158; const double var_x163 = 1 / var_chaste_interface__internal_ion_concentrations__Nai; - const double var_x164 = pow(var_x163, 1.0600000000000001); - const double var_x165 = var_x164 * (1 + 0.020000293738509214 * pow(var_chaste_interface__internal_ion_concentrations__Ki, 1.1200000000000001)); + const double var_x164 = CHASTE_MATH::Pow(var_x163, CHASTE_CONST(1.0600000000000001)); + const double var_x165 = var_x164 * (1 + CHASTE_CONST(0.020000293738509214) * CHASTE_MATH::Pow(var_chaste_interface__internal_ion_concentrations__Ki, CHASTE_CONST(1.1200000000000001))); const double var_x166 = 1 / var_chaste_interface__ATP_production__ATPi; - const double var_x167 = 1 + 0.094 * var_x166; + const double var_x167 = 1 + CHASTE_CONST(0.094) * var_x166; const double var_x168 = 1 / var_x167; - const double var_x169 = pow((0.22703754152993499 + var_x165), (-2)); + const double var_x169 = CHASTE_MATH::Pow((CHASTE_CONST(0.22703754152993499) + var_x165), (-2)); const double var_x170 = var_x168 * var_x169; const double var_x172 = mParameters[9] * var_chaste_interface__sodium_potassium_pump_y_gate__y; const double var_x180 = ((var_x1) ? (1) : (var_x151)); @@ -2377,22 +2379,22 @@ std::shared_ptr Dynami const double var_x188 = var_x76 * var_x91; const double var_x189 = var_x133 * var_x76; const double var_x190 = var_x138 * var_x76; - const double var_x191 = 0.40069247885978065 * var_x187 + 3.2055398308782452 * var_x190 + 5.1288637294051922 * var_x188 - 6.8384849725402566 * var_x189 - 0.93494911733948827 * var_x186; + const double var_x191 = CHASTE_CONST(0.40069247885978065) * var_x187 + CHASTE_CONST(3.2055398308782452) * var_x190 + CHASTE_CONST(5.1288637294051922) * var_x188 - CHASTE_CONST(6.8384849725402566) * var_x189 - CHASTE_CONST(0.93494911733948827) * var_x186; const double var_x192 = var_x76 * var_x81; - const double var_x193 = 0.30051935914483546 * var_x187 + 2.4041548731586837 * var_x190 + 3.8466477970538944 * var_x188 - 5.1288637294051922 * var_x189 - 0.70121183800461617 * var_x186; - const double var_x194 = -0.10017311971494516 * var_x136 * var_x76 - 0.20034623942989033 * var_x137 * var_x192 - 0.80138495771956131 * var_x142 * var_x187 - 3.2055398308782452 * var_x130 * var_x192 - 5.1288637294051922 * var_x76 * var_x96 - 0.086816703752952459 * var_x105 * var_x76 - 5.823397359428812 * var_x142 * var_x186 - 4.8083097463173674 * var_x141 * var_x143 * var_x186 + var_x131 * var_x191 * var_x80 * var_x83 * var_x94 + 6.8384849725402566 * var_x106 * var_x76 * var_x78 * var_x83 * var_x93 * var_x94 + 0.125 * var_x100 * var_x102 * var_x103 * var_x131 * var_x191 * var_x98 * var_x99 + 0.22222222222222221 * var_x106 * var_x107 * var_x108 * var_x131 * var_x193 * var_x86 * var_x87 + 2 * var_x106 * var_x107 * var_x108 * var_x110 * var_x193 * var_x86 * var_x87 * var_x93 + 0.42740531078376603 * var_x100 * var_x102 * var_x76 * var_x78 * var_x79 * var_x93 * var_x98 * var_x99 + 10.257727458810384 * var_x103 * var_x107 * var_x108 * var_x109 * var_x110 * var_x76 * var_x78 * var_x86 * var_x87; + const double var_x193 = CHASTE_CONST(0.30051935914483546) * var_x187 + CHASTE_CONST(2.4041548731586837) * var_x190 + CHASTE_CONST(3.8466477970538944) * var_x188 - CHASTE_CONST(5.1288637294051922) * var_x189 - CHASTE_CONST(0.70121183800461617) * var_x186; + const double var_x194 = -CHASTE_CONST(0.10017311971494516) * var_x136 * var_x76 - CHASTE_CONST(0.20034623942989033) * var_x137 * var_x192 - CHASTE_CONST(0.80138495771956131) * var_x142 * var_x187 - CHASTE_CONST(3.2055398308782452) * var_x130 * var_x192 - CHASTE_CONST(5.1288637294051922) * var_x76 * var_x96 - CHASTE_CONST(0.086816703752952459) * var_x105 * var_x76 - CHASTE_CONST(5.823397359428812) * var_x142 * var_x186 - CHASTE_CONST(4.8083097463173674) * var_x141 * var_x143 * var_x186 + var_x131 * var_x191 * var_x80 * var_x83 * var_x94 + CHASTE_CONST(6.8384849725402566) * var_x106 * var_x76 * var_x78 * var_x83 * var_x93 * var_x94 + CHASTE_CONST(0.125) * var_x100 * var_x102 * var_x103 * var_x131 * var_x191 * var_x98 * var_x99 + CHASTE_CONST(0.22222222222222221) * var_x106 * var_x107 * var_x108 * var_x131 * var_x193 * var_x86 * var_x87 + 2 * var_x106 * var_x107 * var_x108 * var_x110 * var_x193 * var_x86 * var_x87 * var_x93 + CHASTE_CONST(0.42740531078376603) * var_x100 * var_x102 * var_x76 * var_x78 * var_x79 * var_x93 * var_x98 * var_x99 + CHASTE_CONST(10.257727458810384) * var_x103 * var_x107 * var_x108 * var_x109 * var_x110 * var_x76 * var_x78 * var_x86 * var_x87; const double var_x195 = var_x113 * var_x115; const double var_x196 = var_x195 * var_x76; - const double var_x197 = pow(var_chaste_interface__internal_ion_concentrations__Ki, 0.12000000000000011); + const double var_x197 = CHASTE_MATH::Pow(var_chaste_interface__internal_ion_concentrations__Ki, CHASTE_CONST(0.12000000000000011)); const double var_x198 = ((var_x150) ? (var_x149 * var_x180) : (var_x159 * var_x180)); - const double var_x252 = 1.4250668745018745e-7 * var_x29; + const double var_x252 = CHASTE_CONST(1.4250668745018745e-7) * var_x29; const double var_x259 = var_x164 * var_x170 * var_x197; const double var_x260 = var_x172 * var_x259; - const double var_x269 = 1.2955153404562495e-7 * var_x60; - const double var_x270 = 6.5991052644898155e-7 * var_x146; - const double var_x271 = 4.72863099266531e-10 * var_x124; + const double var_x269 = CHASTE_CONST(1.2955153404562495e-7) * var_x60; + const double var_x270 = CHASTE_CONST(6.5991052644898155e-7) * var_x146; + const double var_x271 = CHASTE_CONST(4.72863099266531e-10) * var_x124; - partialF = (-1.7628078977900349e-5 * var_x196 - 2.4699248496712833e-5 * var_x185 - 1.2955153404562495e-6 * var_x182 - 1.2955153404562495e-6 * var_x183 - 1.2955153404562495e-6 * var_x198 - 0.0015243307837622452 * var_x181 - 1.9950936243026244e-7 * var_x180 - 1.0238719530354315e-7 * var_x260 - var_x180 * var_x252 - var_x180 * var_x269 - var_x180 * var_x271 - var_x194 * var_x270) * mParameters[4]; + partialF = (-CHASTE_CONST(1.7628078977900349e-5) * var_x196 - CHASTE_CONST(2.4699248496712833e-5) * var_x185 - CHASTE_CONST(1.2955153404562495e-6) * var_x182 - CHASTE_CONST(1.2955153404562495e-6) * var_x183 - CHASTE_CONST(1.2955153404562495e-6) * var_x198 - CHASTE_CONST(0.0015243307837622452) * var_x181 - CHASTE_CONST(1.9950936243026244e-7) * var_x180 - CHASTE_CONST(1.0238719530354315e-7) * var_x260 - var_x180 * var_x252 - var_x180 * var_x269 - var_x180 * var_x271 - var_x194 * var_x270) * mParameters[4]; } else { @@ -2407,7 +2409,7 @@ std::shared_ptr Dynami 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]); + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -2456,29 +2458,29 @@ std::shared_ptr Dynami 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_Ca_concentrations_in_SR__Carel = -CHASTE_CONST(5.4000000000000004) + CHASTE_CONST(0.5) * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total + CHASTE_CONST(5.4000000000000004) * CHASTE_MATH::Sqrt(CHASTE_MATH::Pow((1 - CHASTE_CONST(0.092592592592592587) * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total), 2) + CHASTE_CONST(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 + CHASTE_CONST(2.7439999999999993) / CHASTE_MATH::Pow(var_chaste_interface__ATP_production__ATPi, 3)); // dimensionless + const double d_dt_chaste_interface_var_NL_model__X = CHASTE_CONST(1.1488559970494261) - CHASTE_CONST(1.2) * var_chaste_interface__NL_model__X; // micrometre / millisecond + const double var_NL_model__Q_d2 = CHASTE_CONST(0.027) * CHASTE_MATH::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 + CHASTE_CONST(0.10000000000000001) / var_chaste_interface__ATP_production__ATPi); // per_millisecond + const double var_SR_calcium_pump__p_E1Ca = 1 / (1 + CHASTE_CONST(0.080000000000000002) / var_chaste_interface__Ca_concentrations_in_SR__Caup); // dimensionless + const double var_internal_ion_concentrations__Cai = -CHASTE_CONST(0.026190000000000001) + CHASTE_CONST(0.5) * CHASTE_MATH::Sqrt(CHASTE_MATH::Pow((CHASTE_CONST(0.052380000000000003) - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + CHASTE_CONST(0.0095200000000000007) * var_chaste_interface__internal_ion_concentrations__Ca_Total) + CHASTE_CONST(0.5) * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar + const double var_NL_model__Q_b = -CHASTE_CONST(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 = CHASTE_CONST(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_SR_calcium_pump__p_E2Ca = 1 / (1 + CHASTE_CONST(0.00080000000000000004) / var_internal_ion_concentrations__Cai); // dimensionless + const double var_SR_calcium_pump__i_SR_U = (CHASTE_CONST(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]) : (CHASTE_CONST(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_background_Cab_current__i_Cab = CHASTE_CONST(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__p_E1Na = 1 / (1 + CHASTE_CONST(669.921875) * (1 + CHASTE_CONST(724.63768115942037) * var_internal_ion_concentrations__Cai) / CHASTE_MATH::Pow(var_chaste_interface__internal_ion_concentrations__Nai, 3)); // dimensionless + const double var_sodium_calcium_exchanger__p_E2Na = 1 / (1 + CHASTE_CONST(669921.875) * (1 + CHASTE_CONST(0.7246376811594204) * mParameters[5]) / CHASTE_MATH::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 + const double d_dt_chaste_interface_var_internal_ion_concentrations__Ca_Total = CHASTE_CONST(0.070000000000000007) * var_NL_model__Q_d2 + CHASTE_CONST(0.070000000000000007) * var_NL_model__Q_r + CHASTE_CONST(6.4775767022812476e-7) * var_RyR_channel__i_RyR + CHASTE_CONST(6.4775767022812476e-7) * var_SR_L_current__i_SR_L + CHASTE_CONST(6.4775767022812476e-7) * var_SR_calcium_pump__i_SR_U + CHASTE_CONST(1.2955153404562495e-6) * var_sodium_calcium_exchanger__i_NaCa - CHASTE_CONST(0.070000000000000007) * var_NL_model__Q_b - CHASTE_CONST(6.4775767022812476e-7) * var_L_type_Ca_channel__i_CaL_Ca - CHASTE_CONST(6.4775767022812476e-7) * var_T_type_Ca_channel__i_Ca_T - CHASTE_CONST(6.4775767022812476e-7) * var_background_Cab_current__i_Cab; // millimolar / millisecond return d_dt_chaste_interface_var_internal_ion_concentrations__Ca_Total; } @@ -2488,7 +2490,7 @@ std::shared_ptr Dynami double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -2531,53 +2533,53 @@ std::shared_ptr Dynami 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_x13 = 0.074870384603595908 * var_chaste_interface__membrane__Vm; - const double var_x14 = exp(-var_x13); + const double var_x13 = CHASTE_CONST(0.074870384603595908) * var_chaste_interface__membrane__Vm; + const double var_x14 = CHASTE_MATH::Exp(-var_x13); const double var_x15 = 1 - var_x14; const double var_x16 = 1 / var_x15; - const double var_x17 = -0.052380000000000003 + var_chaste_interface__internal_ion_concentrations__Ca_Total; - const double var_x18 = sqrt(pow(var_x17, 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total); + const double var_x17 = -CHASTE_CONST(0.052380000000000003) + var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x18 = CHASTE_MATH::Sqrt(CHASTE_MATH::Pow(var_x17, 2) + CHASTE_CONST(0.0095200000000000007) * var_chaste_interface__internal_ion_concentrations__Ca_Total); const double var_x27 = var_x17 + var_x18; - const double var_x34 = pow(var_chaste_interface__internal_ion_concentrations__Nai, 3); + const double var_x34 = CHASTE_MATH::Pow(var_chaste_interface__internal_ion_concentrations__Nai, 3); const double var_x35 = 1 / var_x34; - const double var_x36 = -17.978260869565219 + 362.31884057971018 * var_x18 + 362.31884057971018 * var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x36 = -CHASTE_CONST(17.978260869565219) + CHASTE_CONST(362.31884057971018) * var_x18 + CHASTE_CONST(362.31884057971018) * var_chaste_interface__internal_ion_concentrations__Ca_Total; const double var_x37 = var_x35 * var_x36; const double var_x38 = _lt_0_row[5]; const double var_x117 = 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_x118 = pow(var_chaste_interface__ATP_production__ATPi, (-3)); - const double var_x119 = 1 / (1 + 2.7439999999999993 * var_x118); + const double var_x118 = CHASTE_MATH::Pow(var_chaste_interface__ATP_production__ATPi, (-3)); + const double var_x119 = 1 / (1 + CHASTE_CONST(2.7439999999999993) * var_x118); const double var_x120 = var_x119 * mParameters[8] * var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y; const double var_x123 = var_x120 * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL; const double var_x166 = 1 / var_chaste_interface__ATP_production__ATPi; - const double var_x174 = pow((0.0014927113702623907 + var_x37), (-2)); + const double var_x174 = CHASTE_MATH::Pow((CHASTE_CONST(0.0014927113702623907) + var_x37), (-2)); const double var_x175 = var_x174 * var_x38; const double var_x178 = mParameters[9] * mParameters[14]; const double var_x179 = var_x178 * var_chaste_interface__sodium_calcium_exchanger_y_gate__y; - const double var_x199 = (-0.047620000000000003 + var_chaste_interface__internal_ion_concentrations__Ca_Total) / var_x18; - const double var_x200 = 0.5 + 0.5 * var_x199; + const double var_x199 = (-CHASTE_CONST(0.047620000000000003) + var_chaste_interface__internal_ion_concentrations__Ca_Total) / var_x18; + const double var_x200 = CHASTE_CONST(0.5) + CHASTE_CONST(0.5) * var_x199; const double var_x201 = ((var_x1) ? (0) : (var_x13 * var_x16 * var_x200)); const double var_x206 = var_x117 * var_x201; const double var_x207 = var_x123 * var_x206; - const double var_x208 = 362.31884057971018 + 362.31884057971018 * var_x199; + const double var_x208 = CHASTE_CONST(362.31884057971018) + CHASTE_CONST(362.31884057971018) * var_x199; const double var_x262 = var_x175 * var_x208 * var_x35; const double var_x263 = var_x179 * var_x262; - const double var_x278 = 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_x278 = CHASTE_CONST(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_x279 = 1 - var_chaste_interface__NL_model__pCB - var_chaste_interface__NL_model__pCa - var_chaste_interface__NL_model__pCaCB; - const double var_x280 = -3.2387883511406238e-7 - 3.2387883511406238e-7 * var_x199; + const double var_x280 = -CHASTE_CONST(3.2387883511406238e-7) - CHASTE_CONST(3.2387883511406238e-7) * var_x199; const double var_x281 = mParameters[1] * var_chaste_interface__RyR_channel__p_open_RyR; const double var_x282 = 1 - var_chaste_interface__SR_calcium_pump_y_gate__y; - const double var_x283 = 1 + 0.10000000000000001 * var_x166; + const double var_x283 = 1 + CHASTE_CONST(0.10000000000000001) * var_x166; const double var_x284 = 1 / var_x283; - const double var_x285 = -0.026190000000000001 + 0.5 * var_x18 + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x285 = -CHASTE_CONST(0.026190000000000001) + CHASTE_CONST(0.5) * var_x18 + CHASTE_CONST(0.5) * var_chaste_interface__internal_ion_concentrations__Ca_Total; const double var_x286 = 1 / var_x285; - const double var_x287 = 1 + 0.00080000000000000004 * var_x286; - const double var_x288 = pow(var_x27, 2); + const double var_x287 = 1 + CHASTE_CONST(0.00080000000000000004) * var_x286; + const double var_x288 = CHASTE_MATH::Pow(var_x27, 2); const double var_x289 = -var_x200 / var_x288; - const double var_x290 = var_x289 / pow(var_x287, 2); + const double var_x290 = var_x289 / CHASTE_MATH::Pow(var_x287, 2); const double var_x291 = var_x284 * var_x290; const double var_x292 = var_x282 * var_x291 * mParameters[3]; - partialF = 2.0728245447299993e-9 * var_x292 - 1.9338304790483955e-9 * var_x263 - 6.4775767022812476e-7 * var_x207 - 2.591030680912499e-8 * var_x201 + var_x279 * (-1.3650000000000002 - 1.3650000000000002 * var_x199) + var_x280 * var_x281 + var_x280 * mParameters[0] + (-54.600000000000009 - 54.600000000000009 * var_x199) * var_chaste_interface__NL_model__pCB - var_x201 * var_x278; + partialF = CHASTE_CONST(2.0728245447299993e-9) * var_x292 - CHASTE_CONST(1.9338304790483955e-9) * var_x263 - CHASTE_CONST(6.4775767022812476e-7) * var_x207 - CHASTE_CONST(2.591030680912499e-8) * var_x201 + var_x279 * (-CHASTE_CONST(1.3650000000000002) - CHASTE_CONST(1.3650000000000002) * var_x199) + var_x280 * var_x281 + var_x280 * mParameters[0] + (-CHASTE_CONST(54.600000000000009) - CHASTE_CONST(54.600000000000009) * var_x199) * var_chaste_interface__NL_model__pCB - var_x201 * var_x278; } else { @@ -2592,7 +2594,7 @@ std::shared_ptr Dynami 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]); + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -2621,17 +2623,17 @@ std::shared_ptr Dynami 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_SR_calcium_pump__k2 = 1 / (1 + CHASTE_CONST(0.10000000000000001) / var_chaste_interface__ATP_production__ATPi); // per_millisecond + const double var_SR_calcium_pump__p_E1Ca = 1 / (1 + CHASTE_CONST(0.080000000000000002) / var_chaste_interface__Ca_concentrations_in_SR__Caup); // dimensionless + const double var_internal_ion_concentrations__Cai = -CHASTE_CONST(0.026190000000000001) + CHASTE_CONST(0.5) * CHASTE_MATH::Sqrt(CHASTE_MATH::Pow((CHASTE_CONST(0.052380000000000003) - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + CHASTE_CONST(0.0095200000000000007) * var_chaste_interface__internal_ion_concentrations__Ca_Total) + CHASTE_CONST(0.5) * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar + const double var_SR_calcium_pump__p_E2Ca = 1 / (1 + CHASTE_CONST(0.00080000000000000004) / var_internal_ion_concentrations__Cai); // dimensionless + const double var_SR_calcium_pump__i_SR_U = (CHASTE_CONST(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 + const double var_sodium_potassium_pump__k1 = CHASTE_CONST(0.37) / (1 + CHASTE_CONST(0.094) / var_chaste_interface__ATP_production__ATPi); // per_millisecond + const double var_sodium_potassium_pump__p_E1Na = 1 / (1 + CHASTE_CONST(4.4045579125871104) * CHASTE_MATH::Pow((1 / var_chaste_interface__internal_ion_concentrations__Nai), CHASTE_CONST(1.0600000000000001)) * (1 + CHASTE_CONST(0.020000293738509214) * CHASTE_MATH::Pow(var_chaste_interface__internal_ion_concentrations__Ki, CHASTE_CONST(1.1200000000000001)))); // dimensionless + const double var_sodium_potassium_pump__p_E2Na = 1 / (1 + CHASTE_CONST(90.050628437051003) * CHASTE_MATH::Pow((1 / var_sodium_potassium_pump__Nao_Eff), CHASTE_CONST(1.0600000000000001)) * (1 + CHASTE_CONST(4.560221410801109) * CHASTE_MATH::Pow(mParameters[6], CHASTE_CONST(1.1200000000000001)))); // dimensionless + const double var_sodium_potassium_pump__i_NaK = 21 * (-CHASTE_CONST(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 = CHASTE_CONST(0.014999999999999999) + CHASTE_CONST(3.2387883511406238e-7) * var_SR_calcium_pump__i_SR_U - CHASTE_CONST(0.0030000000000000001) * var_chaste_interface__ATP_production__ATPi - CHASTE_CONST(0.028000000000000004) * var_chaste_interface__NL_model__pCaCB - CHASTE_CONST(1.2955153404562495e-6) * var_sodium_potassium_pump__i_NaK; // millimolar / millisecond return d_dt_chaste_interface_var_ATP_production__ATPi; } @@ -2656,28 +2658,28 @@ std::shared_ptr Dynami - const double var_x17 = -0.052380000000000003 + var_chaste_interface__internal_ion_concentrations__Ca_Total; - const double var_x18 = sqrt(pow(var_x17, 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total); - const double var_x31 = pow(var_chaste_interface__ATP_production__ATPi, 2); + const double var_x17 = -CHASTE_CONST(0.052380000000000003) + var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x18 = CHASTE_MATH::Sqrt(CHASTE_MATH::Pow(var_x17, 2) + CHASTE_CONST(0.0095200000000000007) * var_chaste_interface__internal_ion_concentrations__Ca_Total); + const double var_x31 = CHASTE_MATH::Pow(var_chaste_interface__ATP_production__ATPi, 2); const double var_x163 = 1 / var_chaste_interface__internal_ion_concentrations__Nai; - const double var_x164 = pow(var_x163, 1.0600000000000001); - const double var_x165 = var_x164 * (1 + 0.020000293738509214 * pow(var_chaste_interface__internal_ion_concentrations__Ki, 1.1200000000000001)); + const double var_x164 = CHASTE_MATH::Pow(var_x163, CHASTE_CONST(1.0600000000000001)); + const double var_x165 = var_x164 * (1 + CHASTE_CONST(0.020000293738509214) * CHASTE_MATH::Pow(var_chaste_interface__internal_ion_concentrations__Ki, CHASTE_CONST(1.1200000000000001))); const double var_x166 = 1 / var_chaste_interface__ATP_production__ATPi; - const double var_x167 = 1 + 0.094 * var_x166; - const double var_x210 = 1 / (1 + 4.4045579125871104 * var_x165); + const double var_x167 = 1 + CHASTE_CONST(0.094) * var_x166; + const double var_x210 = 1 / (1 + CHASTE_CONST(4.4045579125871104) * var_x165); const double var_x211 = 1 / var_x31; - const double var_x212 = var_x210 * var_x211 * var_chaste_interface__sodium_potassium_pump_y_gate__y / pow(var_x167, 2); + const double var_x212 = var_x210 * var_x211 * var_chaste_interface__sodium_potassium_pump_y_gate__y / CHASTE_MATH::Pow(var_x167, 2); const double var_x213 = var_x212 * mParameters[9]; const double var_x282 = 1 - var_chaste_interface__SR_calcium_pump_y_gate__y; - const double var_x283 = 1 + 0.10000000000000001 * var_x166; - const double var_x285 = -0.026190000000000001 + 0.5 * var_x18 + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x283 = 1 + CHASTE_CONST(0.10000000000000001) * var_x166; + const double var_x285 = -CHASTE_CONST(0.026190000000000001) + CHASTE_CONST(0.5) * var_x18 + CHASTE_CONST(0.5) * var_chaste_interface__internal_ion_concentrations__Ca_Total; const double var_x286 = 1 / var_x285; - const double var_x287 = 1 + 0.00080000000000000004 * var_x286; + const double var_x287 = 1 + CHASTE_CONST(0.00080000000000000004) * var_x286; const double var_x293 = 1 / var_x287; - const double var_x294 = var_x211 * var_x282 * var_x293 / pow(var_x283, 2); + const double var_x294 = var_x211 * var_x282 * var_x293 / CHASTE_MATH::Pow(var_x283, 2); const double var_x295 = var_x294 * mParameters[3]; - partialF = -0.0030000000000000001 - 3.2387883511406238e-8 * var_x295 - 9.4621849436243545e-7 * var_x213; + partialF = -CHASTE_CONST(0.0030000000000000001) - CHASTE_CONST(3.2387883511406238e-8) * var_x295 - CHASTE_CONST(9.4621849436243545e-7) * var_x213; } else { @@ -2692,7 +2694,7 @@ std::shared_ptr Dynami 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]); + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -2714,7 +2716,7 @@ std::shared_ptr Dynami 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 + const double d_dt_chaste_interface_var_sodium_current_voltage_dependent_gate__p_AP_Na = CHASTE_CONST(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; } @@ -2724,19 +2726,19 @@ std::shared_ptr Dynami double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -85.95752434460744 - const double var_x308 = exp(-0.0025000000000000001 * var_chaste_interface__membrane__Vm); + const double var_x308 = CHASTE_MATH::Exp(-CHASTE_CONST(0.0025000000000000001) * var_chaste_interface__membrane__Vm); const double var_x309 = 1 / var_x308; - const double var_x311 = exp(0.00125 * var_chaste_interface__membrane__Vm); - const double var_x312 = 0.058823529411764705 * var_chaste_interface__membrane__Vm; - const double var_x313 = exp(var_x312); - const double var_x320 = 1 / (26 * var_x313 + 0.02 * var_x311); + const double var_x311 = CHASTE_MATH::Exp(CHASTE_CONST(0.00125) * var_chaste_interface__membrane__Vm); + const double var_x312 = CHASTE_CONST(0.058823529411764705) * var_chaste_interface__membrane__Vm; + const double var_x313 = CHASTE_MATH::Exp(var_x312); + const double var_x320 = 1 / (26 * var_x313 + CHASTE_CONST(0.02) * var_x311); const double var_x321 = var_x320; - const double var_x322 = 1.25 * var_x309; + const double var_x322 = CHASTE_CONST(1.25) * var_x309; partialF = -var_x321 - var_x322; } @@ -2753,7 +2755,7 @@ std::shared_ptr Dynami 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]); + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -2777,9 +2779,9 @@ std::shared_ptr Dynami 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__k_RP_RI = CHASTE_CONST(0.01) / (1 + CHASTE_CONST(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 + const double d_dt_chaste_interface_var_sodium_current_voltage_dependent_gate__p_RP_Na = (CHASTE_CONST(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; } @@ -2789,17 +2791,17 @@ std::shared_ptr Dynami double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -85.95752434460744 - const double var_x316 = exp(-0.125 * var_chaste_interface__membrane__Vm); - const double var_x317 = exp(-0.02 * var_chaste_interface__membrane__Vm); - const double var_x323 = 0.25 * var_x317 + 0.1027 * var_x316; + const double var_x316 = CHASTE_MATH::Exp(-CHASTE_CONST(0.125) * var_chaste_interface__membrane__Vm); + const double var_x317 = CHASTE_MATH::Exp(-CHASTE_CONST(0.02) * var_chaste_interface__membrane__Vm); + const double var_x323 = CHASTE_CONST(0.25) * var_x317 + CHASTE_CONST(0.1027) * var_x316; const double var_x324 = 1 / var_x323; - partialF = -0.01 - var_x324; + partialF = -CHASTE_CONST(0.01) - var_x324; } else { @@ -2814,7 +2816,7 @@ std::shared_ptr Dynami 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]); + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -2837,7 +2839,7 @@ std::shared_ptr Dynami 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 + 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 - (CHASTE_CONST(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; } @@ -2847,20 +2849,20 @@ std::shared_ptr Dynami double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -85.95752434460744 - const double var_x308 = exp(-0.0025000000000000001 * var_chaste_interface__membrane__Vm); - const double var_x311 = exp(0.00125 * var_chaste_interface__membrane__Vm); - const double var_x316 = exp(-0.125 * var_chaste_interface__membrane__Vm); - const double var_x325 = 1 / (5 * var_x308 + 0.0001027 * var_x316); - const double var_x326 = exp(0.050000000000000003 * var_chaste_interface__membrane__Vm); - const double var_x327 = 1300 * var_x326 + 0.040000000000000001 * var_x311; + const double var_x308 = CHASTE_MATH::Exp(-CHASTE_CONST(0.0025000000000000001) * var_chaste_interface__membrane__Vm); + const double var_x311 = CHASTE_MATH::Exp(CHASTE_CONST(0.00125) * var_chaste_interface__membrane__Vm); + const double var_x316 = CHASTE_MATH::Exp(-CHASTE_CONST(0.125) * var_chaste_interface__membrane__Vm); + const double var_x325 = 1 / (5 * var_x308 + CHASTE_CONST(0.0001027) * var_x316); + const double var_x326 = CHASTE_MATH::Exp(CHASTE_CONST(0.050000000000000003) * var_chaste_interface__membrane__Vm); + const double var_x327 = 1300 * var_x326 + CHASTE_CONST(0.040000000000000001) * var_x311; const double var_x337 = var_x325; - partialF = -8.7499999999999999e-5 - var_x337 - 1 / var_x327; + partialF = -CHASTE_CONST(8.7499999999999999e-5) - var_x337 - 1 / var_x327; } else { @@ -2875,7 +2877,7 @@ std::shared_ptr Dynami 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]); + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -2900,19 +2902,19 @@ std::shared_ptr Dynami double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -85.95752434460744 - const double var_x339 = 0.20000000000000001 * var_chaste_interface__membrane__Vm; - const double var_x340 = exp(-var_x339); - const double var_x341 = 0.01 * var_chaste_interface__membrane__Vm; - const double var_x342 = exp(-var_x341); - const double var_x343 = exp(var_x341); - const double var_x344 = exp(var_x339); + const double var_x339 = CHASTE_CONST(0.20000000000000001) * var_chaste_interface__membrane__Vm; + const double var_x340 = CHASTE_MATH::Exp(-var_x339); + const double var_x341 = CHASTE_CONST(0.01) * var_chaste_interface__membrane__Vm; + const double var_x342 = CHASTE_MATH::Exp(-var_x341); + const double var_x343 = CHASTE_MATH::Exp(var_x341); + const double var_x344 = CHASTE_MATH::Exp(var_x339); - partialF = -1 / (4000 * var_x342 + 0.014 * var_x340) - 1 / (8000 * var_x343 + 9000000000.0 * var_x344); + partialF = -1 / (4000 * var_x342 + CHASTE_CONST(0.014) * var_x340) - 1 / (8000 * var_x343 + CHASTE_CONST(9000000000.0) * var_x344); } else { @@ -2927,7 +2929,7 @@ std::shared_ptr Dynami 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]); + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -2948,7 +2950,7 @@ std::shared_ptr Dynami // 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 + const double d_dt_chaste_interface_var_L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = CHASTE_CONST(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 - (CHASTE_CONST(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; } @@ -2958,18 +2960,18 @@ std::shared_ptr Dynami double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -85.95752434460744 - const double var_x345 = 0.015384615384615385 * var_chaste_interface__membrane__Vm; - const double var_x346 = exp(var_x345); - const double var_x347 = exp(0.14285714285714285 * var_chaste_interface__membrane__Vm); - const double var_x354 = 1 / (480 * var_x347 + 2.2000000000000002 * var_x346); + const double var_x345 = CHASTE_CONST(0.015384615384615385) * var_chaste_interface__membrane__Vm; + const double var_x346 = CHASTE_MATH::Exp(var_x345); + const double var_x347 = CHASTE_MATH::Exp(CHASTE_CONST(0.14285714285714285) * var_chaste_interface__membrane__Vm); + const double var_x354 = 1 / (480 * var_x347 + CHASTE_CONST(2.2000000000000002) * var_x346); const double var_x355 = var_x354; - partialF = -0.0040000000000000001 - var_x355; + partialF = -CHASTE_CONST(0.0040000000000000001) - var_x355; } else { @@ -2984,7 +2986,7 @@ std::shared_ptr Dynami 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]); + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -3008,8 +3010,8 @@ std::shared_ptr Dynami 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 + const double var_L_type_Ca_channel_voltage_dependent_gate__k_RP_RI = CHASTE_CONST(0.040000000000000001) / (1 + CHASTE_CONST(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 = (CHASTE_CONST(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; } @@ -3019,18 +3021,18 @@ std::shared_ptr Dynami double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -85.95752434460744 - const double var_x345 = 0.015384615384615385 * var_chaste_interface__membrane__Vm; - const double var_x350 = exp(-0.16949152542372881 * var_chaste_interface__membrane__Vm); - const double var_x351 = exp(-var_x345); - const double var_x356 = 1.5 * var_x351 + 0.27000000000000002 * var_x350; + const double var_x345 = CHASTE_CONST(0.015384615384615385) * var_chaste_interface__membrane__Vm; + const double var_x350 = CHASTE_MATH::Exp(-CHASTE_CONST(0.16949152542372881) * var_chaste_interface__membrane__Vm); + const double var_x351 = CHASTE_MATH::Exp(-var_x345); + const double var_x356 = CHASTE_CONST(1.5) * var_x351 + CHASTE_CONST(0.27000000000000002) * var_x350; const double var_x357 = 1 / var_x356; - partialF = -0.040000000000000001 - var_x357; + partialF = -CHASTE_CONST(0.040000000000000001) - var_x357; } else { @@ -3045,7 +3047,7 @@ std::shared_ptr Dynami 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]); + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -3067,7 +3069,7 @@ std::shared_ptr Dynami 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 + const double d_dt_chaste_interface_var_L_type_Ca_channel_voltage_dependent_gate__p_AI_CaL = CHASTE_CONST(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 - (CHASTE_CONST(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; } @@ -3077,22 +3079,22 @@ std::shared_ptr Dynami double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -85.95752434460744 - const double var_x341 = 0.01 * var_chaste_interface__membrane__Vm; - const double var_x342 = exp(-var_x341); - const double var_x343 = exp(var_x341); - const double var_x358 = 0.13513513513513511 * var_chaste_interface__membrane__Vm; - const double var_x359 = exp(var_x358); + const double var_x341 = CHASTE_CONST(0.01) * var_chaste_interface__membrane__Vm; + const double var_x342 = CHASTE_MATH::Exp(-var_x341); + const double var_x343 = CHASTE_MATH::Exp(var_x341); + const double var_x358 = CHASTE_CONST(0.13513513513513511) * var_chaste_interface__membrane__Vm; + const double var_x359 = CHASTE_MATH::Exp(var_x358); const double var_x360 = 11 * var_x343 + 2200000 * var_x359; - const double var_x362 = exp(-var_x358); - const double var_x363 = 1 / (2 * var_x342 + 0.0018 * var_x362); + const double var_x362 = CHASTE_MATH::Exp(-var_x358); + const double var_x363 = 1 / (2 * var_x342 + CHASTE_CONST(0.0018) * var_x362); const double var_x374 = var_x363; - partialF = -0.001 - var_x374 - 1 / var_x360; + partialF = -CHASTE_CONST(0.001) - var_x374 - 1 / var_x360; } else { @@ -3107,7 +3109,7 @@ std::shared_ptr Dynami 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]); + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -3130,12 +3132,12 @@ std::shared_ptr Dynami 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 + const double var_internal_ion_concentrations__Cai = -CHASTE_CONST(0.026190000000000001) + CHASTE_CONST(0.5) * CHASTE_MATH::Sqrt(CHASTE_MATH::Pow((CHASTE_CONST(0.052380000000000003) - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + CHASTE_CONST(0.0095200000000000007) * var_chaste_interface__internal_ion_concentrations__Ca_Total) + CHASTE_CONST(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]) : (CHASTE_CONST(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 = CHASTE_CONST(0.067599999999999993) * var_constant_field_equations__CF_Ca; // picoA + const double var_L_type_Ca_channel_Ca_dependent_gate__Cacm = -CHASTE_CONST(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 = CHASTE_CONST(6.9539999999999997) * (1 - var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL) * var_internal_ion_concentrations__Cai + CHASTE_CONST(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 = CHASTE_CONST(0.14299999999999999) * var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_C + CHASTE_CONST(2.0019999999999998) * var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa - (CHASTE_CONST(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; } @@ -3145,7 +3147,7 @@ std::shared_ptr Dynami double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -3155,23 +3157,23 @@ std::shared_ptr Dynami const double var_x1 = var_chaste_interface__membrane__Vm == 0; - const double var_x13 = 0.074870384603595908 * var_chaste_interface__membrane__Vm; - const double var_x14 = exp(-var_x13); + const double var_x13 = CHASTE_CONST(0.074870384603595908) * var_chaste_interface__membrane__Vm; + const double var_x14 = CHASTE_MATH::Exp(-var_x13); const double var_x15 = 1 - var_x14; const double var_x16 = 1 / var_x15; - const double var_x17 = -0.052380000000000003 + var_chaste_interface__internal_ion_concentrations__Ca_Total; - const double var_x18 = sqrt(pow(var_x17, 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total); + const double var_x17 = -CHASTE_CONST(0.052380000000000003) + var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x18 = CHASTE_MATH::Sqrt(CHASTE_MATH::Pow(var_x17, 2) + CHASTE_CONST(0.0095200000000000007) * var_chaste_interface__internal_ion_concentrations__Ca_Total); const double var_x19 = var_x14 * mParameters[5]; - const double var_x20 = -0.026190000000000001 - var_x19 + 0.5 * var_x18 + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x20 = -CHASTE_CONST(0.026190000000000001) - var_x19 + CHASTE_CONST(0.5) * var_x18 + CHASTE_CONST(0.5) * var_chaste_interface__internal_ion_concentrations__Ca_Total; const double var_x21 = var_x16 * var_x20; const double var_x214 = ((var_x1) ? (-mParameters[5]) : (var_x13 * var_x21)); - const double var_x285 = -0.026190000000000001 + 0.5 * var_x18 + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x285 = -CHASTE_CONST(0.026190000000000001) + CHASTE_CONST(0.5) * var_x18 + CHASTE_CONST(0.5) * var_chaste_interface__internal_ion_concentrations__Ca_Total; const double var_x371 = -1 + var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL; - const double var_x378 = 6.9539999999999997 * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL; - const double var_x382 = var_x378 * (var_x285 - 0.020279999999999996 * var_x214); - const double var_x383 = var_x382 - 6.9539999999999997 * var_x285 * var_x371; + const double var_x378 = CHASTE_CONST(6.9539999999999997) * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL; + const double var_x382 = var_x378 * (var_x285 - CHASTE_CONST(0.020279999999999996) * var_x214); + const double var_x383 = var_x382 - CHASTE_CONST(6.9539999999999997) * var_x285 * var_x371; - partialF = -0.34999999999999998 - var_x383; + partialF = -CHASTE_CONST(0.34999999999999998) - var_x383; } else { @@ -3186,7 +3188,7 @@ std::shared_ptr Dynami 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]); + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -3210,12 +3212,12 @@ std::shared_ptr Dynami // 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 + const double var_internal_ion_concentrations__Cai = -CHASTE_CONST(0.026190000000000001) + CHASTE_CONST(0.5) * CHASTE_MATH::Sqrt(CHASTE_MATH::Pow((CHASTE_CONST(0.052380000000000003) - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + CHASTE_CONST(0.0095200000000000007) * var_chaste_interface__internal_ion_concentrations__Ca_Total) + CHASTE_CONST(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]) : (CHASTE_CONST(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 = CHASTE_CONST(0.067599999999999993) * var_constant_field_equations__CF_Ca; // picoA + const double var_L_type_Ca_channel_Ca_dependent_gate__Cacm = -CHASTE_CONST(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 = CHASTE_CONST(6.9539999999999997) * (1 - var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL) * var_internal_ion_concentrations__Cai + CHASTE_CONST(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 = CHASTE_CONST(0.00029999999999999997) * var_L_type_Ca_channel_Ca_dependent_gate__p_CCa - CHASTE_CONST(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; } @@ -3229,7 +3231,7 @@ std::shared_ptr Dynami - partialF = -2.3523000000000001; + partialF = -CHASTE_CONST(2.3523000000000001); } else { @@ -3244,7 +3246,7 @@ std::shared_ptr Dynami 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]); + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -3268,11 +3270,11 @@ std::shared_ptr Dynami // 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 + const double var_internal_ion_concentrations__Cai = -CHASTE_CONST(0.026190000000000001) + CHASTE_CONST(0.5) * CHASTE_MATH::Sqrt(CHASTE_MATH::Pow((CHASTE_CONST(0.052380000000000003) - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + CHASTE_CONST(0.0095200000000000007) * var_chaste_interface__internal_ion_concentrations__Ca_Total) + CHASTE_CONST(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]) : (CHASTE_CONST(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 = CHASTE_CONST(0.067599999999999993) * var_constant_field_equations__CF_Ca; // picoA + const double var_L_type_Ca_channel_Ca_dependent_gate__Cacm = -CHASTE_CONST(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 = CHASTE_CONST(0.34999999999999998) * var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U + CHASTE_CONST(0.0041999999999999997) * var_L_type_Ca_channel_Ca_dependent_gate__p_CCa - (CHASTE_CONST(0.14299999999999999) + CHASTE_CONST(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; } @@ -3282,7 +3284,7 @@ std::shared_ptr Dynami double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -3292,21 +3294,21 @@ std::shared_ptr Dynami const double var_x1 = var_chaste_interface__membrane__Vm == 0; - const double var_x13 = 0.074870384603595908 * var_chaste_interface__membrane__Vm; - const double var_x14 = exp(-var_x13); + const double var_x13 = CHASTE_CONST(0.074870384603595908) * var_chaste_interface__membrane__Vm; + const double var_x14 = CHASTE_MATH::Exp(-var_x13); const double var_x15 = 1 - var_x14; const double var_x16 = 1 / var_x15; - const double var_x17 = -0.052380000000000003 + var_chaste_interface__internal_ion_concentrations__Ca_Total; - const double var_x18 = sqrt(pow(var_x17, 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total); + const double var_x17 = -CHASTE_CONST(0.052380000000000003) + var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x18 = CHASTE_MATH::Sqrt(CHASTE_MATH::Pow(var_x17, 2) + CHASTE_CONST(0.0095200000000000007) * var_chaste_interface__internal_ion_concentrations__Ca_Total); const double var_x19 = var_x14 * mParameters[5]; - const double var_x20 = -0.026190000000000001 - var_x19 + 0.5 * var_x18 + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x20 = -CHASTE_CONST(0.026190000000000001) - var_x19 + CHASTE_CONST(0.5) * var_x18 + CHASTE_CONST(0.5) * var_chaste_interface__internal_ion_concentrations__Ca_Total; const double var_x21 = var_x16 * var_x20; const double var_x214 = ((var_x1) ? (-mParameters[5]) : (var_x13 * var_x21)); - const double var_x285 = -0.026190000000000001 + 0.5 * var_x18 + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; - const double var_x378 = 6.9539999999999997 * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL; - const double var_x382 = var_x378 * (var_x285 - 0.020279999999999996 * var_x214); + const double var_x285 = -CHASTE_CONST(0.026190000000000001) + CHASTE_CONST(0.5) * var_x18 + CHASTE_CONST(0.5) * var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x378 = CHASTE_CONST(6.9539999999999997) * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL; + const double var_x382 = var_x378 * (var_x285 - CHASTE_CONST(0.020279999999999996) * var_x214); - partialF = -0.1472 - var_x382; + partialF = -CHASTE_CONST(0.1472) - var_x382; } else { @@ -3321,7 +3323,7 @@ std::shared_ptr Dynami 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]); + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -3346,16 +3348,16 @@ std::shared_ptr Dynami double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -85.95752434460744 - const double var_x345 = 0.015384615384615385 * var_chaste_interface__membrane__Vm; - const double var_x346 = exp(var_x345); - const double var_x351 = exp(-var_x345); - const double var_x384 = exp(-0.071428571428571425 * var_chaste_interface__membrane__Vm); - const double var_x385 = exp(0.1111111111111111 * var_chaste_interface__membrane__Vm); + const double var_x345 = CHASTE_CONST(0.015384615384615385) * var_chaste_interface__membrane__Vm; + const double var_x346 = CHASTE_MATH::Exp(var_x345); + const double var_x351 = CHASTE_MATH::Exp(-var_x345); + const double var_x384 = CHASTE_MATH::Exp(-CHASTE_CONST(0.071428571428571425) * var_chaste_interface__membrane__Vm); + const double var_x385 = CHASTE_MATH::Exp(CHASTE_CONST(0.1111111111111111) * var_chaste_interface__membrane__Vm); partialF = -1 / (58 * var_x346 + 250000 * var_x385) - 1 / (66 * var_x351 + 1800 * var_x384); } @@ -3372,7 +3374,7 @@ std::shared_ptr Dynami 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]); + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -3397,17 +3399,17 @@ std::shared_ptr Dynami double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -85.95752434460744 - const double var_x386 = exp(0.0001 * var_chaste_interface__membrane__Vm); - const double var_x387 = exp(0.15873015873015872 * var_chaste_interface__membrane__Vm); - const double var_x388 = exp(-0.17857142857142858 * var_chaste_interface__membrane__Vm); - const double var_x389 = exp(-0.0040000000000000001 * var_chaste_interface__membrane__Vm); + const double var_x386 = CHASTE_MATH::Exp(CHASTE_CONST(0.0001) * var_chaste_interface__membrane__Vm); + const double var_x387 = CHASTE_MATH::Exp(CHASTE_CONST(0.15873015873015872) * var_chaste_interface__membrane__Vm); + const double var_x388 = CHASTE_MATH::Exp(-CHASTE_CONST(0.17857142857142858) * var_chaste_interface__membrane__Vm); + const double var_x389 = CHASTE_MATH::Exp(-CHASTE_CONST(0.0040000000000000001) * var_chaste_interface__membrane__Vm); - partialF = -1 / (1.5 * var_x386 + 40 * var_x387) - 1 / (0.019 * var_x388 + 0.81999999999999995 * var_x389); + partialF = -1 / (CHASTE_CONST(1.5) * var_x386 + 40 * var_x387) - 1 / (CHASTE_CONST(0.019) * var_x388 + CHASTE_CONST(0.81999999999999995) * var_x389); } else { @@ -3422,7 +3424,7 @@ std::shared_ptr Dynami 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]); + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -3447,17 +3449,17 @@ std::shared_ptr Dynami double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -85.95752434460744 - const double var_x390 = exp(-0.14925373134328357 * var_chaste_interface__membrane__Vm); - const double var_x391 = exp(-0.040000000000000001 * var_chaste_interface__membrane__Vm); - const double var_x392 = exp(0.00033333333333333332 * var_chaste_interface__membrane__Vm); - const double var_x393 = exp(0.099009900990099015 * var_chaste_interface__membrane__Vm); + const double var_x390 = CHASTE_MATH::Exp(-CHASTE_CONST(0.14925373134328357) * var_chaste_interface__membrane__Vm); + const double var_x391 = CHASTE_MATH::Exp(-CHASTE_CONST(0.040000000000000001) * var_chaste_interface__membrane__Vm); + const double var_x392 = CHASTE_MATH::Exp(CHASTE_CONST(0.00033333333333333332) * var_chaste_interface__membrane__Vm); + const double var_x393 = CHASTE_MATH::Exp(CHASTE_CONST(0.099009900990099015) * var_chaste_interface__membrane__Vm); - partialF = -1 / (30 * var_x392 + 62000 * var_x393) - 1 / (1.2 * var_x391 + 0.00059999999999999995 * var_x390); + partialF = -1 / (30 * var_x392 + 62000 * var_x393) - 1 / (CHASTE_CONST(1.2) * var_x391 + CHASTE_CONST(0.00059999999999999995) * var_x390); } else { @@ -3472,7 +3474,7 @@ std::shared_ptr Dynami 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]); + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -3482,11 +3484,11 @@ std::shared_ptr Dynami // 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__E_K = CHASTE_CONST(26.712831923985377) * CHASTE_MATH::Log(mParameters[6] / var_chaste_interface__internal_ion_concentrations__Ki); // millivolt + const double var_time_independent_potassium_current__lambda = 3 * (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.4319999999999999) + CHASTE_CONST(0.064000000000000001) * var_chaste_interface__membrane__Vm - CHASTE_CONST(0.064000000000000001) * var_time_independent_potassium_current__E_K)) * CHASTE_MATH::Exp(CHASTE_CONST(0.47999999999999998) + CHASTE_CONST(0.048000000000000001) * var_time_independent_potassium_current__E_K - CHASTE_CONST(0.048000000000000001) * var_chaste_interface__membrane__Vm) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.1000000000000001) + CHASTE_CONST(0.029999999999999999) * var_chaste_interface__membrane__Vm - CHASTE_CONST(0.029999999999999999) * var_time_independent_potassium_current__E_K)); // per_millisecond + const double var_time_independent_potassium_current__mu = CHASTE_CONST(0.75) * CHASTE_MATH::Exp(-CHASTE_CONST(0.35000000000000003) + CHASTE_CONST(0.035000000000000003) * var_chaste_interface__membrane__Vm - CHASTE_CONST(0.035000000000000003) * var_time_independent_potassium_current__E_K) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.1000000000000001) + CHASTE_CONST(0.014999999999999999) * var_chaste_interface__membrane__Vm - CHASTE_CONST(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 + 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 * CHASTE_MATH::Exp(-CHASTE_CONST(0.32333333333333331) + CHASTE_CONST(0.0033333333333333335) * var_chaste_interface__membrane__Vm - CHASTE_CONST(0.0033333333333333335) * var_time_independent_potassium_current__E_K) + 8000 * CHASTE_MATH::Exp(-CHASTE_CONST(11.411764705882353) + CHASTE_CONST(0.11764705882352941) * var_chaste_interface__membrane__Vm - CHASTE_CONST(0.11764705882352941) * var_time_independent_potassium_current__E_K)) - CHASTE_MATH::Pow(var_time_independent_potassium_current__fO, 4) * var_chaste_interface__time_independent_potassium_current_y_gate__y / (CHASTE_CONST(0.00013999999999999999) * CHASTE_MATH::Exp(CHASTE_CONST(10.659340659340661) + CHASTE_CONST(0.10989010989010989) * var_time_independent_potassium_current__E_K - CHASTE_CONST(0.10989010989010989) * var_chaste_interface__membrane__Vm) + CHASTE_CONST(0.20000000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.19400000000000001) + CHASTE_CONST(0.002) * var_time_independent_potassium_current__E_K - CHASTE_CONST(0.002) * var_chaste_interface__membrane__Vm)); // 1 / millisecond return d_dt_chaste_interface_var_time_independent_potassium_current_y_gate__y; } @@ -3496,7 +3498,7 @@ std::shared_ptr Dynami double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -3504,35 +3506,35 @@ std::shared_ptr Dynami const double var_x76 = 1 / var_chaste_interface__internal_ion_concentrations__Ki; - const double var_x77 = log(var_x76 * mParameters[6]); - const double var_x78 = exp(-2.4319999999999999 + 0.064000000000000001 * var_chaste_interface__membrane__Vm - 1.7096212431350641 * var_x77); + const double var_x77 = CHASTE_MATH::Log(var_x76 * mParameters[6]); + const double var_x78 = CHASTE_MATH::Exp(-CHASTE_CONST(2.4319999999999999) + CHASTE_CONST(0.064000000000000001) * var_chaste_interface__membrane__Vm - CHASTE_CONST(1.7096212431350641) * var_x77); const double var_x79 = 1 + var_x78; - const double var_x80 = pow(var_x79, 4); - const double var_x81 = exp(-2.1000000000000001 + 0.029999999999999999 * var_chaste_interface__membrane__Vm - 0.80138495771956131 * var_x77); + const double var_x80 = CHASTE_MATH::Pow(var_x79, 4); + const double var_x81 = CHASTE_MATH::Exp(-CHASTE_CONST(2.1000000000000001) + CHASTE_CONST(0.029999999999999999) * var_chaste_interface__membrane__Vm - CHASTE_CONST(0.80138495771956131) * var_x77); const double var_x82 = 1 + var_x81; - const double var_x83 = pow(var_x82, (-4)); - const double var_x84 = exp(-2.1000000000000001 + 0.014999999999999999 * var_chaste_interface__membrane__Vm - 0.40069247885978065 * var_x77); + const double var_x83 = CHASTE_MATH::Pow(var_x82, (-4)); + const double var_x84 = CHASTE_MATH::Exp(-CHASTE_CONST(2.1000000000000001) + CHASTE_CONST(0.014999999999999999) * var_chaste_interface__membrane__Vm - CHASTE_CONST(0.40069247885978065) * var_x77); const double var_x85 = 1 + var_x84; const double var_x86 = 1 / var_x85; - const double var_x87 = exp(-0.35000000000000003 + 0.035000000000000003 * var_chaste_interface__membrane__Vm - 0.93494911733948827 * var_x77); + const double var_x87 = CHASTE_MATH::Exp(-CHASTE_CONST(0.35000000000000003) + CHASTE_CONST(0.035000000000000003) * var_chaste_interface__membrane__Vm - CHASTE_CONST(0.93494911733948827) * var_x77); const double var_x88 = var_x86 * var_x87; - const double var_x89 = exp(0.47999999999999998 + 1.282215932351298 * var_x77 - 0.048000000000000001 * var_chaste_interface__membrane__Vm); + const double var_x89 = CHASTE_MATH::Exp(CHASTE_CONST(0.47999999999999998) + CHASTE_CONST(1.282215932351298) * var_x77 - CHASTE_CONST(0.048000000000000001) * var_chaste_interface__membrane__Vm); const double var_x90 = var_x89 / var_x82; const double var_x91 = var_x79 * var_x90; - const double var_x92 = var_x91 + 0.25 * var_x88; - const double var_x93 = pow(var_x92, (-4)); - const double var_x94 = pow(var_x89, 4); + const double var_x92 = var_x91 + CHASTE_CONST(0.25) * var_x88; + const double var_x93 = CHASTE_MATH::Pow(var_x92, (-4)); + const double var_x94 = CHASTE_MATH::Pow(var_x89, 4); const double var_x95 = var_x83 * var_x93 * var_x94; const double var_x96 = var_x80 * var_x95; const double var_x97 = var_x96; - const double var_x394 = 0.0033333333333333335 * var_chaste_interface__membrane__Vm; + const double var_x394 = CHASTE_CONST(0.0033333333333333335) * var_chaste_interface__membrane__Vm; const double var_x395 = -var_x394; - const double var_x396 = exp(-0.32333333333333331 - var_x395 - 0.08904277307995126 * var_x77); - const double var_x397 = exp(-11.411764705882353 + 0.11764705882352941 * var_chaste_interface__membrane__Vm - 3.142686108704162 * var_x77); - const double var_x400 = exp(10.659340659340661 + 2.9354760356027887 * var_x77 - 0.10989010989010989 * var_chaste_interface__membrane__Vm); - const double var_x401 = 0.002 * var_chaste_interface__membrane__Vm; - const double var_x402 = exp(0.19400000000000001 - var_x401 + 0.053425663847970754 * var_x77); - const double var_x403 = 1 / (0.00013999999999999999 * var_x400 + 0.20000000000000001 * var_x402); + const double var_x396 = CHASTE_MATH::Exp(-CHASTE_CONST(0.32333333333333331) - var_x395 - CHASTE_CONST(0.08904277307995126) * var_x77); + const double var_x397 = CHASTE_MATH::Exp(-CHASTE_CONST(11.411764705882353) + CHASTE_CONST(0.11764705882352941) * var_chaste_interface__membrane__Vm - CHASTE_CONST(3.142686108704162) * var_x77); + const double var_x400 = CHASTE_MATH::Exp(CHASTE_CONST(10.659340659340661) + CHASTE_CONST(2.9354760356027887) * var_x77 - CHASTE_CONST(0.10989010989010989) * var_chaste_interface__membrane__Vm); + const double var_x401 = CHASTE_CONST(0.002) * var_chaste_interface__membrane__Vm; + const double var_x402 = CHASTE_MATH::Exp(CHASTE_CONST(0.19400000000000001) - var_x401 + CHASTE_CONST(0.053425663847970754) * var_x77); + const double var_x403 = 1 / (CHASTE_CONST(0.00013999999999999999) * var_x400 + CHASTE_CONST(0.20000000000000001) * var_x402); partialF = -1 / (7 * var_x396 + 8000 * var_x397) - var_x403 * var_x97; } @@ -3549,7 +3551,7 @@ std::shared_ptr Dynami 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]); + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -3574,22 +3576,22 @@ std::shared_ptr Dynami double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -85.95752434460744 - const double var_x326 = exp(0.050000000000000003 * var_chaste_interface__membrane__Vm); - const double var_x394 = 0.0033333333333333335 * var_chaste_interface__membrane__Vm; + const double var_x326 = CHASTE_MATH::Exp(CHASTE_CONST(0.050000000000000003) * var_chaste_interface__membrane__Vm); + const double var_x394 = CHASTE_CONST(0.0033333333333333335) * var_chaste_interface__membrane__Vm; const double var_x395 = -var_x394; const double var_x408 = 1 / var_x326; - const double var_x409 = 0.035714285714285712 * var_chaste_interface__membrane__Vm; - const double var_x410 = exp(var_x409); - const double var_x411 = exp(0.001 * var_chaste_interface__membrane__Vm); - const double var_x413 = exp(var_x395); - const double var_x414 = exp(-0.086956521739130432 * var_chaste_interface__membrane__Vm); + const double var_x409 = CHASTE_CONST(0.035714285714285712) * var_chaste_interface__membrane__Vm; + const double var_x410 = CHASTE_MATH::Exp(var_x409); + const double var_x411 = CHASTE_MATH::Exp(CHASTE_CONST(0.001) * var_chaste_interface__membrane__Vm); + const double var_x413 = CHASTE_MATH::Exp(var_x395); + const double var_x414 = CHASTE_MATH::Exp(-CHASTE_CONST(0.086956521739130432) * var_chaste_interface__membrane__Vm); - partialF = -1 / (5 * var_x413 + 20 * var_x414) - 1 / (160 * var_x410 + 200 * var_x411) - 0.00040000000000000002 * var_x408; + partialF = -1 / (5 * var_x413 + 20 * var_x414) - 1 / (160 * var_x410 + 200 * var_x411) - CHASTE_CONST(0.00040000000000000002) * var_x408; } else { @@ -3604,7 +3606,7 @@ std::shared_ptr Dynami 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]); + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -3629,23 +3631,23 @@ std::shared_ptr Dynami double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -85.95752434460744 - const double var_x154 = 0.076923076923076927 * var_chaste_interface__membrane__Vm; - const double var_x326 = exp(0.050000000000000003 * var_chaste_interface__membrane__Vm); - const double var_x394 = 0.0033333333333333335 * var_chaste_interface__membrane__Vm; + const double var_x154 = CHASTE_CONST(0.076923076923076927) * var_chaste_interface__membrane__Vm; + const double var_x326 = CHASTE_MATH::Exp(CHASTE_CONST(0.050000000000000003) * var_chaste_interface__membrane__Vm); + const double var_x394 = CHASTE_CONST(0.0033333333333333335) * var_chaste_interface__membrane__Vm; const double var_x395 = -var_x394; const double var_x408 = 1 / var_x326; - const double var_x409 = 0.035714285714285712 * var_chaste_interface__membrane__Vm; - const double var_x410 = exp(var_x409); - const double var_x411 = exp(0.001 * var_chaste_interface__membrane__Vm); - const double var_x413 = exp(var_x395); - const double var_x415 = exp(-var_x154); + const double var_x409 = CHASTE_CONST(0.035714285714285712) * var_chaste_interface__membrane__Vm; + const double var_x410 = CHASTE_MATH::Exp(var_x409); + const double var_x411 = CHASTE_MATH::Exp(CHASTE_CONST(0.001) * var_chaste_interface__membrane__Vm); + const double var_x413 = CHASTE_MATH::Exp(var_x395); + const double var_x415 = CHASTE_MATH::Exp(-var_x154); - partialF = -1 / (20 * var_x413 + 200 * var_x415) - 1 / (1600 * var_x410 + 2000 * var_x411) - 0.0001 * var_x408; + partialF = -1 / (20 * var_x413 + 200 * var_x415) - 1 / (1600 * var_x410 + 2000 * var_x411) - CHASTE_CONST(0.0001) * var_x408; } else { @@ -3660,7 +3662,7 @@ std::shared_ptr Dynami 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]); + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -3685,19 +3687,19 @@ std::shared_ptr Dynami double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -85.95752434460744 - const double var_x312 = 0.058823529411764705 * var_chaste_interface__membrane__Vm; - const double var_x313 = exp(var_x312); - const double var_x394 = 0.0033333333333333335 * var_chaste_interface__membrane__Vm; - const double var_x416 = exp(-var_x312); - const double var_x417 = exp(-0.0066666666666666671 * var_chaste_interface__membrane__Vm); - const double var_x418 = exp(var_x394); + const double var_x312 = CHASTE_CONST(0.058823529411764705) * var_chaste_interface__membrane__Vm; + const double var_x313 = CHASTE_MATH::Exp(var_x312); + const double var_x394 = CHASTE_CONST(0.0033333333333333335) * var_chaste_interface__membrane__Vm; + const double var_x416 = CHASTE_MATH::Exp(-var_x312); + const double var_x417 = CHASTE_MATH::Exp(-CHASTE_CONST(0.0066666666666666671) * var_chaste_interface__membrane__Vm); + const double var_x418 = CHASTE_MATH::Exp(var_x394); - partialF = -1 / (2 * var_x417 + 0.34999999999999998 * var_x416) - 1 / (2.5 * var_x418 + 10 * var_x313); + partialF = -1 / (2 * var_x417 + CHASTE_CONST(0.34999999999999998) * var_x416) - 1 / (CHASTE_CONST(2.5) * var_x418 + 10 * var_x313); } else { @@ -3712,7 +3714,7 @@ std::shared_ptr Dynami 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]); + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -3737,16 +3739,16 @@ std::shared_ptr Dynami double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -85.95752434460744 - const double var_x326 = exp(0.050000000000000003 * var_chaste_interface__membrane__Vm); - const double var_x341 = 0.01 * var_chaste_interface__membrane__Vm; - const double var_x343 = exp(var_x341); - const double var_x419 = exp(-0.095238095238095233 * var_chaste_interface__membrane__Vm); - const double var_x420 = exp(-0.016129032258064516 * var_chaste_interface__membrane__Vm); + const double var_x326 = CHASTE_MATH::Exp(CHASTE_CONST(0.050000000000000003) * var_chaste_interface__membrane__Vm); + const double var_x341 = CHASTE_CONST(0.01) * var_chaste_interface__membrane__Vm; + const double var_x343 = CHASTE_MATH::Exp(var_x341); + const double var_x419 = CHASTE_MATH::Exp(-CHASTE_CONST(0.095238095238095233) * var_chaste_interface__membrane__Vm); + const double var_x420 = CHASTE_MATH::Exp(-CHASTE_CONST(0.016129032258064516) * var_chaste_interface__membrane__Vm); partialF = -1 / (260 * var_x343 + 1450 * var_x326) - 1 / (85 * var_x419 + 370 * var_x420); } @@ -3771,8 +3773,8 @@ std::shared_ptr Dynami // 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 + const double var_internal_ion_concentrations__Cai = -CHASTE_CONST(0.026190000000000001) + CHASTE_CONST(0.5) * CHASTE_MATH::Sqrt(CHASTE_MATH::Pow((CHASTE_CONST(0.052380000000000003) - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + CHASTE_CONST(0.0095200000000000007) * var_chaste_interface__internal_ion_concentrations__Ca_Total) + CHASTE_CONST(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 = -CHASTE_CONST(0.004444) * var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2 + CHASTE_CONST(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; } @@ -3787,10 +3789,10 @@ std::shared_ptr Dynami - const double var_x17 = -0.052380000000000003 + var_chaste_interface__internal_ion_concentrations__Ca_Total; - const double var_x18 = sqrt(pow(var_x17, 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total); + const double var_x17 = -CHASTE_CONST(0.052380000000000003) + var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x18 = CHASTE_MATH::Sqrt(CHASTE_MATH::Pow(var_x17, 2) + CHASTE_CONST(0.0095200000000000007) * var_chaste_interface__internal_ion_concentrations__Ca_Total); - partialF = 0.092459000000000013 - 1.8500000000000001 * var_x18 - 1.8500000000000001 * var_chaste_interface__internal_ion_concentrations__Ca_Total; + partialF = CHASTE_CONST(0.092459000000000013) - CHASTE_CONST(1.8500000000000001) * var_x18 - CHASTE_CONST(1.8500000000000001) * var_chaste_interface__internal_ion_concentrations__Ca_Total; } else { @@ -3805,7 +3807,7 @@ std::shared_ptr Dynami 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]); + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -3830,19 +3832,19 @@ std::shared_ptr Dynami double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -85.95752434460744 - const double var_x308 = exp(-0.0025000000000000001 * var_chaste_interface__membrane__Vm); - const double var_x401 = 0.002 * var_chaste_interface__membrane__Vm; - const double var_x409 = 0.035714285714285712 * var_chaste_interface__membrane__Vm; - const double var_x421 = exp(var_x401); - const double var_x422 = exp(0.0625 * var_chaste_interface__membrane__Vm); - const double var_x423 = exp(-var_x409); + const double var_x308 = CHASTE_MATH::Exp(-CHASTE_CONST(0.0025000000000000001) * var_chaste_interface__membrane__Vm); + const double var_x401 = CHASTE_CONST(0.002) * var_chaste_interface__membrane__Vm; + const double var_x409 = CHASTE_CONST(0.035714285714285712) * var_chaste_interface__membrane__Vm; + const double var_x421 = CHASTE_MATH::Exp(var_x401); + const double var_x422 = CHASTE_MATH::Exp(CHASTE_CONST(0.0625) * var_chaste_interface__membrane__Vm); + const double var_x423 = CHASTE_MATH::Exp(-var_x409); - partialF = -1 / (11 * var_x423 + 0.20000000000000001 * var_x308) - 1 / (4.4000000000000004 * var_x422 + 0.20000000000000001 * var_x421); + partialF = -1 / (11 * var_x423 + CHASTE_CONST(0.20000000000000001) * var_x308) - 1 / (CHASTE_CONST(4.4000000000000004) * var_x422 + CHASTE_CONST(0.20000000000000001) * var_x421); } else { @@ -3857,7 +3859,7 @@ std::shared_ptr Dynami 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]); + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -3872,7 +3874,7 @@ std::shared_ptr Dynami 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 + const double d_dt_chaste_interface_var_transient_outward_current_y2_gate__y2 = CHASTE_CONST(0.0038) * (1 - var_chaste_interface__transient_outward_current_y2_gate__y2) * _lt_0_row[38] / (_lt_0_row[37]) - CHASTE_CONST(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; } @@ -3882,20 +3884,20 @@ std::shared_ptr Dynami double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -85.95752434460744 - const double var_x424 = 1.1946902654867255 + 0.088495575221238937 * var_chaste_interface__membrane__Vm; - const double var_x425 = exp(var_x424); - const double var_x426 = 1 + 0.067083000000000004 * var_x425; + const double var_x424 = CHASTE_CONST(1.1946902654867255) + CHASTE_CONST(0.088495575221238937) * var_chaste_interface__membrane__Vm; + const double var_x425 = CHASTE_MATH::Exp(var_x424); + const double var_x426 = 1 + CHASTE_CONST(0.067083000000000004) * var_x425; const double var_x427 = var_x425 / var_x426; - const double var_x429 = exp(-var_x424); - const double var_x430 = 1 + 0.051334999999999999 * var_x429; + const double var_x429 = CHASTE_MATH::Exp(-var_x424); + const double var_x430 = 1 + CHASTE_CONST(0.051334999999999999) * var_x429; const double var_x431 = var_x429 / var_x430; - partialF = -0.0038 * var_x427 - 0.0038 * var_x431; + partialF = -CHASTE_CONST(0.0038) * var_x427 - CHASTE_CONST(0.0038) * var_x431; } else { @@ -3910,7 +3912,7 @@ std::shared_ptr Dynami 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]); + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -3929,12 +3931,12 @@ std::shared_ptr Dynami 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_internal_ion_concentrations__Cai = -CHASTE_CONST(0.026190000000000001) + CHASTE_CONST(0.5) * CHASTE_MATH::Sqrt(CHASTE_MATH::Pow((CHASTE_CONST(0.052380000000000003) - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + CHASTE_CONST(0.0095200000000000007) * var_chaste_interface__internal_ion_concentrations__Ca_Total) + CHASTE_CONST(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 + const double var_sodium_calcium_exchanger__p_E1Na = 1 / (1 + CHASTE_CONST(669.921875) * (1 + CHASTE_CONST(724.63768115942037) * var_internal_ion_concentrations__Cai) / CHASTE_MATH::Pow(var_chaste_interface__internal_ion_concentrations__Nai, 3)); // dimensionless + const double var_sodium_calcium_exchanger__p_E2Na = 1 / (1 + CHASTE_CONST(669921.875) * (1 + CHASTE_CONST(0.7246376811594204) * mParameters[5]) / CHASTE_MATH::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 + CHASTE_CONST(1.3799999999999999) * (1 + CHASTE_CONST(1.4927113702623908e-6) * CHASTE_MATH::Pow(mParameters[7], 3)) / mParameters[5]) + var_sodium_calcium_exchanger__k2 * var_sodium_calcium_exchanger__p_E2Na) - (1 / (1 + CHASTE_CONST(0.0013799999999999999) * (1 + CHASTE_CONST(0.0014927113702623907) * CHASTE_MATH::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; } @@ -3944,7 +3946,7 @@ std::shared_ptr Dynami double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -3960,23 +3962,23 @@ std::shared_ptr Dynami // LCOV_EXCL_STOP const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); - const double var_x17 = -0.052380000000000003 + var_chaste_interface__internal_ion_concentrations__Ca_Total; - const double var_x18 = sqrt(pow(var_x17, 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total); - const double var_x34 = pow(var_chaste_interface__internal_ion_concentrations__Nai, 3); + const double var_x17 = -CHASTE_CONST(0.052380000000000003) + var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x18 = CHASTE_MATH::Sqrt(CHASTE_MATH::Pow(var_x17, 2) + CHASTE_CONST(0.0095200000000000007) * var_chaste_interface__internal_ion_concentrations__Ca_Total); + const double var_x34 = CHASTE_MATH::Pow(var_chaste_interface__internal_ion_concentrations__Nai, 3); const double var_x35 = 1 / var_x34; - const double var_x36 = -17.978260869565219 + 362.31884057971018 * var_x18 + 362.31884057971018 * var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x36 = -CHASTE_CONST(17.978260869565219) + CHASTE_CONST(362.31884057971018) * var_x18 + CHASTE_CONST(362.31884057971018) * var_chaste_interface__internal_ion_concentrations__Ca_Total; const double var_x37 = var_x35 * var_x36; const double var_x38 = _lt_0_row[5]; - const double var_x39 = var_x38 / (1 + 669.921875 * var_x37); - const double var_x41 = pow(mParameters[7], 3); - const double var_x42 = _lt_0_row[6] / (1 + 669921.875 * (1 + 0.7246376811594204 * mParameters[5]) / var_x41); + const double var_x39 = var_x38 / (1 + CHASTE_CONST(669.921875) * var_x37); + const double var_x41 = CHASTE_MATH::Pow(mParameters[7], 3); + const double var_x42 = _lt_0_row[6] / (1 + CHASTE_CONST(669921.875) * (1 + CHASTE_CONST(0.7246376811594204) * mParameters[5]) / var_x41); const double var_x249 = var_x39 + var_x42; - const double var_x285 = -0.026190000000000001 + 0.5 * var_x18 + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x285 = -CHASTE_CONST(0.026190000000000001) + CHASTE_CONST(0.5) * var_x18 + CHASTE_CONST(0.5) * var_chaste_interface__internal_ion_concentrations__Ca_Total; const double var_x286 = 1 / var_x285; - const double var_x432 = 1 + 0.0014927113702623907 * var_x34; - const double var_x433 = 1 + 0.0013799999999999999 * var_x286 * var_x432; + const double var_x432 = 1 + CHASTE_CONST(0.0014927113702623907) * var_x34; + const double var_x433 = 1 + CHASTE_CONST(0.0013799999999999999) * var_x286 * var_x432; - partialF = -var_x249 - 1 / var_x433 - 1 / (1 + 1.3799999999999999 * (1 + 1.4927113702623908e-6 * var_x41) / mParameters[5]); + partialF = -var_x249 - 1 / var_x433 - 1 / (1 + CHASTE_CONST(1.3799999999999999) * (1 + CHASTE_CONST(1.4927113702623908e-6) * var_x41) / mParameters[5]); } else { @@ -3991,7 +3993,7 @@ std::shared_ptr Dynami 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]); + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -4013,10 +4015,10 @@ std::shared_ptr Dynami // 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 + const double var_sodium_potassium_pump__k1 = CHASTE_CONST(0.37) / (1 + CHASTE_CONST(0.094) / var_chaste_interface__ATP_production__ATPi); // per_millisecond + const double var_sodium_potassium_pump__p_E1Na = 1 / (1 + CHASTE_CONST(4.4045579125871104) * CHASTE_MATH::Pow((1 / var_chaste_interface__internal_ion_concentrations__Nai), CHASTE_CONST(1.0600000000000001)) * (1 + CHASTE_CONST(0.020000293738509214) * CHASTE_MATH::Pow(var_chaste_interface__internal_ion_concentrations__Ki, CHASTE_CONST(1.1200000000000001)))); // dimensionless + const double var_sodium_potassium_pump__p_E2Na = 1 / (1 + CHASTE_CONST(90.050628437051003) * CHASTE_MATH::Pow((1 / var_sodium_potassium_pump__Nao_Eff), CHASTE_CONST(1.0600000000000001)) * (1 + CHASTE_CONST(4.560221410801109) * CHASTE_MATH::Pow(mParameters[6], CHASTE_CONST(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) * (CHASTE_CONST(0.040000000000000001) * var_sodium_potassium_pump__p_E2Na + CHASTE_CONST(0.16500000000000001) / (1 + CHASTE_CONST(0.21928759810465578) * CHASTE_MATH::Pow((1 / mParameters[6]), CHASTE_CONST(1.1200000000000001)) * (1 + CHASTE_CONST(0.011104864200909382) * CHASTE_MATH::Pow(var_sodium_potassium_pump__Nao_Eff, CHASTE_CONST(1.0600000000000001))))) - (CHASTE_CONST(0.01) / (1 + CHASTE_CONST(49.999265664512095) * CHASTE_MATH::Pow((1 / var_chaste_interface__internal_ion_concentrations__Ki), CHASTE_CONST(1.1200000000000001)) * (1 + CHASTE_CONST(0.22703754152993499) * CHASTE_MATH::Pow(var_chaste_interface__internal_ion_concentrations__Nai, CHASTE_CONST(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; } @@ -4026,7 +4028,7 @@ std::shared_ptr Dynami double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -4045,26 +4047,26 @@ std::shared_ptr Dynami const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); const double var_x64 = _lt_0_row[4]; - const double var_x65 = pow((1 / (var_x64 * mParameters[7])), 1.0600000000000001); - const double var_x66 = 1 + 4.560221410801109 * pow(mParameters[6], 1.1200000000000001); + const double var_x65 = CHASTE_MATH::Pow((1 / (var_x64 * mParameters[7])), CHASTE_CONST(1.0600000000000001)); + const double var_x66 = 1 + CHASTE_CONST(4.560221410801109) * CHASTE_MATH::Pow(mParameters[6], CHASTE_CONST(1.1200000000000001)); const double var_x67 = var_x65 * var_x66; const double var_x76 = 1 / var_chaste_interface__internal_ion_concentrations__Ki; const double var_x163 = 1 / var_chaste_interface__internal_ion_concentrations__Nai; - const double var_x164 = pow(var_x163, 1.0600000000000001); - const double var_x165 = var_x164 * (1 + 0.020000293738509214 * pow(var_chaste_interface__internal_ion_concentrations__Ki, 1.1200000000000001)); + const double var_x164 = CHASTE_MATH::Pow(var_x163, CHASTE_CONST(1.0600000000000001)); + const double var_x165 = var_x164 * (1 + CHASTE_CONST(0.020000293738509214) * CHASTE_MATH::Pow(var_chaste_interface__internal_ion_concentrations__Ki, CHASTE_CONST(1.1200000000000001))); const double var_x166 = 1 / var_chaste_interface__ATP_production__ATPi; - const double var_x167 = 1 + 0.094 * var_x166; + const double var_x167 = 1 + CHASTE_CONST(0.094) * var_x166; const double var_x168 = 1 / var_x167; - const double var_x210 = 1 / (1 + 4.4045579125871104 * var_x165); - const double var_x250 = 1 / (1 + 90.050628437051003 * var_x67); + const double var_x210 = 1 / (1 + CHASTE_CONST(4.4045579125871104) * var_x165); + const double var_x250 = 1 / (1 + CHASTE_CONST(90.050628437051003) * var_x67); const double var_x251 = var_x168 * var_x210; - const double var_x435 = pow((1 / mParameters[6]), 1.1200000000000001); - const double var_x436 = pow((var_x64 * mParameters[7]), 1.0600000000000001); - const double var_x437 = 1 + 0.21928759810465578 * var_x435 * (1 + 0.011104864200909382 * var_x436); - const double var_x438 = pow(var_x76, 1.1200000000000001); - const double var_x439 = var_x438 * (1 + 0.22703754152993499 * pow(var_chaste_interface__internal_ion_concentrations__Nai, 1.0600000000000001)); + const double var_x435 = CHASTE_MATH::Pow((1 / mParameters[6]), CHASTE_CONST(1.1200000000000001)); + const double var_x436 = CHASTE_MATH::Pow((var_x64 * mParameters[7]), CHASTE_CONST(1.0600000000000001)); + const double var_x437 = 1 + CHASTE_CONST(0.21928759810465578) * var_x435 * (1 + CHASTE_CONST(0.011104864200909382) * var_x436); + const double var_x438 = CHASTE_MATH::Pow(var_x76, CHASTE_CONST(1.1200000000000001)); + const double var_x439 = var_x438 * (1 + CHASTE_CONST(0.22703754152993499) * CHASTE_MATH::Pow(var_chaste_interface__internal_ion_concentrations__Nai, CHASTE_CONST(1.0600000000000001))); - partialF = -0.37 * var_x251 - 0.01 / (1 + 49.999265664512095 * var_x439) - 0.040000000000000001 * var_x250 - 0.16500000000000001 / var_x437; + partialF = -CHASTE_CONST(0.37) * var_x251 - CHASTE_CONST(0.01) / (1 + CHASTE_CONST(49.999265664512095) * var_x439) - CHASTE_CONST(0.040000000000000001) * var_x250 - CHASTE_CONST(0.16500000000000001) / var_x437; } else { @@ -4091,11 +4093,11 @@ std::shared_ptr Dynami // 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 + const double var_SR_calcium_pump__k2 = 1 / (1 + CHASTE_CONST(0.10000000000000001) / var_chaste_interface__ATP_production__ATPi); // per_millisecond + const double var_SR_calcium_pump__p_E1Ca = 1 / (1 + CHASTE_CONST(0.080000000000000002) / var_chaste_interface__Ca_concentrations_in_SR__Caup); // dimensionless + const double var_internal_ion_concentrations__Cai = -CHASTE_CONST(0.026190000000000001) + CHASTE_CONST(0.5) * CHASTE_MATH::Sqrt(CHASTE_MATH::Pow((CHASTE_CONST(0.052380000000000003) - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + CHASTE_CONST(0.0095200000000000007) * var_chaste_interface__internal_ion_concentrations__Ca_Total) + CHASTE_CONST(0.5) * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar + const double var_SR_calcium_pump__p_E2Ca = 1 / (1 + CHASTE_CONST(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) * (CHASTE_CONST(0.01) - CHASTE_CONST(0.01) * var_SR_calcium_pump__p_E2Ca + var_SR_calcium_pump__k2 * var_SR_calcium_pump__p_E2Ca) - (1 - CHASTE_CONST(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; } @@ -4114,20 +4116,20 @@ std::shared_ptr Dynami - const double var_x17 = -0.052380000000000003 + var_chaste_interface__internal_ion_concentrations__Ca_Total; - const double var_x18 = sqrt(pow(var_x17, 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total); + const double var_x17 = -CHASTE_CONST(0.052380000000000003) + var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x18 = CHASTE_MATH::Sqrt(CHASTE_MATH::Pow(var_x17, 2) + CHASTE_CONST(0.0095200000000000007) * var_chaste_interface__internal_ion_concentrations__Ca_Total); const double var_x166 = 1 / var_chaste_interface__ATP_production__ATPi; - const double var_x283 = 1 + 0.10000000000000001 * var_x166; + const double var_x283 = 1 + CHASTE_CONST(0.10000000000000001) * var_x166; const double var_x284 = 1 / var_x283; - const double var_x285 = -0.026190000000000001 + 0.5 * var_x18 + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x285 = -CHASTE_CONST(0.026190000000000001) + CHASTE_CONST(0.5) * var_x18 + CHASTE_CONST(0.5) * var_chaste_interface__internal_ion_concentrations__Ca_Total; const double var_x286 = 1 / var_x285; - const double var_x287 = 1 + 0.00080000000000000004 * var_x286; + const double var_x287 = 1 + CHASTE_CONST(0.00080000000000000004) * var_x286; const double var_x293 = 1 / var_x287; - const double var_x298 = 1 + 0.080000000000000002 / var_chaste_interface__Ca_concentrations_in_SR__Caup; + const double var_x298 = 1 + CHASTE_CONST(0.080000000000000002) / var_chaste_interface__Ca_concentrations_in_SR__Caup; const double var_x299 = 1 / var_x298; const double var_x300 = var_x284 * var_x293; - partialF = -1.01 + 0.01 * var_x293 + 0.98999999999999999 * var_x299 - var_x300; + partialF = -CHASTE_CONST(1.01) + CHASTE_CONST(0.01) * var_x293 + CHASTE_CONST(0.98999999999999999) * var_x299 - var_x300; } else { @@ -4142,7 +4144,7 @@ std::shared_ptr Dynami 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]); + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -4173,13 +4175,13 @@ std::shared_ptr Dynami 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 + const double var_Ca_concentrations_in_SR__Carel = -CHASTE_CONST(5.4000000000000004) + CHASTE_CONST(0.5) * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total + CHASTE_CONST(5.4000000000000004) * CHASTE_MATH::Sqrt(CHASTE_MATH::Pow((1 - CHASTE_CONST(0.092592592592592587) * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total), 2) + CHASTE_CONST(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 + CHASTE_CONST(2.7439999999999993) / CHASTE_MATH::Pow(var_chaste_interface__ATP_production__ATPi, 3)); // dimensionless + const double var_internal_ion_concentrations__Cai = -CHASTE_CONST(0.026190000000000001) + CHASTE_CONST(0.5) * CHASTE_MATH::Sqrt(CHASTE_MATH::Pow((CHASTE_CONST(0.052380000000000003) - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + CHASTE_CONST(0.0095200000000000007) * var_chaste_interface__internal_ion_concentrations__Ca_Total) + CHASTE_CONST(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]) : (CHASTE_CONST(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 = CHASTE_CONST(0.067599999999999993) * var_constant_field_equations__CF_Ca; // picoA + const double var_RyR_channel__k1 = 280000 * CHASTE_MATH::Pow(var_internal_ion_concentrations__Cai, 2) / CHASTE_MATH::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 - CHASTE_CONST(0.080000000000000002) * var_chaste_interface__RyR_channel__p_open_RyR / (1 + CHASTE_CONST(0.35999999999999999) / var_Ca_concentrations_in_SR__Carel); // 1 / millisecond return d_dt_chaste_interface_var_RyR_channel__p_open_RyR; } @@ -4194,11 +4196,11 @@ std::shared_ptr Dynami - const double var_x301 = -1 + 0.092592592592592587 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total; - const double var_x302 = sqrt(pow(var_x301, 2) + 0.027434842249657067 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total); - const double var_x453 = 1 + 0.35999999999999999 / (-5.4000000000000004 + 0.5 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total + 5.4000000000000004 * var_x302); + const double var_x301 = -1 + CHASTE_CONST(0.092592592592592587) * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total; + const double var_x302 = CHASTE_MATH::Sqrt(CHASTE_MATH::Pow(var_x301, 2) + CHASTE_CONST(0.027434842249657067) * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total); + const double var_x453 = 1 + CHASTE_CONST(0.35999999999999999) / (-CHASTE_CONST(5.4000000000000004) + CHASTE_CONST(0.5) * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total + CHASTE_CONST(5.4000000000000004) * var_x302); - partialF = -0.080000000000000002 / var_x453; + partialF = -CHASTE_CONST(0.080000000000000002) / var_x453; } else { @@ -4213,7 +4215,7 @@ std::shared_ptr Dynami 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]); + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -4244,13 +4246,13 @@ std::shared_ptr Dynami 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 + const double var_Ca_concentrations_in_SR__Carel = -CHASTE_CONST(5.4000000000000004) + CHASTE_CONST(0.5) * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total + CHASTE_CONST(5.4000000000000004) * CHASTE_MATH::Sqrt(CHASTE_MATH::Pow((1 - CHASTE_CONST(0.092592592592592587) * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total), 2) + CHASTE_CONST(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 + CHASTE_CONST(2.7439999999999993) / CHASTE_MATH::Pow(var_chaste_interface__ATP_production__ATPi, 3)); // dimensionless + const double var_internal_ion_concentrations__Cai = -CHASTE_CONST(0.026190000000000001) + CHASTE_CONST(0.5) * CHASTE_MATH::Sqrt(CHASTE_MATH::Pow((CHASTE_CONST(0.052380000000000003) - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + CHASTE_CONST(0.0095200000000000007) * var_chaste_interface__internal_ion_concentrations__Ca_Total) + CHASTE_CONST(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]) : (CHASTE_CONST(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 = CHASTE_CONST(0.067599999999999993) * var_constant_field_equations__CF_Ca; // picoA + const double var_RyR_channel__k1 = 280000 * CHASTE_MATH::Pow(var_internal_ion_concentrations__Cai, 2) / CHASTE_MATH::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 = -(CHASTE_CONST(0.00084900000000000004) + var_RyR_channel__k1) * var_chaste_interface__RyR_channel__p_close_RyR + CHASTE_CONST(0.000377) * CHASTE_MATH::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; } @@ -4260,7 +4262,7 @@ std::shared_ptr Dynami double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -4280,35 +4282,35 @@ std::shared_ptr Dynami const double var_x1 = var_chaste_interface__membrane__Vm == 0; - const double var_x13 = 0.074870384603595908 * var_chaste_interface__membrane__Vm; - const double var_x14 = exp(-var_x13); + const double var_x13 = CHASTE_CONST(0.074870384603595908) * var_chaste_interface__membrane__Vm; + const double var_x14 = CHASTE_MATH::Exp(-var_x13); const double var_x15 = 1 - var_x14; const double var_x16 = 1 / var_x15; - const double var_x17 = -0.052380000000000003 + var_chaste_interface__internal_ion_concentrations__Ca_Total; - const double var_x18 = sqrt(pow(var_x17, 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total); + const double var_x17 = -CHASTE_CONST(0.052380000000000003) + var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x18 = CHASTE_MATH::Sqrt(CHASTE_MATH::Pow(var_x17, 2) + CHASTE_CONST(0.0095200000000000007) * var_chaste_interface__internal_ion_concentrations__Ca_Total); const double var_x19 = var_x14 * mParameters[5]; - const double var_x20 = -0.026190000000000001 - var_x19 + 0.5 * var_x18 + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x20 = -CHASTE_CONST(0.026190000000000001) - var_x19 + CHASTE_CONST(0.5) * var_x18 + CHASTE_CONST(0.5) * var_chaste_interface__internal_ion_concentrations__Ca_Total; const double var_x21 = var_x16 * var_x20; const double var_x27 = var_x17 + var_x18; const double var_x117 = 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_x118 = pow(var_chaste_interface__ATP_production__ATPi, (-3)); - const double var_x119 = 1 / (1 + 2.7439999999999993 * var_x118); + const double var_x118 = CHASTE_MATH::Pow(var_chaste_interface__ATP_production__ATPi, (-3)); + const double var_x119 = 1 / (1 + CHASTE_CONST(2.7439999999999993) * var_x118); const double var_x214 = ((var_x1) ? (-mParameters[5]) : (var_x13 * var_x21)); const double var_x215 = var_x117 * var_x214; const double var_x232 = var_x119 * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL; - const double var_x288 = pow(var_x27, 2); - const double var_x301 = -1 + 0.092592592592592587 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total; - const double var_x302 = sqrt(pow(var_x301, 2) + 0.027434842249657067 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total); - const double var_x441 = 10.139999999999999 * var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y; - const double var_x444 = pow(mParameters[2], (-2)); + const double var_x288 = CHASTE_MATH::Pow(var_x27, 2); + const double var_x301 = -1 + CHASTE_CONST(0.092592592592592587) * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total; + const double var_x302 = CHASTE_MATH::Sqrt(CHASTE_MATH::Pow(var_x301, 2) + CHASTE_CONST(0.027434842249657067) * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total); + const double var_x441 = CHASTE_CONST(10.139999999999999) * var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y; + const double var_x444 = CHASTE_MATH::Pow(mParameters[2], (-2)); const double var_x445 = var_x232 * var_x441; const double var_x454 = 70000 * var_x288 * var_x444; const double var_x455 = var_x215 * var_x445; const double var_x456 = var_x301 + var_x302; - const double var_x457 = pow(var_x456, 2); - const double var_x458 = 0.010993320000000001 * var_x457; + const double var_x457 = CHASTE_MATH::Pow(var_x456, 2); + const double var_x458 = CHASTE_CONST(0.010993320000000001) * var_x457; - partialF = -0.00084900000000000004 + var_x455 - var_x454 - var_x458; + partialF = -CHASTE_CONST(0.00084900000000000004) + var_x455 - var_x454 - var_x458; } else { @@ -4335,11 +4337,11 @@ std::shared_ptr Dynami // 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_Ca_concentrations_in_SR__Carel = -CHASTE_CONST(5.4000000000000004) + CHASTE_CONST(0.5) * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total + CHASTE_CONST(5.4000000000000004) * CHASTE_MATH::Sqrt(CHASTE_MATH::Pow((1 - CHASTE_CONST(0.092592592592592587) * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total), 2) + CHASTE_CONST(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_internal_ion_concentrations__Cai = -CHASTE_CONST(0.026190000000000001) + CHASTE_CONST(0.5) * CHASTE_MATH::Sqrt(CHASTE_MATH::Pow((CHASTE_CONST(0.052380000000000003) - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + CHASTE_CONST(0.0095200000000000007) * var_chaste_interface__internal_ion_concentrations__Ca_Total) + CHASTE_CONST(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 + const double d_dt_chaste_interface_var_Ca_concentrations_in_SR__Ca_Total = CHASTE_CONST(3.2387883511406234e-5) * var_SR_T_current__i_SR_T - CHASTE_CONST(3.2387883511406234e-5) * var_RyR_channel__i_RyR; // millimolar / millisecond return d_dt_chaste_interface_var_Ca_concentrations_in_SR__Ca_Total; } @@ -4356,11 +4358,11 @@ std::shared_ptr Dynami - const double var_x301 = -1 + 0.092592592592592587 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total; - const double var_x302 = sqrt(pow(var_x301, 2) + 0.027434842249657067 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total); - const double var_x303 = (-0.078875171467764058 + 0.0085733882030178329 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total) / var_x302; + const double var_x301 = -1 + CHASTE_CONST(0.092592592592592587) * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total; + const double var_x302 = CHASTE_MATH::Sqrt(CHASTE_MATH::Pow(var_x301, 2) + CHASTE_CONST(0.027434842249657067) * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total); + const double var_x303 = (-CHASTE_CONST(0.078875171467764058) + CHASTE_CONST(0.0085733882030178329) * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total) / var_x302; - partialF = -0.0062508615177014034 - 0.067509304391175154 * var_x303 + (-1.6193941755703117e-5 - 0.00017489457096159366 * var_x303) * mParameters[1] * var_chaste_interface__RyR_channel__p_open_RyR; + partialF = -CHASTE_CONST(0.0062508615177014034) - CHASTE_CONST(0.067509304391175154) * var_x303 + (-CHASTE_CONST(1.6193941755703117e-5) - CHASTE_CONST(0.00017489457096159366) * var_x303) * mParameters[1] * var_chaste_interface__RyR_channel__p_open_RyR; } else { @@ -4389,15 +4391,15 @@ std::shared_ptr Dynami // 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_Ca_concentrations_in_SR__Carel = -CHASTE_CONST(5.4000000000000004) + CHASTE_CONST(0.5) * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total + CHASTE_CONST(5.4000000000000004) * CHASTE_MATH::Sqrt(CHASTE_MATH::Pow((1 - CHASTE_CONST(0.092592592592592587) * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total), 2) + CHASTE_CONST(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_calcium_pump__k2 = 1 / (1 + CHASTE_CONST(0.10000000000000001) / var_chaste_interface__ATP_production__ATPi); // per_millisecond + const double var_SR_calcium_pump__p_E1Ca = 1 / (1 + CHASTE_CONST(0.080000000000000002) / var_chaste_interface__Ca_concentrations_in_SR__Caup); // dimensionless + const double var_internal_ion_concentrations__Cai = -CHASTE_CONST(0.026190000000000001) + CHASTE_CONST(0.5) * CHASTE_MATH::Sqrt(CHASTE_MATH::Pow((CHASTE_CONST(0.052380000000000003) - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + CHASTE_CONST(0.0095200000000000007) * var_chaste_interface__internal_ion_concentrations__Ca_Total) + CHASTE_CONST(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 + const double var_SR_calcium_pump__p_E2Ca = 1 / (1 + CHASTE_CONST(0.00080000000000000004) / var_internal_ion_concentrations__Cai); // dimensionless + const double var_SR_calcium_pump__i_SR_U = (CHASTE_CONST(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 = -CHASTE_CONST(1.2955153404562494e-5) * var_SR_L_current__i_SR_L - CHASTE_CONST(1.2955153404562494e-5) * var_SR_T_current__i_SR_T - CHASTE_CONST(1.2955153404562494e-5) * var_SR_calcium_pump__i_SR_U; // millimolar / millisecond return d_dt_chaste_interface_var_Ca_concentrations_in_SR__Caup; } @@ -4414,11 +4416,11 @@ std::shared_ptr Dynami - const double var_x298 = 1 + 0.080000000000000002 / var_chaste_interface__Ca_concentrations_in_SR__Caup; - const double var_x304 = var_chaste_interface__SR_calcium_pump_y_gate__y / (pow(var_x298, 2) * pow(var_chaste_interface__Ca_concentrations_in_SR__Caup, 2)); + const double var_x298 = 1 + CHASTE_CONST(0.080000000000000002) / var_chaste_interface__Ca_concentrations_in_SR__Caup; + const double var_x304 = var_chaste_interface__SR_calcium_pump_y_gate__y / (CHASTE_MATH::Pow(var_x298, 2) * CHASTE_MATH::Pow(var_chaste_interface__Ca_concentrations_in_SR__Caup, 2)); const double var_x305 = var_x304 * mParameters[3]; - partialF = -0.0050006892141611229 - 1.2955153404562494e-5 * mParameters[0] - 1.0364122723649996e-8 * var_x305; + partialF = -CHASTE_CONST(0.0050006892141611229) - CHASTE_CONST(1.2955153404562494e-5) * mParameters[0] - CHASTE_CONST(1.0364122723649996e-8) * var_x305; } else { @@ -4445,9 +4447,9 @@ std::shared_ptr Dynami // 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 var_NL_model__Q_a = -CHASTE_CONST(0.0038999999999999998) * var_chaste_interface__NL_model__pCaCB + CHASTE_CONST(0.0038999999999999998) * var_chaste_interface__NL_model__pCa * CHASTE_MATH::Exp(-CHASTE_CONST(0.86212130841993795)); // per_millisecond + const double var_internal_ion_concentrations__Cai = -CHASTE_CONST(0.026190000000000001) + CHASTE_CONST(0.5) * CHASTE_MATH::Sqrt(CHASTE_MATH::Pow((CHASTE_CONST(0.052380000000000003) - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + CHASTE_CONST(0.0095200000000000007) * var_chaste_interface__internal_ion_concentrations__Ca_Total) + CHASTE_CONST(0.5) * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar + const double var_NL_model__Q_b = -CHASTE_CONST(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; @@ -4463,12 +4465,12 @@ std::shared_ptr Dynami - const double var_x17 = -0.052380000000000003 + var_chaste_interface__internal_ion_concentrations__Ca_Total; - const double var_x18 = sqrt(pow(var_x17, 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total); - const double var_x459 = 0.0038999999999999998 * exp(-0.86212130841993795); - const double var_x460 = 19.5 * var_x18 + 19.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x17 = -CHASTE_CONST(0.052380000000000003) + var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x18 = CHASTE_MATH::Sqrt(CHASTE_MATH::Pow(var_x17, 2) + CHASTE_CONST(0.0095200000000000007) * var_chaste_interface__internal_ion_concentrations__Ca_Total); + const double var_x459 = CHASTE_CONST(0.0038999999999999998) * CHASTE_MATH::Exp(-CHASTE_CONST(0.86212130841993795)); + const double var_x460 = CHASTE_CONST(19.5) * var_x18 + CHASTE_CONST(19.5) * var_chaste_interface__internal_ion_concentrations__Ca_Total; - partialF = 0.99141000000000001 - var_x459 - var_x460; + partialF = CHASTE_CONST(0.99141000000000001) - var_x459 - var_x460; } else { @@ -4497,11 +4499,11 @@ std::shared_ptr Dynami // 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__X = CHASTE_CONST(1.1488559970494261) - CHASTE_CONST(1.2) * var_chaste_interface__NL_model__X; // micrometre / millisecond + const double var_NL_model__Q_a = -CHASTE_CONST(0.0038999999999999998) * var_chaste_interface__NL_model__pCaCB + CHASTE_CONST(0.0038999999999999998) * var_chaste_interface__NL_model__pCa * CHASTE_MATH::Exp(-CHASTE_CONST(0.86212130841993795)); // per_millisecond + const double var_NL_model__Q_d2 = CHASTE_CONST(0.027) * CHASTE_MATH::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 = -CHASTE_CONST(0.026190000000000001) + CHASTE_CONST(0.5) * CHASTE_MATH::Sqrt(CHASTE_MATH::Pow((CHASTE_CONST(0.052380000000000003) - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + CHASTE_CONST(0.0095200000000000007) * var_chaste_interface__internal_ion_concentrations__Ca_Total) + CHASTE_CONST(0.5) * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar + const double var_NL_model__Q_r = CHASTE_CONST(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; @@ -4517,10 +4519,10 @@ std::shared_ptr Dynami - const double var_x307 = pow((0.95737999754118841 - var_chaste_interface__NL_model__X), 2); - const double var_x462 = 0.038879999999999998 * var_x307; + const double var_x307 = CHASTE_MATH::Pow((CHASTE_CONST(0.95737999754118841) - var_chaste_interface__NL_model__X), 2); + const double var_x462 = CHASTE_CONST(0.038879999999999998) * var_x307; - partialF = -0.0339 - var_x462; + partialF = -CHASTE_CONST(0.0339) - var_x462; } else { @@ -4547,10 +4549,10 @@ std::shared_ptr Dynami // 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 + const double d_dt_chaste_interface_var_NL_model__X = CHASTE_CONST(1.1488559970494261) - CHASTE_CONST(1.2) * var_chaste_interface__NL_model__X; // micrometre / millisecond + const double var_internal_ion_concentrations__Cai = -CHASTE_CONST(0.026190000000000001) + CHASTE_CONST(0.5) * CHASTE_MATH::Sqrt(CHASTE_MATH::Pow((CHASTE_CONST(0.052380000000000003) - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + CHASTE_CONST(0.0095200000000000007) * var_chaste_interface__internal_ion_concentrations__Ca_Total) + CHASTE_CONST(0.5) * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar + const double var_NL_model__Q_r = CHASTE_CONST(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 = -CHASTE_CONST(0.12) * var_chaste_interface__NL_model__pCB - CHASTE_CONST(0.027) * CHASTE_MATH::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; } @@ -4567,13 +4569,13 @@ std::shared_ptr Dynami - const double var_x17 = -0.052380000000000003 + var_chaste_interface__internal_ion_concentrations__Ca_Total; - const double var_x18 = sqrt(pow(var_x17, 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total); - const double var_x307 = pow((0.95737999754118841 - var_chaste_interface__NL_model__X), 2); - const double var_x462 = 0.038879999999999998 * var_x307; + const double var_x17 = -CHASTE_CONST(0.052380000000000003) + var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x18 = CHASTE_MATH::Sqrt(CHASTE_MATH::Pow(var_x17, 2) + CHASTE_CONST(0.0095200000000000007) * var_chaste_interface__internal_ion_concentrations__Ca_Total); + const double var_x307 = CHASTE_MATH::Pow((CHASTE_CONST(0.95737999754118841) - var_chaste_interface__NL_model__X), 2); + const double var_x462 = CHASTE_CONST(0.038879999999999998) * var_x307; const double var_x463 = 780 * var_x18 + 780 * var_chaste_interface__internal_ion_concentrations__Ca_Total; - partialF = 40.736400000000003 - var_x462 - var_x463; + partialF = CHASTE_CONST(40.736400000000003) - var_x462 - var_x463; } else { @@ -4594,7 +4596,7 @@ std::shared_ptr Dynami // 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 d_dt_chaste_interface_var_NL_model__X = CHASTE_CONST(1.1488559970494261) - CHASTE_CONST(1.2) * var_chaste_interface__NL_model__X; // micrometre / millisecond return d_dt_chaste_interface_var_NL_model__X; } @@ -4608,7 +4610,7 @@ std::shared_ptr Dynami - partialF = -1.2; + partialF = -CHASTE_CONST(1.2); } else { @@ -4625,7 +4627,7 @@ std::shared_ptr Dynami { // Inputs: // Time units: millisecond - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -4673,69 +4675,69 @@ std::shared_ptr Dynami // 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__K_mCSQN = CHASTE_CONST(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_Ca_concentrations_in_SR__Carel = CHASTE_MATH::Sqrt(CHASTE_CONST(0.25) * CHASTE_MATH::Pow(var_Ca_concentrations_in_SR__b1, 2) + var_Ca_concentrations_in_SR__c1) - CHASTE_CONST(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 + CHASTE_CONST(2.7439999999999993) / CHASTE_MATH::Pow(var_chaste_interface__ATP_production__ATPi, 3)); // dimensionless + const double var_internal_ion_concentrations__CMDN_max = CHASTE_CONST(0.050000000000000003); // millimolar + const double var_internal_ion_concentrations__K_mCMDN = CHASTE_CONST(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_internal_ion_concentrations__Cai = CHASTE_MATH::Sqrt(CHASTE_CONST(0.25) * CHASTE_MATH::Pow(var_internal_ion_concentrations__b1, 2) + var_internal_ion_concentrations__c1) - CHASTE_CONST(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__Cm_converted = CHASTE_CONST(9.9999999999999995e-7) * mParameters[9]; // uF + const double var_membrane__F = CHASTE_CONST(96.486699999999999); // coulomb_per_millimole + const double var_membrane__R = CHASTE_CONST(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_constant_field_equations__CF_Ca = ((var_chaste_interface__membrane__Vm == 0) ? (-mParameters[5]) : (2 * (-mParameters[5] * CHASTE_MATH::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 - CHASTE_MATH::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_constant_field_equations__CF_K = ((var_chaste_interface__membrane__Vm == 0) ? (var_chaste_interface__internal_ion_concentrations__Ki) : ((-mParameters[6] * CHASTE_MATH::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 - CHASTE_MATH::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 = CHASTE_CONST(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] * CHASTE_MATH::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 - CHASTE_MATH::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 = CHASTE_CONST(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_L_type_Ca_channel__i_Ca_L_converted = CHASTE_CONST(9.9999999999999995e-7) * CHASTE_CAP() * var_L_type_Ca_channel__i_Ca_L / var_membrane__Cm_converted; // uA_per_cm2 + const double var_membrane__i_ext_converted = CHASTE_STIM(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_rapid_time_dependent_potassium_current__g_Kr = CHASTE_CONST(0.71370912277944121) * CHASTE_MATH::Pow(mParameters[6], CHASTE_CONST(0.20000000000000001)) * mParameters[9] * mParameters[12]; // nanoS + const double var_slow_time_dependent_potassium_current__P_Ks_Na = CHASTE_CONST(0.2016); // picoA_per_millimolar + const double var_slow_time_dependent_potassium_current__i_Ks_K = CHASTE_MATH::Pow(var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1, 2) * (CHASTE_CONST(0.10000000000000001) + CHASTE_CONST(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 = CHASTE_MATH::Pow(var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1, 2) * (CHASTE_CONST(0.10000000000000001) + CHASTE_CONST(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_slow_time_dependent_potassium_current__i_Ks_converted = CHASTE_CONST(9.9999999999999995e-7) * CHASTE_CAP() * var_slow_time_dependent_potassium_current__i_Ks / var_membrane__Cm_converted; // uA_per_cm2 + const double var_sodium_calcium_exchanger__Km_Cai = CHASTE_CONST(0.0013799999999999999); // millimolar + const double var_sodium_calcium_exchanger__Km_Cao = CHASTE_CONST(1.3799999999999999); // millimolar + const double var_sodium_calcium_exchanger__Km_Nai = CHASTE_CONST(8.75); // millimolar + const double var_sodium_calcium_exchanger__Km_Nao = CHASTE_CONST(87.5); // millimolar + const double var_sodium_calcium_exchanger__Partition = CHASTE_CONST(0.32000000000000001); // dimensionless + const double var_sodium_calcium_exchanger__k1 = CHASTE_MATH::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 = CHASTE_MATH::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 + CHASTE_MATH::Pow(var_sodium_calcium_exchanger__Km_Nai, 3) * (1 + var_internal_ion_concentrations__Cai / var_sodium_calcium_exchanger__Km_Cai) / CHASTE_MATH::Pow(var_chaste_interface__internal_ion_concentrations__Nai, 3)); // dimensionless + const double var_sodium_calcium_exchanger__p_E2Na = 1 / (1 + CHASTE_MATH::Pow(var_sodium_calcium_exchanger__Km_Nao, 3) * (1 + mParameters[5] / var_sodium_calcium_exchanger__Km_Cao) / CHASTE_MATH::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_calcium_exchanger__i_NaCa_converted = CHASTE_CONST(9.9999999999999995e-7) * CHASTE_CAP() * var_sodium_calcium_exchanger__i_NaCa / var_membrane__Cm_converted; // uA_per_cm2 + const double var_sodium_current__i_Na_K = CHASTE_CONST(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_sodium_current__i_Na_converted = CHASTE_CONST(9.9999999999999995e-7) * CHASTE_CAP() * 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 * CHASTE_MATH::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) * (CHASTE_CONST(0.40000000000000002) * var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 + CHASTE_CONST(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 = CHASTE_CONST(9.9999999999999995e-7) * CHASTE_CAP() * var_rapid_time_dependent_potassium_current__i_Kr / var_membrane__Cm_converted; // uA_per_cm2 + const double var_time_independent_potassium_current__g_K1 = CHASTE_CONST(0.50938071193859957) * CHASTE_MATH::Pow(mParameters[6], CHASTE_CONST(0.40000000000000002)) * mParameters[9] * mParameters[11]; // nanoS + const double var_time_independent_potassium_current__lambda = 3 * (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.4319999999999999) + CHASTE_CONST(0.064000000000000001) * var_chaste_interface__membrane__Vm - CHASTE_CONST(0.064000000000000001) * var_time_independent_potassium_current__E_K)) * CHASTE_MATH::Exp(CHASTE_CONST(0.47999999999999998) + CHASTE_CONST(0.048000000000000001) * var_time_independent_potassium_current__E_K - CHASTE_CONST(0.048000000000000001) * var_chaste_interface__membrane__Vm) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.1000000000000001) + CHASTE_CONST(0.029999999999999999) * var_chaste_interface__membrane__Vm - CHASTE_CONST(0.029999999999999999) * var_time_independent_potassium_current__E_K)); // per_millisecond + const double var_time_independent_potassium_current__mu = CHASTE_CONST(0.75) * CHASTE_MATH::Exp(-CHASTE_CONST(0.35000000000000003) + CHASTE_CONST(0.035000000000000003) * var_chaste_interface__membrane__Vm - CHASTE_CONST(0.035000000000000003) * var_time_independent_potassium_current__E_K) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.1000000000000001) + CHASTE_CONST(0.014999999999999999) * var_chaste_interface__membrane__Vm - CHASTE_CONST(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__fO2 = 2 * CHASTE_MATH::Pow(var_time_independent_potassium_current__fB, 2) * CHASTE_MATH::Pow(var_time_independent_potassium_current__fO, 2); // dimensionless + const double var_time_independent_potassium_current__fO3 = CHASTE_CONST(2.6666666666666665) * CHASTE_MATH::Pow(var_time_independent_potassium_current__fO, 3) * var_time_independent_potassium_current__fB; // dimensionless + const double var_time_independent_potassium_current__fO4 = CHASTE_MATH::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_time_independent_potassium_current__i_K1_converted = CHASTE_CONST(9.9999999999999995e-7) * CHASTE_CAP() * var_time_independent_potassium_current__i_K1 / var_membrane__Cm_converted; // uA_per_cm2 + const double var_transient_outward_current__P_to_Na = CHASTE_CONST(0.00297); // picoA_per_millimolar + const double var_transient_outward_current__i_to_K = CHASTE_MATH::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 = CHASTE_MATH::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 + const double var_transient_outward_current__i_to_converted = CHASTE_CONST(9.9999999999999995e-7) * CHASTE_CAP() * 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; diff --git a/chaste_codegen/data/tests/chaste_reference_models/GRL1Opt/dynamic_matsuoka_model_2003.hpp b/chaste_codegen/data/tests/chaste_reference_models/GRL1Opt/dynamic_matsuoka_model_2003.hpp index ea268feec..6fab09609 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/GRL1Opt/dynamic_matsuoka_model_2003.hpp +++ b/chaste_codegen/data/tests/chaste_reference_models/GRL1Opt/dynamic_matsuoka_model_2003.hpp @@ -17,6 +17,9 @@ #include #include "AbstractDynamicallyLoadableEntity.hpp" #include "AbstractStimulusFunction.hpp" +#if USING_DEVICE_COMPILER +#include "StimulusEvaluatorCuda.hpp" +#endif #include "AbstractGeneralizedRushLarsenCardiacCell.hpp" class Dynamicmatsuoka_model_2003FromCellMLGRL1Opt : public AbstractGeneralizedRushLarsenCardiacCell, public AbstractDynamicallyLoadableEntity diff --git a/chaste_codegen/data/tests/chaste_reference_models/GRL2/dynamic_winslow_model_1999.cpp b/chaste_codegen/data/tests/chaste_reference_models/GRL2/dynamic_winslow_model_1999.cpp index b341b1892..f093f7d7b 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/GRL2/dynamic_winslow_model_1999.cpp +++ b/chaste_codegen/data/tests/chaste_reference_models/GRL2/dynamic_winslow_model_1999.cpp @@ -21,6 +21,8 @@ #include "HeartConfig.hpp" #include "IsNan.hpp" #include "MathsCustomFunctions.hpp" +#include "ChasteMathDeviceNamespaces.hpp" +#include "ChasteCpuMacros.hpp" @@ -29,7 +31,7 @@ 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_amplitude_converted = -CHASTE_CONST(21.126799999999999) * CHASTE_CAP(); // 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 @@ -66,16 +68,16 @@ 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[6] = CHASTE_CONST(0.00031250000000000001); // (var_L_type_Ca_current__P_Ca) [cm_per_second] + this->mParameters[7] = CHASTE_CONST(0.001); // (var_membrane__C_sc) [microF_per_cm2] + this->mParameters[8] = CHASTE_CONST(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] + this->mParameters[11] = CHASTE_CONST(2.7999999999999998); // (var_time_independent_potassium_current__g_K1) [milliS_per_microF] + this->mParameters[12] = CHASTE_CONST(0.0033999999999999998); // (var_rapid_activating_delayed_rectifiyer_K_current__g_Kr) [milliS_per_microF] + this->mParameters[13] = CHASTE_CONST(0.0027133999999999999); // (var_slow_activating_delayed_rectifiyer_K_current__g_Ks) [milliS_per_microF] + this->mParameters[14] = CHASTE_CONST(0.29999999999999999); // (var_Na_Ca_exchanger__K_NaCa) [microA_per_microF] + this->mParameters[15] = CHASTE_CONST(0.23815); // (var_transient_outward_potassium_current__g_to1) [milliS_per_microF] } Dynamicwinslow_model_1999FromCellMLGRL2::~Dynamicwinslow_model_1999FromCellMLGRL2() @@ -122,7 +124,7 @@ // 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -151,57 +153,57 @@ 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_L_type_Ca_current__P_K = CHASTE_CONST(5.7899999999999998e-7); // cm_per_second + const double var_L_type_Ca_current__i_Ca_half = -CHASTE_CONST(0.26500000000000001); // microA_per_microF + const double var_Na_Ca_exchanger__K_mCa = CHASTE_CONST(1.3799999999999999); // millimolar + const double var_Na_Ca_exchanger__K_mNa = CHASTE_CONST(87.5); // millimolar + const double var_Na_Ca_exchanger__K_sat = CHASTE_CONST(0.20000000000000001); // dimensionless + const double var_Na_Ca_exchanger__eta = CHASTE_CONST(0.34999999999999998); // dimensionless + const double var_calcium_background_current__g_Cab = CHASTE_CONST(0.00038420000000000001); // milliS_per_microF + const double var_membrane__F = CHASTE_CONST(96.485341500000004); // coulomb_per_millimole + const double var_membrane__R = CHASTE_CONST(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_plateau_potassium_current__g_Kp = CHASTE_CONST(0.0022160000000000001); // milliS_per_microF + const double var_plateau_potassium_current_Kp_gate__Kp_V = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(1.2521739130434781) - CHASTE_CONST(0.16722408026755853) * var_chaste_interface__membrane__V)); // dimensionless + const double var_rapid_activating_delayed_rectifiyer_K_current__R_V = 1 / (1 + CHASTE_CONST(1.4944999999999999) * CHASTE_MATH::Exp(CHASTE_CONST(0.044600000000000001) * var_chaste_interface__membrane__V)); // dimensionless + const double var_sarcolemmal_calcium_pump__I_pCa = CHASTE_CONST(0.050000000000000003); // microA_per_microF + const double var_sarcolemmal_calcium_pump__K_mpCa = CHASTE_CONST(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_background_current__g_Nab = CHASTE_CONST(0.0030999999999999999); // milliS_per_microF + const double var_sodium_potassium_pump__I_NaK = CHASTE_CONST(0.69299999999999995); // microA_per_microF + const double var_sodium_potassium_pump__K_mKo = CHASTE_CONST(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_max = 4000 * CHASTE_MATH::Pow(var_membrane__F, 2) * (CHASTE_CONST(0.001) * CHASTE_MATH::Exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - CHASTE_CONST(0.34100000000000003) * mParameters[3]) * mParameters[6] * var_chaste_interface__membrane__V / ((-1 + CHASTE_MATH::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__i_Ca_converted = CHASTE_CAP() * 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__E_Ca = CHASTE_CONST(0.5) * var_membrane__R * var_membrane__T * CHASTE_MATH::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_L_type_Ca_current__i_Ca_K = CHASTE_MATH::Pow(var_membrane__F, 2) * (-mParameters[4] + var_chaste_interface__intracellular_ion_concentrations__Ki * CHASTE_MATH::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 + CHASTE_MATH::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 * CHASTE_MATH::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__f_Ko = CHASTE_CONST(0.5) * CHASTE_MATH::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_rapid_activating_delayed_rectifiyer_K_current__i_Kr_converted = CHASTE_CAP() * var_rapid_activating_delayed_rectifiyer_K_current__i_Kr; // uA_per_cm2 + const double var_Na_Ca_exchanger__i_NaCa = 5000 * (CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Nai, 3) * mParameters[3] * CHASTE_MATH::Exp(var_Na_Ca_exchanger__eta * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - CHASTE_MATH::Pow(mParameters[5], 3) * var_chaste_interface__intracellular_ion_concentrations__Cai * CHASTE_MATH::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 * CHASTE_MATH::Exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (CHASTE_MATH::Pow(var_Na_Ca_exchanger__K_mNa, 3) + CHASTE_MATH::Pow(mParameters[5], 3)) * (var_Na_Ca_exchanger__K_mCa + mParameters[3])); // microA_per_microF + const double var_Na_Ca_exchanger__i_NaCa_converted = CHASTE_CAP() * var_Na_Ca_exchanger__i_NaCa; // uA_per_cm2 + const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * CHASTE_MATH::Log(mParameters[5] / var_chaste_interface__intracellular_ion_concentrations__Nai) / var_membrane__F; // millivolt + const double var_fast_sodium_current__i_Na = CHASTE_MATH::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 = CHASTE_CAP() * 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 * CHASTE_MATH::Log((mParameters[4] + CHASTE_CONST(0.018329999999999999) * mParameters[5]) / (var_chaste_interface__intracellular_ion_concentrations__Ki + CHASTE_CONST(0.018329999999999999) * var_chaste_interface__intracellular_ion_concentrations__Nai)) / var_membrane__F; // millivolt + const double var_slow_activating_delayed_rectifiyer_K_current__i_Ks = CHASTE_MATH::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 = CHASTE_CAP() * 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_sodium_potassium_pump__sigma = -CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * CHASTE_MATH::Exp(CHASTE_CONST(0.01485884101040119) * mParameters[5]); // dimensionless + const double var_sodium_potassium_pump__f_NaK = 1 / (1 + CHASTE_CONST(0.1245) * CHASTE_MATH::Exp(-CHASTE_CONST(0.10000000000000001) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) + CHASTE_CONST(0.036499999999999998) * var_sodium_potassium_pump__sigma * CHASTE_MATH::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 + CHASTE_MATH::Pow((var_sodium_potassium_pump__K_mNai / var_chaste_interface__intracellular_ion_concentrations__Nai), CHASTE_CONST(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_K1_gate__K1_infinity_V = 1 / (2 + CHASTE_MATH::Exp(CHASTE_CONST(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_time_independent_potassium_current__i_K1_converted = CHASTE_CAP() * 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 var_transient_outward_potassium_current__i_to1_converted = CHASTE_CAP() * var_transient_outward_potassium_current__i_to1; // uA_per_cm2 + const double var_chaste_interface__i_ionic = CHASTE_CAP() * var_L_type_Ca_current__i_Ca_K + CHASTE_CAP() * var_calcium_background_current__i_Ca_b + CHASTE_CAP() * var_plateau_potassium_current__i_Kp + CHASTE_CAP() * var_sarcolemmal_calcium_pump__i_p_Ca + CHASTE_CAP() * var_sodium_background_current__i_Na_b + CHASTE_CAP() * 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)); @@ -215,7 +217,7 @@ const double delta = 1e-8; const double yinit = rY[v_index]; - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -247,53 +249,53 @@ // 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_L_type_Ca_current__P_K = CHASTE_CONST(5.7899999999999998e-7); // cm_per_second + const double var_L_type_Ca_current__i_Ca_half = -CHASTE_CONST(0.26500000000000001); // microA_per_microF + const double var_Na_Ca_exchanger__K_mCa = CHASTE_CONST(1.3799999999999999); // millimolar + const double var_Na_Ca_exchanger__K_mNa = CHASTE_CONST(87.5); // millimolar + const double var_Na_Ca_exchanger__K_sat = CHASTE_CONST(0.20000000000000001); // dimensionless + const double var_Na_Ca_exchanger__eta = CHASTE_CONST(0.34999999999999998); // dimensionless + const double var_calcium_background_current__g_Cab = CHASTE_CONST(0.00038420000000000001); // milliS_per_microF + const double var_membrane__F = CHASTE_CONST(96.485341500000004); // coulomb_per_millimole + const double var_membrane__R = CHASTE_CONST(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_membrane__i_Stim_converted = CHASTE_STIM(var_chaste_interface__environment__time_converted); // uA_per_cm2 + const double var_membrane__i_Stim = var_membrane__i_Stim_converted / CHASTE_CAP(); // microA_per_microF + const double var_plateau_potassium_current__g_Kp = CHASTE_CONST(0.0022160000000000001); // milliS_per_microF + const double var_plateau_potassium_current_Kp_gate__Kp_V = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(1.2521739130434781) - CHASTE_CONST(0.16722408026755853) * var_chaste_interface__membrane__V)); // dimensionless + const double var_rapid_activating_delayed_rectifiyer_K_current__R_V = 1 / (1 + CHASTE_CONST(1.4944999999999999) * CHASTE_MATH::Exp(CHASTE_CONST(0.044600000000000001) * var_chaste_interface__membrane__V)); // dimensionless + const double var_sarcolemmal_calcium_pump__I_pCa = CHASTE_CONST(0.050000000000000003); // microA_per_microF + const double var_sarcolemmal_calcium_pump__K_mpCa = CHASTE_CONST(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_background_current__g_Nab = CHASTE_CONST(0.0030999999999999999); // milliS_per_microF + const double var_sodium_potassium_pump__I_NaK = CHASTE_CONST(0.69299999999999995); // microA_per_microF + const double var_sodium_potassium_pump__K_mKo = CHASTE_CONST(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_max = 4000 * CHASTE_MATH::Pow(var_membrane__F, 2) * (CHASTE_CONST(0.001) * CHASTE_MATH::Exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - CHASTE_CONST(0.34100000000000003) * mParameters[3]) * mParameters[6] * var_chaste_interface__membrane__V / ((-1 + CHASTE_MATH::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__E_Ca = CHASTE_CONST(0.5) * var_membrane__R * var_membrane__T * CHASTE_MATH::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_L_type_Ca_current__i_Ca_K = CHASTE_MATH::Pow(var_membrane__F, 2) * (-mParameters[4] + var_chaste_interface__intracellular_ion_concentrations__Ki * CHASTE_MATH::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 + CHASTE_MATH::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 * CHASTE_MATH::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__f_Ko = CHASTE_CONST(0.5) * CHASTE_MATH::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_Na_Ca_exchanger__i_NaCa = 5000 * (CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Nai, 3) * mParameters[3] * CHASTE_MATH::Exp(var_Na_Ca_exchanger__eta * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - CHASTE_MATH::Pow(mParameters[5], 3) * var_chaste_interface__intracellular_ion_concentrations__Cai * CHASTE_MATH::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 * CHASTE_MATH::Exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (CHASTE_MATH::Pow(var_Na_Ca_exchanger__K_mNa, 3) + CHASTE_MATH::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 * CHASTE_MATH::Log(mParameters[5] / var_chaste_interface__intracellular_ion_concentrations__Nai) / var_membrane__F; // millivolt + const double var_fast_sodium_current__i_Na = CHASTE_MATH::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 * CHASTE_MATH::Log((mParameters[4] + CHASTE_CONST(0.018329999999999999) * mParameters[5]) / (var_chaste_interface__intracellular_ion_concentrations__Ki + CHASTE_CONST(0.018329999999999999) * var_chaste_interface__intracellular_ion_concentrations__Nai)) / var_membrane__F; // millivolt + const double var_slow_activating_delayed_rectifiyer_K_current__i_Ks = CHASTE_MATH::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_sodium_potassium_pump__sigma = -CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * CHASTE_MATH::Exp(CHASTE_CONST(0.01485884101040119) * mParameters[5]); // dimensionless + const double var_sodium_potassium_pump__f_NaK = 1 / (1 + CHASTE_CONST(0.1245) * CHASTE_MATH::Exp(-CHASTE_CONST(0.10000000000000001) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) + CHASTE_CONST(0.036499999999999998) * var_sodium_potassium_pump__sigma * CHASTE_MATH::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 + CHASTE_MATH::Pow((var_sodium_potassium_pump__K_mNai / var_chaste_interface__intracellular_ion_concentrations__Nai), CHASTE_CONST(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_K1_gate__K1_infinity_V = 1 / (2 + CHASTE_MATH::Exp(CHASTE_CONST(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 + d_dt_chaste_interface_var_membrane__V = CHASTE_CONST(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; @@ -329,7 +331,7 @@ mYInit = rY; double y_save; - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -399,194 +401,194 @@ // 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__P_K = CHASTE_CONST(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 d_dt_chaste_interface_var_L_type_Ca_current__O = CHASTE_CONST(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 d_dt_chaste_interface_var_L_type_Ca_current__O_Ca = CHASTE_CONST(0.001) * var_L_type_Ca_current__O_Ca_orig_deriv; // 1 / millisecond + const double var_L_type_Ca_current__i_Ca_half = -CHASTE_CONST(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_Na_Ca_exchanger__K_mCa = CHASTE_CONST(1.3799999999999999); // millimolar + const double var_Na_Ca_exchanger__K_mNa = CHASTE_CONST(87.5); // millimolar + const double var_Na_Ca_exchanger__K_sat = CHASTE_CONST(0.20000000000000001); // dimensionless + const double var_Na_Ca_exchanger__eta = CHASTE_CONST(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_a_plus = CHASTE_CONST(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_b_plus = CHASTE_CONST(4050000000.0); // millimolar3_per_second + const double var_RyR_channel__k_c_minus = CHASTE_CONST(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 d_dt_chaste_interface_var_RyR_channel__P_C2 = CHASTE_CONST(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__K_fb = CHASTE_CONST(0.00016799999999999999); // millimolar + const double var_SERCA2a_pump__K_rb = CHASTE_CONST(3.29); // millimolar + const double var_SERCA2a_pump__N_fb = CHASTE_CONST(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_SERCA2a_pump__Vmaxf = CHASTE_CONST(0.081299999999999997); // millimolar_per_second + const double var_SERCA2a_pump__Vmaxr = CHASTE_CONST(0.318); // millimolar_per_second + const double var_calcium_background_current__g_Cab = CHASTE_CONST(0.00038420000000000001); // milliS_per_microF + const double var_intracellular_Ca_fluxes__HTRPN_tot = CHASTE_CONST(0.14000000000000001); // dimensionless + const double var_intracellular_Ca_fluxes__LTRPN_tot = CHASTE_CONST(0.070000000000000007); // dimensionless + const double var_intracellular_Ca_fluxes__k_htrpn_minus = CHASTE_CONST(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_Ca_fluxes__tau_tr = CHASTE_CONST(0.00057470000000000004); // second + const double var_intracellular_Ca_fluxes__tau_xfer = CHASTE_CONST(0.026700000000000002); // second + const double var_intracellular_ion_concentrations__A_cap = CHASTE_CONST(0.00015339999999999999); // cm2 + const double var_intracellular_ion_concentrations__CMDN_tot = CHASTE_CONST(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_SERCA2a_pump__rb = CHASTE_MATH::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_L_type_Ca_current__gamma = CHASTE_CONST(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_RyR_channel__P_C1_orig_deriv = var_chaste_interface__RyR_channel__P_O1 * var_RyR_channel__k_a_minus - CHASTE_MATH::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 = CHASTE_CONST(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 + CHASTE_MATH::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 - CHASTE_MATH::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 = CHASTE_CONST(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 + CHASTE_MATH::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 = CHASTE_CONST(0.001) * var_RyR_channel__P_O2_orig_deriv; // 1 / millisecond + const double var_SERCA2a_pump__fb = CHASTE_MATH::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 d_dt_chaste_interface_var_intracellular_Ca_fluxes__HTRPNCa = CHASTE_CONST(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 d_dt_chaste_interface_var_intracellular_Ca_fluxes__LTRPNCa = CHASTE_CONST(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__K_mCMDN = CHASTE_CONST(0.0023800000000000002); // millimolar + const double var_intracellular_ion_concentrations__K_mCSQN = CHASTE_CONST(0.80000000000000004); // millimolar + const double var_intracellular_ion_concentrations__K_mEGTA = CHASTE_CONST(0.00014999999999999999); // millimolar + const double var_intracellular_ion_concentrations__V_JSR = CHASTE_CONST(1.6e-7); // micro_litre + const double var_intracellular_ion_concentrations__V_NSR = CHASTE_CONST(2.0999999999999998e-6); // micro_litre + const double var_intracellular_ion_concentrations__V_SS = CHASTE_CONST(1.2e-9); // micro_litre + const double var_intracellular_ion_concentrations__V_myo = CHASTE_CONST(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 d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_NSR = CHASTE_CONST(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 / CHASTE_MATH::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 d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_JSR = CHASTE_CONST(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 / CHASTE_MATH::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 / CHASTE_MATH::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 / CHASTE_MATH::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 / CHASTE_MATH::Pow((var_chaste_interface__intracellular_ion_concentrations__Cai + var_intracellular_ion_concentrations__K_mEGTA), 2)); // dimensionless + const double var_membrane__F = CHASTE_CONST(96.485341500000004); // coulomb_per_millimole + const double var_membrane__R = CHASTE_CONST(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 = 400 * CHASTE_MATH::Exp(CHASTE_CONST(0.20000000000000001) + CHASTE_CONST(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 = 50 * CHASTE_MATH::Exp(-CHASTE_CONST(0.15384615384615385) - CHASTE_CONST(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 d_dt_chaste_interface_var_L_type_Ca_current__C0 = CHASTE_CONST(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 d_dt_chaste_interface_var_L_type_Ca_current__C1 = CHASTE_CONST(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 + CHASTE_MATH::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 / CHASTE_MATH::Pow(var_L_type_Ca_current__b, 2); // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__C2 = CHASTE_CONST(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 + CHASTE_MATH::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 / CHASTE_MATH::Pow(var_L_type_Ca_current__b, 3); // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__C3 = CHASTE_CONST(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 + CHASTE_MATH::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 / CHASTE_MATH::Pow(var_L_type_Ca_current__b, 4); // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__C4 = CHASTE_CONST(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 d_dt_chaste_interface_var_L_type_Ca_current__C_Ca0 = CHASTE_CONST(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 d_dt_chaste_interface_var_L_type_Ca_current__C_Ca1 = CHASTE_CONST(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 / CHASTE_MATH::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 + CHASTE_MATH::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 = CHASTE_CONST(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 / CHASTE_MATH::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 + CHASTE_MATH::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 = CHASTE_CONST(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 / CHASTE_MATH::Pow(var_L_type_Ca_current__b, 4) + var_L_type_Ca_current__fprime) * var_chaste_interface__L_type_Ca_current__C_Ca4 + CHASTE_MATH::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 = CHASTE_CONST(0.001) * var_L_type_Ca_current__C_Ca4_orig_deriv; // 1 / millisecond + const double var_L_type_Ca_current_y_gate__tau_y = CHASTE_CONST(0.02) + CHASTE_CONST(0.59999999999999998) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(2.1052631578947367) + CHASTE_CONST(0.10526315789473684) * var_chaste_interface__membrane__V)); // second + const double var_L_type_Ca_current_y_gate__y_infinity = CHASTE_CONST(0.20000000000000001) + CHASTE_CONST(0.80000000000000004) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(2.5) + CHASTE_CONST(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 d_dt_chaste_interface_var_L_type_Ca_current_y_gate__y = CHASTE_CONST(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 * CHASTE_MATH::Exp(-CHASTE_CONST(11.764705882352942) + CHASTE_CONST(0.14705882352941177) * mParameters[10] - CHASTE_CONST(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 * CHASTE_MATH::Exp(CHASTE_CONST(0.079000000000000001) * var_chaste_interface__membrane__V - CHASTE_CONST(0.079000000000000001) * mParameters[10]) + 310000 * CHASTE_MATH::Exp(CHASTE_CONST(0.34999999999999998) * var_chaste_interface__membrane__V - CHASTE_CONST(0.34999999999999998) * mParameters[10])) : (CHASTE_CONST(7692.3076923076924) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.96036036036036043) + CHASTE_CONST(0.0900900900900901) * mParameters[10] - CHASTE_CONST(0.0900900900900901) * var_chaste_interface__membrane__V)))); // per_second + const double var_fast_sodium_current_h_gate__h_inf = CHASTE_CONST(0.01) * mParameters[9] + (1 - CHASTE_CONST(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 d_dt_chaste_interface_var_fast_sodium_current_h_gate__h = CHASTE_CONST(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 * (CHASTE_CONST(37.780000000000001) + var_chaste_interface__membrane__V) * (-127140 * CHASTE_MATH::Exp(CHASTE_CONST(0.24440000000000001) * var_chaste_interface__membrane__V - CHASTE_CONST(0.24440000000000001) * mParameters[10]) - CHASTE_CONST(3.4740000000000003e-5) * CHASTE_MATH::Exp(CHASTE_CONST(0.043909999999999998) * mParameters[10] - CHASTE_CONST(0.043909999999999998) * var_chaste_interface__membrane__V)) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(24.640530000000002) + CHASTE_CONST(0.311) * var_chaste_interface__membrane__V - CHASTE_CONST(0.311) * mParameters[10]))) : (0)); // per_second + const double var_fast_sodium_current_j_gate__beta_j = ((var_chaste_interface__membrane__V < -40) ? (CHASTE_CONST(121.2) * CHASTE_MATH::Exp(CHASTE_CONST(0.01052) * mParameters[10] - CHASTE_CONST(0.01052) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(5.5312920000000005) + CHASTE_CONST(0.13780000000000001) * mParameters[10] - CHASTE_CONST(0.13780000000000001) * var_chaste_interface__membrane__V))) : (300 * CHASTE_MATH::Exp(CHASTE_CONST(2.5349999999999999e-7) * mParameters[10] - CHASTE_CONST(2.5349999999999999e-7) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(3.2000000000000002) + CHASTE_CONST(0.10000000000000001) * mParameters[10] - CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V)))); // per_second + const double var_fast_sodium_current_j_gate__j_inf = CHASTE_CONST(0.01) * mParameters[9] + (1 - CHASTE_CONST(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 d_dt_chaste_interface_var_fast_sodium_current_j_gate__j = CHASTE_CONST(0.001) * var_fast_sodium_current_j_gate__j_orig_deriv; // 1 / millisecond + const double var_fast_sodium_current_m_gate__E0_m = CHASTE_CONST(47.130000000000003) + var_chaste_interface__membrane__V; // millivolt + const double var_fast_sodium_current_m_gate__alpha_m = ((CHASTE_MATH::Abs(var_fast_sodium_current_m_gate__E0_m) < CHASTE_CONST(1.0000000000000001e-5)) ? (1000 / (CHASTE_CONST(0.10000000000000001) - CHASTE_CONST(0.0050000000000000001) * var_fast_sodium_current_m_gate__E0_m)) : (320 * var_fast_sodium_current_m_gate__E0_m / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(0.10000000000000001) * var_fast_sodium_current_m_gate__E0_m)))); // per_second + const double var_fast_sodium_current_m_gate__beta_m = 80 * CHASTE_MATH::Exp(-CHASTE_CONST(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 d_dt_chaste_interface_var_fast_sodium_current_m_gate__m = CHASTE_CONST(0.001) * var_fast_sodium_current_m_gate__m_orig_deriv; // 1 / millisecond + const double var_plateau_potassium_current__g_Kp = CHASTE_CONST(0.0022160000000000001); // milliS_per_microF + const double var_plateau_potassium_current_Kp_gate__Kp_V = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(1.2521739130434781) - CHASTE_CONST(0.16722408026755853) * var_chaste_interface__membrane__V)); // dimensionless + const double var_rapid_activating_delayed_rectifiyer_K_current__R_V = 1 / (1 + CHASTE_CONST(1.4944999999999999) * CHASTE_MATH::Exp(CHASTE_CONST(0.044600000000000001) * var_chaste_interface__membrane__V)); // dimensionless + const double var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__K12 = CHASTE_MATH::Exp(-CHASTE_CONST(5.4950000000000001) + CHASTE_CONST(0.1691) * var_chaste_interface__membrane__V); // dimensionless + const double var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__K21 = CHASTE_MATH::Exp(-CHASTE_CONST(7.6769999999999996) - CHASTE_CONST(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__tau_X_kr = CHASTE_CONST(0.001) / (var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__K12 + var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__K21) + CHASTE_CONST(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 d_dt_chaste_interface_var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr = CHASTE_CONST(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 = CHASTE_CONST(0.050000000000000003); // microA_per_microF + const double var_sarcolemmal_calcium_pump__K_mpCa = CHASTE_CONST(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_infinity = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(1.8161764705882353) - CHASTE_CONST(0.073529411764705885) * var_chaste_interface__membrane__V)); // dimensionless + const double var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__tau_X_ks = CHASTE_CONST(0.001) / (CHASTE_CONST(0.00013100000000000001) * (-10 + var_chaste_interface__membrane__V) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.68699999999999994) + CHASTE_CONST(0.068699999999999997) * var_chaste_interface__membrane__V)) + CHASTE_CONST(7.1899999999999999e-5) * (-10 + var_chaste_interface__membrane__V) / (1 - CHASTE_MATH::Exp(CHASTE_CONST(1.48) - CHASTE_CONST(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 d_dt_chaste_interface_var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks = CHASTE_CONST(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 = CHASTE_CONST(0.0030999999999999999); // milliS_per_microF + const double var_sodium_potassium_pump__I_NaK = CHASTE_CONST(0.69299999999999995); // microA_per_microF + const double var_sodium_potassium_pump__K_mKo = CHASTE_CONST(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_max = 4000 * CHASTE_MATH::Pow(var_membrane__F, 2) * (CHASTE_CONST(0.001) * CHASTE_MATH::Exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - CHASTE_CONST(0.34100000000000003) * mParameters[3]) * mParameters[6] * var_chaste_interface__membrane__V / ((-1 + CHASTE_MATH::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__E_Ca = CHASTE_CONST(0.5) * var_membrane__R * var_membrane__T * CHASTE_MATH::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_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 - CHASTE_CONST(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 = CHASTE_CONST(0.001) * var_intracellular_ion_concentrations__Ca_ss_orig_deriv; // millimolar / millisecond + const double var_L_type_Ca_current__i_Ca_K = CHASTE_MATH::Pow(var_membrane__F, 2) * (-mParameters[4] + var_chaste_interface__intracellular_ion_concentrations__Ki * CHASTE_MATH::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 + CHASTE_MATH::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 * CHASTE_MATH::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__f_Ko = CHASTE_CONST(0.5) * CHASTE_MATH::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_Na_Ca_exchanger__i_NaCa = 5000 * (CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Nai, 3) * mParameters[3] * CHASTE_MATH::Exp(var_Na_Ca_exchanger__eta * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - CHASTE_MATH::Pow(mParameters[5], 3) * var_chaste_interface__intracellular_ion_concentrations__Cai * CHASTE_MATH::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 * CHASTE_MATH::Exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (CHASTE_MATH::Pow(var_Na_Ca_exchanger__K_mNa, 3) + CHASTE_MATH::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 * CHASTE_MATH::Log(mParameters[5] / var_chaste_interface__intracellular_ion_concentrations__Nai) / var_membrane__F; // millivolt + const double var_fast_sodium_current__i_Na = CHASTE_MATH::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 + CHASTE_CONST(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 = CHASTE_CONST(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 * CHASTE_MATH::Log((mParameters[4] + CHASTE_CONST(0.018329999999999999) * mParameters[5]) / (var_chaste_interface__intracellular_ion_concentrations__Ki + CHASTE_CONST(0.018329999999999999) * var_chaste_interface__intracellular_ion_concentrations__Nai)) / var_membrane__F; // millivolt + const double var_slow_activating_delayed_rectifiyer_K_current__i_Ks = CHASTE_MATH::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_sodium_potassium_pump__sigma = -CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * CHASTE_MATH::Exp(CHASTE_CONST(0.01485884101040119) * mParameters[5]); // dimensionless + const double var_sodium_potassium_pump__f_NaK = 1 / (1 + CHASTE_CONST(0.1245) * CHASTE_MATH::Exp(-CHASTE_CONST(0.10000000000000001) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) + CHASTE_CONST(0.036499999999999998) * var_sodium_potassium_pump__sigma * CHASTE_MATH::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 + CHASTE_MATH::Pow((var_sodium_potassium_pump__K_mNai / var_chaste_interface__intracellular_ion_concentrations__Nai), CHASTE_CONST(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 d_dt_chaste_interface_var_intracellular_ion_concentrations__Nai = CHASTE_CONST(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_K1_gate__K1_infinity_V = 1 / (2 + CHASTE_MATH::Exp(CHASTE_CONST(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__alpha_X_to1 = CHASTE_CONST(45.159999999999997) * CHASTE_MATH::Exp(CHASTE_CONST(0.035770000000000003) * var_chaste_interface__membrane__V); // per_second + const double var_transient_outward_potassium_current_X_to1_gate__beta_X_to1 = CHASTE_CONST(98.900000000000006) * CHASTE_MATH::Exp(-CHASTE_CONST(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 d_dt_chaste_interface_var_transient_outward_potassium_current_X_to1_gate__X_to1 = CHASTE_CONST(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 d_dt_chaste_interface_var_intracellular_ion_concentrations__Ki = CHASTE_CONST(0.001) * var_intracellular_ion_concentrations__Ki_orig_deriv; // millimolar / millisecond + const double var_transient_outward_potassium_current_Y_to1_gate__alpha_Y_to1 = CHASTE_CONST(5.415) * CHASTE_MATH::Exp(-CHASTE_CONST(6.7000000000000002) - CHASTE_CONST(0.20000000000000001) * var_chaste_interface__membrane__V) / (1 + CHASTE_CONST(0.051334999999999999) * CHASTE_MATH::Exp(-CHASTE_CONST(6.7000000000000002) - CHASTE_CONST(0.20000000000000001) * var_chaste_interface__membrane__V)); // per_second + const double var_transient_outward_potassium_current_Y_to1_gate__beta_Y_to1 = CHASTE_CONST(5.415) * CHASTE_MATH::Exp(CHASTE_CONST(6.7000000000000002) + CHASTE_CONST(0.20000000000000001) * var_chaste_interface__membrane__V) / (1 + CHASTE_CONST(0.051334999999999999) * CHASTE_MATH::Exp(CHASTE_CONST(6.7000000000000002) + CHASTE_CONST(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 + const double d_dt_chaste_interface_var_transient_outward_potassium_current_Y_to1_gate__Y_to1 = CHASTE_CONST(0.001) * var_transient_outward_potassium_current_Y_to1_gate__Y_to1_orig_deriv; // 1 / millisecond if (mSetVoltageDerivativeToZero) { @@ -594,10 +596,10 @@ } 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__i_Stim_converted = CHASTE_STIM(var_chaste_interface__environment__time_converted); // uA_per_cm2 + const double var_membrane__i_Stim = var_membrane__i_Stim_converted / CHASTE_CAP(); // 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 + d_dt_chaste_interface_var_membrane__V = CHASTE_CONST(0.001) * var_membrane__V_orig_deriv; // millivolt / millisecond } mEvalF[0] = d_dt_chaste_interface_var_membrane__V; @@ -927,7 +929,7 @@ double Dynamicwinslow_model_1999FromCellMLGRL2::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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -958,53 +960,53 @@ // 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_L_type_Ca_current__P_K = CHASTE_CONST(5.7899999999999998e-7); // cm_per_second + const double var_L_type_Ca_current__i_Ca_half = -CHASTE_CONST(0.26500000000000001); // microA_per_microF + const double var_Na_Ca_exchanger__K_mCa = CHASTE_CONST(1.3799999999999999); // millimolar + const double var_Na_Ca_exchanger__K_mNa = CHASTE_CONST(87.5); // millimolar + const double var_Na_Ca_exchanger__K_sat = CHASTE_CONST(0.20000000000000001); // dimensionless + const double var_Na_Ca_exchanger__eta = CHASTE_CONST(0.34999999999999998); // dimensionless + const double var_calcium_background_current__g_Cab = CHASTE_CONST(0.00038420000000000001); // milliS_per_microF + const double var_membrane__F = CHASTE_CONST(96.485341500000004); // coulomb_per_millimole + const double var_membrane__R = CHASTE_CONST(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_membrane__i_Stim_converted = CHASTE_STIM(var_chaste_interface__environment__time_converted); // uA_per_cm2 + const double var_membrane__i_Stim = var_membrane__i_Stim_converted / CHASTE_CAP(); // microA_per_microF + const double var_plateau_potassium_current__g_Kp = CHASTE_CONST(0.0022160000000000001); // milliS_per_microF + const double var_plateau_potassium_current_Kp_gate__Kp_V = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(1.2521739130434781) - CHASTE_CONST(0.16722408026755853) * var_chaste_interface__membrane__V)); // dimensionless + const double var_rapid_activating_delayed_rectifiyer_K_current__R_V = 1 / (1 + CHASTE_CONST(1.4944999999999999) * CHASTE_MATH::Exp(CHASTE_CONST(0.044600000000000001) * var_chaste_interface__membrane__V)); // dimensionless + const double var_sarcolemmal_calcium_pump__I_pCa = CHASTE_CONST(0.050000000000000003); // microA_per_microF + const double var_sarcolemmal_calcium_pump__K_mpCa = CHASTE_CONST(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_background_current__g_Nab = CHASTE_CONST(0.0030999999999999999); // milliS_per_microF + const double var_sodium_potassium_pump__I_NaK = CHASTE_CONST(0.69299999999999995); // microA_per_microF + const double var_sodium_potassium_pump__K_mKo = CHASTE_CONST(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_max = 4000 * CHASTE_MATH::Pow(var_membrane__F, 2) * (CHASTE_CONST(0.001) * CHASTE_MATH::Exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - CHASTE_CONST(0.34100000000000003) * mParameters[3]) * mParameters[6] * var_chaste_interface__membrane__V / ((-1 + CHASTE_MATH::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__E_Ca = CHASTE_CONST(0.5) * var_membrane__R * var_membrane__T * CHASTE_MATH::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_L_type_Ca_current__i_Ca_K = CHASTE_MATH::Pow(var_membrane__F, 2) * (-mParameters[4] + var_chaste_interface__intracellular_ion_concentrations__Ki * CHASTE_MATH::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 + CHASTE_MATH::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 * CHASTE_MATH::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__f_Ko = CHASTE_CONST(0.5) * CHASTE_MATH::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_Na_Ca_exchanger__i_NaCa = 5000 * (CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Nai, 3) * mParameters[3] * CHASTE_MATH::Exp(var_Na_Ca_exchanger__eta * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - CHASTE_MATH::Pow(mParameters[5], 3) * var_chaste_interface__intracellular_ion_concentrations__Cai * CHASTE_MATH::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 * CHASTE_MATH::Exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (CHASTE_MATH::Pow(var_Na_Ca_exchanger__K_mNa, 3) + CHASTE_MATH::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 * CHASTE_MATH::Log(mParameters[5] / var_chaste_interface__intracellular_ion_concentrations__Nai) / var_membrane__F; // millivolt + const double var_fast_sodium_current__i_Na = CHASTE_MATH::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 * CHASTE_MATH::Log((mParameters[4] + CHASTE_CONST(0.018329999999999999) * mParameters[5]) / (var_chaste_interface__intracellular_ion_concentrations__Ki + CHASTE_CONST(0.018329999999999999) * var_chaste_interface__intracellular_ion_concentrations__Nai)) / var_membrane__F; // millivolt + const double var_slow_activating_delayed_rectifiyer_K_current__i_Ks = CHASTE_MATH::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_sodium_potassium_pump__sigma = -CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * CHASTE_MATH::Exp(CHASTE_CONST(0.01485884101040119) * mParameters[5]); // dimensionless + const double var_sodium_potassium_pump__f_NaK = 1 / (1 + CHASTE_CONST(0.1245) * CHASTE_MATH::Exp(-CHASTE_CONST(0.10000000000000001) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) + CHASTE_CONST(0.036499999999999998) * var_sodium_potassium_pump__sigma * CHASTE_MATH::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 + CHASTE_MATH::Pow((var_sodium_potassium_pump__K_mNai / var_chaste_interface__intracellular_ion_concentrations__Nai), CHASTE_CONST(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_K1_gate__K1_infinity_V = 1 / (2 + CHASTE_MATH::Exp(CHASTE_CONST(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 + d_dt_chaste_interface_var_membrane__V = CHASTE_CONST(0.001) * var_membrane__V_orig_deriv; // millivolt / millisecond return d_dt_chaste_interface_var_membrane__V; } @@ -1014,7 +1016,7 @@ double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -1044,92 +1046,92 @@ // Units: millimolar; Initial value: 157.8 - const double var_x0 = exp(1.2521739130434781 - 0.16722408026755853 * var_chaste_interface__membrane__V); + const double var_x0 = CHASTE_MATH::Exp(CHASTE_CONST(1.2521739130434781) - CHASTE_CONST(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_x3 = CHASTE_MATH::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_x8 = CHASTE_MATH::Log(var_x7); + const double var_x9 = -CHASTE_CONST(26.713760659695648) * var_x8 + var_chaste_interface__membrane__V; + const double var_x10 = var_x0 * var_x9 / CHASTE_MATH::Pow(var_x1, 2); + const double var_x11 = CHASTE_MATH::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_x14 = CHASTE_MATH::Exp(CHASTE_CONST(0.044600000000000001) * var_chaste_interface__membrane__V); + const double var_x15 = CHASTE_MATH::Sqrt(mParameters[4]); + const double var_x16 = var_x15 * mParameters[12] / (1 + CHASTE_CONST(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_x19 = CHASTE_MATH::Exp(CHASTE_CONST(0.056150836234118207) * var_chaste_interface__membrane__V - CHASTE_CONST(1.5) * var_x8); const double var_x20 = 1 / (13 + mParameters[4]); const double var_x21 = var_x20 * mParameters[11]; const double var_x22 = var_x21 / (2 + var_x19); - const double var_x23 = pow(var_chaste_interface__intracellular_ion_concentrations__Nai, 3); - const double var_x24 = exp(0.013101861787960915 * var_chaste_interface__membrane__V); + const double var_x23 = CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Nai, 3); + const double var_x24 = CHASTE_MATH::Exp(CHASTE_CONST(0.013101861787960915) * var_chaste_interface__membrane__V); const double var_x25 = var_x24 * mParameters[3]; - const double var_x26 = exp(-0.024332029034784559 * var_chaste_interface__membrane__V); - const double var_x27 = pow(mParameters[5], 3); + const double var_x26 = CHASTE_MATH::Exp(-CHASTE_CONST(0.024332029034784559) * var_chaste_interface__membrane__V); + const double var_x27 = CHASTE_MATH::Pow(mParameters[5], 3); const double var_x28 = var_x26 * var_x27; const double var_x29 = var_x28 * var_chaste_interface__intracellular_ion_concentrations__Cai; - const double var_x30 = 1 + 0.20000000000000001 * var_x26; + const double var_x30 = 1 + CHASTE_CONST(0.20000000000000001) * var_x26; const double var_x31 = 1 / var_x30; - const double var_x32 = 1 / (669921.875 + var_x27); - const double var_x33 = 1 / (1.3799999999999999 + mParameters[3]); + const double var_x32 = 1 / (CHASTE_CONST(669921.875) + var_x27); + const double var_x33 = 1 / (CHASTE_CONST(1.3799999999999999) + mParameters[3]); const double var_x34 = var_x32 * var_x33 * mParameters[14]; const double var_x35 = var_x31 * var_x34; - const double var_x36 = var_x35 * (0.024332029034784559 * var_x29 + 0.013101861787960915 * var_x23 * var_x25); + const double var_x36 = var_x35 * (CHASTE_CONST(0.024332029034784559) * var_x29 + CHASTE_CONST(0.013101861787960915) * var_x23 * var_x25); const double var_x37 = 1 / var_chaste_interface__intracellular_ion_concentrations__Nai; - const double var_x38 = pow(var_x37, 1.5); - const double var_x39 = 1 / (1 + 31.622776601683793 * var_x38); - const double var_x40 = exp(-0.0037433890822745476 * var_chaste_interface__membrane__V); - const double var_x41 = exp(0.01485884101040119 * mParameters[5]); - const double var_x42 = 0.037433890822745473 * var_chaste_interface__membrane__V; - const double var_x43 = exp(-var_x42); - const double var_x44 = 1 + 0.1245 * var_x40 + 0.036499999999999998 * var_x43 * (-0.14285714285714285 + 0.14285714285714285 * var_x41); - const double var_x45 = pow(var_x44, (-2)); - const double var_x46 = 0.00046605194074318115 * var_x40 + 0.037433890822745473 * var_x43 * (-0.0052142857142857138 + 0.0052142857142857138 * var_x41); - const double var_x47 = 1 / (1.5 + mParameters[4]); + const double var_x38 = CHASTE_MATH::Pow(var_x37, CHASTE_CONST(1.5)); + const double var_x39 = 1 / (1 + CHASTE_CONST(31.622776601683793) * var_x38); + const double var_x40 = CHASTE_MATH::Exp(-CHASTE_CONST(0.0037433890822745476) * var_chaste_interface__membrane__V); + const double var_x41 = CHASTE_MATH::Exp(CHASTE_CONST(0.01485884101040119) * mParameters[5]); + const double var_x42 = CHASTE_CONST(0.037433890822745473) * var_chaste_interface__membrane__V; + const double var_x43 = CHASTE_MATH::Exp(-var_x42); + const double var_x44 = 1 + CHASTE_CONST(0.1245) * var_x40 + CHASTE_CONST(0.036499999999999998) * var_x43 * (-CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * var_x41); + const double var_x45 = CHASTE_MATH::Pow(var_x44, (-2)); + const double var_x46 = CHASTE_CONST(0.00046605194074318115) * var_x40 + CHASTE_CONST(0.037433890822745473) * var_x43 * (-CHASTE_CONST(0.0052142857142857138) + CHASTE_CONST(0.0052142857142857138) * var_x41); + const double var_x47 = 1 / (CHASTE_CONST(1.5) + mParameters[4]); const double var_x48 = var_x47 * mParameters[4]; const double var_x49 = var_x39 * var_x45 * var_x46 * var_x48; const double var_x50 = var_chaste_interface__L_type_Ca_current__O + var_chaste_interface__L_type_Ca_current__O_Ca; const double var_x51 = var_x50 * var_chaste_interface__L_type_Ca_current_y_gate__y; - const double var_x52 = exp(0.074867781645490947 * var_chaste_interface__membrane__V); + const double var_x52 = CHASTE_MATH::Exp(CHASTE_CONST(0.074867781645490947) * var_chaste_interface__membrane__V); const double var_x53 = -1 + var_x52; const double var_x54 = 1 / var_x53; - const double var_x55 = 0.001 * var_x52 - 0.34100000000000003 * mParameters[3]; + const double var_x55 = CHASTE_CONST(0.001) * var_x52 - CHASTE_CONST(0.34100000000000003) * mParameters[3]; const double var_x56 = var_x54 * var_x55 * mParameters[6]; const double var_x57 = var_x56 * var_chaste_interface__membrane__V; - const double var_x58 = 1 / (1 - 54518.063995566983 * var_x57); - const double var_x59 = exp(var_x42); + const double var_x58 = 1 / (1 - CHASTE_CONST(54518.063995566983) * var_x57); + const double var_x59 = CHASTE_MATH::Exp(var_x42); const double var_x60 = -1 + var_x59; const double var_x61 = 1 / var_x60; const double var_x62 = var_x59 * var_chaste_interface__intracellular_ion_concentrations__Ki; const double var_x63 = var_x62 - mParameters[4]; const double var_x64 = var_x58 * var_x61 * var_x63; - const double var_x65 = 2.0912447872899554e-6 * var_x64; + const double var_x65 = CHASTE_CONST(2.0912447872899554e-6) * var_x64; const double var_x66 = var_x51 * var_x56; const double var_x67 = var_x52 * mParameters[6] * var_chaste_interface__membrane__V; const double var_x68 = var_x54 * var_x67; const double var_x69 = var_x51 * var_x68; const double var_x70 = -var_x29 + var_x23 * var_x24 * mParameters[3]; - const double var_x71 = var_x26 * var_x34 * var_x70 / pow(var_x30, 2); - const double var_x72 = pow((1 + 0.5 * var_x19), (-2)); + const double var_x71 = var_x26 * var_x34 * var_x70 / CHASTE_MATH::Pow(var_x30, 2); + const double var_x72 = CHASTE_MATH::Pow((1 + CHASTE_CONST(0.5) * var_x19), (-2)); const double var_x73 = var_x19 * var_x21 * var_x72 * var_x9; - const double var_x74 = pow((0.66912010705921721 + var_x14), (-2)); + const double var_x74 = CHASTE_MATH::Pow((CHASTE_CONST(0.66912010705921721) + var_x14), (-2)); const double var_x75 = var_x51 * var_x61 * var_chaste_interface__membrane__V; const double var_x76 = var_x58 * var_x75; const double var_x77 = var_x62 * var_x76; - const double var_x78 = pow(var_x53, (-2)); + const double var_x78 = CHASTE_MATH::Pow(var_x53, (-2)); const double var_x79 = var_x55 * var_x67 * var_x78; - const double var_x80 = var_x63 * var_x75 * (4.0816465109550109 * var_x68 + 54518.063995566983 * var_x56 - 4081.6465109550109 * var_x79) / pow((1.8342544226833014e-5 - var_x57), 2); - const double var_x81 = pow(var_x60, (-2)); + const double var_x80 = var_x63 * var_x75 * (CHASTE_CONST(4.0816465109550109) * var_x68 + CHASTE_CONST(54518.063995566983) * var_x56 - CHASTE_CONST(4081.6465109550109) * var_x79) / CHASTE_MATH::Pow((CHASTE_CONST(1.8342544226833014e-5) - var_x57), 2); + const double var_x81 = CHASTE_MATH::Pow(var_x60, (-2)); const double var_x82 = 1 / mParameters[7]; - const double var_x83 = 0.001 * var_x82; + const double var_x83 = CHASTE_CONST(0.001) * var_x82; - partialF = -var_x83 * (0.0034841999999999998 + var_x13 + var_x3 + var_x5 + 0.5 * var_x17 + 5000 * var_x36 + 0.0022160000000000001 * var_x2 + 0.69299999999999995 * var_x49 + 1.0816363254030779 * var_x69 + 7.8283429051047759e-8 * var_x77 + 0.00037056856187290968 * var_x10 + 24.332029034784558 * var_x71 + 7.035970683610309e-16 * var_x80 + 14447.286958825252 * var_x66 + var_x18 * var_x22 + var_x51 * var_x65 - 1081.636325403078 * var_x51 * var_x79 - 0.014037709058529552 * var_x73 * mParameters[4] - 7.8283429051047759e-8 * var_x51 * var_x58 * var_x59 * var_x63 * var_x81 * var_chaste_interface__membrane__V - 0.014921378387420543 * var_x14 * var_x15 * var_x74 * var_x9 * mParameters[12] * var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr); + partialF = -var_x83 * (CHASTE_CONST(0.0034841999999999998) + var_x13 + var_x3 + var_x5 + CHASTE_CONST(0.5) * var_x17 + 5000 * var_x36 + CHASTE_CONST(0.0022160000000000001) * var_x2 + CHASTE_CONST(0.69299999999999995) * var_x49 + CHASTE_CONST(1.0816363254030779) * var_x69 + CHASTE_CONST(7.8283429051047759e-8) * var_x77 + CHASTE_CONST(0.00037056856187290968) * var_x10 + CHASTE_CONST(24.332029034784558) * var_x71 + CHASTE_CONST(7.035970683610309e-16) * var_x80 + CHASTE_CONST(14447.286958825252) * var_x66 + var_x18 * var_x22 + var_x51 * var_x65 - CHASTE_CONST(1081.636325403078) * var_x51 * var_x79 - CHASTE_CONST(0.014037709058529552) * var_x73 * mParameters[4] - CHASTE_CONST(7.8283429051047759e-8) * var_x51 * var_x58 * var_x59 * var_x63 * var_x81 * var_chaste_interface__membrane__V - CHASTE_CONST(0.014921378387420543) * var_x14 * var_x15 * var_x74 * var_x9 * mParameters[12] * var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr); } else { @@ -1144,7 +1146,7 @@ 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -1161,28 +1163,28 @@ // 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_Na_Ca_exchanger__K_mCa = CHASTE_CONST(1.3799999999999999); // millimolar + const double var_Na_Ca_exchanger__K_mNa = CHASTE_CONST(87.5); // millimolar + const double var_Na_Ca_exchanger__K_sat = CHASTE_CONST(0.20000000000000001); // dimensionless + const double var_Na_Ca_exchanger__eta = CHASTE_CONST(0.34999999999999998); // dimensionless + const double var_SERCA2a_pump__K_fb = CHASTE_CONST(0.00016799999999999999); // millimolar + const double var_SERCA2a_pump__K_rb = CHASTE_CONST(3.29); // millimolar + const double var_SERCA2a_pump__N_fb = CHASTE_CONST(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_SERCA2a_pump__Vmaxf = CHASTE_CONST(0.081299999999999997); // millimolar_per_second + const double var_SERCA2a_pump__Vmaxr = CHASTE_CONST(0.318); // millimolar_per_second + const double var_calcium_background_current__g_Cab = CHASTE_CONST(0.00038420000000000001); // milliS_per_microF + const double var_intracellular_Ca_fluxes__HTRPN_tot = CHASTE_CONST(0.14000000000000001); // dimensionless + const double var_intracellular_Ca_fluxes__LTRPN_tot = CHASTE_CONST(0.070000000000000007); // dimensionless + const double var_intracellular_Ca_fluxes__k_htrpn_minus = CHASTE_CONST(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_intracellular_Ca_fluxes__tau_xfer = CHASTE_CONST(0.026700000000000002); // second + const double var_intracellular_ion_concentrations__A_cap = CHASTE_CONST(0.00015339999999999999); // cm2 + const double var_intracellular_ion_concentrations__CMDN_tot = CHASTE_CONST(0.050000000000000003); // millimolar + const double var_SERCA2a_pump__rb = CHASTE_MATH::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 = CHASTE_MATH::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 @@ -1191,21 +1193,21 @@ 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_intracellular_ion_concentrations__K_mCMDN = CHASTE_CONST(0.0023800000000000002); // millimolar + const double var_intracellular_ion_concentrations__K_mEGTA = CHASTE_CONST(0.00014999999999999999); // millimolar + const double var_intracellular_ion_concentrations__V_myo = CHASTE_CONST(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 / CHASTE_MATH::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 / CHASTE_MATH::Pow((var_chaste_interface__intracellular_ion_concentrations__Cai + var_intracellular_ion_concentrations__K_mEGTA), 2)); // dimensionless + const double var_membrane__F = CHASTE_CONST(96.485341500000004); // coulomb_per_millimole + const double var_membrane__R = CHASTE_CONST(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_pCa = CHASTE_CONST(0.050000000000000003); // microA_per_microF + const double var_sarcolemmal_calcium_pump__K_mpCa = CHASTE_CONST(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__E_Ca = CHASTE_CONST(0.5) * var_membrane__R * var_membrane__T * CHASTE_MATH::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 + const double var_Na_Ca_exchanger__i_NaCa = 5000 * (CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Nai, 3) * mParameters[3] * CHASTE_MATH::Exp(var_Na_Ca_exchanger__eta * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - CHASTE_MATH::Pow(mParameters[5], 3) * var_chaste_interface__intracellular_ion_concentrations__Cai * CHASTE_MATH::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 * CHASTE_MATH::Exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (CHASTE_MATH::Pow(var_Na_Ca_exchanger__K_mNa, 3) + CHASTE_MATH::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 + CHASTE_CONST(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 = CHASTE_CONST(0.001) * var_intracellular_ion_concentrations__Cai_orig_deriv; // millimolar / millisecond return d_dt_chaste_interface_var_intracellular_ion_concentrations__Cai; } @@ -1215,7 +1217,7 @@ double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -1231,38 +1233,38 @@ // Units: millimolar; Initial value: 0.257 - const double var_x23 = pow(var_chaste_interface__intracellular_ion_concentrations__Nai, 3); - const double var_x24 = exp(0.013101861787960915 * var_chaste_interface__membrane__V); - const double var_x26 = exp(-0.024332029034784559 * var_chaste_interface__membrane__V); - const double var_x27 = pow(mParameters[5], 3); + const double var_x23 = CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Nai, 3); + const double var_x24 = CHASTE_MATH::Exp(CHASTE_CONST(0.013101861787960915) * var_chaste_interface__membrane__V); + const double var_x26 = CHASTE_MATH::Exp(-CHASTE_CONST(0.024332029034784559) * var_chaste_interface__membrane__V); + const double var_x27 = CHASTE_MATH::Pow(mParameters[5], 3); const double var_x28 = var_x26 * var_x27; const double var_x29 = var_x28 * var_chaste_interface__intracellular_ion_concentrations__Cai; - const double var_x30 = 1 + 0.20000000000000001 * var_x26; + const double var_x30 = 1 + CHASTE_CONST(0.20000000000000001) * var_x26; const double var_x31 = 1 / var_x30; - const double var_x32 = 1 / (669921.875 + var_x27); - const double var_x33 = 1 / (1.3799999999999999 + mParameters[3]); + const double var_x32 = 1 / (CHASTE_CONST(669921.875) + var_x27); + const double var_x33 = 1 / (CHASTE_CONST(1.3799999999999999) + mParameters[3]); const double var_x34 = var_x32 * var_x33 * mParameters[14]; const double var_x35 = var_x31 * var_x34; const double var_x70 = -var_x29 + var_x23 * var_x24 * mParameters[3]; - const double var_x84 = 5.0000000000000002e-5 + var_chaste_interface__intracellular_ion_concentrations__Cai; + const double var_x84 = CHASTE_CONST(5.0000000000000002e-5) + var_chaste_interface__intracellular_ion_concentrations__Cai; const double var_x85 = 1 / var_x84; const double var_x86 = 1 / var_chaste_interface__intracellular_ion_concentrations__Cai; - const double var_x87 = pow(var_x84, (-2)); - const double var_x113 = 0.0023800000000000002 + var_chaste_interface__intracellular_ion_concentrations__Cai; - const double var_x114 = 1 + 0.00011900000000000002 / pow(var_x113, 2); + const double var_x87 = CHASTE_MATH::Pow(var_x84, (-2)); + const double var_x113 = CHASTE_CONST(0.0023800000000000002) + var_chaste_interface__intracellular_ion_concentrations__Cai; + const double var_x114 = 1 + CHASTE_CONST(0.00011900000000000002) / CHASTE_MATH::Pow(var_x113, 2); const double var_x115 = 1 / var_x114; - const double var_x116 = 0.001 * var_x115; - const double var_x117 = 0.0015381954438488301 * var_x85; - const double var_x118 = pow(var_chaste_interface__intracellular_ion_concentrations__Cai, 0.19999999999999996); - const double var_x119 = pow(var_chaste_interface__intracellular_ion_concentrations__Cai, 1.2); - const double var_x120 = pow(var_chaste_interface__intracellular_ion_concentrations__Ca_NSR, 1); - const double var_x121 = 1 / (1 + 33855.471141425078 * var_x119 + 0.303951367781155 * var_x120); + const double var_x116 = CHASTE_CONST(0.001) * var_x115; + const double var_x117 = CHASTE_CONST(0.0015381954438488301) * var_x85; + const double var_x118 = CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Cai, CHASTE_CONST(0.19999999999999996)); + const double var_x119 = CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Cai, CHASTE_CONST(1.2)); + const double var_x120 = CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Ca_NSR, 1); + const double var_x121 = 1 / (1 + CHASTE_CONST(33855.471141425078) * var_x119 + CHASTE_CONST(0.303951367781155) * var_x120); const double var_x122 = var_x121 * mParameters[1]; - const double var_x123 = pow((2.9537323401073989e-5 + var_x119 + 8.9779098483507565e-6 * var_x120), (-2)); - const double var_x124 = 2752.4498037978587 * var_x119 - 0.096656534954407292 * var_x120; - const double var_x125 = 2800.0000000000005 * var_chaste_interface__intracellular_ion_concentrations__Cai; + const double var_x123 = CHASTE_MATH::Pow((CHASTE_CONST(2.9537323401073989e-5) + var_x119 + CHASTE_CONST(8.9779098483507565e-6) * var_x120), (-2)); + const double var_x124 = CHASTE_CONST(2752.4498037978587) * var_x119 - CHASTE_CONST(0.096656534954407292) * var_x120; + const double var_x125 = CHASTE_CONST(2800.0000000000005) * var_chaste_interface__intracellular_ion_concentrations__Cai; - partialF = var_x116 * (-5637.4531835205999 - var_x117 + 2800.0000000000005 * var_chaste_interface__intracellular_Ca_fluxes__HTRPNCa + 2800.0000000000005 * var_chaste_interface__intracellular_Ca_fluxes__LTRPNCa - 0.00015787156411954756 * var_x86 + 0.0015381954438488301 * var_x87 * var_chaste_interface__intracellular_ion_concentrations__Cai - 307.63908876976598 * var_x28 * var_x35 - 3302.9397645574304 * var_x118 * var_x122 + 3.5444788081288787e-5 * var_x118 * var_x123 * var_x124 * 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_x86 * mParameters[3]) - 37.453183520599246 * var_chaste_interface__intracellular_ion_concentrations__Cai - 1.181949379053441e-5 * var_chaste_interface__membrane__V - var_x117 * var_chaste_interface__intracellular_ion_concentrations__Cai - var_x122 * var_x124 - var_x125 * (1 - var_chaste_interface__intracellular_Ca_fluxes__HTRPNCa) - var_x125 * (1 - var_chaste_interface__intracellular_Ca_fluxes__LTRPNCa) + 307.63908876976598 * var_x31 * var_x32 * var_x33 * var_x70 * mParameters[14]) / (pow(var_x113, 3) * pow(var_x114, 2)); + partialF = var_x116 * (-CHASTE_CONST(5637.4531835205999) - var_x117 + CHASTE_CONST(2800.0000000000005) * var_chaste_interface__intracellular_Ca_fluxes__HTRPNCa + CHASTE_CONST(2800.0000000000005) * var_chaste_interface__intracellular_Ca_fluxes__LTRPNCa - CHASTE_CONST(0.00015787156411954756) * var_x86 + CHASTE_CONST(0.0015381954438488301) * var_x87 * var_chaste_interface__intracellular_ion_concentrations__Cai - CHASTE_CONST(307.63908876976598) * var_x28 * var_x35 - CHASTE_CONST(3302.9397645574304) * var_x118 * var_x122 + CHASTE_CONST(3.5444788081288787e-5) * var_x118 * var_x123 * var_x124 * mParameters[1]) + CHASTE_CONST(2.3800000000000004e-7) * (CHASTE_CONST(2.8000000000000003) * var_chaste_interface__intracellular_Ca_fluxes__LTRPNCa + CHASTE_CONST(37.453183520599246) * var_chaste_interface__intracellular_ion_concentrations__Ca_ss + CHASTE_CONST(0.0092400000000000017) * var_chaste_interface__intracellular_Ca_fluxes__HTRPNCa + CHASTE_CONST(0.00015787156411954756) * CHASTE_MATH::Log(var_x86 * mParameters[3]) - CHASTE_CONST(37.453183520599246) * var_chaste_interface__intracellular_ion_concentrations__Cai - CHASTE_CONST(1.181949379053441e-5) * var_chaste_interface__membrane__V - var_x117 * var_chaste_interface__intracellular_ion_concentrations__Cai - var_x122 * var_x124 - var_x125 * (1 - var_chaste_interface__intracellular_Ca_fluxes__HTRPNCa) - var_x125 * (1 - var_chaste_interface__intracellular_Ca_fluxes__LTRPNCa) + CHASTE_CONST(307.63908876976598) * var_x31 * var_x32 * var_x33 * var_x70 * mParameters[14]) / (CHASTE_MATH::Pow(var_x113, 3) * CHASTE_MATH::Pow(var_x114, 2)); } else { @@ -1277,18 +1279,18 @@ 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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__E0_m = CHASTE_CONST(47.130000000000003) + var_chaste_interface__membrane__V; // millivolt + const double var_fast_sodium_current_m_gate__alpha_m = ((CHASTE_MATH::Abs(var_fast_sodium_current_m_gate__E0_m) < CHASTE_CONST(1.0000000000000001e-5)) ? (1000 / (CHASTE_CONST(0.10000000000000001) - CHASTE_CONST(0.0050000000000000001) * var_fast_sodium_current_m_gate__E0_m)) : (320 * var_fast_sodium_current_m_gate__E0_m / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(0.10000000000000001) * var_fast_sodium_current_m_gate__E0_m)))); // per_second + const double var_fast_sodium_current_m_gate__beta_m = 80 * CHASTE_MATH::Exp(-CHASTE_CONST(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 d_dt_chaste_interface_var_fast_sodium_current_m_gate__m = CHASTE_CONST(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; } @@ -1298,21 +1300,21 @@ double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -96.1638 - const double var_x128 = exp(-0.090909090909090912 * var_chaste_interface__membrane__V); + const double var_x128 = CHASTE_MATH::Exp(-CHASTE_CONST(0.090909090909090912) * var_chaste_interface__membrane__V); const double var_x130 = var_chaste_interface__membrane__V >= -90; - const double var_x131 = 47.130000000000003 + var_chaste_interface__membrane__V; - const double var_x132 = (var_x130) && (fabs(var_x131) < 1.0000000000000001e-5); - const double var_x133 = 0.10000000000000001 * var_chaste_interface__membrane__V; - const double var_x134 = exp(-4.7130000000000001 - var_x133); + const double var_x131 = CHASTE_CONST(47.130000000000003) + var_chaste_interface__membrane__V; + const double var_x132 = (var_x130) && (CHASTE_MATH::Abs(var_x131) < CHASTE_CONST(1.0000000000000001e-5)); + const double var_x133 = CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V; + const double var_x134 = CHASTE_MATH::Exp(-CHASTE_CONST(4.7130000000000001) - var_x133); const double var_x135 = 1 - var_x134; const double var_x136 = 320 / var_x135; const double var_x137 = 80 * var_x128; - partialF = 0.001 * ((var_x132) ? (-var_x137 - 1000 / (-0.13565000000000002 - 0.0050000000000000001 * var_chaste_interface__membrane__V)) : ((var_x130) ? (-var_x137 - var_x131 * var_x136) : (0))); + partialF = CHASTE_CONST(0.001) * ((var_x132) ? (-var_x137 - 1000 / (-CHASTE_CONST(0.13565000000000002) - CHASTE_CONST(0.0050000000000000001) * var_chaste_interface__membrane__V)) : ((var_x130) ? (-var_x137 - var_x131 * var_x136) : (0))); } else { @@ -1327,19 +1329,19 @@ 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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__alpha_h = ((var_chaste_interface__membrane__V < -40) ? (135 * CHASTE_MATH::Exp(-CHASTE_CONST(11.764705882352942) + CHASTE_CONST(0.14705882352941177) * mParameters[10] - CHASTE_CONST(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 * CHASTE_MATH::Exp(CHASTE_CONST(0.079000000000000001) * var_chaste_interface__membrane__V - CHASTE_CONST(0.079000000000000001) * mParameters[10]) + 310000 * CHASTE_MATH::Exp(CHASTE_CONST(0.34999999999999998) * var_chaste_interface__membrane__V - CHASTE_CONST(0.34999999999999998) * mParameters[10])) : (CHASTE_CONST(7692.3076923076924) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.96036036036036043) + CHASTE_CONST(0.0900900900900901) * mParameters[10] - CHASTE_CONST(0.0900900900900901) * var_chaste_interface__membrane__V)))); // per_second + const double var_fast_sodium_current_h_gate__h_inf = CHASTE_CONST(0.01) * mParameters[9] + (1 - CHASTE_CONST(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 d_dt_chaste_interface_var_fast_sodium_current_h_gate__h = CHASTE_CONST(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; } @@ -1349,19 +1351,19 @@ double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -96.1638 - const double var_x138 = exp(-11.764705882352942 + 0.14705882352941177 * mParameters[10] - 0.14705882352941177 * var_chaste_interface__membrane__V); + const double var_x138 = CHASTE_MATH::Exp(-CHASTE_CONST(11.764705882352942) + CHASTE_CONST(0.14705882352941177) * mParameters[10] - CHASTE_CONST(0.14705882352941177) * var_chaste_interface__membrane__V); const double var_x139 = var_chaste_interface__membrane__V < -40; const double var_x140 = ((var_x139) ? (135 * var_x138) : (0)); - const double var_x141 = exp(0.079000000000000001 * var_chaste_interface__membrane__V - 0.079000000000000001 * mParameters[10]); - const double var_x142 = exp(0.34999999999999998 * var_chaste_interface__membrane__V - 0.34999999999999998 * mParameters[10]); - const double var_x143 = exp(-0.96036036036036043 + 0.0900900900900901 * mParameters[10] - 0.0900900900900901 * var_chaste_interface__membrane__V); + const double var_x141 = CHASTE_MATH::Exp(CHASTE_CONST(0.079000000000000001) * var_chaste_interface__membrane__V - CHASTE_CONST(0.079000000000000001) * mParameters[10]); + const double var_x142 = CHASTE_MATH::Exp(CHASTE_CONST(0.34999999999999998) * var_chaste_interface__membrane__V - CHASTE_CONST(0.34999999999999998) * mParameters[10]); + const double var_x143 = CHASTE_MATH::Exp(-CHASTE_CONST(0.96036036036036043) + CHASTE_CONST(0.0900900900900901) * mParameters[10] - CHASTE_CONST(0.0900900900900901) * var_chaste_interface__membrane__V); const double var_x144 = 1 + var_x143; - const double var_x145 = ((var_x139) ? (3560 * var_x141 + 310000 * var_x142) : (7692.3076923076924 / var_x144)); - const double var_x146 = 0.001 * var_x140 + 0.001 * var_x145; + const double var_x145 = ((var_x139) ? (3560 * var_x141 + 310000 * var_x142) : (CHASTE_CONST(7692.3076923076924) / var_x144)); + const double var_x146 = CHASTE_CONST(0.001) * var_x140 + CHASTE_CONST(0.001) * var_x145; partialF = -var_x146; } @@ -1378,19 +1380,19 @@ 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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__alpha_j = ((var_chaste_interface__membrane__V < -40) ? (1000 * (CHASTE_CONST(37.780000000000001) + var_chaste_interface__membrane__V) * (-127140 * CHASTE_MATH::Exp(CHASTE_CONST(0.24440000000000001) * var_chaste_interface__membrane__V - CHASTE_CONST(0.24440000000000001) * mParameters[10]) - CHASTE_CONST(3.4740000000000003e-5) * CHASTE_MATH::Exp(CHASTE_CONST(0.043909999999999998) * mParameters[10] - CHASTE_CONST(0.043909999999999998) * var_chaste_interface__membrane__V)) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(24.640530000000002) + CHASTE_CONST(0.311) * var_chaste_interface__membrane__V - CHASTE_CONST(0.311) * mParameters[10]))) : (0)); // per_second + const double var_fast_sodium_current_j_gate__beta_j = ((var_chaste_interface__membrane__V < -40) ? (CHASTE_CONST(121.2) * CHASTE_MATH::Exp(CHASTE_CONST(0.01052) * mParameters[10] - CHASTE_CONST(0.01052) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(5.5312920000000005) + CHASTE_CONST(0.13780000000000001) * mParameters[10] - CHASTE_CONST(0.13780000000000001) * var_chaste_interface__membrane__V))) : (300 * CHASTE_MATH::Exp(CHASTE_CONST(2.5349999999999999e-7) * mParameters[10] - CHASTE_CONST(2.5349999999999999e-7) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(3.2000000000000002) + CHASTE_CONST(0.10000000000000001) * mParameters[10] - CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V)))); // per_second + const double var_fast_sodium_current_j_gate__j_inf = CHASTE_CONST(0.01) * mParameters[9] + (1 - CHASTE_CONST(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 d_dt_chaste_interface_var_fast_sodium_current_j_gate__j = CHASTE_CONST(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; } @@ -1400,31 +1402,31 @@ double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -96.1638 - const double var_x133 = 0.10000000000000001 * var_chaste_interface__membrane__V; + const double var_x133 = CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V; const double var_x139 = var_chaste_interface__membrane__V < -40; - const double var_x153 = exp(-5.5312920000000005 + 0.13780000000000001 * mParameters[10] - 0.13780000000000001 * var_chaste_interface__membrane__V); + const double var_x153 = CHASTE_MATH::Exp(-CHASTE_CONST(5.5312920000000005) + CHASTE_CONST(0.13780000000000001) * mParameters[10] - CHASTE_CONST(0.13780000000000001) * var_chaste_interface__membrane__V); const double var_x154 = 1 + var_x153; - const double var_x155 = exp(0.01052 * mParameters[10] - 0.01052 * var_chaste_interface__membrane__V); + const double var_x155 = CHASTE_MATH::Exp(CHASTE_CONST(0.01052) * mParameters[10] - CHASTE_CONST(0.01052) * var_chaste_interface__membrane__V); const double var_x156 = var_x155 / var_x154; - const double var_x157 = exp(-3.2000000000000002 - var_x133 + 0.10000000000000001 * mParameters[10]); + const double var_x157 = CHASTE_MATH::Exp(-CHASTE_CONST(3.2000000000000002) - var_x133 + CHASTE_CONST(0.10000000000000001) * mParameters[10]); const double var_x158 = 1 + var_x157; - const double var_x159 = exp(2.5349999999999999e-7 * mParameters[10] - 2.5349999999999999e-7 * var_chaste_interface__membrane__V); + const double var_x159 = CHASTE_MATH::Exp(CHASTE_CONST(2.5349999999999999e-7) * mParameters[10] - CHASTE_CONST(2.5349999999999999e-7) * var_chaste_interface__membrane__V); const double var_x160 = var_x159 / var_x158; - const double var_x161 = ((var_x139) ? (121.2 * var_x156) : (300 * var_x160)); - const double var_x162 = 37.780000000000001 + var_chaste_interface__membrane__V; - const double var_x163 = exp(0.24440000000000001 * var_chaste_interface__membrane__V - 0.24440000000000001 * mParameters[10]); - const double var_x164 = exp(0.043909999999999998 * mParameters[10] - 0.043909999999999998 * var_chaste_interface__membrane__V); - const double var_x165 = -127140 * var_x163 - 3.4740000000000003e-5 * var_x164; - const double var_x166 = exp(24.640530000000002 + 0.311 * var_chaste_interface__membrane__V - 0.311 * mParameters[10]); + const double var_x161 = ((var_x139) ? (CHASTE_CONST(121.2) * var_x156) : (300 * var_x160)); + const double var_x162 = CHASTE_CONST(37.780000000000001) + var_chaste_interface__membrane__V; + const double var_x163 = CHASTE_MATH::Exp(CHASTE_CONST(0.24440000000000001) * var_chaste_interface__membrane__V - CHASTE_CONST(0.24440000000000001) * mParameters[10]); + const double var_x164 = CHASTE_MATH::Exp(CHASTE_CONST(0.043909999999999998) * mParameters[10] - CHASTE_CONST(0.043909999999999998) * var_chaste_interface__membrane__V); + const double var_x165 = -127140 * var_x163 - CHASTE_CONST(3.4740000000000003e-5) * var_x164; + const double var_x166 = CHASTE_MATH::Exp(CHASTE_CONST(24.640530000000002) + CHASTE_CONST(0.311) * var_chaste_interface__membrane__V - CHASTE_CONST(0.311) * mParameters[10]); const double var_x167 = 1 + var_x166; const double var_x168 = 1000 / var_x167; const double var_x169 = var_x165 * var_x168; const double var_x170 = ((var_x139) ? (var_x162 * var_x169) : (0)); - const double var_x171 = 0.001 * var_x161 + 0.001 * var_x170; + const double var_x171 = CHASTE_CONST(0.001) * var_x161 + CHASTE_CONST(0.001) * var_x170; partialF = -var_x171; } @@ -1441,20 +1443,20 @@ 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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__K12 = CHASTE_MATH::Exp(-CHASTE_CONST(5.4950000000000001) + CHASTE_CONST(0.1691) * var_chaste_interface__membrane__V); // dimensionless + const double var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__K21 = CHASTE_MATH::Exp(-CHASTE_CONST(7.6769999999999996) - CHASTE_CONST(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__tau_X_kr = CHASTE_CONST(0.001) / (var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__K12 + var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__K21) + CHASTE_CONST(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 d_dt_chaste_interface_var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr = CHASTE_CONST(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; } @@ -1464,17 +1466,17 @@ double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -96.1638 - const double var_x176 = exp(-7.6769999999999996 - 0.012800000000000001 * var_chaste_interface__membrane__V); - const double var_x177 = exp(-5.4950000000000001 + 0.1691 * var_chaste_interface__membrane__V); + const double var_x176 = CHASTE_MATH::Exp(-CHASTE_CONST(7.6769999999999996) - CHASTE_CONST(0.012800000000000001) * var_chaste_interface__membrane__V); + const double var_x177 = CHASTE_MATH::Exp(-CHASTE_CONST(5.4950000000000001) + CHASTE_CONST(0.1691) * var_chaste_interface__membrane__V); const double var_x178 = var_x176 + var_x177; const double var_x179 = 1 / var_x178; - const double var_x180 = 1 / (0.027 + 0.001 * var_x179); + const double var_x180 = 1 / (CHASTE_CONST(0.027) + CHASTE_CONST(0.001) * var_x179); - partialF = -0.001 * var_x180; + partialF = -CHASTE_CONST(0.001) * var_x180; } else { @@ -1489,17 +1491,17 @@ 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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_infinity = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(1.8161764705882353) - CHASTE_CONST(0.073529411764705885) * var_chaste_interface__membrane__V)); // dimensionless + const double var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__tau_X_ks = CHASTE_CONST(0.001) / (CHASTE_CONST(0.00013100000000000001) * (-10 + var_chaste_interface__membrane__V) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.68699999999999994) + CHASTE_CONST(0.068699999999999997) * var_chaste_interface__membrane__V)) + CHASTE_CONST(7.1899999999999999e-5) * (-10 + var_chaste_interface__membrane__V) / (1 - CHASTE_MATH::Exp(CHASTE_CONST(1.48) - CHASTE_CONST(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 d_dt_chaste_interface_var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks = CHASTE_CONST(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; } @@ -1509,19 +1511,19 @@ double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -96.1638 - const double var_x185 = exp(-0.68699999999999994 + 0.068699999999999997 * var_chaste_interface__membrane__V); + const double var_x185 = CHASTE_MATH::Exp(-CHASTE_CONST(0.68699999999999994) + CHASTE_CONST(0.068699999999999997) * var_chaste_interface__membrane__V); const double var_x186 = -1 + var_x185; const double var_x187 = 1 / var_x186; - const double var_x188 = exp(1.48 - 0.14799999999999999 * var_chaste_interface__membrane__V); + const double var_x188 = CHASTE_MATH::Exp(CHASTE_CONST(1.48) - CHASTE_CONST(0.14799999999999999) * var_chaste_interface__membrane__V); const double var_x189 = 1 - var_x188; const double var_x190 = 1 / var_x189; const double var_x191 = -10 + var_chaste_interface__membrane__V; - partialF = -0.00013100000000000001 * var_x187 * var_x191 - 7.1899999999999999e-5 * var_x190 * var_x191; + partialF = -CHASTE_CONST(0.00013100000000000001) * var_x187 * var_x191 - CHASTE_CONST(7.1899999999999999e-5) * var_x190 * var_x191; } else { @@ -1536,17 +1538,17 @@ 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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__alpha_X_to1 = CHASTE_CONST(45.159999999999997) * CHASTE_MATH::Exp(CHASTE_CONST(0.035770000000000003) * var_chaste_interface__membrane__V); // per_second + const double var_transient_outward_potassium_current_X_to1_gate__beta_X_to1 = CHASTE_CONST(98.900000000000006) * CHASTE_MATH::Exp(-CHASTE_CONST(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 d_dt_chaste_interface_var_transient_outward_potassium_current_X_to1_gate__X_to1 = CHASTE_CONST(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; } @@ -1556,14 +1558,14 @@ double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -96.1638 - const double var_x192 = exp(0.035770000000000003 * var_chaste_interface__membrane__V); - const double var_x193 = exp(-0.062370000000000002 * var_chaste_interface__membrane__V); + const double var_x192 = CHASTE_MATH::Exp(CHASTE_CONST(0.035770000000000003) * var_chaste_interface__membrane__V); + const double var_x193 = CHASTE_MATH::Exp(-CHASTE_CONST(0.062370000000000002) * var_chaste_interface__membrane__V); - partialF = -0.045159999999999999 * var_x192 - 0.098900000000000002 * var_x193; + partialF = -CHASTE_CONST(0.045159999999999999) * var_x192 - CHASTE_CONST(0.098900000000000002) * var_x193; } else { @@ -1578,17 +1580,17 @@ 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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__alpha_Y_to1 = CHASTE_CONST(5.415) * CHASTE_MATH::Exp(-CHASTE_CONST(6.7000000000000002) - CHASTE_CONST(0.20000000000000001) * var_chaste_interface__membrane__V) / (1 + CHASTE_CONST(0.051334999999999999) * CHASTE_MATH::Exp(-CHASTE_CONST(6.7000000000000002) - CHASTE_CONST(0.20000000000000001) * var_chaste_interface__membrane__V)); // per_second + const double var_transient_outward_potassium_current_Y_to1_gate__beta_Y_to1 = CHASTE_CONST(5.415) * CHASTE_MATH::Exp(CHASTE_CONST(6.7000000000000002) + CHASTE_CONST(0.20000000000000001) * var_chaste_interface__membrane__V) / (1 + CHASTE_CONST(0.051334999999999999) * CHASTE_MATH::Exp(CHASTE_CONST(6.7000000000000002) + CHASTE_CONST(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 + const double d_dt_chaste_interface_var_transient_outward_potassium_current_Y_to1_gate__Y_to1 = CHASTE_CONST(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; } @@ -1598,20 +1600,20 @@ double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -96.1638 - const double var_x194 = 0.20000000000000001 * var_chaste_interface__membrane__V; - const double var_x195 = 6.7000000000000002 + var_x194; - const double var_x196 = exp(var_x195); - const double var_x197 = 1 + 0.051334999999999999 * var_x196; + const double var_x194 = CHASTE_CONST(0.20000000000000001) * var_chaste_interface__membrane__V; + const double var_x195 = CHASTE_CONST(6.7000000000000002) + var_x194; + const double var_x196 = CHASTE_MATH::Exp(var_x195); + const double var_x197 = 1 + CHASTE_CONST(0.051334999999999999) * var_x196; const double var_x198 = var_x196 / var_x197; - const double var_x200 = exp(-var_x195); - const double var_x201 = 1 + 0.051334999999999999 * var_x200; + const double var_x200 = CHASTE_MATH::Exp(-var_x195); + const double var_x201 = 1 + CHASTE_CONST(0.051334999999999999) * var_x200; const double var_x202 = var_x200 / var_x201; - partialF = -0.0054149999999999997 * var_x198 - 0.0054149999999999997 * var_x202; + partialF = -CHASTE_CONST(0.0054149999999999997) * var_x198 - CHASTE_CONST(0.0054149999999999997) * var_x202; } else { @@ -1636,7 +1638,7 @@ 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 + const double d_dt_chaste_interface_var_L_type_Ca_current__O = CHASTE_CONST(0.001) * var_L_type_Ca_current__O_orig_deriv; // 1 / millisecond return d_dt_chaste_interface_var_L_type_Ca_current__O; } @@ -1674,7 +1676,7 @@ 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 + const double d_dt_chaste_interface_var_L_type_Ca_current__O_Ca = CHASTE_CONST(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; } @@ -1702,7 +1704,7 @@ 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -1716,11 +1718,11 @@ // 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__gamma = CHASTE_CONST(103.75) * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; // per_second + const double var_L_type_Ca_current__alpha = 400 * CHASTE_MATH::Exp(CHASTE_CONST(0.20000000000000001) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V); // per_second + const double var_L_type_Ca_current__beta = 50 * CHASTE_MATH::Exp(-CHASTE_CONST(0.15384615384615385) - CHASTE_CONST(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 d_dt_chaste_interface_var_L_type_Ca_current__C0 = CHASTE_CONST(0.001) * var_L_type_Ca_current__C0_orig_deriv; // 1 / millisecond return d_dt_chaste_interface_var_L_type_Ca_current__C0; } @@ -1730,15 +1732,15 @@ double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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_x205 = exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); - const double var_x208 = 1.6000000000000001 * var_x205; - const double var_x209 = 0.10375 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; + const double var_x205 = CHASTE_MATH::Exp(CHASTE_CONST(0.20000000000000001) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V); + const double var_x208 = CHASTE_CONST(1.6000000000000001) * var_x205; + const double var_x209 = CHASTE_CONST(0.10375) * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; partialF = -var_x208 - var_x209; } @@ -1755,7 +1757,7 @@ 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -1773,11 +1775,11 @@ 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__gamma = CHASTE_CONST(103.75) * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; // per_second + const double var_L_type_Ca_current__alpha = 400 * CHASTE_MATH::Exp(CHASTE_CONST(0.20000000000000001) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V); // per_second + const double var_L_type_Ca_current__beta = 50 * CHASTE_MATH::Exp(-CHASTE_CONST(0.15384615384615385) - CHASTE_CONST(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 + const double d_dt_chaste_interface_var_L_type_Ca_current__C1 = CHASTE_CONST(0.001) * var_L_type_Ca_current__C1_orig_deriv; // 1 / millisecond return d_dt_chaste_interface_var_L_type_Ca_current__C1; } @@ -1787,17 +1789,17 @@ double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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_x203 = exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); - const double var_x205 = exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); - const double var_x210 = 0.050000000000000003 * var_x203; - const double var_x214 = 1.2 * var_x205; - const double var_x215 = 0.20749999999999999 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; + const double var_x203 = CHASTE_MATH::Exp(-CHASTE_CONST(0.15384615384615385) - CHASTE_CONST(0.076923076923076927) * var_chaste_interface__membrane__V); + const double var_x205 = CHASTE_MATH::Exp(CHASTE_CONST(0.20000000000000001) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V); + const double var_x210 = CHASTE_CONST(0.050000000000000003) * var_x203; + const double var_x214 = CHASTE_CONST(1.2) * var_x205; + const double var_x215 = CHASTE_CONST(0.20749999999999999) * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; partialF = -var_x210 - var_x214 - var_x215; } @@ -1814,7 +1816,7 @@ 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -1832,11 +1834,11 @@ 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 + const double var_L_type_Ca_current__gamma = CHASTE_CONST(103.75) * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; // per_second + const double var_L_type_Ca_current__alpha = 400 * CHASTE_MATH::Exp(CHASTE_CONST(0.20000000000000001) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V); // per_second + const double var_L_type_Ca_current__beta = 50 * CHASTE_MATH::Exp(-CHASTE_CONST(0.15384615384615385) - CHASTE_CONST(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 + CHASTE_MATH::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 / CHASTE_MATH::Pow(var_L_type_Ca_current__b, 2); // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__C2 = CHASTE_CONST(0.001) * var_L_type_Ca_current__C2_orig_deriv; // 1 / millisecond return d_dt_chaste_interface_var_L_type_Ca_current__C2; } @@ -1846,17 +1848,17 @@ double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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_x203 = exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); - const double var_x205 = exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); - const double var_x216 = 0.10000000000000001 * var_x203; - const double var_x220 = 0.80000000000000004 * var_x205; - const double var_x221 = 0.41499999999999998 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; + const double var_x203 = CHASTE_MATH::Exp(-CHASTE_CONST(0.15384615384615385) - CHASTE_CONST(0.076923076923076927) * var_chaste_interface__membrane__V); + const double var_x205 = CHASTE_MATH::Exp(CHASTE_CONST(0.20000000000000001) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V); + const double var_x216 = CHASTE_CONST(0.10000000000000001) * var_x203; + const double var_x220 = CHASTE_CONST(0.80000000000000004) * var_x205; + const double var_x221 = CHASTE_CONST(0.41499999999999998) * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; partialF = -var_x216 - var_x220 - var_x221; } @@ -1873,7 +1875,7 @@ 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -1891,11 +1893,11 @@ 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 + const double var_L_type_Ca_current__gamma = CHASTE_CONST(103.75) * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; // per_second + const double var_L_type_Ca_current__alpha = 400 * CHASTE_MATH::Exp(CHASTE_CONST(0.20000000000000001) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V); // per_second + const double var_L_type_Ca_current__beta = 50 * CHASTE_MATH::Exp(-CHASTE_CONST(0.15384615384615385) - CHASTE_CONST(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 + CHASTE_MATH::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 / CHASTE_MATH::Pow(var_L_type_Ca_current__b, 3); // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__C3 = CHASTE_CONST(0.001) * var_L_type_Ca_current__C3_orig_deriv; // 1 / millisecond return d_dt_chaste_interface_var_L_type_Ca_current__C3; } @@ -1905,17 +1907,17 @@ double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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_x203 = exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); - const double var_x205 = exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); - const double var_x222 = 0.14999999999999999 * var_x203; - const double var_x226 = 0.40000000000000002 * var_x205; - const double var_x227 = 0.82999999999999996 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; + const double var_x203 = CHASTE_MATH::Exp(-CHASTE_CONST(0.15384615384615385) - CHASTE_CONST(0.076923076923076927) * var_chaste_interface__membrane__V); + const double var_x205 = CHASTE_MATH::Exp(CHASTE_CONST(0.20000000000000001) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V); + const double var_x222 = CHASTE_CONST(0.14999999999999999) * var_x203; + const double var_x226 = CHASTE_CONST(0.40000000000000002) * var_x205; + const double var_x227 = CHASTE_CONST(0.82999999999999996) * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; partialF = -var_x222 - var_x226 - var_x227; } @@ -1932,7 +1934,7 @@ 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -1952,11 +1954,11 @@ 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 + const double var_L_type_Ca_current__gamma = CHASTE_CONST(103.75) * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; // per_second + const double var_L_type_Ca_current__alpha = 400 * CHASTE_MATH::Exp(CHASTE_CONST(0.20000000000000001) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V); // per_second + const double var_L_type_Ca_current__beta = 50 * CHASTE_MATH::Exp(-CHASTE_CONST(0.15384615384615385) - CHASTE_CONST(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 + CHASTE_MATH::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 / CHASTE_MATH::Pow(var_L_type_Ca_current__b, 4); // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__C4 = CHASTE_CONST(0.001) * var_L_type_Ca_current__C4_orig_deriv; // 1 / millisecond return d_dt_chaste_interface_var_L_type_Ca_current__C4; } @@ -1966,17 +1968,17 @@ double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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_x203 = exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); - const double var_x228 = 0.20000000000000001 * var_x203; - const double var_x230 = 1.6599999999999999 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; + const double var_x203 = CHASTE_MATH::Exp(-CHASTE_CONST(0.15384615384615385) - CHASTE_CONST(0.076923076923076927) * var_chaste_interface__membrane__V); + const double var_x228 = CHASTE_CONST(0.20000000000000001) * var_x203; + const double var_x230 = CHASTE_CONST(1.6599999999999999) * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; - partialF = -0.29999999999999999 - var_x228 - var_x230; + partialF = -CHASTE_CONST(0.29999999999999999) - var_x228 - var_x230; } else { @@ -1991,7 +1993,7 @@ 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -2007,13 +2009,13 @@ 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__gamma = CHASTE_CONST(103.75) * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; // per_second + const double var_L_type_Ca_current__alpha = 400 * CHASTE_MATH::Exp(CHASTE_CONST(0.20000000000000001) + CHASTE_CONST(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 = 50 * CHASTE_MATH::Exp(-CHASTE_CONST(0.15384615384615385) - CHASTE_CONST(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 + const double d_dt_chaste_interface_var_L_type_Ca_current__C_Ca0 = CHASTE_CONST(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; } @@ -2023,14 +2025,14 @@ double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -96.1638 - const double var_x205 = exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); - const double var_x234 = 3.2000000000000002 * var_x205; + const double var_x205 = CHASTE_MATH::Exp(CHASTE_CONST(0.20000000000000001) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V); + const double var_x234 = CHASTE_CONST(3.2000000000000002) * var_x205; - partialF = -0.01 - var_x234; + partialF = -CHASTE_CONST(0.01) - var_x234; } else { @@ -2045,7 +2047,7 @@ 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -2063,13 +2065,13 @@ 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__gamma = CHASTE_CONST(103.75) * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; // per_second + const double var_L_type_Ca_current__alpha = 400 * CHASTE_MATH::Exp(CHASTE_CONST(0.20000000000000001) + CHASTE_CONST(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 = 50 * CHASTE_MATH::Exp(-CHASTE_CONST(0.15384615384615385) - CHASTE_CONST(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 + const double d_dt_chaste_interface_var_L_type_Ca_current__C_Ca1 = CHASTE_CONST(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; } @@ -2079,16 +2081,16 @@ double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -96.1638 - const double var_x203 = exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); - const double var_x205 = exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); - const double var_x235 = 0.025000000000000001 * var_x203; - const double var_x237 = 2.3999999999999999 * var_x205; + const double var_x203 = CHASTE_MATH::Exp(-CHASTE_CONST(0.15384615384615385) - CHASTE_CONST(0.076923076923076927) * var_chaste_interface__membrane__V); + const double var_x205 = CHASTE_MATH::Exp(CHASTE_CONST(0.20000000000000001) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V); + const double var_x235 = CHASTE_CONST(0.025000000000000001) * var_x203; + const double var_x237 = CHASTE_CONST(2.3999999999999999) * var_x205; - partialF = -0.0050000000000000001 - var_x235 - var_x237; + partialF = -CHASTE_CONST(0.0050000000000000001) - var_x235 - var_x237; } else { @@ -2103,7 +2105,7 @@ 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -2121,13 +2123,13 @@ 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__gamma = CHASTE_CONST(103.75) * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; // per_second + const double var_L_type_Ca_current__alpha = 400 * CHASTE_MATH::Exp(CHASTE_CONST(0.20000000000000001) + CHASTE_CONST(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 = 50 * CHASTE_MATH::Exp(-CHASTE_CONST(0.15384615384615385) - CHASTE_CONST(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 + 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 / CHASTE_MATH::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 + CHASTE_MATH::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 = CHASTE_CONST(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; } @@ -2137,16 +2139,16 @@ double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -96.1638 - const double var_x203 = exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); - const double var_x205 = exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); - const double var_x208 = 1.6000000000000001 * var_x205; - const double var_x210 = 0.050000000000000003 * var_x203; + const double var_x203 = CHASTE_MATH::Exp(-CHASTE_CONST(0.15384615384615385) - CHASTE_CONST(0.076923076923076927) * var_chaste_interface__membrane__V); + const double var_x205 = CHASTE_MATH::Exp(CHASTE_CONST(0.20000000000000001) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V); + const double var_x208 = CHASTE_CONST(1.6000000000000001) * var_x205; + const double var_x210 = CHASTE_CONST(0.050000000000000003) * var_x203; - partialF = -0.0025000000000000001 - var_x208 - var_x210; + partialF = -CHASTE_CONST(0.0025000000000000001) - var_x208 - var_x210; } else { @@ -2161,7 +2163,7 @@ 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -2179,13 +2181,13 @@ 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__gamma = CHASTE_CONST(103.75) * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; // per_second + const double var_L_type_Ca_current__alpha = 400 * CHASTE_MATH::Exp(CHASTE_CONST(0.20000000000000001) + CHASTE_CONST(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 = 50 * CHASTE_MATH::Exp(-CHASTE_CONST(0.15384615384615385) - CHASTE_CONST(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 + 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 / CHASTE_MATH::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 + CHASTE_MATH::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 = CHASTE_CONST(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; } @@ -2195,16 +2197,16 @@ double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -96.1638 - const double var_x203 = exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); - const double var_x205 = exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); - const double var_x220 = 0.80000000000000004 * var_x205; - const double var_x238 = 0.074999999999999997 * var_x203; + const double var_x203 = CHASTE_MATH::Exp(-CHASTE_CONST(0.15384615384615385) - CHASTE_CONST(0.076923076923076927) * var_chaste_interface__membrane__V); + const double var_x205 = CHASTE_MATH::Exp(CHASTE_CONST(0.20000000000000001) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V); + const double var_x220 = CHASTE_CONST(0.80000000000000004) * var_x205; + const double var_x238 = CHASTE_CONST(0.074999999999999997) * var_x203; - partialF = -0.00125 - var_x220 - var_x238; + partialF = -CHASTE_CONST(0.00125) - var_x220 - var_x238; } else { @@ -2219,7 +2221,7 @@ 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -2239,13 +2241,13 @@ 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__gamma = CHASTE_CONST(103.75) * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; // per_second + const double var_L_type_Ca_current__alpha = 400 * CHASTE_MATH::Exp(CHASTE_CONST(0.20000000000000001) + CHASTE_CONST(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 = 50 * CHASTE_MATH::Exp(-CHASTE_CONST(0.15384615384615385) - CHASTE_CONST(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 + 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 / CHASTE_MATH::Pow(var_L_type_Ca_current__b, 4) + var_L_type_Ca_current__fprime) * var_chaste_interface__L_type_Ca_current__C_Ca4 + CHASTE_MATH::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 = CHASTE_CONST(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; } @@ -2255,14 +2257,14 @@ double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -96.1638 - const double var_x203 = exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); - const double var_x216 = 0.10000000000000001 * var_x203; + const double var_x203 = CHASTE_MATH::Exp(-CHASTE_CONST(0.15384615384615385) - CHASTE_CONST(0.076923076923076927) * var_chaste_interface__membrane__V); + const double var_x216 = CHASTE_CONST(0.10000000000000001) * var_x203; - partialF = -0.0076249999999999998 - var_x216; + partialF = -CHASTE_CONST(0.0076249999999999998) - var_x216; } else { @@ -2277,17 +2279,17 @@ 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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__tau_y = CHASTE_CONST(0.02) + CHASTE_CONST(0.59999999999999998) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(2.1052631578947367) + CHASTE_CONST(0.10526315789473684) * var_chaste_interface__membrane__V)); // second + const double var_L_type_Ca_current_y_gate__y_infinity = CHASTE_CONST(0.20000000000000001) + CHASTE_CONST(0.80000000000000004) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(2.5) + CHASTE_CONST(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 d_dt_chaste_interface_var_L_type_Ca_current_y_gate__y = CHASTE_CONST(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; } @@ -2297,16 +2299,16 @@ double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -96.1638 - const double var_x242 = exp(2.1052631578947367 + 0.10526315789473684 * var_chaste_interface__membrane__V); + const double var_x242 = CHASTE_MATH::Exp(CHASTE_CONST(2.1052631578947367) + CHASTE_CONST(0.10526315789473684) * 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.02 + 0.59999999999999998 * var_x244); + const double var_x245 = 1 / (CHASTE_CONST(0.02) + CHASTE_CONST(0.59999999999999998) * var_x244); - partialF = -0.001 * var_x245; + partialF = -CHASTE_CONST(0.001) * var_x245; } else { @@ -2335,15 +2337,15 @@ // 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_a_plus = CHASTE_CONST(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_b_plus = CHASTE_CONST(4050000000.0); // millimolar3_per_second + const double var_RyR_channel__k_c_minus = CHASTE_CONST(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 + 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 + CHASTE_MATH::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 - CHASTE_MATH::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 = CHASTE_CONST(0.001) * var_RyR_channel__P_O1_orig_deriv; // 1 / millisecond return d_dt_chaste_interface_var_RyR_channel__P_O1; } @@ -2357,10 +2359,10 @@ // Units: millimolar; Initial value: 0.00011 - const double var_x246 = pow(var_chaste_interface__intracellular_ion_concentrations__Ca_ss, 3); + const double var_x246 = CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Ca_ss, 3); const double var_x247 = 4050000 * var_x246; - partialF = -0.67600000000000005 - var_x247; + partialF = -CHASTE_CONST(0.67600000000000005) - var_x247; } else { @@ -2385,10 +2387,10 @@ // 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__k_b_plus = CHASTE_CONST(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 + const double var_RyR_channel__P_O2_orig_deriv = -var_chaste_interface__RyR_channel__P_O2 * var_RyR_channel__k_b_minus + CHASTE_MATH::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 = CHASTE_CONST(0.001) * var_RyR_channel__P_O2_orig_deriv; // 1 / millisecond return d_dt_chaste_interface_var_RyR_channel__P_O2; } @@ -2401,7 +2403,7 @@ - partialF = -1.9299999999999999; + partialF = -CHASTE_CONST(1.9299999999999999); } else { @@ -2426,10 +2428,10 @@ // 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_a_plus = CHASTE_CONST(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 + const double var_RyR_channel__P_C1_orig_deriv = var_chaste_interface__RyR_channel__P_O1 * var_RyR_channel__k_a_minus - CHASTE_MATH::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 = CHASTE_CONST(0.001) * var_RyR_channel__P_C1_orig_deriv; // 1 / millisecond return d_dt_chaste_interface_var_RyR_channel__P_C1; } @@ -2443,7 +2445,7 @@ // Units: millimolar; Initial value: 0.00011 - const double var_x248 = 12150000000.0 * pow(var_chaste_interface__intracellular_ion_concentrations__Ca_ss, 4); + const double var_x248 = CHASTE_CONST(12150000000.0) * CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Ca_ss, 4); partialF = -var_x248; } @@ -2467,10 +2469,10 @@ // Mathematics - const double var_RyR_channel__k_c_minus = 0.80000000000000004; // per_second + const double var_RyR_channel__k_c_minus = CHASTE_CONST(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 d_dt_chaste_interface_var_RyR_channel__P_C2 = CHASTE_CONST(0.001) * var_RyR_channel__P_C2_orig_deriv; // 1 / millisecond return d_dt_chaste_interface_var_RyR_channel__P_C2; } @@ -2483,7 +2485,7 @@ - partialF = -0.00080000000000000004; + partialF = -CHASTE_CONST(0.00080000000000000004); } else { @@ -2505,10 +2507,10 @@ // Mathematics - const double var_intracellular_Ca_fluxes__k_htrpn_minus = 0.066000000000000003; // per_second + const double var_intracellular_Ca_fluxes__k_htrpn_minus = CHASTE_CONST(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 + const double d_dt_chaste_interface_var_intracellular_Ca_fluxes__HTRPNCa = CHASTE_CONST(0.001) * var_intracellular_Ca_fluxes__HTRPNCa_orig_deriv; // millimolar / millisecond return d_dt_chaste_interface_var_intracellular_Ca_fluxes__HTRPNCa; } @@ -2523,7 +2525,7 @@ - partialF = -6.6000000000000005e-5 - 20 * var_chaste_interface__intracellular_ion_concentrations__Cai; + partialF = -CHASTE_CONST(6.6000000000000005e-5) - 20 * var_chaste_interface__intracellular_ion_concentrations__Cai; } else { @@ -2548,7 +2550,7 @@ 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 + const double d_dt_chaste_interface_var_intracellular_Ca_fluxes__LTRPNCa = CHASTE_CONST(0.001) * var_intracellular_Ca_fluxes__LTRPNCa_orig_deriv; // millimolar / millisecond return d_dt_chaste_interface_var_intracellular_Ca_fluxes__LTRPNCa; } @@ -2563,7 +2565,7 @@ - partialF = -0.040000000000000001 - 40 * var_chaste_interface__intracellular_ion_concentrations__Cai; + partialF = -CHASTE_CONST(0.040000000000000001) - 40 * var_chaste_interface__intracellular_ion_concentrations__Cai; } else { @@ -2578,7 +2580,7 @@ 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -2593,28 +2595,28 @@ // 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_Na_Ca_exchanger__K_mCa = CHASTE_CONST(1.3799999999999999); // millimolar + const double var_Na_Ca_exchanger__K_mNa = CHASTE_CONST(87.5); // millimolar + const double var_Na_Ca_exchanger__K_sat = CHASTE_CONST(0.20000000000000001); // dimensionless + const double var_Na_Ca_exchanger__eta = CHASTE_CONST(0.34999999999999998); // dimensionless + const double var_intracellular_ion_concentrations__A_cap = CHASTE_CONST(0.00015339999999999999); // cm2 + const double var_intracellular_ion_concentrations__V_myo = CHASTE_CONST(2.584e-5); // micro_litre + const double var_membrane__F = CHASTE_CONST(96.485341500000004); // coulomb_per_millimole + const double var_membrane__R = CHASTE_CONST(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_background_current__g_Nab = CHASTE_CONST(0.0030999999999999999); // milliS_per_microF + const double var_sodium_potassium_pump__I_NaK = CHASTE_CONST(0.69299999999999995); // microA_per_microF + const double var_sodium_potassium_pump__K_mKo = CHASTE_CONST(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_Na_Ca_exchanger__i_NaCa = 5000 * (CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Nai, 3) * mParameters[3] * CHASTE_MATH::Exp(var_Na_Ca_exchanger__eta * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - CHASTE_MATH::Pow(mParameters[5], 3) * var_chaste_interface__intracellular_ion_concentrations__Cai * CHASTE_MATH::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 * CHASTE_MATH::Exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (CHASTE_MATH::Pow(var_Na_Ca_exchanger__K_mNa, 3) + CHASTE_MATH::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 * CHASTE_MATH::Log(mParameters[5] / var_chaste_interface__intracellular_ion_concentrations__Nai) / var_membrane__F; // millivolt + const double var_fast_sodium_current__i_Na = CHASTE_MATH::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_sodium_potassium_pump__sigma = -CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * CHASTE_MATH::Exp(CHASTE_CONST(0.01485884101040119) * mParameters[5]); // dimensionless + const double var_sodium_potassium_pump__f_NaK = 1 / (1 + CHASTE_CONST(0.1245) * CHASTE_MATH::Exp(-CHASTE_CONST(0.10000000000000001) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) + CHASTE_CONST(0.036499999999999998) * var_sodium_potassium_pump__sigma * CHASTE_MATH::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 + CHASTE_MATH::Pow((var_sodium_potassium_pump__K_mNai / var_chaste_interface__intracellular_ion_concentrations__Nai), CHASTE_CONST(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 d_dt_chaste_interface_var_intracellular_ion_concentrations__Nai = CHASTE_CONST(0.001) * var_intracellular_ion_concentrations__Nai_orig_deriv; // millimolar / millisecond return d_dt_chaste_interface_var_intracellular_ion_concentrations__Nai; } @@ -2624,7 +2626,7 @@ double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -2636,35 +2638,35 @@ // Units: millimolar; Initial value: 10.0 - const double var_x11 = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3); + const double var_x11 = CHASTE_MATH::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_x24 = exp(0.013101861787960915 * var_chaste_interface__membrane__V); + const double var_x24 = CHASTE_MATH::Exp(CHASTE_CONST(0.013101861787960915) * var_chaste_interface__membrane__V); const double var_x25 = var_x24 * mParameters[3]; - const double var_x26 = exp(-0.024332029034784559 * var_chaste_interface__membrane__V); - const double var_x27 = pow(mParameters[5], 3); - const double var_x30 = 1 + 0.20000000000000001 * var_x26; + const double var_x26 = CHASTE_MATH::Exp(-CHASTE_CONST(0.024332029034784559) * var_chaste_interface__membrane__V); + const double var_x27 = CHASTE_MATH::Pow(mParameters[5], 3); + const double var_x30 = 1 + CHASTE_CONST(0.20000000000000001) * var_x26; const double var_x31 = 1 / var_x30; - const double var_x32 = 1 / (669921.875 + var_x27); - const double var_x33 = 1 / (1.3799999999999999 + mParameters[3]); + const double var_x32 = 1 / (CHASTE_CONST(669921.875) + var_x27); + const double var_x33 = 1 / (CHASTE_CONST(1.3799999999999999) + mParameters[3]); const double var_x34 = var_x32 * var_x33 * mParameters[14]; const double var_x35 = var_x31 * var_x34; const double var_x37 = 1 / var_chaste_interface__intracellular_ion_concentrations__Nai; - const double var_x38 = pow(var_x37, 1.5); - const double var_x40 = exp(-0.0037433890822745476 * var_chaste_interface__membrane__V); - const double var_x41 = exp(0.01485884101040119 * mParameters[5]); - const double var_x42 = 0.037433890822745473 * var_chaste_interface__membrane__V; - const double var_x43 = exp(-var_x42); - const double var_x44 = 1 + 0.1245 * var_x40 + 0.036499999999999998 * var_x43 * (-0.14285714285714285 + 0.14285714285714285 * var_x41); - const double var_x47 = 1 / (1.5 + mParameters[4]); + const double var_x38 = CHASTE_MATH::Pow(var_x37, CHASTE_CONST(1.5)); + const double var_x40 = CHASTE_MATH::Exp(-CHASTE_CONST(0.0037433890822745476) * var_chaste_interface__membrane__V); + const double var_x41 = CHASTE_MATH::Exp(CHASTE_CONST(0.01485884101040119) * mParameters[5]); + const double var_x42 = CHASTE_CONST(0.037433890822745473) * var_chaste_interface__membrane__V; + const double var_x43 = CHASTE_MATH::Exp(-var_x42); + const double var_x44 = 1 + CHASTE_CONST(0.1245) * var_x40 + CHASTE_CONST(0.036499999999999998) * var_x43 * (-CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * var_x41); + const double var_x47 = 1 / (CHASTE_CONST(1.5) + mParameters[4]); const double var_x48 = var_x47 * mParameters[4]; const double var_x103 = var_x13 * var_x37; - const double var_x104 = pow((0.031622776601683791 + var_x38), (-2)); + const double var_x104 = CHASTE_MATH::Pow((CHASTE_CONST(0.031622776601683791) + var_x38), (-2)); const double var_x105 = 1 / var_x44; const double var_x106 = var_x104 * var_x105 * var_x37 * var_x38 * var_x48; - const double var_x107 = var_x25 * var_x35 * pow(var_chaste_interface__intracellular_ion_concentrations__Nai, 2); + const double var_x107 = var_x25 * var_x35 * CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Nai, 2); - partialF = (-5.0952821319166834e-6 * var_x37 - 2.768751798927894 * var_x107 - 6.0676044384883792e-6 * var_x106 - 0.0016436393973924784 * var_x103) * mParameters[2]; + partialF = (-CHASTE_CONST(5.0952821319166834e-6) * var_x37 - CHASTE_CONST(2.768751798927894) * var_x107 - CHASTE_CONST(6.0676044384883792e-6) * var_x106 - CHASTE_CONST(0.0016436393973924784) * var_x103) * mParameters[2]; } else { @@ -2679,7 +2681,7 @@ 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -2702,37 +2704,37 @@ // 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_L_type_Ca_current__P_K = CHASTE_CONST(5.7899999999999998e-7); // cm_per_second + const double var_L_type_Ca_current__i_Ca_half = -CHASTE_CONST(0.26500000000000001); // microA_per_microF + const double var_intracellular_ion_concentrations__A_cap = CHASTE_CONST(0.00015339999999999999); // cm2 + const double var_intracellular_ion_concentrations__V_myo = CHASTE_CONST(2.584e-5); // micro_litre + const double var_membrane__F = CHASTE_CONST(96.485341500000004); // coulomb_per_millimole + const double var_membrane__R = CHASTE_CONST(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_plateau_potassium_current__g_Kp = CHASTE_CONST(0.0022160000000000001); // milliS_per_microF + const double var_plateau_potassium_current_Kp_gate__Kp_V = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(1.2521739130434781) - CHASTE_CONST(0.16722408026755853) * var_chaste_interface__membrane__V)); // dimensionless + const double var_rapid_activating_delayed_rectifiyer_K_current__R_V = 1 / (1 + CHASTE_CONST(1.4944999999999999) * CHASTE_MATH::Exp(CHASTE_CONST(0.044600000000000001) * var_chaste_interface__membrane__V)); // dimensionless + const double var_sodium_potassium_pump__I_NaK = CHASTE_CONST(0.69299999999999995); // microA_per_microF + const double var_sodium_potassium_pump__K_mKo = CHASTE_CONST(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_max = 4000 * CHASTE_MATH::Pow(var_membrane__F, 2) * (CHASTE_CONST(0.001) * CHASTE_MATH::Exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - CHASTE_CONST(0.34100000000000003) * mParameters[3]) * mParameters[6] * var_chaste_interface__membrane__V / ((-1 + CHASTE_MATH::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_L_type_Ca_current__i_Ca_K = CHASTE_MATH::Pow(var_membrane__F, 2) * (-mParameters[4] + var_chaste_interface__intracellular_ion_concentrations__Ki * CHASTE_MATH::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 + CHASTE_MATH::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 * CHASTE_MATH::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__f_Ko = CHASTE_CONST(0.5) * CHASTE_MATH::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_slow_activating_delayed_rectifiyer_K_current__E_Ks = var_membrane__R * var_membrane__T * CHASTE_MATH::Log((mParameters[4] + CHASTE_CONST(0.018329999999999999) * mParameters[5]) / (var_chaste_interface__intracellular_ion_concentrations__Ki + CHASTE_CONST(0.018329999999999999) * var_chaste_interface__intracellular_ion_concentrations__Nai)) / var_membrane__F; // millivolt + const double var_slow_activating_delayed_rectifiyer_K_current__i_Ks = CHASTE_MATH::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 = -CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * CHASTE_MATH::Exp(CHASTE_CONST(0.01485884101040119) * mParameters[5]); // dimensionless + const double var_sodium_potassium_pump__f_NaK = 1 / (1 + CHASTE_CONST(0.1245) * CHASTE_MATH::Exp(-CHASTE_CONST(0.10000000000000001) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) + CHASTE_CONST(0.036499999999999998) * var_sodium_potassium_pump__sigma * CHASTE_MATH::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 + CHASTE_MATH::Pow((var_sodium_potassium_pump__K_mNai / var_chaste_interface__intracellular_ion_concentrations__Nai), CHASTE_CONST(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_K1_gate__K1_infinity_V = 1 / (2 + CHASTE_MATH::Exp(CHASTE_CONST(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 + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Ki = CHASTE_CONST(0.001) * var_intracellular_ion_concentrations__Ki_orig_deriv; // millimolar / millisecond return d_dt_chaste_interface_var_intracellular_ion_concentrations__Ki; } @@ -2742,7 +2744,7 @@ double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -2764,41 +2766,41 @@ // Units: millimolar; Initial value: 157.8 - const double var_x0 = exp(1.2521739130434781 - 0.16722408026755853 * var_chaste_interface__membrane__V); + const double var_x0 = CHASTE_MATH::Exp(CHASTE_CONST(1.2521739130434781) - CHASTE_CONST(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_x3 = CHASTE_MATH::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_x8 = CHASTE_MATH::Log(var_x7); + const double var_x9 = -CHASTE_CONST(26.713760659695648) * var_x8 + var_chaste_interface__membrane__V; + const double var_x14 = CHASTE_MATH::Exp(CHASTE_CONST(0.044600000000000001) * var_chaste_interface__membrane__V); + const double var_x15 = CHASTE_MATH::Sqrt(mParameters[4]); + const double var_x16 = var_x15 * mParameters[12] / (1 + CHASTE_CONST(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_x19 = CHASTE_MATH::Exp(CHASTE_CONST(0.056150836234118207) * var_chaste_interface__membrane__V - CHASTE_CONST(1.5) * var_x8); const double var_x20 = 1 / (13 + mParameters[4]); const double var_x21 = var_x20 * mParameters[11]; const double var_x22 = var_x21 / (2 + var_x19); - const double var_x42 = 0.037433890822745473 * var_chaste_interface__membrane__V; + const double var_x42 = CHASTE_CONST(0.037433890822745473) * var_chaste_interface__membrane__V; const double var_x50 = var_chaste_interface__L_type_Ca_current__O + var_chaste_interface__L_type_Ca_current__O_Ca; const double var_x51 = var_x50 * var_chaste_interface__L_type_Ca_current_y_gate__y; - const double var_x52 = exp(0.074867781645490947 * var_chaste_interface__membrane__V); + const double var_x52 = CHASTE_MATH::Exp(CHASTE_CONST(0.074867781645490947) * var_chaste_interface__membrane__V); const double var_x53 = -1 + var_x52; const double var_x54 = 1 / var_x53; - const double var_x55 = 0.001 * var_x52 - 0.34100000000000003 * mParameters[3]; + const double var_x55 = CHASTE_CONST(0.001) * var_x52 - CHASTE_CONST(0.34100000000000003) * mParameters[3]; const double var_x56 = var_x54 * var_x55 * mParameters[6]; const double var_x57 = var_x56 * var_chaste_interface__membrane__V; - const double var_x58 = 1 / (1 - 54518.063995566983 * var_x57); - const double var_x59 = exp(var_x42); + const double var_x58 = 1 / (1 - CHASTE_CONST(54518.063995566983) * var_x57); + const double var_x59 = CHASTE_MATH::Exp(var_x42); const double var_x60 = -1 + var_x59; const double var_x61 = 1 / var_x60; - const double var_x72 = pow((1 + 0.5 * var_x19), (-2)); + const double var_x72 = CHASTE_MATH::Pow((1 + CHASTE_CONST(0.5) * var_x19), (-2)); const double var_x75 = var_x51 * var_x61 * var_chaste_interface__membrane__V; const double var_x76 = var_x58 * var_x75; - const double var_x95 = 1 / (var_chaste_interface__intracellular_ion_concentrations__Ki + 0.018329999999999999 * var_chaste_interface__intracellular_ion_concentrations__Nai); + const double var_x95 = 1 / (var_chaste_interface__intracellular_ion_concentrations__Ki + CHASTE_CONST(0.018329999999999999) * var_chaste_interface__intracellular_ion_concentrations__Nai); const double var_x102 = var_x3 * var_x95; const double var_x108 = var_x2 * var_x6; const double var_x109 = var_x5 * var_x6; @@ -2806,7 +2808,7 @@ const double var_x111 = var_x22 * var_x7; const double var_x112 = var_x59 * var_x76; - partialF = (-3.6423049046217326e-6 * var_x108 - 1.28669728151281e-10 * var_x112 - 0.00082181969869623921 * var_x110 - 0.0016436393973924784 * var_x102 - 0.0016436393973924784 * var_x109 - 0.0016436393973924784 * var_x111 + 2.3072931657732449e-5 * var_x19 * var_x20 * var_x6 * var_x72 * var_x9 * mParameters[4] * mParameters[11]) * mParameters[2]; + partialF = (-CHASTE_CONST(3.6423049046217326e-6) * var_x108 - CHASTE_CONST(1.28669728151281e-10) * var_x112 - CHASTE_CONST(0.00082181969869623921) * var_x110 - CHASTE_CONST(0.0016436393973924784) * var_x102 - CHASTE_CONST(0.0016436393973924784) * var_x109 - CHASTE_CONST(0.0016436393973924784) * var_x111 + CHASTE_CONST(2.3072931657732449e-5) * var_x19 * var_x20 * var_x6 * var_x72 * var_x9 * mParameters[4] * mParameters[11]) * mParameters[2]; } else { @@ -2821,7 +2823,7 @@ 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -2842,25 +2844,25 @@ // 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_intracellular_Ca_fluxes__tau_xfer = CHASTE_CONST(0.026700000000000002); // second + const double var_intracellular_ion_concentrations__A_cap = CHASTE_CONST(0.00015339999999999999); // cm2 + const double var_intracellular_ion_concentrations__CMDN_tot = CHASTE_CONST(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_intracellular_ion_concentrations__K_mCMDN = CHASTE_CONST(0.0023800000000000002); // millimolar + const double var_intracellular_ion_concentrations__K_mEGTA = CHASTE_CONST(0.00014999999999999999); // millimolar + const double var_intracellular_ion_concentrations__V_JSR = CHASTE_CONST(1.6e-7); // micro_litre + const double var_intracellular_ion_concentrations__V_SS = CHASTE_CONST(1.2e-9); // micro_litre + const double var_intracellular_ion_concentrations__V_myo = CHASTE_CONST(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 / CHASTE_MATH::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 / CHASTE_MATH::Pow((var_chaste_interface__intracellular_ion_concentrations__Ca_ss + var_intracellular_ion_concentrations__K_mEGTA), 2)); // dimensionless + const double var_membrane__F = CHASTE_CONST(96.485341500000004); // coulomb_per_millimole + const double var_membrane__R = CHASTE_CONST(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_max = 4000 * CHASTE_MATH::Pow(var_membrane__F, 2) * (CHASTE_CONST(0.001) * CHASTE_MATH::Exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - CHASTE_CONST(0.34100000000000003) * mParameters[3]) * mParameters[6] * var_chaste_interface__membrane__V / ((-1 + CHASTE_MATH::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 + 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 - CHASTE_CONST(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 = CHASTE_CONST(0.001) * var_intracellular_ion_concentrations__Ca_ss_orig_deriv; // millimolar / millisecond return d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_ss; } @@ -2870,7 +2872,7 @@ double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -2892,21 +2894,21 @@ const double var_x50 = var_chaste_interface__L_type_Ca_current__O + var_chaste_interface__L_type_Ca_current__O_Ca; const double var_x51 = var_x50 * var_chaste_interface__L_type_Ca_current_y_gate__y; - const double var_x52 = exp(0.074867781645490947 * var_chaste_interface__membrane__V); + const double var_x52 = CHASTE_MATH::Exp(CHASTE_CONST(0.074867781645490947) * var_chaste_interface__membrane__V); const double var_x53 = -1 + var_x52; const double var_x54 = 1 / var_x53; - const double var_x55 = 0.001 * var_x52 - 0.34100000000000003 * mParameters[3]; + const double var_x55 = CHASTE_CONST(0.001) * var_x52 - CHASTE_CONST(0.34100000000000003) * mParameters[3]; const double var_x56 = var_x54 * var_x55 * mParameters[6]; const double var_x57 = var_x56 * var_chaste_interface__membrane__V; - const double var_x257 = 0.0023800000000000002 + var_chaste_interface__intracellular_ion_concentrations__Ca_ss; - const double var_x258 = 1 + 0.00011900000000000002 / pow(var_x257, 2); + const double var_x257 = CHASTE_CONST(0.0023800000000000002) + var_chaste_interface__intracellular_ion_concentrations__Ca_ss; + const double var_x258 = 1 + CHASTE_CONST(0.00011900000000000002) / CHASTE_MATH::Pow(var_x257, 2); const double var_x259 = 1 / var_x258; - const double var_x260 = 0.001 * var_x259; - const double var_x265 = 133.33333333333334 * var_chaste_interface__RyR_channel__P_O1 + 133.33333333333334 * var_chaste_interface__RyR_channel__P_O2; + const double var_x260 = CHASTE_CONST(0.001) * var_x259; + const double var_x265 = CHASTE_CONST(133.33333333333334) * var_chaste_interface__RyR_channel__P_O1 + CHASTE_CONST(133.33333333333334) * var_chaste_interface__RyR_channel__P_O2; const double var_x266 = -var_chaste_interface__intracellular_ion_concentrations__Ca_ss + var_chaste_interface__intracellular_ion_concentrations__Ca_JSR; const double var_x267 = var_chaste_interface__RyR_channel__P_O1 + var_chaste_interface__RyR_channel__P_O2; - partialF = var_x260 * (-806491.88514357049 - var_x265 * mParameters[0]) + 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_x51 * var_x57 + 133.33333333333334 * var_x266 * var_x267 * mParameters[0]) / (pow(var_x257, 3) * pow(var_x258, 2)); + partialF = var_x260 * (-CHASTE_CONST(806491.88514357049) - var_x265 * mParameters[0]) + CHASTE_CONST(2.3800000000000004e-7) * (CHASTE_CONST(806491.88514357049) * var_chaste_interface__intracellular_ion_concentrations__Cai - CHASTE_CONST(806491.88514357049) * var_chaste_interface__intracellular_ion_concentrations__Ca_ss - CHASTE_CONST(9570598.0870152581) * var_x51 * var_x57 + CHASTE_CONST(133.33333333333334) * var_x266 * var_x267 * mParameters[0]) / (CHASTE_MATH::Pow(var_x257, 3) * CHASTE_MATH::Pow(var_x258, 2)); } else { @@ -2934,14 +2936,14 @@ // Mathematics - const double var_intracellular_Ca_fluxes__tau_tr = 0.00057470000000000004; // second + const double var_intracellular_Ca_fluxes__tau_tr = CHASTE_CONST(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__K_mCSQN = CHASTE_CONST(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 / CHASTE_MATH::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 d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_JSR = CHASTE_CONST(0.001) * var_intracellular_ion_concentrations__Ca_JSR_orig_deriv; // millimolar / millisecond return d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_JSR; } @@ -2965,13 +2967,13 @@ const double var_x266 = -var_chaste_interface__intracellular_ion_concentrations__Ca_ss + var_chaste_interface__intracellular_ion_concentrations__Ca_JSR; const double var_x267 = var_chaste_interface__RyR_channel__P_O1 + var_chaste_interface__RyR_channel__P_O2; - const double var_x268 = 0.80000000000000004 + var_chaste_interface__intracellular_ion_concentrations__Ca_JSR; - const double var_x269 = pow(var_x268, (-2)); + const double var_x268 = CHASTE_CONST(0.80000000000000004) + var_chaste_interface__intracellular_ion_concentrations__Ca_JSR; + const double var_x269 = CHASTE_MATH::Pow(var_x268, (-2)); const double var_x270 = 1 / (1 + 12 * var_x269); - const double var_x271 = 0.001 * var_x270; + const double var_x271 = CHASTE_CONST(0.001) * var_x270; const double var_x273 = var_x267 * mParameters[0]; - partialF = var_x271 * (-1740.0382808421784 - var_x267 * mParameters[0]) + 0.00016666666666666666 * (1740.0382808421784 * var_chaste_interface__intracellular_ion_concentrations__Ca_NSR - 1740.0382808421784 * var_chaste_interface__intracellular_ion_concentrations__Ca_JSR - var_x266 * var_x273) / (pow(var_x268, 3) * pow((0.083333333333333329 + var_x269), 2)); + partialF = var_x271 * (-CHASTE_CONST(1740.0382808421784) - var_x267 * mParameters[0]) + CHASTE_CONST(0.00016666666666666666) * (CHASTE_CONST(1740.0382808421784) * var_chaste_interface__intracellular_ion_concentrations__Ca_NSR - CHASTE_CONST(1740.0382808421784) * var_chaste_interface__intracellular_ion_concentrations__Ca_JSR - var_x266 * var_x273) / (CHASTE_MATH::Pow(var_x268, 3) * CHASTE_MATH::Pow((CHASTE_CONST(0.083333333333333329) + var_x269), 2)); } else { @@ -2995,22 +2997,22 @@ // 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__K_fb = CHASTE_CONST(0.00016799999999999999); // millimolar + const double var_SERCA2a_pump__K_rb = CHASTE_CONST(3.29); // millimolar + const double var_SERCA2a_pump__N_fb = CHASTE_CONST(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_SERCA2a_pump__Vmaxf = CHASTE_CONST(0.081299999999999997); // millimolar_per_second + const double var_SERCA2a_pump__Vmaxr = CHASTE_CONST(0.318); // millimolar_per_second + const double var_intracellular_Ca_fluxes__tau_tr = CHASTE_CONST(0.00057470000000000004); // second + const double var_SERCA2a_pump__rb = CHASTE_MATH::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__fb = CHASTE_MATH::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__V_JSR = CHASTE_CONST(1.6e-7); // micro_litre + const double var_intracellular_ion_concentrations__V_NSR = CHASTE_CONST(2.0999999999999998e-6); // micro_litre + const double var_intracellular_ion_concentrations__V_myo = CHASTE_CONST(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 d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_NSR = CHASTE_CONST(0.001) * var_intracellular_ion_concentrations__Ca_NSR_orig_deriv; // millimolar / millisecond return d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_NSR; } @@ -3026,15 +3028,15 @@ // Units: millimolar; Initial value: 0.257 - const double var_x119 = pow(var_chaste_interface__intracellular_ion_concentrations__Cai, 1.2); - const double var_x120 = pow(var_chaste_interface__intracellular_ion_concentrations__Ca_NSR, 1); - const double var_x121 = 1 / (1 + 33855.471141425078 * var_x119 + 0.303951367781155 * var_x120); + const double var_x119 = CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Cai, CHASTE_CONST(1.2)); + const double var_x120 = CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Ca_NSR, 1); + const double var_x121 = 1 / (1 + CHASTE_CONST(33855.471141425078) * var_x119 + CHASTE_CONST(0.303951367781155) * var_x120); const double var_x122 = var_x121 * mParameters[1]; - const double var_x123 = pow((2.9537323401073989e-5 + var_x119 + 8.9779098483507565e-6 * var_x120), (-2)); - const double var_x124 = 2752.4498037978587 * var_x119 - 0.096656534954407292 * var_x120; + const double var_x123 = CHASTE_MATH::Pow((CHASTE_CONST(2.9537323401073989e-5) + var_x119 + CHASTE_CONST(8.9779098483507565e-6) * var_x120), (-2)); + const double var_x124 = CHASTE_CONST(2752.4498037978587) * var_x119 - CHASTE_CONST(0.096656534954407292) * var_x120; const double var_x126 = var_x123 * var_x124 * mParameters[1]; - partialF = -0.13257434520702313 - 0.0011893356491532784 * var_x122 - 3.2630189260961817e-12 * var_x126; + partialF = -CHASTE_CONST(0.13257434520702313) - CHASTE_CONST(0.0011893356491532784) * var_x122 - CHASTE_CONST(3.2630189260961817e-12) * var_x126; } else { @@ -3051,7 +3053,7 @@ { // Inputs: // Time units: millisecond - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -3089,44 +3091,44 @@ // 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_Na_Ca_exchanger__K_mCa = CHASTE_CONST(1.3799999999999999); // millimolar + const double var_Na_Ca_exchanger__K_mNa = CHASTE_CONST(87.5); // millimolar + const double var_Na_Ca_exchanger__K_sat = CHASTE_CONST(0.20000000000000001); // dimensionless + const double var_Na_Ca_exchanger__eta = CHASTE_CONST(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__F = CHASTE_CONST(96.485341500000004); // coulomb_per_millimole + const double var_membrane__R = CHASTE_CONST(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_L_type_Ca_current_y_gate__tau_y = CHASTE_CONST(0.02) + CHASTE_CONST(0.59999999999999998) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(2.1052631578947367) + CHASTE_CONST(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 * CHASTE_MATH::Exp(-CHASTE_CONST(11.764705882352942) + CHASTE_CONST(0.14705882352941177) * mParameters[10] - CHASTE_CONST(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 * CHASTE_MATH::Exp(CHASTE_CONST(0.079000000000000001) * var_chaste_interface__membrane__V - CHASTE_CONST(0.079000000000000001) * mParameters[10]) + 310000 * CHASTE_MATH::Exp(CHASTE_CONST(0.34999999999999998) * var_chaste_interface__membrane__V - CHASTE_CONST(0.34999999999999998) * mParameters[10])) : (CHASTE_CONST(7692.3076923076924) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.96036036036036043) + CHASTE_CONST(0.0900900900900901) * mParameters[10] - CHASTE_CONST(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__alpha_j = ((var_chaste_interface__membrane__V < -40) ? (1000 * (CHASTE_CONST(37.780000000000001) + var_chaste_interface__membrane__V) * (-127140 * CHASTE_MATH::Exp(CHASTE_CONST(0.24440000000000001) * var_chaste_interface__membrane__V - CHASTE_CONST(0.24440000000000001) * mParameters[10]) - CHASTE_CONST(3.4740000000000003e-5) * CHASTE_MATH::Exp(CHASTE_CONST(0.043909999999999998) * mParameters[10] - CHASTE_CONST(0.043909999999999998) * var_chaste_interface__membrane__V)) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(24.640530000000002) + CHASTE_CONST(0.311) * var_chaste_interface__membrane__V - CHASTE_CONST(0.311) * mParameters[10]))) : (0)); // per_second + const double var_fast_sodium_current_j_gate__beta_j = ((var_chaste_interface__membrane__V < -40) ? (CHASTE_CONST(121.2) * CHASTE_MATH::Exp(CHASTE_CONST(0.01052) * mParameters[10] - CHASTE_CONST(0.01052) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(5.5312920000000005) + CHASTE_CONST(0.13780000000000001) * mParameters[10] - CHASTE_CONST(0.13780000000000001) * var_chaste_interface__membrane__V))) : (300 * CHASTE_MATH::Exp(CHASTE_CONST(2.5349999999999999e-7) * mParameters[10] - CHASTE_CONST(2.5349999999999999e-7) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(3.2000000000000002) + CHASTE_CONST(0.10000000000000001) * mParameters[10] - CHASTE_CONST(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_membrane__i_Stim_converted = CHASTE_STIM(var_chaste_interface__environment__time_converted); // uA_per_cm2 + const double var_rapid_activating_delayed_rectifiyer_K_current__R_V = 1 / (1 + CHASTE_CONST(1.4944999999999999) * CHASTE_MATH::Exp(CHASTE_CONST(0.044600000000000001) * var_chaste_interface__membrane__V)); // dimensionless + const double var_L_type_Ca_current__i_Ca_max = 4000 * CHASTE_MATH::Pow(var_membrane__F, 2) * (CHASTE_CONST(0.001) * CHASTE_MATH::Exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - CHASTE_CONST(0.34100000000000003) * mParameters[3]) * mParameters[6] * var_chaste_interface__membrane__V / ((-1 + CHASTE_MATH::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_L_type_Ca_current__i_Ca_converted = CHASTE_CAP() * 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 * CHASTE_MATH::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 = CHASTE_CONST(0.5) * CHASTE_MATH::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_rapid_activating_delayed_rectifiyer_K_current__i_Kr_converted = CHASTE_CAP() * var_rapid_activating_delayed_rectifiyer_K_current__i_Kr; // uA_per_cm2 + const double var_Na_Ca_exchanger__i_NaCa = 5000 * (CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Nai, 3) * mParameters[3] * CHASTE_MATH::Exp(var_Na_Ca_exchanger__eta * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - CHASTE_MATH::Pow(mParameters[5], 3) * var_chaste_interface__intracellular_ion_concentrations__Cai * CHASTE_MATH::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 * CHASTE_MATH::Exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (CHASTE_MATH::Pow(var_Na_Ca_exchanger__K_mNa, 3) + CHASTE_MATH::Pow(mParameters[5], 3)) * (var_Na_Ca_exchanger__K_mCa + mParameters[3])); // microA_per_microF + const double var_Na_Ca_exchanger__i_NaCa_converted = CHASTE_CAP() * var_Na_Ca_exchanger__i_NaCa; // uA_per_cm2 + const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * CHASTE_MATH::Log(mParameters[5] / var_chaste_interface__intracellular_ion_concentrations__Nai) / var_membrane__F; // millivolt + const double var_fast_sodium_current__i_Na = CHASTE_MATH::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 = CHASTE_CAP() * 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 * CHASTE_MATH::Log((mParameters[4] + CHASTE_CONST(0.018329999999999999) * mParameters[5]) / (var_chaste_interface__intracellular_ion_concentrations__Ki + CHASTE_CONST(0.018329999999999999) * var_chaste_interface__intracellular_ion_concentrations__Nai)) / var_membrane__F; // millivolt + const double var_slow_activating_delayed_rectifiyer_K_current__i_Ks = CHASTE_MATH::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 = CHASTE_CAP() * 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_K1_gate__K1_infinity_V = 1 / (2 + CHASTE_MATH::Exp(CHASTE_CONST(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_time_independent_potassium_current__i_K1_converted = CHASTE_CAP() * 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_transient_outward_potassium_current__i_to1_converted = CHASTE_CAP() * var_transient_outward_potassium_current__i_to1; // uA_per_cm2 std::vector dqs(13); dqs[0] = var_RyR_channel__J_rel; diff --git a/chaste_codegen/data/tests/chaste_reference_models/GRL2/dynamic_winslow_model_1999.hpp b/chaste_codegen/data/tests/chaste_reference_models/GRL2/dynamic_winslow_model_1999.hpp index 1aa2841bf..57fd8d110 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/GRL2/dynamic_winslow_model_1999.hpp +++ b/chaste_codegen/data/tests/chaste_reference_models/GRL2/dynamic_winslow_model_1999.hpp @@ -17,6 +17,9 @@ #include #include "AbstractDynamicallyLoadableEntity.hpp" #include "AbstractStimulusFunction.hpp" +#if USING_DEVICE_COMPILER +#include "StimulusEvaluatorCuda.hpp" +#endif #include "AbstractGeneralizedRushLarsenCardiacCell.hpp" class Dynamicwinslow_model_1999FromCellMLGRL2 : public AbstractGeneralizedRushLarsenCardiacCell, public AbstractDynamicallyLoadableEntity diff --git a/chaste_codegen/data/tests/chaste_reference_models/GRL2/hodgkin_huxley_squid_axon_model_1952_modified.cpp b/chaste_codegen/data/tests/chaste_reference_models/GRL2/hodgkin_huxley_squid_axon_model_1952_modified.cpp index 8be4b35b7..90b6d53e5 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/GRL2/hodgkin_huxley_squid_axon_model_1952_modified.cpp +++ b/chaste_codegen/data/tests/chaste_reference_models/GRL2/hodgkin_huxley_squid_axon_model_1952_modified.cpp @@ -21,6 +21,8 @@ #include "HeartConfig.hpp" #include "IsNan.hpp" #include "MathsCustomFunctions.hpp" +#include "ChasteMathDeviceNamespaces.hpp" +#include "ChasteCpuMacros.hpp" @@ -30,7 +32,7 @@ { // 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_duration = CHASTE_CONST(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( @@ -59,7 +61,7 @@ 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[2] = CHASTE_CONST(0.29999999999999999); // (var_leakage_current__g_L) [milliS_per_cm2] this->mParameters[3] = 36; // (var_potassium_channel__g_K) [milliS_per_cm2] } @@ -107,7 +109,7 @@ // 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -117,12 +119,12 @@ // 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__E_L = CHASTE_CONST(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_potassium_channel__i_K = CHASTE_MATH::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_sodium_channel__i_Na = CHASTE_MATH::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; @@ -137,7 +139,7 @@ const double delta = 1e-8; const double yinit = rY[v_index]; - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -150,13 +152,13 @@ // Mathematics double d_dt_chaste_interface_var_membrane__V; 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__E_L = CHASTE_CONST(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_membrane__i_Stim = CHASTE_STIM(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_potassium_channel__i_K = CHASTE_MATH::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_sodium_channel__i_Na = CHASTE_MATH::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 double evalF = d_dt_chaste_interface_var_membrane__V; @@ -193,7 +195,7 @@ mYInit = rY; double y_save; - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -205,22 +207,22 @@ // 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__B = -CHASTE_CONST(0.10000000000000001); // per_millivolt + const double var_potassium_channel_n_gate__A = -CHASTE_CONST(0.01) / var_potassium_channel_n_gate__B; // per_millisecond + const double var_potassium_channel_n_gate__beta_n = CHASTE_CONST(0.125) * CHASTE_MATH::Exp(CHASTE_CONST(0.9375) + CHASTE_CONST(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_potassium_channel_n_gate__alpha_n = (((var_potassium_channel_n_gate__U >= -CHASTE_CONST(9.9999999999999995e-8)) && (var_potassium_channel_n_gate__U <= CHASTE_CONST(9.9999999999999995e-8))) ? ((1 - CHASTE_CONST(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 + CHASTE_MATH::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 var_sodium_channel_h_gate__alpha_h = CHASTE_CONST(0.070000000000000007) * CHASTE_MATH::Exp(-CHASTE_CONST(3.75) - CHASTE_CONST(0.050000000000000003) * var_chaste_interface__membrane__V); // per_millisecond + const double var_sodium_channel_h_gate__beta_h = 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(4.5) - CHASTE_CONST(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__B = -CHASTE_CONST(0.10000000000000001); // per_millivolt + const double var_sodium_channel_m_gate__A = -CHASTE_CONST(0.10000000000000001) / var_sodium_channel_m_gate__B; // per_millisecond + const double var_sodium_channel_m_gate__beta_m = 4 * CHASTE_MATH::Exp(-CHASTE_CONST(4.166666666666667) - CHASTE_CONST(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 var_sodium_channel_m_gate__alpha_m = (((var_sodium_channel_m_gate__U >= -CHASTE_CONST(9.9999999999999995e-8)) && (var_sodium_channel_m_gate__U <= CHASTE_CONST(9.9999999999999995e-8))) ? ((1 - CHASTE_CONST(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 + CHASTE_MATH::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) @@ -230,13 +232,13 @@ 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__E_L = CHASTE_CONST(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_membrane__i_Stim = CHASTE_STIM(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_potassium_channel__i_K = CHASTE_MATH::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_sodium_channel__i_Na = CHASTE_MATH::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 } @@ -306,7 +308,7 @@ double Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLGRL2::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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -318,13 +320,13 @@ // 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__E_L = CHASTE_CONST(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_membrane__i_Stim = CHASTE_STIM(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_potassium_channel__i_K = CHASTE_MATH::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_sodium_channel__i_Na = CHASTE_MATH::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 return d_dt_chaste_interface_var_membrane__V; @@ -344,9 +346,9 @@ const double var_x0 = 1 / mParameters[0]; - const double var_x1 = pow(var_chaste_interface__sodium_channel_m_gate__m, 3) * mParameters[1]; + const double var_x1 = CHASTE_MATH::Pow(var_chaste_interface__sodium_channel_m_gate__m, 3) * mParameters[1]; - partialF = var_x0 * (-mParameters[2] - var_x1 * var_chaste_interface__sodium_channel_h_gate__h - pow(var_chaste_interface__potassium_channel_n_gate__n, 4) * mParameters[3]); + partialF = var_x0 * (-mParameters[2] - var_x1 * var_chaste_interface__sodium_channel_h_gate__h - CHASTE_MATH::Pow(var_chaste_interface__potassium_channel_n_gate__n, 4) * mParameters[3]); } else { @@ -361,19 +363,19 @@ double Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLGRL2::EvaluateYDerivative1(double var_chaste_interface__environment__time, std::vector& rY) { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 // Mathematics - 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__B = -CHASTE_CONST(0.10000000000000001); // per_millivolt + const double var_sodium_channel_m_gate__A = -CHASTE_CONST(0.10000000000000001) / var_sodium_channel_m_gate__B; // per_millisecond + const double var_sodium_channel_m_gate__beta_m = 4 * CHASTE_MATH::Exp(-CHASTE_CONST(4.166666666666667) - CHASTE_CONST(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 var_sodium_channel_m_gate__alpha_m = (((var_sodium_channel_m_gate__U >= -CHASTE_CONST(9.9999999999999995e-8)) && (var_sodium_channel_m_gate__U <= CHASTE_CONST(9.9999999999999995e-8))) ? ((1 - CHASTE_CONST(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 + CHASTE_MATH::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 return d_dt_chaste_interface_var_sodium_channel_m_gate__m; @@ -384,19 +386,19 @@ double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -75.0 - const double var_x3 = 0.10000000000000001 * var_chaste_interface__membrane__V; + const double var_x3 = CHASTE_CONST(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_x5 = (var_x4 >= -CHASTE_CONST(9.9999999999999995e-8)) && (var_x4 <= CHASTE_CONST(9.9999999999999995e-8)); + const double var_x6 = CHASTE_MATH::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_x9 = CHASTE_MATH::Exp(-CHASTE_CONST(4.166666666666667) - CHASTE_CONST(0.055555555555555552) * var_chaste_interface__membrane__V); - partialF = -((var_x5) ? (3.5 + 0.050000000000000003 * var_chaste_interface__membrane__V) : (-var_x4 * var_x8)) - 4 * var_x9; + partialF = -((var_x5) ? (CHASTE_CONST(3.5) + CHASTE_CONST(0.050000000000000003) * var_chaste_interface__membrane__V) : (-var_x4 * var_x8)) - 4 * var_x9; } else { @@ -411,15 +413,15 @@ double Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLGRL2::EvaluateYDerivative2(double var_chaste_interface__environment__time, std::vector& rY) { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -75.0 double var_chaste_interface__sodium_channel_h_gate__h = rY[2]; // Units: dimensionless; Initial value: 0.6 // Mathematics - 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_h_gate__alpha_h = CHASTE_CONST(0.070000000000000007) * CHASTE_MATH::Exp(-CHASTE_CONST(3.75) - CHASTE_CONST(0.050000000000000003) * var_chaste_interface__membrane__V); // per_millisecond + const double var_sodium_channel_h_gate__beta_h = 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(4.5) - CHASTE_CONST(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 return d_dt_chaste_interface_var_sodium_channel_h_gate__h; @@ -430,15 +432,15 @@ double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -75.0 - 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_x10 = CHASTE_MATH::Exp(-CHASTE_CONST(3.75) - CHASTE_CONST(0.050000000000000003) * var_chaste_interface__membrane__V); + const double var_x11 = CHASTE_MATH::Exp(-CHASTE_CONST(4.5) - CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V); const double var_x12 = 1 + var_x11; - partialF = -1 / var_x12 - 0.070000000000000007 * var_x10; + partialF = -1 / var_x12 - CHASTE_CONST(0.070000000000000007) * var_x10; } else { @@ -453,19 +455,19 @@ double Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLGRL2::EvaluateYDerivative3(double var_chaste_interface__environment__time, std::vector& rY) { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -75.0 double var_chaste_interface__potassium_channel_n_gate__n = rY[3]; // Units: dimensionless; Initial value: 0.325 // Mathematics - 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__B = -CHASTE_CONST(0.10000000000000001); // per_millivolt + const double var_potassium_channel_n_gate__A = -CHASTE_CONST(0.01) / var_potassium_channel_n_gate__B; // per_millisecond + const double var_potassium_channel_n_gate__beta_n = CHASTE_CONST(0.125) * CHASTE_MATH::Exp(CHASTE_CONST(0.9375) + CHASTE_CONST(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_potassium_channel_n_gate__alpha_n = (((var_potassium_channel_n_gate__U >= -CHASTE_CONST(9.9999999999999995e-8)) && (var_potassium_channel_n_gate__U <= CHASTE_CONST(9.9999999999999995e-8))) ? ((1 - CHASTE_CONST(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 + CHASTE_MATH::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 return d_dt_chaste_interface_var_potassium_channel_n_gate__n; @@ -476,19 +478,19 @@ double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -75.0 - 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_x3 = CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V; + const double var_x13 = CHASTE_CONST(6.5) + var_x3; + const double var_x14 = (var_x13 >= -CHASTE_CONST(9.9999999999999995e-8)) && (var_x13 <= CHASTE_CONST(9.9999999999999995e-8)); + const double var_x15 = CHASTE_MATH::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); + const double var_x18 = CHASTE_MATH::Exp(CHASTE_CONST(0.9375) + CHASTE_CONST(0.012500000000000001) * var_chaste_interface__membrane__V); - partialF = -((var_x14) ? (0.42499999999999999 + 0.0050000000000000001 * var_chaste_interface__membrane__V) : (-0.099999999999999992 * var_x13 * var_x17)) - 0.125 * var_x18; + partialF = -((var_x14) ? (CHASTE_CONST(0.42499999999999999) + CHASTE_CONST(0.0050000000000000001) * var_chaste_interface__membrane__V) : (-CHASTE_CONST(0.099999999999999992) * var_x13 * var_x17)) - CHASTE_CONST(0.125) * var_x18; } else { @@ -505,7 +507,7 @@ { // Inputs: // Time units: millisecond - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -516,13 +518,13 @@ // 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__E_L = CHASTE_CONST(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_membrane__i_Stim = CHASTE_STIM(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_potassium_channel__i_K = CHASTE_MATH::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_sodium_channel__i_Na = CHASTE_MATH::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; diff --git a/chaste_codegen/data/tests/chaste_reference_models/GRL2/hodgkin_huxley_squid_axon_model_1952_modified.hpp b/chaste_codegen/data/tests/chaste_reference_models/GRL2/hodgkin_huxley_squid_axon_model_1952_modified.hpp index e9ed236cc..2e8b94744 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/GRL2/hodgkin_huxley_squid_axon_model_1952_modified.hpp +++ b/chaste_codegen/data/tests/chaste_reference_models/GRL2/hodgkin_huxley_squid_axon_model_1952_modified.hpp @@ -16,6 +16,9 @@ #include "ChasteSerialization.hpp" #include #include "AbstractStimulusFunction.hpp" +#if USING_DEVICE_COMPILER +#include "StimulusEvaluatorCuda.hpp" +#endif #include "AbstractGeneralizedRushLarsenCardiacCell.hpp" class Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLGRL2 : public AbstractGeneralizedRushLarsenCardiacCell diff --git a/chaste_codegen/data/tests/chaste_reference_models/GRL2Opt/dynamic_viswanathan_model_1999_epi.cpp b/chaste_codegen/data/tests/chaste_reference_models/GRL2Opt/dynamic_viswanathan_model_1999_epi.cpp index 55b7c46e4..25c48b5f7 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/GRL2Opt/dynamic_viswanathan_model_1999_epi.cpp +++ b/chaste_codegen/data/tests/chaste_reference_models/GRL2Opt/dynamic_viswanathan_model_1999_epi.cpp @@ -21,6 +21,8 @@ #include "HeartConfig.hpp" #include "IsNan.hpp" #include "MathsCustomFunctions.hpp" +#include "ChasteMathDeviceNamespaces.hpp" +#include "ChasteCpuMacros.hpp" #include "ModelFactory.hpp" @@ -149,7 +151,7 @@ class Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables : public A for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return exp(0.074871767015605231 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(CHASTE_CONST(0.074871767015605231) * 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); @@ -160,7 +162,7 @@ class Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables : public A for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return -1 + exp(0.074871767015605231 * var_chaste_interface__membrane__V); + return -1 + CHASTE_MATH::Exp(CHASTE_CONST(0.074871767015605231) * 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); @@ -171,7 +173,7 @@ class Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables : public A for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return exp(0.037435883507802616 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(CHASTE_CONST(0.037435883507802616) * 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); @@ -182,7 +184,7 @@ class Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables : public A for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return -1 + exp(0.037435883507802616 * var_chaste_interface__membrane__V); + return -1 + CHASTE_MATH::Exp(CHASTE_CONST(0.037435883507802616) * 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); @@ -193,7 +195,7 @@ class Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables : public A for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return exp(0.018717941753901308 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(CHASTE_CONST(0.018717941753901308) * 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); @@ -204,7 +206,7 @@ class Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables : public A for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return exp(-0.018717941753901308 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(-CHASTE_CONST(0.018717941753901308) * 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); @@ -215,7 +217,7 @@ class Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables : public A for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return exp(-0.037435883507802616 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(-CHASTE_CONST(0.037435883507802616) * 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); @@ -226,7 +228,7 @@ class Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables : public A for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 0.1245 * exp(-0.003743588350780262 * var_chaste_interface__membrane__V); + return CHASTE_CONST(0.1245) * CHASTE_MATH::Exp(-CHASTE_CONST(0.003743588350780262) * 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); @@ -237,7 +239,7 @@ class Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables : public A for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 1 + exp(1.2521739130434781 - 0.16722408026755853 * var_chaste_interface__membrane__V); + return 1 + CHASTE_MATH::Exp(CHASTE_CONST(1.2521739130434781) - CHASTE_CONST(0.16722408026755853) * 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); @@ -248,7 +250,7 @@ class Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables : public A for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 1 + exp(0.4017857142857143 + 0.044642857142857144 * var_chaste_interface__membrane__V); + return 1 + CHASTE_MATH::Exp(CHASTE_CONST(0.4017857142857143) + CHASTE_CONST(0.044642857142857144) * 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); @@ -259,7 +261,7 @@ class Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables : public A for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 1 / (1 + exp(4 + 0.125 * var_chaste_interface__membrane__V)) + 0.59999999999999998 / (1 + exp(2.5 - 0.050000000000000003 * var_chaste_interface__membrane__V)); + return 1 / (1 + CHASTE_MATH::Exp(4 + CHASTE_CONST(0.125) * var_chaste_interface__membrane__V)) + CHASTE_CONST(0.59999999999999998) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(2.5) - CHASTE_CONST(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); @@ -270,7 +272,7 @@ class Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables : public A for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 0.001 / (0.02 + 0.019699999999999999 * exp(-0.113569 * pow((1 + 0.10000000000000001 * var_chaste_interface__membrane__V), 2))); + return CHASTE_CONST(0.001) / (CHASTE_CONST(0.02) + CHASTE_CONST(0.019699999999999999) * CHASTE_MATH::Exp(-CHASTE_CONST(0.113569) * CHASTE_MATH::Pow((1 + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V), 2))); }; const double var_chaste_interface__membrane__V = mTableMins[0] + i*mTableSteps[0]; double val = f(var_chaste_interface__membrane__V); @@ -281,7 +283,7 @@ class Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables : public A for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 1 / (1 + exp(-1.2962962962962963 - 0.092592592592592587 * var_chaste_interface__membrane__V)); + return 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(1.2962962962962963) - CHASTE_CONST(0.092592592592592587) * 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); @@ -292,7 +294,7 @@ class Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables : public A for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 0.0037000000000000002 + 0.0061000000000000004 / (1 + exp(5.5555555555555554 + 0.22222222222222221 * var_chaste_interface__membrane__V)); + return CHASTE_CONST(0.0037000000000000002) + CHASTE_CONST(0.0061000000000000004) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(5.5555555555555554) + CHASTE_CONST(0.22222222222222221) * 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); @@ -303,7 +305,7 @@ class Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables : public A for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 1 / (1 + exp(10.714285714285715 + 0.17857142857142858 * var_chaste_interface__membrane__V)); + return 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(10.714285714285715) + CHASTE_CONST(0.17857142857142858) * 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); @@ -314,7 +316,7 @@ class Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables : public A for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return ((var_chaste_interface__membrane__V < -40) ? (135 * exp(-11.764705882352942 - 0.14705882352941177 * var_chaste_interface__membrane__V)) : (0)); + return ((var_chaste_interface__membrane__V < -40) ? (135 * CHASTE_MATH::Exp(-CHASTE_CONST(11.764705882352942) - CHASTE_CONST(0.14705882352941177) * var_chaste_interface__membrane__V)) : (0)); }; const double var_chaste_interface__membrane__V = mTableMins[0] + i*mTableSteps[0]; double val = f(var_chaste_interface__membrane__V); @@ -336,7 +338,7 @@ class Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables : public A for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return ((var_chaste_interface__membrane__V < -40) ? (3560 * exp(0.079000000000000001 * var_chaste_interface__membrane__V) + 310000000 * exp(0.34999999999999998 * var_chaste_interface__membrane__V)) : (7692.3076923076933 / (1 + exp(-0.96036036036036043 - 0.0900900900900901 * var_chaste_interface__membrane__V)))); + return ((var_chaste_interface__membrane__V < -40) ? (3560 * CHASTE_MATH::Exp(CHASTE_CONST(0.079000000000000001) * var_chaste_interface__membrane__V) + 310000000 * CHASTE_MATH::Exp(CHASTE_CONST(0.34999999999999998) * var_chaste_interface__membrane__V)) : (CHASTE_CONST(7692.3076923076933) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.96036036036036043) - CHASTE_CONST(0.0900900900900901) * 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); @@ -358,7 +360,7 @@ class Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables : public A for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return ((var_chaste_interface__membrane__V < -40) ? (1000 * (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)); + return ((var_chaste_interface__membrane__V < -40) ? (1000 * (CHASTE_CONST(37.780000000000001) + var_chaste_interface__membrane__V) * (-127140 * CHASTE_MATH::Exp(CHASTE_CONST(0.24440000000000001) * var_chaste_interface__membrane__V) - CHASTE_CONST(3.4740000000000003e-5) * CHASTE_MATH::Exp(-CHASTE_CONST(0.043909999999999998) * var_chaste_interface__membrane__V)) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(24.640530000000002) + CHASTE_CONST(0.311) * var_chaste_interface__membrane__V))) : (0)); }; const double var_chaste_interface__membrane__V = mTableMins[0] + i*mTableSteps[0]; double val = f(var_chaste_interface__membrane__V); @@ -380,7 +382,7 @@ class Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables : public A for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return ((var_chaste_interface__membrane__V < -40) ? (121.2 * exp(-0.01052 * var_chaste_interface__membrane__V) / (1 + exp(-5.5312920000000005 - 0.13780000000000001 * var_chaste_interface__membrane__V))) : (300 * exp(-2.5349999999999999e-7 * var_chaste_interface__membrane__V) / (1 + exp(-3.2000000000000002 - 0.10000000000000001 * var_chaste_interface__membrane__V)))); + return ((var_chaste_interface__membrane__V < -40) ? (CHASTE_CONST(121.2) * CHASTE_MATH::Exp(-CHASTE_CONST(0.01052) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(5.5312920000000005) - CHASTE_CONST(0.13780000000000001) * var_chaste_interface__membrane__V))) : (300 * CHASTE_MATH::Exp(-CHASTE_CONST(2.5349999999999999e-7) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(3.2000000000000002) - CHASTE_CONST(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); @@ -402,7 +404,7 @@ class Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables : public A for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return ((fabs(47.130000000000003 + var_chaste_interface__membrane__V) >= 1.0000000000000001e-5) ? (320 * (47.130000000000003 + var_chaste_interface__membrane__V) / (1 - exp(-4.7130000000000001 - 0.10000000000000001 * var_chaste_interface__membrane__V))) : (3200)); + return ((CHASTE_MATH::Abs(CHASTE_CONST(47.130000000000003) + var_chaste_interface__membrane__V) >= CHASTE_CONST(1.0000000000000001e-5)) ? (320 * (CHASTE_CONST(47.130000000000003) + var_chaste_interface__membrane__V) / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(4.7130000000000001) - CHASTE_CONST(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); @@ -424,7 +426,7 @@ class Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables : public A for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return exp(-0.090909090909090912 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(-CHASTE_CONST(0.090909090909090912) * 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); @@ -435,7 +437,7 @@ class Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables : public A for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 1 / (1 + exp(-2.8666666666666667 - 0.13333333333333333 * var_chaste_interface__membrane__V)); + return 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.8666666666666667) - CHASTE_CONST(0.13333333333333333) * 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); @@ -446,7 +448,7 @@ class Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables : public A for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 0.60999999999999999 * (38.899999999999999 + var_chaste_interface__membrane__V) / (-1 + exp(5.6404999999999994 + 0.14499999999999999 * var_chaste_interface__membrane__V)) + 1.3799999999999999 * (14.199999999999999 + var_chaste_interface__membrane__V) / (1 - exp(-1.7465999999999999 - 0.123 * var_chaste_interface__membrane__V)); + return CHASTE_CONST(0.60999999999999999) * (CHASTE_CONST(38.899999999999999) + var_chaste_interface__membrane__V) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(5.6404999999999994) + CHASTE_CONST(0.14499999999999999) * var_chaste_interface__membrane__V)) + CHASTE_CONST(1.3799999999999999) * (CHASTE_CONST(14.199999999999999) + var_chaste_interface__membrane__V) / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(1.7465999999999999) - CHASTE_CONST(0.123) * 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); @@ -457,7 +459,7 @@ class Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables : public A for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 1 / (1 + exp(0.089820359281437126 - 0.059880239520958084 * var_chaste_interface__membrane__V)); + return 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(0.089820359281437126) - CHASTE_CONST(0.059880239520958084) * 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); @@ -468,7 +470,7 @@ class Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables : public A for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 0.13100000000000001 * (30 + var_chaste_interface__membrane__V) / (-1 + exp(2.0609999999999999 + 0.068699999999999997 * var_chaste_interface__membrane__V)) + 0.071899999999999992 * (30 + var_chaste_interface__membrane__V) / (1 - exp(-4.4399999999999995 - 0.14799999999999999 * var_chaste_interface__membrane__V)); + return CHASTE_CONST(0.13100000000000001) * (30 + var_chaste_interface__membrane__V) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(2.0609999999999999) + CHASTE_CONST(0.068699999999999997) * var_chaste_interface__membrane__V)) + CHASTE_CONST(0.071899999999999992) * (30 + var_chaste_interface__membrane__V) / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(4.4399999999999995) - CHASTE_CONST(0.14799999999999999) * 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); @@ -479,7 +481,7 @@ class Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables : public A for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 0.032750000000000001 * (30 + var_chaste_interface__membrane__V) / (-1 + exp(2.0609999999999999 + 0.068699999999999997 * var_chaste_interface__membrane__V)) + 0.017974999999999998 * (30 + var_chaste_interface__membrane__V) / (1 - exp(-4.4399999999999995 - 0.14799999999999999 * var_chaste_interface__membrane__V)); + return CHASTE_CONST(0.032750000000000001) * (30 + var_chaste_interface__membrane__V) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(2.0609999999999999) + CHASTE_CONST(0.068699999999999997) * var_chaste_interface__membrane__V)) + CHASTE_CONST(0.017974999999999998) * (30 + var_chaste_interface__membrane__V) / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(4.4399999999999995) - CHASTE_CONST(0.14799999999999999) * 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); @@ -490,7 +492,7 @@ class Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables : public A for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 15 / (1 + exp(12 + 0.20000000000000001 * var_chaste_interface__membrane__V)); + return 15 / (1 + CHASTE_MATH::Exp(12 + CHASTE_CONST(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); @@ -501,7 +503,7 @@ class Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables : public A for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 100 * exp(5 + 0.20000000000000001 * var_chaste_interface__membrane__V) / (1 + exp(5 + 0.20000000000000001 * var_chaste_interface__membrane__V)); + return 100 * CHASTE_MATH::Exp(5 + CHASTE_CONST(0.20000000000000001) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(5 + CHASTE_CONST(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); @@ -512,7 +514,7 @@ class Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables : public A for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 10000 * exp(-1.6000000000000001 + 0.040000000000000001 * var_chaste_interface__membrane__V) / (1 + exp(-1.6000000000000001 + 0.040000000000000001 * var_chaste_interface__membrane__V)); + return 10000 * CHASTE_MATH::Exp(-CHASTE_CONST(1.6000000000000001) + CHASTE_CONST(0.040000000000000001) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(1.6000000000000001) + CHASTE_CONST(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); @@ -523,7 +525,7 @@ class Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables : public A for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 10000 * exp(-3.6000000000000001 - 0.040000000000000001 * var_chaste_interface__membrane__V) / (1 + exp(-3.6000000000000001 - 0.040000000000000001 * var_chaste_interface__membrane__V)); + return 10000 * CHASTE_MATH::Exp(-CHASTE_CONST(3.6000000000000001) - CHASTE_CONST(0.040000000000000001) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(3.6000000000000001) - CHASTE_CONST(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); @@ -556,7 +558,7 @@ std::shared_ptr 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_amplitude_converted = -CHASTE_CONST(25.5) * CHASTE_CAP(); // 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 @@ -587,13 +589,13 @@ std::shared_ptr // 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[0] = CHASTE_CONST(1.8); // (var_calcium_dynamics__Cao) [millimolar] + this->mParameters[1] = CHASTE_CONST(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[3] = CHASTE_CONST(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] + this->mParameters[5] = CHASTE_CONST(0.75); // (var_time_independent_potassium_current__g_K1_max) [milliS_per_cm2] + this->mParameters[6] = CHASTE_CONST(0.02614); // (var_rapid_delayed_rectifier_potassium_current__g_Kr_max) [milliS_per_cm2] } Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::~Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt() @@ -644,7 +646,7 @@ std::shared_ptr // 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -681,27 +683,27 @@ std::shared_ptr // 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_L_type_Ca_channel_f_Ca_gate__f_Ca = 1 / (1 + CHASTE_CONST(1666.6666666666667) * var_chaste_interface__calcium_dynamics__Cai); // dimensionless + const double var_calcium_background_current__E_Ca = CHASTE_CONST(13.356169352749133) * CHASTE_MATH::Log(mParameters[0] / var_chaste_interface__calcium_dynamics__Cai); // millivolt + const double var_fast_sodium_current__E_Na = CHASTE_CONST(26.712338705498265) * CHASTE_MATH::Log(mParameters[2] / var_chaste_interface__ionic_concentrations__Nai); // millivolt + const double var_L_type_Ca_channel__i_Ca_L_converted = (CHASTE_CONST(7.8019226357407252) * (-CHASTE_CONST(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]) + CHASTE_CONST(0.0024381008236689767) * (-CHASTE_CONST(0.75) * mParameters[2] + CHASTE_CONST(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]) + CHASTE_CONST(0.00069711623550831479) * (-CHASTE_CONST(0.75) * mParameters[1] + CHASTE_CONST(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])) * CHASTE_CAP(); // uA_per_cm2 + const double var_Na_Ca_exchanger__i_NaCa = CHASTE_CONST(0.002) * (CHASTE_MATH::Pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] * _lt_0_row[4] - CHASTE_MATH::Pow(mParameters[2], 3) * var_chaste_interface__calcium_dynamics__Cai * _lt_0_row[5]) / ((1 + CHASTE_CONST(144.92753623188406) * var_chaste_interface__calcium_dynamics__Cai) * (1 + CHASTE_CONST(0.001) * CHASTE_MATH::Pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] + CHASTE_CONST(0.001) * CHASTE_MATH::Pow(mParameters[2], 3) * var_chaste_interface__calcium_dynamics__Cai)); // microA_per_microF + const double var_T_type_Ca_channel__i_Ca_T = CHASTE_CONST(0.050000000000000003) * CHASTE_MATH::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 = CHASTE_CONST(0.003016) * var_chaste_interface__membrane__V - CHASTE_CONST(0.003016) * var_calcium_background_current__E_Ca; // microA_per_microF + const double var_fast_sodium_current__i_Na_converted = CHASTE_MATH::Pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * CHASTE_CAP() * 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_non_specific_calcium_activated_current__i_ns_Ca = CHASTE_CONST(3612.0012202503358) * (-CHASTE_CONST(0.75) * mParameters[1] + CHASTE_CONST(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 + CHASTE_CONST(1.7279999999999996e-9) / CHASTE_MATH::Pow(var_chaste_interface__calcium_dynamics__Cai, 3)) * (_lt_0_row[3])) + CHASTE_CONST(3612.0012202503358) * (-CHASTE_CONST(0.75) * mParameters[2] + CHASTE_CONST(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 + CHASTE_CONST(1.7279999999999996e-9) / CHASTE_MATH::Pow(var_chaste_interface__calcium_dynamics__Cai, 3)) * (_lt_0_row[3])); // microA_per_microF + const double var_sarcolemmal_calcium_pump__i_p_Ca = CHASTE_CONST(1.1499999999999999) * var_chaste_interface__calcium_dynamics__Cai / (CHASTE_CONST(0.00050000000000000001) + var_chaste_interface__calcium_dynamics__Cai); // microA_per_microF + const double var_slow_delayed_rectifier_potassium_current__i_Ks = (CHASTE_CONST(0.433) + CHASTE_CONST(0.25979999999999998) / (1 + CHASTE_CONST(6.4818210260626455e-7) * CHASTE_MATH::Pow((1 / var_chaste_interface__calcium_dynamics__Cai), CHASTE_CONST(1.3999999999999999)))) * (-CHASTE_CONST(26.712338705498265) * CHASTE_MATH::Log((CHASTE_CONST(0.018329999999999999) * mParameters[2] + mParameters[1]) / (CHASTE_CONST(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 = CHASTE_CONST(0.0040000000000000001) * var_chaste_interface__membrane__V - CHASTE_CONST(0.0040000000000000001) * var_fast_sodium_current__E_Na; // microA_per_microF + const double var_sodium_potassium_pump__i_NaK = 2 * mParameters[1] / ((1 + 100 / CHASTE_MATH::Pow(var_chaste_interface__ionic_concentrations__Nai, 2)) * (CHASTE_CONST(1.5) + mParameters[1]) * (1 + _lt_0_row[7] + CHASTE_CONST(0.036499999999999998) * (-CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * CHASTE_MATH::Exp(CHASTE_CONST(0.01485884101040119) * mParameters[2])) * _lt_0_row[6])); // microA_per_microF + const double var_time_independent_potassium_current__E_K = CHASTE_CONST(26.712338705498265) * CHASTE_MATH::Log(mParameters[1] / var_chaste_interface__ionic_concentrations__Ki); // millivolt + const double var_ATP_sensitive_potassium_current__i_K_ATP = CHASTE_CONST(1.921898339896919e-8) * CHASTE_MATH::Pow(mParameters[1], CHASTE_CONST(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 = CHASTE_CONST(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 = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::Sqrt(mParameters[1]) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * CHASTE_CAP() * 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 = CHASTE_CONST(438.93811257017387) * CHASTE_MATH::Sqrt(mParameters[1]) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * CHASTE_CAP() * mParameters[5] / ((1 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.23849999999999999) * var_time_independent_potassium_current__E_K)) * (1020 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.23849999999999999) * var_time_independent_potassium_current__E_K)) + 1000 * (CHASTE_CONST(0.49124000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.43983232) + CHASTE_CONST(0.080320000000000003) * var_chaste_interface__membrane__V - CHASTE_CONST(0.080320000000000003) * var_time_independent_potassium_current__E_K) + CHASTE_MATH::Exp(-CHASTE_CONST(36.698642499999998) + CHASTE_CONST(0.061749999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.061749999999999999) * var_time_independent_potassium_current__E_K)) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.4444678999999998) + CHASTE_CONST(0.51429999999999998) * var_time_independent_potassium_current__E_K - CHASTE_CONST(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 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 - CHASTE_CAP() * var_ATP_sensitive_potassium_current__i_K_ATP - CHASTE_CAP() * var_Na_Ca_exchanger__i_NaCa - CHASTE_CAP() * var_T_type_Ca_channel__i_Ca_T - CHASTE_CAP() * var_calcium_background_current__i_Ca_b - CHASTE_CAP() * var_non_specific_calcium_activated_current__i_ns_Ca - CHASTE_CAP() * var_plateau_potassium_current__i_Kp - CHASTE_CAP() * var_sarcolemmal_calcium_pump__i_p_Ca - CHASTE_CAP() * var_slow_delayed_rectifier_potassium_current__i_Ks - CHASTE_CAP() * var_sodium_background_current__i_Na_b - CHASTE_CAP() * var_sodium_potassium_pump__i_NaK - CHASTE_CAP() * 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)); @@ -715,7 +717,7 @@ std::shared_ptr const double delta = 1e-8; const double yinit = rY[v_index]; - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -755,31 +757,31 @@ std::shared_ptr // 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_L_type_Ca_channel_f_Ca_gate__f_Ca = 1 / (1 + CHASTE_CONST(1666.6666666666667) * var_chaste_interface__calcium_dynamics__Cai); // dimensionless + const double var_calcium_background_current__E_Ca = CHASTE_CONST(13.356169352749133) * CHASTE_MATH::Log(mParameters[0] / var_chaste_interface__calcium_dynamics__Cai); // millivolt + const double var_fast_sodium_current__E_Na = CHASTE_CONST(26.712338705498265) * CHASTE_MATH::Log(mParameters[2] / var_chaste_interface__ionic_concentrations__Nai); // millivolt + const double var_L_type_Ca_channel__i_CaCa = CHASTE_CONST(7.8019226357407252) * (-CHASTE_CONST(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 = CHASTE_CONST(0.00069711623550831479) * (-CHASTE_CONST(0.75) * mParameters[1] + CHASTE_CONST(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 = CHASTE_CONST(0.0024381008236689767) * (-CHASTE_CONST(0.75) * mParameters[2] + CHASTE_CONST(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 = CHASTE_CONST(0.002) * (CHASTE_MATH::Pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] * _lt_0_row[4] - CHASTE_MATH::Pow(mParameters[2], 3) * var_chaste_interface__calcium_dynamics__Cai * _lt_0_row[5]) / ((1 + CHASTE_CONST(144.92753623188406) * var_chaste_interface__calcium_dynamics__Cai) * (1 + CHASTE_CONST(0.001) * CHASTE_MATH::Pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] + CHASTE_CONST(0.001) * CHASTE_MATH::Pow(mParameters[2], 3) * var_chaste_interface__calcium_dynamics__Cai)); // microA_per_microF + const double var_T_type_Ca_channel__i_Ca_T = CHASTE_CONST(0.050000000000000003) * CHASTE_MATH::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 = CHASTE_CONST(0.003016) * var_chaste_interface__membrane__V - CHASTE_CONST(0.003016) * var_calcium_background_current__E_Ca; // microA_per_microF + const double var_fast_sodium_current__i_Na = CHASTE_MATH::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_non_specific_calcium_activated_current__i_ns_K = CHASTE_CONST(3612.0012202503358) * (-CHASTE_CONST(0.75) * mParameters[1] + CHASTE_CONST(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 + CHASTE_CONST(1.7279999999999996e-9) / CHASTE_MATH::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 = CHASTE_CONST(3612.0012202503358) * (-CHASTE_CONST(0.75) * mParameters[2] + CHASTE_CONST(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 + CHASTE_CONST(1.7279999999999996e-9) / CHASTE_MATH::Pow(var_chaste_interface__calcium_dynamics__Cai, 3)) * (_lt_0_row[3])); // microA_per_microF + const double var_sarcolemmal_calcium_pump__i_p_Ca = CHASTE_CONST(1.1499999999999999) * var_chaste_interface__calcium_dynamics__Cai / (CHASTE_CONST(0.00050000000000000001) + var_chaste_interface__calcium_dynamics__Cai); // microA_per_microF + const double var_slow_delayed_rectifier_potassium_current__i_Ks = (CHASTE_CONST(0.433) + CHASTE_CONST(0.25979999999999998) / (1 + CHASTE_CONST(6.4818210260626455e-7) * CHASTE_MATH::Pow((1 / var_chaste_interface__calcium_dynamics__Cai), CHASTE_CONST(1.3999999999999999)))) * (-CHASTE_CONST(26.712338705498265) * CHASTE_MATH::Log((CHASTE_CONST(0.018329999999999999) * mParameters[2] + mParameters[1]) / (CHASTE_CONST(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 = CHASTE_CONST(0.0040000000000000001) * var_chaste_interface__membrane__V - CHASTE_CONST(0.0040000000000000001) * var_fast_sodium_current__E_Na; // microA_per_microF + const double var_sodium_potassium_pump__i_NaK = 2 * mParameters[1] / ((1 + 100 / CHASTE_MATH::Pow(var_chaste_interface__ionic_concentrations__Nai, 2)) * (CHASTE_CONST(1.5) + mParameters[1]) * (1 + _lt_0_row[7] + CHASTE_CONST(0.036499999999999998) * (-CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * CHASTE_MATH::Exp(CHASTE_CONST(0.01485884101040119) * mParameters[2])) * _lt_0_row[6])); // microA_per_microF + const double var_time_independent_potassium_current__E_K = CHASTE_CONST(26.712338705498265) * CHASTE_MATH::Log(mParameters[1] / var_chaste_interface__ionic_concentrations__Ki); // millivolt + const double var_ATP_sensitive_potassium_current__i_K_ATP = CHASTE_CONST(1.921898339896919e-8) * CHASTE_MATH::Pow(mParameters[1], CHASTE_CONST(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 = CHASTE_CONST(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 = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::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 = CHASTE_CONST(438.93811257017387) * CHASTE_MATH::Sqrt(mParameters[1]) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[5] / ((1 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.23849999999999999) * var_time_independent_potassium_current__E_K)) * (1020 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.23849999999999999) * var_time_independent_potassium_current__E_K)) + 1000 * (CHASTE_CONST(0.49124000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.43983232) + CHASTE_CONST(0.080320000000000003) * var_chaste_interface__membrane__V - CHASTE_CONST(0.080320000000000003) * var_time_independent_potassium_current__E_K) + CHASTE_MATH::Exp(-CHASTE_CONST(36.698642499999998) + CHASTE_CONST(0.061749999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.061749999999999999) * var_time_independent_potassium_current__E_K)) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.4444678999999998) + CHASTE_CONST(0.51429999999999998) * var_time_independent_potassium_current__E_K - CHASTE_CONST(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 + const double var_membrane__dVdt = -(CHASTE_STIM(var_chaste_interface__environment__time_converted) / CHASTE_CAP() + 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 = CHASTE_CONST(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; @@ -815,7 +817,7 @@ std::shared_ptr mYInit = rY; double y_save; - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -877,70 +879,70 @@ std::shared_ptr // 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 d_dt_chaste_interface_var_calcium_dynamics__APtrack2 = CHASTE_CONST(0.001) * (((var_chaste_interface__calcium_dynamics__APtrack > CHASTE_CONST(0.17999999999999999)) && (var_chaste_interface__calcium_dynamics__APtrack < CHASTE_CONST(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 = CHASTE_CONST(0.001) * (((var_chaste_interface__calcium_dynamics__APtrack > CHASTE_CONST(0.17999999999999999)) && (var_chaste_interface__calcium_dynamics__APtrack < CHASTE_CONST(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 + CHASTE_CONST(1666.6666666666667) * var_chaste_interface__calcium_dynamics__Cai); // dimensionless + const double d_dt_chaste_interface_var_calcium_dynamics__OVRLDtrack2 = CHASTE_CONST(0.001) * (((var_chaste_interface__calcium_dynamics__OVRLDtrack > CHASTE_CONST(0.97999999999999998)) && (var_chaste_interface__calcium_dynamics__OVRLDtrack2 < CHASTE_CONST(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 = CHASTE_CONST(0.001) * (((var_chaste_interface__calcium_dynamics__OVRLDtrack > CHASTE_CONST(0.97999999999999998)) && (var_chaste_interface__calcium_dynamics__OVRLDtrack3 < CHASTE_CONST(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 = CHASTE_CONST(0.001) * (((var_chaste_interface__calcium_dynamics__APtrack3 < CHASTE_CONST(0.37)) && (var_chaste_interface__calcium_dynamics__OVRLDtrack3 < CHASTE_CONST(0.37)) && (1 / (1 + CHASTE_CONST(0.80000000000000004) / var_chaste_interface__calcium_dynamics__Ca_JSR) > CHASTE_CONST(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 = CHASTE_CONST(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 > CHASTE_CONST(0.00018000000000000001)) ? (60000 * (1 - var_chaste_interface__calcium_dynamics__APtrack2) * (-CHASTE_CONST(0.00018000000000000001) + var_chaste_interface__calcium_dynamics__Cainfluxtrack) * var_chaste_interface__calcium_dynamics__APtrack2 / (CHASTE_CONST(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 / (CHASTE_CONST(0.00092000000000000003) + var_chaste_interface__calcium_dynamics__Cai); // millimolar_per_second + const double var_calcium_dynamics__i_tr = CHASTE_CONST(5.5555555555555554) * var_chaste_interface__calcium_dynamics__Ca_NSR - CHASTE_CONST(5.5555555555555554) * var_chaste_interface__calcium_dynamics__Ca_JSR; // millimolar_per_second + const double d_dt_chaste_interface_var_calcium_dynamics__Ca_JSR = CHASTE_CONST(0.001) * (-var_calcium_dynamics__i_rel + var_calcium_dynamics__i_tr) / (1 + 8 / CHASTE_MATH::Pow((CHASTE_CONST(0.80000000000000004) + var_chaste_interface__calcium_dynamics__Ca_JSR), 2)); // millimolar / millisecond + const double var_ionic_concentrations__V_myo = CHASTE_CONST(8.2280000000000009e-12) * CHASTE_CONST(CHASTE_MATH::Pi); // micro_litre + const double var_calcium_dynamics__V_JSR = CHASTE_CONST(0.0070588235294117632) * var_ionic_concentrations__V_myo; // micro_litre + const double var_calcium_dynamics__V_NSR = CHASTE_CONST(0.081176470588235281) * var_ionic_concentrations__V_myo; // micro_litre + const double d_dt_chaste_interface_var_calcium_dynamics__Ca_NSR = CHASTE_CONST(0.001) * var_calcium_dynamics__i_up - CHASTE_CONST(0.001) * var_calcium_dynamics__i_leak - CHASTE_CONST(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 = CHASTE_CONST(13.356169352749133) * CHASTE_MATH::Log(mParameters[0] / var_chaste_interface__calcium_dynamics__Cai); // millivolt + const double var_fast_sodium_current__E_Na = CHASTE_CONST(26.712338705498265) * CHASTE_MATH::Log(mParameters[2] / var_chaste_interface__ionic_concentrations__Nai); // millivolt + const double var_L_type_Ca_channel__i_CaCa = CHASTE_CONST(7.8019226357407252) * (-CHASTE_CONST(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 = CHASTE_CONST(0.00069711623550831479) * (-CHASTE_CONST(0.75) * mParameters[1] + CHASTE_CONST(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 = CHASTE_CONST(0.0024381008236689767) * (-CHASTE_CONST(0.75) * mParameters[2] + CHASTE_CONST(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_d_gate__d_infinity = 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.16025641025641024) * var_L_type_Ca_channel_d_gate__E0_d)); // dimensionless + const double var_L_type_Ca_channel_d_gate__tau_d = ((CHASTE_MATH::Abs(var_L_type_Ca_channel_d_gate__E0_d) < CHASTE_CONST(1.0000000000000001e-5)) ? (CHASTE_CONST(0.0045787545787545781)) : (CHASTE_CONST(0.028571428571428571) * (1 - CHASTE_MATH::Exp(-CHASTE_CONST(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 = CHASTE_CONST(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 - CHASTE_CONST(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 d_dt_chaste_interface_var_L_type_Ca_channel_f_gate__f = CHASTE_CONST(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 - CHASTE_CONST(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 = CHASTE_CONST(0.002) * (CHASTE_MATH::Pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] * _lt_0_row[4] - CHASTE_MATH::Pow(mParameters[2], 3) * var_chaste_interface__calcium_dynamics__Cai * _lt_0_row[5]) / ((1 + CHASTE_CONST(144.92753623188406) * var_chaste_interface__calcium_dynamics__Cai) * (1 + CHASTE_CONST(0.001) * CHASTE_MATH::Pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] + CHASTE_CONST(0.001) * CHASTE_MATH::Pow(mParameters[2], 3) * var_chaste_interface__calcium_dynamics__Cai)); // microA_per_microF + const double var_T_type_Ca_channel__i_Ca_T = CHASTE_CONST(0.050000000000000003) * CHASTE_MATH::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 = CHASTE_CONST(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 = CHASTE_CONST(0.001) * (-var_chaste_interface__T_type_Ca_channel_g_gate__g + _lt_0_row[14]) * ((var_chaste_interface__membrane__V <= 0) ? (1 / (CHASTE_CONST(0.012) - CHASTE_CONST(0.00087500000000000002) * var_chaste_interface__membrane__V)) : (CHASTE_CONST(83.333333333333329))); // 1 / millisecond + const double var_calcium_background_current__i_Ca_b = CHASTE_CONST(0.003016) * var_chaste_interface__membrane__V - CHASTE_CONST(0.003016) * var_calcium_background_current__E_Ca; // microA_per_microF + const double var_fast_sodium_current__i_Na = CHASTE_MATH::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 = CHASTE_CONST(0.001) * (1 - var_chaste_interface__fast_sodium_current_h_gate__h) * _lt_0_row[15] - CHASTE_CONST(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 = CHASTE_CONST(0.001) * (1 - var_chaste_interface__fast_sodium_current_j_gate__j) * _lt_0_row[17] - CHASTE_CONST(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 = CHASTE_CONST(0.001) * (1 - var_chaste_interface__fast_sodium_current_m_gate__m) * _lt_0_row[19] - CHASTE_CONST(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_non_specific_calcium_activated_current__i_ns_K = CHASTE_CONST(3612.0012202503358) * (-CHASTE_CONST(0.75) * mParameters[1] + CHASTE_CONST(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 + CHASTE_CONST(1.7279999999999996e-9) / CHASTE_MATH::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 = CHASTE_CONST(3612.0012202503358) * (-CHASTE_CONST(0.75) * mParameters[2] + CHASTE_CONST(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 + CHASTE_CONST(1.7279999999999996e-9) / CHASTE_MATH::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 = CHASTE_CONST(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 = CHASTE_CONST(1.1499999999999999) * var_chaste_interface__calcium_dynamics__Cai / (CHASTE_CONST(0.00050000000000000001) + var_chaste_interface__calcium_dynamics__Cai); // microA_per_microF + const double d_dt_chaste_interface_var_calcium_dynamics__Cai = CHASTE_CONST(0.001) * (-CHASTE_CONST(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 + CHASTE_CONST(0.00011900000000000002) / CHASTE_MATH::Pow((CHASTE_CONST(0.0023800000000000002) + var_chaste_interface__calcium_dynamics__Cai), 2) + CHASTE_CONST(3.5000000000000004e-5) / CHASTE_MATH::Pow((CHASTE_CONST(0.00050000000000000001) + var_chaste_interface__calcium_dynamics__Cai), 2)); // millimolar / millisecond + const double d_dt_chaste_interface_var_calcium_dynamics__Cainfluxtrack = CHASTE_CONST(0.001) * ((var_chaste_interface__calcium_dynamics__APtrack > CHASTE_CONST(0.20000000000000001)) ? (-CHASTE_CONST(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 > CHASTE_CONST(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 = CHASTE_CONST(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 = (CHASTE_CONST(0.433) + CHASTE_CONST(0.25979999999999998) / (1 + CHASTE_CONST(6.4818210260626455e-7) * CHASTE_MATH::Pow((1 / var_chaste_interface__calcium_dynamics__Cai), CHASTE_CONST(1.3999999999999999)))) * (-CHASTE_CONST(26.712338705498265) * CHASTE_MATH::Log((CHASTE_CONST(0.018329999999999999) * mParameters[2] + mParameters[1]) / (CHASTE_CONST(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 = CHASTE_CONST(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 = CHASTE_CONST(0.0040000000000000001) * var_chaste_interface__membrane__V - CHASTE_CONST(0.0040000000000000001) * var_fast_sodium_current__E_Na; // microA_per_microF + const double var_sodium_potassium_pump__i_NaK = 2 * mParameters[1] / ((1 + 100 / CHASTE_MATH::Pow(var_chaste_interface__ionic_concentrations__Nai, 2)) * (CHASTE_CONST(1.5) + mParameters[1]) * (1 + _lt_0_row[7] + CHASTE_CONST(0.036499999999999998) * (-CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * CHASTE_MATH::Exp(CHASTE_CONST(0.01485884101040119) * mParameters[2])) * _lt_0_row[6])); // microA_per_microF + const double d_dt_chaste_interface_var_ionic_concentrations__Nai = CHASTE_CONST(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 = CHASTE_CONST(26.712338705498265) * CHASTE_MATH::Log(mParameters[1] / var_chaste_interface__ionic_concentrations__Ki); // millivolt + const double var_ATP_sensitive_potassium_current__i_K_ATP = CHASTE_CONST(1.921898339896919e-8) * CHASTE_MATH::Pow(mParameters[1], CHASTE_CONST(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 = CHASTE_CONST(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 = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::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 = CHASTE_CONST(438.93811257017387) * CHASTE_MATH::Sqrt(mParameters[1]) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[5] / ((1 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.23849999999999999) * var_time_independent_potassium_current__E_K)) * (1020 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.23849999999999999) * var_time_independent_potassium_current__E_K)) + 1000 * (CHASTE_CONST(0.49124000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.43983232) + CHASTE_CONST(0.080320000000000003) * var_chaste_interface__membrane__V - CHASTE_CONST(0.080320000000000003) * var_time_independent_potassium_current__E_K) + CHASTE_MATH::Exp(-CHASTE_CONST(36.698642499999998) + CHASTE_CONST(0.061749999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.061749999999999999) * var_time_independent_potassium_current__E_K)) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.4444678999999998) + CHASTE_CONST(0.51429999999999998) * var_time_independent_potassium_current__E_K - CHASTE_CONST(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 d_dt_chaste_interface_var_transient_outward_current_ydv_gate__ydv = CHASTE_CONST(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 + const double d_dt_chaste_interface_var_ionic_concentrations__Ki = CHASTE_CONST(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 = -(CHASTE_STIM(var_chaste_interface__environment__time_converted) / CHASTE_CAP() + 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 = CHASTE_CONST(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 = CHASTE_CONST(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) { @@ -948,7 +950,7 @@ std::shared_ptr } else { - d_dt_chaste_interface_var_membrane__V = 0.001 * var_membrane__dVdt; // millivolt / millisecond + d_dt_chaste_interface_var_membrane__V = CHASTE_CONST(0.001) * var_membrane__dVdt; // millivolt / millisecond } mEvalF[0] = d_dt_chaste_interface_var_membrane__V; @@ -1206,7 +1208,7 @@ std::shared_ptr double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -1245,31 +1247,31 @@ std::shared_ptr 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_L_type_Ca_channel_f_Ca_gate__f_Ca = 1 / (1 + CHASTE_CONST(1666.6666666666667) * var_chaste_interface__calcium_dynamics__Cai); // dimensionless + const double var_calcium_background_current__E_Ca = CHASTE_CONST(13.356169352749133) * CHASTE_MATH::Log(mParameters[0] / var_chaste_interface__calcium_dynamics__Cai); // millivolt + const double var_fast_sodium_current__E_Na = CHASTE_CONST(26.712338705498265) * CHASTE_MATH::Log(mParameters[2] / var_chaste_interface__ionic_concentrations__Nai); // millivolt + const double var_L_type_Ca_channel__i_CaCa = CHASTE_CONST(7.8019226357407252) * (-CHASTE_CONST(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 = CHASTE_CONST(0.00069711623550831479) * (-CHASTE_CONST(0.75) * mParameters[1] + CHASTE_CONST(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 = CHASTE_CONST(0.0024381008236689767) * (-CHASTE_CONST(0.75) * mParameters[2] + CHASTE_CONST(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 = CHASTE_CONST(0.002) * (CHASTE_MATH::Pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] * _lt_0_row[4] - CHASTE_MATH::Pow(mParameters[2], 3) * var_chaste_interface__calcium_dynamics__Cai * _lt_0_row[5]) / ((1 + CHASTE_CONST(144.92753623188406) * var_chaste_interface__calcium_dynamics__Cai) * (1 + CHASTE_CONST(0.001) * CHASTE_MATH::Pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] + CHASTE_CONST(0.001) * CHASTE_MATH::Pow(mParameters[2], 3) * var_chaste_interface__calcium_dynamics__Cai)); // microA_per_microF + const double var_T_type_Ca_channel__i_Ca_T = CHASTE_CONST(0.050000000000000003) * CHASTE_MATH::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 = CHASTE_CONST(0.003016) * var_chaste_interface__membrane__V - CHASTE_CONST(0.003016) * var_calcium_background_current__E_Ca; // microA_per_microF + const double var_fast_sodium_current__i_Na = CHASTE_MATH::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_non_specific_calcium_activated_current__i_ns_K = CHASTE_CONST(3612.0012202503358) * (-CHASTE_CONST(0.75) * mParameters[1] + CHASTE_CONST(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 + CHASTE_CONST(1.7279999999999996e-9) / CHASTE_MATH::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 = CHASTE_CONST(3612.0012202503358) * (-CHASTE_CONST(0.75) * mParameters[2] + CHASTE_CONST(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 + CHASTE_CONST(1.7279999999999996e-9) / CHASTE_MATH::Pow(var_chaste_interface__calcium_dynamics__Cai, 3)) * (_lt_0_row[3])); // microA_per_microF + const double var_sarcolemmal_calcium_pump__i_p_Ca = CHASTE_CONST(1.1499999999999999) * var_chaste_interface__calcium_dynamics__Cai / (CHASTE_CONST(0.00050000000000000001) + var_chaste_interface__calcium_dynamics__Cai); // microA_per_microF + const double var_slow_delayed_rectifier_potassium_current__i_Ks = (CHASTE_CONST(0.433) + CHASTE_CONST(0.25979999999999998) / (1 + CHASTE_CONST(6.4818210260626455e-7) * CHASTE_MATH::Pow((1 / var_chaste_interface__calcium_dynamics__Cai), CHASTE_CONST(1.3999999999999999)))) * (-CHASTE_CONST(26.712338705498265) * CHASTE_MATH::Log((CHASTE_CONST(0.018329999999999999) * mParameters[2] + mParameters[1]) / (CHASTE_CONST(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 = CHASTE_CONST(0.0040000000000000001) * var_chaste_interface__membrane__V - CHASTE_CONST(0.0040000000000000001) * var_fast_sodium_current__E_Na; // microA_per_microF + const double var_sodium_potassium_pump__i_NaK = 2 * mParameters[1] / ((1 + 100 / CHASTE_MATH::Pow(var_chaste_interface__ionic_concentrations__Nai, 2)) * (CHASTE_CONST(1.5) + mParameters[1]) * (1 + _lt_0_row[7] + CHASTE_CONST(0.036499999999999998) * (-CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * CHASTE_MATH::Exp(CHASTE_CONST(0.01485884101040119) * mParameters[2])) * _lt_0_row[6])); // microA_per_microF + const double var_time_independent_potassium_current__E_K = CHASTE_CONST(26.712338705498265) * CHASTE_MATH::Log(mParameters[1] / var_chaste_interface__ionic_concentrations__Ki); // millivolt + const double var_ATP_sensitive_potassium_current__i_K_ATP = CHASTE_CONST(1.921898339896919e-8) * CHASTE_MATH::Pow(mParameters[1], CHASTE_CONST(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 = CHASTE_CONST(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 = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::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 = CHASTE_CONST(438.93811257017387) * CHASTE_MATH::Sqrt(mParameters[1]) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[5] / ((1 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.23849999999999999) * var_time_independent_potassium_current__E_K)) * (1020 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.23849999999999999) * var_time_independent_potassium_current__E_K)) + 1000 * (CHASTE_CONST(0.49124000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.43983232) + CHASTE_CONST(0.080320000000000003) * var_chaste_interface__membrane__V - CHASTE_CONST(0.080320000000000003) * var_time_independent_potassium_current__E_K) + CHASTE_MATH::Exp(-CHASTE_CONST(36.698642499999998) + CHASTE_CONST(0.061749999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.061749999999999999) * var_time_independent_potassium_current__E_K)) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.4444678999999998) + CHASTE_CONST(0.51429999999999998) * var_time_independent_potassium_current__E_K - CHASTE_CONST(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 + const double var_membrane__dVdt = -(CHASTE_STIM(var_chaste_interface__environment__time_converted) / CHASTE_CAP() + 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 = CHASTE_CONST(0.001) * var_membrane__dVdt; // millivolt / millisecond return d_dt_chaste_interface_var_membrane__V; } @@ -1279,7 +1281,7 @@ std::shared_ptr double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -1318,113 +1320,113 @@ std::shared_ptr const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); const double var_x0 = 1 / var_chaste_interface__calcium_dynamics__Cai; - const double var_x1 = pow(var_x0, 1.3999999999999999); - const double var_x2 = 1 + 6.4818210260626455e-7 * var_x1; - const double var_x3 = 0.433 + 0.25979999999999998 / var_x2; + const double var_x1 = CHASTE_MATH::Pow(var_x0, CHASTE_CONST(1.3999999999999999)); + const double var_x2 = 1 + CHASTE_CONST(6.4818210260626455e-7) * var_x1; + const double var_x3 = CHASTE_CONST(0.433) + CHASTE_CONST(0.25979999999999998) / var_x2; const double var_x4 = 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_x5 = var_x3 * var_x4; - const double var_x6 = 0.018717941753901308 * var_chaste_interface__membrane__V; - const double var_x7 = exp(var_x6); - const double var_x8 = pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0]; + const double var_x6 = CHASTE_CONST(0.018717941753901308) * var_chaste_interface__membrane__V; + const double var_x7 = CHASTE_MATH::Exp(var_x6); + const double var_x8 = CHASTE_MATH::Pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0]; const double var_x9 = var_x7 * var_x8; - const double var_x10 = exp(-var_x6); - const double var_x11 = pow(mParameters[2], 3); + const double var_x10 = CHASTE_MATH::Exp(-var_x6); + const double var_x11 = CHASTE_MATH::Pow(mParameters[2], 3); const double var_x12 = var_x11 * var_chaste_interface__calcium_dynamics__Cai; const double var_x13 = var_x10 * var_x12; - const double var_x14 = 0.018717941753901308 * var_x13 + 0.018717941753901308 * var_x9; - const double var_x15 = 1 / (1 + 144.92753623188406 * var_chaste_interface__calcium_dynamics__Cai); - const double var_x16 = 1 + 0.001 * var_x12 + 0.001 * var_x8; + const double var_x14 = CHASTE_CONST(0.018717941753901308) * var_x13 + CHASTE_CONST(0.018717941753901308) * var_x9; + const double var_x15 = 1 / (1 + CHASTE_CONST(144.92753623188406) * var_chaste_interface__calcium_dynamics__Cai); + const double var_x16 = 1 + CHASTE_CONST(0.001) * var_x12 + CHASTE_CONST(0.001) * var_x8; const double var_x17 = 1 / var_x16; const double var_x18 = var_x15 * var_x17; - const double var_x19 = 0.002 * var_x18; + const double var_x19 = CHASTE_CONST(0.002) * var_x18; const double var_x20 = var_x14 * var_x19; - const double var_x21 = pow(var_chaste_interface__ionic_concentrations__Nai, (-2)); + const double var_x21 = CHASTE_MATH::Pow(var_chaste_interface__ionic_concentrations__Nai, (-2)); const double var_x22 = 1 / (1 + 100 * var_x21); const double var_x23 = 2 * var_x22; - const double var_x24 = 1 / (1.5 + mParameters[1]); - const double var_x25 = exp(-0.003743588350780262 * var_chaste_interface__membrane__V); - const double var_x26 = exp(0.01485884101040119 * mParameters[2]); - const double var_x27 = 0.037435883507802616 * var_chaste_interface__membrane__V; - const double var_x28 = exp(-var_x27); - const double var_x29 = 1 + 0.1245 * var_x25 + 0.036499999999999998 * var_x28 * (-0.14285714285714285 + 0.14285714285714285 * var_x26); - const double var_x30 = pow(var_x29, (-2)); - const double var_x31 = 0.00046607674967214262 * var_x25 + 0.037435883507802616 * var_x28 * (-0.0052142857142857138 + 0.0052142857142857138 * var_x26); + const double var_x24 = 1 / (CHASTE_CONST(1.5) + mParameters[1]); + const double var_x25 = CHASTE_MATH::Exp(-CHASTE_CONST(0.003743588350780262) * var_chaste_interface__membrane__V); + const double var_x26 = CHASTE_MATH::Exp(CHASTE_CONST(0.01485884101040119) * mParameters[2]); + const double var_x27 = CHASTE_CONST(0.037435883507802616) * var_chaste_interface__membrane__V; + const double var_x28 = CHASTE_MATH::Exp(-var_x27); + const double var_x29 = 1 + CHASTE_CONST(0.1245) * var_x25 + CHASTE_CONST(0.036499999999999998) * var_x28 * (-CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * var_x26); + const double var_x30 = CHASTE_MATH::Pow(var_x29, (-2)); + const double var_x31 = CHASTE_CONST(0.00046607674967214262) * var_x25 + CHASTE_CONST(0.037435883507802616) * var_x28 * (-CHASTE_CONST(0.0052142857142857138) + CHASTE_CONST(0.0052142857142857138) * var_x26); const double var_x32 = var_x24 * var_x30 * var_x31 * mParameters[1]; - const double var_x33 = pow(var_chaste_interface__T_type_Ca_channel_b_gate__b, 2); + const double var_x33 = CHASTE_MATH::Pow(var_chaste_interface__T_type_Ca_channel_b_gate__b, 2); const double var_x34 = var_x33 * var_chaste_interface__T_type_Ca_channel_g_gate__g; - const double var_x35 = 0.050000000000000003 * var_x34; - const double var_x36 = 1 / (1 + 1666.6666666666667 * var_chaste_interface__calcium_dynamics__Cai); + const double var_x35 = CHASTE_CONST(0.050000000000000003) * var_x34; + const double var_x36 = 1 / (1 + CHASTE_CONST(1666.6666666666667) * var_chaste_interface__calcium_dynamics__Cai); const double var_x37 = var_x36 * var_chaste_interface__L_type_Ca_channel_f_gate__f; const double var_x38 = var_x37 * var_chaste_interface__L_type_Ca_channel_d_gate__d; const double var_x39 = _lt_0_row[0]; const double var_x40 = -1 + var_x39; const double var_x41 = 1 / var_x40; const double var_x42 = var_x39 * var_chaste_interface__calcium_dynamics__Cai; - const double var_x43 = var_x42 - 0.34100000000000003 * mParameters[0]; + const double var_x43 = var_x42 - CHASTE_CONST(0.34100000000000003) * mParameters[0]; const double var_x44 = var_x41 * var_x43; - const double var_x45 = 7.8019226357407252 * var_x44; + const double var_x45 = CHASTE_CONST(7.8019226357407252) * var_x44; const double var_x46 = var_x38 * var_x45; const double var_x47 = var_x38 * var_chaste_interface__membrane__V; const double var_x48 = var_x41 * var_x47; - const double var_x49 = var_x35 + var_x46 + 0.58414373385695628 * var_x42 * var_x48 - 0.58414373385695628 * var_x39 * var_x43 * var_x47 / pow(var_x40, 2); - const double var_x50 = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3); + const double var_x49 = var_x35 + var_x46 + CHASTE_CONST(0.58414373385695628) * var_x42 * var_x48 - CHASTE_CONST(0.58414373385695628) * var_x39 * var_x43 * var_x47 / CHASTE_MATH::Pow(var_x40, 2); + const double var_x50 = CHASTE_MATH::Pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3); const double var_x51 = var_x50 * mParameters[4] * var_chaste_interface__fast_sodium_current_j_gate__j; const double var_x52 = var_x51 * var_chaste_interface__fast_sodium_current_h_gate__h; - const double var_x53 = exp(var_x27); + const double var_x53 = CHASTE_MATH::Exp(var_x27); const double var_x54 = -1 + var_x53; const double var_x55 = 1 / var_x54; const double var_x56 = var_x38 * var_x55; - const double var_x57 = 0.75 * var_x53; - const double var_x58 = -0.75 * mParameters[2] + var_x57 * var_chaste_interface__ionic_concentrations__Nai; - const double var_x59 = 0.0024381008236689767 * var_x58; + const double var_x57 = CHASTE_CONST(0.75) * var_x53; + const double var_x58 = -CHASTE_CONST(0.75) * mParameters[2] + var_x57 * var_chaste_interface__ionic_concentrations__Nai; + const double var_x59 = CHASTE_CONST(0.0024381008236689767) * var_x58; const double var_x60 = var_x56 * var_x59; const double var_x61 = var_x53 * var_x56 * var_chaste_interface__membrane__V; - const double var_x62 = var_x47 * var_x53 / pow(var_x54, 2); - const double var_x63 = var_x52 + var_x60 + 6.8454343811362063e-5 * var_x61 * var_chaste_interface__ionic_concentrations__Nai - 9.1272458415149417e-5 * var_x58 * var_x62; - const double var_x64 = exp(1.2521739130434781 - 0.16722408026755853 * var_chaste_interface__membrane__V); + const double var_x62 = var_x47 * var_x53 / CHASTE_MATH::Pow(var_x54, 2); + const double var_x63 = var_x52 + var_x60 + CHASTE_CONST(6.8454343811362063e-5) * var_x61 * var_chaste_interface__ionic_concentrations__Nai - CHASTE_CONST(9.1272458415149417e-5) * var_x58 * var_x62; + const double var_x64 = CHASTE_MATH::Exp(CHASTE_CONST(1.2521739130434781) - CHASTE_CONST(0.16722408026755853) * var_chaste_interface__membrane__V); const double var_x65 = 1 + var_x64; const double var_x66 = 1 / var_x65; - const double var_x67 = 0.0055199999999999997 * var_x66; - const double var_x68 = pow(mParameters[1], 0.23999999999999999); - const double var_x69 = 1.921898339896919e-8 * var_x68; + const double var_x67 = CHASTE_CONST(0.0055199999999999997) * var_x66; + const double var_x68 = CHASTE_MATH::Pow(mParameters[1], CHASTE_CONST(0.23999999999999999)); + const double var_x69 = CHASTE_CONST(1.921898339896919e-8) * var_x68; const double var_x70 = 1 / var_chaste_interface__ionic_concentrations__Ki; - const double var_x71 = log(var_x70 * mParameters[1]); - const double var_x72 = -26.712338705498265 * var_x71 + var_chaste_interface__membrane__V; - const double var_x73 = exp(0.4017857142857143 + 0.044642857142857144 * var_chaste_interface__membrane__V); + const double var_x71 = CHASTE_MATH::Log(var_x70 * mParameters[1]); + const double var_x72 = -CHASTE_CONST(26.712338705498265) * var_x71 + var_chaste_interface__membrane__V; + const double var_x73 = CHASTE_MATH::Exp(CHASTE_CONST(0.4017857142857143) + CHASTE_CONST(0.044642857142857144) * var_chaste_interface__membrane__V); const double var_x74 = 1 + var_x73; - const double var_x75 = sqrt(mParameters[1]); + const double var_x75 = CHASTE_MATH::Sqrt(mParameters[1]); const double var_x76 = var_x75 * mParameters[6] / var_x74; const double var_x77 = var_x76 * var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr; - const double var_x78 = 0.43033148291193518 * var_x77; - const double var_x79 = exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 6.3708927812613361 * var_x71); + const double var_x78 = CHASTE_CONST(0.43033148291193518) * var_x77; + const double var_x79 = CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(6.3708927812613361) * var_x71); const double var_x80 = 1 + var_x79; const double var_x81 = 1 / var_x80; - const double var_x82 = exp(-2.4444678999999998 + 13.738155796237757 * var_x71 - 0.51429999999999998 * var_chaste_interface__membrane__V); + const double var_x82 = CHASTE_MATH::Exp(-CHASTE_CONST(2.4444678999999998) + CHASTE_CONST(13.738155796237757) * var_x71 - CHASTE_CONST(0.51429999999999998) * var_chaste_interface__membrane__V); const double var_x83 = 1 + var_x82; const double var_x84 = 1 / var_x83; - const double var_x85 = exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__V - 2.1455350448256207 * var_x71); - const double var_x86 = exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__V - 1.6494869150645177 * var_x71); - const double var_x87 = var_x86 + 0.49124000000000001 * var_x85; + const double var_x85 = CHASTE_MATH::Exp(CHASTE_CONST(0.43983232) + CHASTE_CONST(0.080320000000000003) * var_chaste_interface__membrane__V - CHASTE_CONST(2.1455350448256207) * var_x71); + const double var_x86 = CHASTE_MATH::Exp(-CHASTE_CONST(36.698642499999998) + CHASTE_CONST(0.061749999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(1.6494869150645177) * var_x71); + const double var_x87 = var_x86 + CHASTE_CONST(0.49124000000000001) * var_x85; const double var_x88 = var_x84 * var_x87; const double var_x89 = 1 / (1000 * var_x88 + 1020 * var_x81); const double var_x90 = var_x75 * var_x81 * mParameters[5]; const double var_x91 = var_x89 * var_x90; - const double var_x92 = 438.93811257017387 * var_x91; - const double var_x93 = -0.75 * mParameters[1] + var_x57 * var_chaste_interface__ionic_concentrations__Ki; - const double var_x94 = 0.00069711623550831479 * var_x93; + const double var_x92 = CHASTE_CONST(438.93811257017387) * var_x91; + const double var_x93 = -CHASTE_CONST(0.75) * mParameters[1] + var_x57 * var_chaste_interface__ionic_concentrations__Ki; + const double var_x94 = CHASTE_CONST(0.00069711623550831479) * var_x93; const double var_x95 = var_x56 * var_x94; const double var_x96 = 1000 * var_x84; - const double var_x97 = pow(var_x80, (-2)); - const double var_x98 = var_x82 * var_x87 / pow(var_x83, 2); - const double var_x99 = 0.0004218936106979757 * var_x72 * var_x90 / pow((var_x81 + 0.98039215686274506 * var_x88), 2); + const double var_x97 = CHASTE_MATH::Pow(var_x80, (-2)); + const double var_x98 = var_x82 * var_x87 / CHASTE_MATH::Pow(var_x83, 2); + const double var_x99 = CHASTE_CONST(0.0004218936106979757) * var_x72 * var_x90 / CHASTE_MATH::Pow((var_x81 + CHASTE_CONST(0.98039215686274506) * var_x88), 2); const double var_x100 = var_x72 * var_x75; const double var_x101 = var_x79 * var_x97; const double var_x102 = var_x100 * var_x89 * mParameters[5]; - const double var_x103 = var_x67 + var_x69 + var_x78 + var_x92 + var_x95 + var_x99 * (-514.29999999999995 * var_x98 - var_x96 * (0.061749999999999999 * var_x86 + 0.039456396800000001 * var_x85) + 243.26999999999998 * var_x79 * var_x97) + 1.9572871637915374e-5 * var_x61 * var_chaste_interface__ionic_concentrations__Ki - 2.6097162183887167e-5 * var_x62 * var_x93 - 104.68673984798647 * var_x101 * var_x102 + 0.00092307692307692295 * var_x64 * var_x72 / pow(var_x65, 2) - 0.019211226915711394 * var_x100 * var_x73 * mParameters[6] * var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr / pow(var_x74, 2); + const double var_x103 = var_x67 + var_x69 + var_x78 + var_x92 + var_x95 + var_x99 * (-CHASTE_CONST(514.29999999999995) * var_x98 - var_x96 * (CHASTE_CONST(0.061749999999999999) * var_x86 + CHASTE_CONST(0.039456396800000001) * var_x85) + CHASTE_CONST(243.26999999999998) * var_x79 * var_x97) + CHASTE_CONST(1.9572871637915374e-5) * var_x61 * var_chaste_interface__ionic_concentrations__Ki - CHASTE_CONST(2.6097162183887167e-5) * var_x62 * var_x93 - CHASTE_CONST(104.68673984798647) * var_x101 * var_x102 + CHASTE_CONST(0.00092307692307692295) * var_x64 * var_x72 / CHASTE_MATH::Pow(var_x65, 2) - CHASTE_CONST(0.019211226915711394) * var_x100 * var_x73 * mParameters[6] * var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr / CHASTE_MATH::Pow(var_x74, 2); const double var_x104 = 1 / mParameters[3]; - const double var_x105 = 0.001 * var_x104; + const double var_x105 = CHASTE_CONST(0.001) * var_x104; - partialF = -var_x105 * (0.0070159999999999997 + var_x103 + var_x20 + var_x49 + var_x5 + var_x63 + var_x23 * var_x32); + partialF = -var_x105 * (CHASTE_CONST(0.0070159999999999997) + var_x103 + var_x20 + var_x49 + var_x5 + var_x63 + var_x23 * var_x32); } else { @@ -1439,7 +1441,7 @@ std::shared_ptr 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -1474,20 +1476,20 @@ std::shared_ptr 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 + const double var_L_type_Ca_channel_f_Ca_gate__f_Ca = 1 / (1 + CHASTE_CONST(1666.6666666666667) * var_chaste_interface__calcium_dynamics__Cai); // dimensionless + const double var_calcium_dynamics__i_leak = CHASTE_CONST(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 > CHASTE_CONST(0.00018000000000000001)) ? (60000 * (1 - var_chaste_interface__calcium_dynamics__APtrack2) * (-CHASTE_CONST(0.00018000000000000001) + var_chaste_interface__calcium_dynamics__Cainfluxtrack) * var_chaste_interface__calcium_dynamics__APtrack2 / (CHASTE_CONST(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 / (CHASTE_CONST(0.00092000000000000003) + var_chaste_interface__calcium_dynamics__Cai); // millimolar_per_second + const double var_ionic_concentrations__V_myo = CHASTE_CONST(8.2280000000000009e-12) * CHASTE_CONST(CHASTE_MATH::Pi); // micro_litre + const double var_calcium_dynamics__V_JSR = CHASTE_CONST(0.0070588235294117632) * var_ionic_concentrations__V_myo; // micro_litre + const double var_calcium_dynamics__V_NSR = CHASTE_CONST(0.081176470588235281) * var_ionic_concentrations__V_myo; // micro_litre + const double var_calcium_background_current__E_Ca = CHASTE_CONST(13.356169352749133) * CHASTE_MATH::Log(mParameters[0] / var_chaste_interface__calcium_dynamics__Cai); // millivolt + const double var_L_type_Ca_channel__i_CaCa = CHASTE_CONST(7.8019226357407252) * (-CHASTE_CONST(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 = CHASTE_CONST(0.002) * (CHASTE_MATH::Pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] * _lt_0_row[4] - CHASTE_MATH::Pow(mParameters[2], 3) * var_chaste_interface__calcium_dynamics__Cai * _lt_0_row[5]) / ((1 + CHASTE_CONST(144.92753623188406) * var_chaste_interface__calcium_dynamics__Cai) * (1 + CHASTE_CONST(0.001) * CHASTE_MATH::Pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] + CHASTE_CONST(0.001) * CHASTE_MATH::Pow(mParameters[2], 3) * var_chaste_interface__calcium_dynamics__Cai)); // microA_per_microF + const double var_T_type_Ca_channel__i_Ca_T = CHASTE_CONST(0.050000000000000003) * CHASTE_MATH::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 = CHASTE_CONST(0.003016) * var_chaste_interface__membrane__V - CHASTE_CONST(0.003016) * var_calcium_background_current__E_Ca; // microA_per_microF + const double var_sarcolemmal_calcium_pump__i_p_Ca = CHASTE_CONST(1.1499999999999999) * var_chaste_interface__calcium_dynamics__Cai / (CHASTE_CONST(0.00050000000000000001) + var_chaste_interface__calcium_dynamics__Cai); // microA_per_microF + const double d_dt_chaste_interface_var_calcium_dynamics__Cai = CHASTE_CONST(0.001) * (-CHASTE_CONST(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 + CHASTE_CONST(0.00011900000000000002) / CHASTE_MATH::Pow((CHASTE_CONST(0.0023800000000000002) + var_chaste_interface__calcium_dynamics__Cai), 2) + CHASTE_CONST(3.5000000000000004e-5) / CHASTE_MATH::Pow((CHASTE_CONST(0.00050000000000000001) + var_chaste_interface__calcium_dynamics__Cai), 2)); // millimolar / millisecond return d_dt_chaste_interface_var_calcium_dynamics__Cai; } @@ -1497,7 +1499,7 @@ std::shared_ptr double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -1532,78 +1534,78 @@ std::shared_ptr const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); const double var_x0 = 1 / var_chaste_interface__calcium_dynamics__Cai; - const double var_x6 = 0.018717941753901308 * var_chaste_interface__membrane__V; - const double var_x7 = exp(var_x6); - const double var_x8 = pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0]; + const double var_x6 = CHASTE_CONST(0.018717941753901308) * var_chaste_interface__membrane__V; + const double var_x7 = CHASTE_MATH::Exp(var_x6); + const double var_x8 = CHASTE_MATH::Pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0]; const double var_x9 = var_x7 * var_x8; - const double var_x10 = exp(-var_x6); - const double var_x11 = pow(mParameters[2], 3); + const double var_x10 = CHASTE_MATH::Exp(-var_x6); + const double var_x11 = CHASTE_MATH::Pow(mParameters[2], 3); const double var_x12 = var_x11 * var_chaste_interface__calcium_dynamics__Cai; const double var_x13 = var_x10 * var_x12; - const double var_x15 = 1 / (1 + 144.92753623188406 * var_chaste_interface__calcium_dynamics__Cai); - const double var_x16 = 1 + 0.001 * var_x12 + 0.001 * var_x8; + const double var_x15 = 1 / (1 + CHASTE_CONST(144.92753623188406) * var_chaste_interface__calcium_dynamics__Cai); + const double var_x16 = 1 + CHASTE_CONST(0.001) * var_x12 + CHASTE_CONST(0.001) * var_x8; const double var_x17 = 1 / var_x16; const double var_x18 = var_x15 * var_x17; - const double var_x19 = 0.002 * var_x18; - const double var_x33 = pow(var_chaste_interface__T_type_Ca_channel_b_gate__b, 2); + const double var_x19 = CHASTE_CONST(0.002) * var_x18; + const double var_x33 = CHASTE_MATH::Pow(var_chaste_interface__T_type_Ca_channel_b_gate__b, 2); const double var_x34 = var_x33 * var_chaste_interface__T_type_Ca_channel_g_gate__g; - const double var_x35 = 0.050000000000000003 * var_x34; - const double var_x36 = 1 / (1 + 1666.6666666666667 * var_chaste_interface__calcium_dynamics__Cai); + const double var_x35 = CHASTE_CONST(0.050000000000000003) * var_x34; + const double var_x36 = 1 / (1 + CHASTE_CONST(1666.6666666666667) * var_chaste_interface__calcium_dynamics__Cai); const double var_x37 = var_x36 * var_chaste_interface__L_type_Ca_channel_f_gate__f; const double var_x38 = var_x37 * var_chaste_interface__L_type_Ca_channel_d_gate__d; const double var_x39 = _lt_0_row[0]; const double var_x40 = -1 + var_x39; const double var_x41 = 1 / var_x40; const double var_x42 = var_x39 * var_chaste_interface__calcium_dynamics__Cai; - const double var_x43 = var_x42 - 0.34100000000000003 * mParameters[0]; + const double var_x43 = var_x42 - CHASTE_CONST(0.34100000000000003) * mParameters[0]; const double var_x44 = var_x41 * var_x43; - const double var_x45 = 7.8019226357407252 * var_x44; + const double var_x45 = CHASTE_CONST(7.8019226357407252) * var_x44; const double var_x46 = var_x38 * var_x45; const double var_x47 = var_x38 * var_chaste_interface__membrane__V; const double var_x48 = var_x41 * var_x47; const double var_x106 = var_chaste_interface__L_type_Ca_channel_d_gate__d * var_chaste_interface__membrane__V; - const double var_x107 = var_x106 * var_chaste_interface__L_type_Ca_channel_f_gate__f / pow((0.00059999999999999995 + var_chaste_interface__calcium_dynamics__Cai), 2); - const double var_x110 = 0.00050000000000000001 + var_chaste_interface__calcium_dynamics__Cai; + const double var_x107 = var_x106 * var_chaste_interface__L_type_Ca_channel_f_gate__f / CHASTE_MATH::Pow((CHASTE_CONST(0.00059999999999999995) + var_chaste_interface__calcium_dynamics__Cai), 2); + const double var_x110 = CHASTE_CONST(0.00050000000000000001) + var_chaste_interface__calcium_dynamics__Cai; const double var_x111 = 1 / var_x110; - const double var_x112 = pow(var_x110, (-2)); - const double var_x113 = 1.1499999999999999 * var_x112 * var_chaste_interface__calcium_dynamics__Cai; - const double var_x114 = 0.0046811535814444347 * var_x107 * var_x44; + const double var_x112 = CHASTE_MATH::Pow(var_x110, (-2)); + const double var_x113 = CHASTE_CONST(1.1499999999999999) * var_x112 * var_chaste_interface__calcium_dynamics__Cai; + const double var_x114 = CHASTE_CONST(0.0046811535814444347) * var_x107 * var_x44; const double var_x118 = var_x9 - var_x13; - const double var_x119 = var_x118 * var_x17 / pow((0.0068999999999999999 + var_chaste_interface__calcium_dynamics__Cai), 2); + const double var_x119 = var_x118 * var_x17 / CHASTE_MATH::Pow((CHASTE_CONST(0.0068999999999999999) + var_chaste_interface__calcium_dynamics__Cai), 2); const double var_x120 = var_x10 * var_x11; - const double var_x121 = pow(var_x16, (-2)); + const double var_x121 = CHASTE_MATH::Pow(var_x16, (-2)); const double var_x122 = var_x118 * var_x121 * var_x15; const double var_x123 = var_x11 * var_x122; - const double var_x124 = 1.38e-5 * var_x119 + 1.9999999999999999e-6 * var_x123 + var_x120 * var_x19; - const double var_x136 = log(var_x0 * mParameters[0]); - const double var_x137 = -13.356169352749133 * var_x136 + var_chaste_interface__membrane__V; - const double var_x155 = 0.0023800000000000002 + var_chaste_interface__calcium_dynamics__Cai; - const double var_x156 = 1 + 0.00011900000000000002 / pow(var_x155, 2) + 3.5000000000000004e-5 * var_x112; + const double var_x124 = CHASTE_CONST(1.38e-5) * var_x119 + CHASTE_CONST(1.9999999999999999e-6) * var_x123 + var_x120 * var_x19; + const double var_x136 = CHASTE_MATH::Log(var_x0 * mParameters[0]); + const double var_x137 = -CHASTE_CONST(13.356169352749133) * var_x136 + var_chaste_interface__membrane__V; + const double var_x155 = CHASTE_CONST(0.0023800000000000002) + var_chaste_interface__calcium_dynamics__Cai; + const double var_x156 = 1 + CHASTE_CONST(0.00011900000000000002) / CHASTE_MATH::Pow(var_x155, 2) + CHASTE_CONST(3.5000000000000004e-5) * var_x112; const double var_x157 = 1 / var_x156; - const double var_x158 = 1 / M_PI; - const double var_x161 = 0.00062 + var_chaste_interface__calcium_dynamics__Cainfluxtrack; + const double var_x158 = 1 / CHASTE_CONST(CHASTE_MATH::Pi); + const double var_x161 = CHASTE_CONST(0.00062) + var_chaste_interface__calcium_dynamics__Cainfluxtrack; const double var_x162 = 1 / var_x161; const double var_x163 = 1 - var_chaste_interface__calcium_dynamics__APtrack2; - const double var_x164 = -0.00018000000000000001 + var_chaste_interface__calcium_dynamics__Cainfluxtrack; + const double var_x164 = -CHASTE_CONST(0.00018000000000000001) + var_chaste_interface__calcium_dynamics__Cainfluxtrack; const double var_x165 = 60000 * var_x162 * var_x163 * var_x164 * var_chaste_interface__calcium_dynamics__APtrack2; - const double var_x166 = var_chaste_interface__calcium_dynamics__Cainfluxtrack > 0.00018000000000000001; + const double var_x166 = var_chaste_interface__calcium_dynamics__Cainfluxtrack > CHASTE_CONST(0.00018000000000000001); const double var_x167 = 4000 * var_chaste_interface__calcium_dynamics__OVRLDtrack2; const double var_x168 = -4000 + var_x167; const double var_x169 = var_chaste_interface__calcium_dynamics__OVRLDtrack2 > 0; const double var_x170 = ((var_x166) ? (-var_x165) : ((var_x169) ? (var_x168 * var_chaste_interface__calcium_dynamics__OVRLDtrack2) : (0))); - const double var_x171 = 0.00092000000000000003 + var_chaste_interface__calcium_dynamics__Cai; + const double var_x171 = CHASTE_CONST(0.00092000000000000003) + var_chaste_interface__calcium_dynamics__Cai; const double var_x172 = 1 / var_x171; - const double var_x173 = 0.40588235294117642 * var_x172; - const double var_x174 = var_chaste_interface__calcium_dynamics__Cai / pow(var_x171, 2); - const double var_x175 = 1.1499999999999999 * var_x111; - const double var_x176 = var_x124 + var_x175 - var_x113 - var_x114 + 0.040282206767891383 * var_x0 + 7.8019226357407252 * var_x39 * var_x48 + 0.6678084676374566 * var_x0 * var_x34; - const double var_x177 = 0.090316078310111333 * var_x158; + const double var_x173 = CHASTE_CONST(0.40588235294117642) * var_x172; + const double var_x174 = var_chaste_interface__calcium_dynamics__Cai / CHASTE_MATH::Pow(var_x171, 2); + const double var_x175 = CHASTE_CONST(1.1499999999999999) * var_x111; + const double var_x176 = var_x124 + var_x175 - var_x113 - var_x114 + CHASTE_CONST(0.040282206767891383) * var_x0 + CHASTE_CONST(7.8019226357407252) * var_x39 * var_x48 + CHASTE_CONST(0.6678084676374566) * var_x0 * var_x34; + const double var_x177 = CHASTE_CONST(0.090316078310111333) * var_x158; const double var_x178 = -var_chaste_interface__calcium_dynamics__Cai + var_chaste_interface__calcium_dynamics__Ca_JSR; const double var_x179 = ((var_x166) ? (var_x165 * var_x178) : ((var_x169) ? (var_x167 * var_x178 * (1 - var_chaste_interface__calcium_dynamics__OVRLDtrack2)) : (0))); const double var_x180 = var_x118 * var_x19; - const double var_x181 = -0.040282206767891383 * var_x136 + var_x137 * var_x35 + var_x175 * var_chaste_interface__calcium_dynamics__Cai + var_x46 * var_chaste_interface__membrane__V; + const double var_x181 = -CHASTE_CONST(0.040282206767891383) * var_x136 + var_x137 * var_x35 + var_x175 * var_chaste_interface__calcium_dynamics__Cai + var_x46 * var_chaste_interface__membrane__V; - partialF = 0.001 * var_x157 * (-var_x173 + 0.40588235294117642 * var_x174 + 0.0070588235294117632 * var_x170 - var_x176 * var_x177) + 0.001 * (0.00023800000000000004 / pow(var_x155, 3) + 7.0000000000000007e-5 / pow(var_x110, 3)) * (0.027058823529411764 * var_chaste_interface__calcium_dynamics__Ca_NSR + 0.0070588235294117632 * var_x179 - var_x173 * var_chaste_interface__calcium_dynamics__Cai - var_x177 * (var_x181 - var_x180 + 0.003016 * var_chaste_interface__membrane__V)) / pow(var_x156, 2); + partialF = CHASTE_CONST(0.001) * var_x157 * (-var_x173 + CHASTE_CONST(0.40588235294117642) * var_x174 + CHASTE_CONST(0.0070588235294117632) * var_x170 - var_x176 * var_x177) + CHASTE_CONST(0.001) * (CHASTE_CONST(0.00023800000000000004) / CHASTE_MATH::Pow(var_x155, 3) + CHASTE_CONST(7.0000000000000007e-5) / CHASTE_MATH::Pow(var_x110, 3)) * (CHASTE_CONST(0.027058823529411764) * var_chaste_interface__calcium_dynamics__Ca_NSR + CHASTE_CONST(0.0070588235294117632) * var_x179 - var_x173 * var_chaste_interface__calcium_dynamics__Cai - var_x177 * (var_x181 - var_x180 + CHASTE_CONST(0.003016) * var_chaste_interface__membrane__V)) / CHASTE_MATH::Pow(var_x156, 2); } else { @@ -1618,7 +1620,7 @@ std::shared_ptr 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -1633,7 +1635,7 @@ std::shared_ptr 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 + const double d_dt_chaste_interface_var_fast_sodium_current_m_gate__m = CHASTE_CONST(0.001) * (1 - var_chaste_interface__fast_sodium_current_m_gate__m) * _lt_0_row[19] - CHASTE_CONST(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; } @@ -1643,7 +1645,7 @@ std::shared_ptr double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -88.984 @@ -1656,15 +1658,15 @@ std::shared_ptr const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); const double var_x194 = _lt_0_row[20]; - const double var_x197 = 0.10000000000000001 * var_chaste_interface__membrane__V; - const double var_x198 = exp(-4.7130000000000001 - var_x197); + const double var_x197 = CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V; + const double var_x198 = CHASTE_MATH::Exp(-CHASTE_CONST(4.7130000000000001) - var_x197); const double var_x199 = 1 - var_x198; - const double var_x200 = 0.32000000000000001 / var_x199; - const double var_x201 = 47.130000000000003 + var_chaste_interface__membrane__V; - const double var_x202 = fabs(var_x201) >= 1.0000000000000001e-5; - const double var_x203 = 0.080000000000000002 * var_x194; + const double var_x200 = CHASTE_CONST(0.32000000000000001) / var_x199; + const double var_x201 = CHASTE_CONST(47.130000000000003) + var_chaste_interface__membrane__V; + const double var_x202 = CHASTE_MATH::Abs(var_x201) >= CHASTE_CONST(1.0000000000000001e-5); + const double var_x203 = CHASTE_CONST(0.080000000000000002) * var_x194; - partialF = ((var_x202) ? (-var_x203 - var_x200 * var_x201) : (-3.2000000000000002 - var_x203)); + partialF = ((var_x202) ? (-var_x203 - var_x200 * var_x201) : (-CHASTE_CONST(3.2000000000000002) - var_x203)); } else { @@ -1679,7 +1681,7 @@ std::shared_ptr 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -1694,7 +1696,7 @@ std::shared_ptr 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 + const double d_dt_chaste_interface_var_fast_sodium_current_h_gate__h = CHASTE_CONST(0.001) * (1 - var_chaste_interface__fast_sodium_current_h_gate__h) * _lt_0_row[15] - CHASTE_CONST(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; } @@ -1704,19 +1706,19 @@ std::shared_ptr double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -88.984 - const double var_x204 = exp(0.34999999999999998 * var_chaste_interface__membrane__V); - const double var_x205 = exp(0.079000000000000001 * var_chaste_interface__membrane__V); - const double var_x206 = exp(-11.764705882352942 - 0.14705882352941177 * var_chaste_interface__membrane__V); + const double var_x204 = CHASTE_MATH::Exp(CHASTE_CONST(0.34999999999999998) * var_chaste_interface__membrane__V); + const double var_x205 = CHASTE_MATH::Exp(CHASTE_CONST(0.079000000000000001) * var_chaste_interface__membrane__V); + const double var_x206 = CHASTE_MATH::Exp(-CHASTE_CONST(11.764705882352942) - CHASTE_CONST(0.14705882352941177) * var_chaste_interface__membrane__V); const double var_x207 = var_chaste_interface__membrane__V < -40; - const double var_x208 = exp(-0.96036036036036043 - 0.0900900900900901 * var_chaste_interface__membrane__V); + const double var_x208 = CHASTE_MATH::Exp(-CHASTE_CONST(0.96036036036036043) - CHASTE_CONST(0.0900900900900901) * var_chaste_interface__membrane__V); const double var_x209 = 1 + var_x208; - partialF = ((var_x207) ? (-310000 * var_x204 - 0.13500000000000001 * var_x206 - 3.5600000000000001 * var_x205) : (-7.6923076923076934 / var_x209)); + partialF = ((var_x207) ? (-310000 * var_x204 - CHASTE_CONST(0.13500000000000001) * var_x206 - CHASTE_CONST(3.5600000000000001) * var_x205) : (-CHASTE_CONST(7.6923076923076934) / var_x209)); } else { @@ -1731,7 +1733,7 @@ std::shared_ptr 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -1746,7 +1748,7 @@ std::shared_ptr 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 + const double d_dt_chaste_interface_var_fast_sodium_current_j_gate__j = CHASTE_CONST(0.001) * (1 - var_chaste_interface__fast_sodium_current_j_gate__j) * _lt_0_row[17] - CHASTE_CONST(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; } @@ -1756,31 +1758,31 @@ std::shared_ptr double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -88.984 - const double var_x197 = 0.10000000000000001 * var_chaste_interface__membrane__V; + const double var_x197 = CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V; const double var_x207 = var_chaste_interface__membrane__V < -40; - const double var_x211 = exp(0.24440000000000001 * var_chaste_interface__membrane__V); - const double var_x212 = exp(-0.043909999999999998 * var_chaste_interface__membrane__V); - const double var_x213 = -127140 * var_x211 - 3.4740000000000003e-5 * var_x212; - const double var_x215 = exp(24.640530000000002 + 0.311 * var_chaste_interface__membrane__V); + const double var_x211 = CHASTE_MATH::Exp(CHASTE_CONST(0.24440000000000001) * var_chaste_interface__membrane__V); + const double var_x212 = CHASTE_MATH::Exp(-CHASTE_CONST(0.043909999999999998) * var_chaste_interface__membrane__V); + const double var_x213 = -127140 * var_x211 - CHASTE_CONST(3.4740000000000003e-5) * var_x212; + const double var_x215 = CHASTE_MATH::Exp(CHASTE_CONST(24.640530000000002) + CHASTE_CONST(0.311) * var_chaste_interface__membrane__V); const double var_x216 = 1 + var_x215; const double var_x217 = 1 / var_x216; - const double var_x218 = exp(-5.5312920000000005 - 0.13780000000000001 * var_chaste_interface__membrane__V); + const double var_x218 = CHASTE_MATH::Exp(-CHASTE_CONST(5.5312920000000005) - CHASTE_CONST(0.13780000000000001) * var_chaste_interface__membrane__V); const double var_x219 = 1 + var_x218; - const double var_x220 = exp(-0.01052 * var_chaste_interface__membrane__V); + const double var_x220 = CHASTE_MATH::Exp(-CHASTE_CONST(0.01052) * var_chaste_interface__membrane__V); const double var_x221 = var_x220 / var_x219; - const double var_x222 = 37.780000000000001 + var_chaste_interface__membrane__V; + const double var_x222 = CHASTE_CONST(37.780000000000001) + var_chaste_interface__membrane__V; const double var_x223 = var_x217 * var_x222; - const double var_x224 = exp(-3.2000000000000002 - var_x197); + const double var_x224 = CHASTE_MATH::Exp(-CHASTE_CONST(3.2000000000000002) - var_x197); const double var_x225 = 1 + var_x224; - const double var_x226 = exp(-2.5349999999999999e-7 * var_chaste_interface__membrane__V); + const double var_x226 = CHASTE_MATH::Exp(-CHASTE_CONST(2.5349999999999999e-7) * var_chaste_interface__membrane__V); const double var_x227 = var_x226 / var_x225; - partialF = ((var_x207) ? (-0.1212 * var_x221 - var_x213 * var_x223) : (-0.29999999999999999 * var_x227)); + partialF = ((var_x207) ? (-CHASTE_CONST(0.1212) * var_x221 - var_x213 * var_x223) : (-CHASTE_CONST(0.29999999999999999) * var_x227)); } else { @@ -1795,7 +1797,7 @@ std::shared_ptr 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -1804,9 +1806,9 @@ std::shared_ptr // 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 + const double var_L_type_Ca_channel_d_gate__d_infinity = 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.16025641025641024) * var_L_type_Ca_channel_d_gate__E0_d)); // dimensionless + const double var_L_type_Ca_channel_d_gate__tau_d = ((CHASTE_MATH::Abs(var_L_type_Ca_channel_d_gate__E0_d) < CHASTE_CONST(1.0000000000000001e-5)) ? (CHASTE_CONST(0.0045787545787545781)) : (CHASTE_CONST(0.028571428571428571) * (1 - CHASTE_MATH::Exp(-CHASTE_CONST(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 = CHASTE_CONST(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 - CHASTE_CONST(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; } @@ -1816,21 +1818,21 @@ std::shared_ptr double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -88.984 - const double var_x228 = exp(-1.6025641025641024 - 0.16025641025641024 * var_chaste_interface__membrane__V); + const double var_x228 = CHASTE_MATH::Exp(-CHASTE_CONST(1.6025641025641024) - CHASTE_CONST(0.16025641025641024) * var_chaste_interface__membrane__V); const double var_x229 = 1 + var_x228; const double var_x230 = 1 / var_x229; - const double var_x231 = -0.001 + 0.001 * var_x230; + const double var_x231 = -CHASTE_CONST(0.001) + CHASTE_CONST(0.001) * var_x230; const double var_x232 = 10 + var_chaste_interface__membrane__V; - const double var_x233 = fabs(var_x232) < 1.0000000000000001e-5; + const double var_x233 = CHASTE_MATH::Abs(var_x232) < CHASTE_CONST(1.0000000000000001e-5); const double var_x234 = 1 - var_x228; const double var_x235 = 1 / var_x234; - const double var_x239 = 0.001 * var_x230; - const double var_x240 = ((var_x233) ? (218.40000000000003) : (35 * var_x229 * var_x232 * var_x235)); + const double var_x239 = CHASTE_CONST(0.001) * var_x230; + const double var_x240 = ((var_x233) ? (CHASTE_CONST(218.40000000000003)) : (35 * var_x229 * var_x232 * var_x235)); partialF = var_x231 * var_x240 - var_x239 * var_x240; } @@ -1847,7 +1849,7 @@ std::shared_ptr 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -1864,7 +1866,7 @@ std::shared_ptr // 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 + const double d_dt_chaste_interface_var_L_type_Ca_channel_f_gate__f = CHASTE_CONST(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 - CHASTE_CONST(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; } @@ -1874,19 +1876,19 @@ std::shared_ptr double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -88.984 - const double var_x242 = exp(-0.113569 * pow((1 + 0.10000000000000001 * var_chaste_interface__membrane__V), 2)); - const double var_x245 = exp(4 + 0.125 * var_chaste_interface__membrane__V); + const double var_x242 = CHASTE_MATH::Exp(-CHASTE_CONST(0.113569) * CHASTE_MATH::Pow((1 + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V), 2)); + const double var_x245 = CHASTE_MATH::Exp(4 + CHASTE_CONST(0.125) * var_chaste_interface__membrane__V); const double var_x246 = 1 + var_x245; - const double var_x247 = exp(2.5 - 0.050000000000000003 * var_chaste_interface__membrane__V); + const double var_x247 = CHASTE_MATH::Exp(CHASTE_CONST(2.5) - CHASTE_CONST(0.050000000000000003) * var_chaste_interface__membrane__V); const double var_x248 = 1 + var_x247; - const double var_x250 = 0.019699999999999999 * var_x242; - const double var_x251 = -0.02 - var_x250; - const double var_x252 = 1 / var_x246 + 0.59999999999999998 / var_x248; + const double var_x250 = CHASTE_CONST(0.019699999999999999) * var_x242; + const double var_x251 = -CHASTE_CONST(0.02) - var_x250; + const double var_x252 = 1 / var_x246 + CHASTE_CONST(0.59999999999999998) / var_x248; const double var_x254 = 1 - var_x252; partialF = var_x251 * var_x252 + var_x251 * var_x254; @@ -1904,7 +1906,7 @@ std::shared_ptr 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -1919,7 +1921,7 @@ std::shared_ptr 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 + const double d_dt_chaste_interface_var_T_type_Ca_channel_b_gate__b = CHASTE_CONST(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; } @@ -1929,17 +1931,17 @@ std::shared_ptr double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -88.984 - const double var_x257 = exp(5.5555555555555554 + 0.22222222222222221 * var_chaste_interface__membrane__V); + const double var_x257 = CHASTE_MATH::Exp(CHASTE_CONST(5.5555555555555554) + CHASTE_CONST(0.22222222222222221) * var_chaste_interface__membrane__V); const double var_x258 = 1 + var_x257; const double var_x259 = 1 / var_x258; - const double var_x260 = 1 / (0.0037000000000000002 + 0.0061000000000000004 * var_x259); + const double var_x260 = 1 / (CHASTE_CONST(0.0037000000000000002) + CHASTE_CONST(0.0061000000000000004) * var_x259); - partialF = -0.001 * var_x260; + partialF = -CHASTE_CONST(0.001) * var_x260; } else { @@ -1954,7 +1956,7 @@ std::shared_ptr 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -1969,7 +1971,7 @@ std::shared_ptr 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 + const double d_dt_chaste_interface_var_T_type_Ca_channel_g_gate__g = CHASTE_CONST(0.001) * (-var_chaste_interface__T_type_Ca_channel_g_gate__g + _lt_0_row[14]) * ((var_chaste_interface__membrane__V <= 0) ? (1 / (CHASTE_CONST(0.012) - CHASTE_CONST(0.00087500000000000002) * var_chaste_interface__membrane__V)) : (CHASTE_CONST(83.333333333333329))); // 1 / millisecond return d_dt_chaste_interface_var_T_type_Ca_channel_g_gate__g; } @@ -1979,15 +1981,15 @@ std::shared_ptr double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -88.984 - const double var_x263 = 1 / (0.012 - 0.00087500000000000002 * var_chaste_interface__membrane__V); + const double var_x263 = 1 / (CHASTE_CONST(0.012) - CHASTE_CONST(0.00087500000000000002) * var_chaste_interface__membrane__V); const double var_x265 = var_chaste_interface__membrane__V <= 0; - partialF = ((var_x265) ? (-0.001 * var_x263) : (-0.083333333333333329)); + partialF = ((var_x265) ? (-CHASTE_CONST(0.001) * var_x263) : (-CHASTE_CONST(0.083333333333333329))); } else { @@ -2002,7 +2004,7 @@ std::shared_ptr 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -2017,7 +2019,7 @@ std::shared_ptr 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 + const double d_dt_chaste_interface_var_rapid_delayed_rectifier_potassium_current_xr_gate__xr = CHASTE_CONST(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; } @@ -2027,21 +2029,21 @@ std::shared_ptr double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -88.984 - const double var_x268 = exp(5.6404999999999994 + 0.14499999999999999 * var_chaste_interface__membrane__V); + const double var_x268 = CHASTE_MATH::Exp(CHASTE_CONST(5.6404999999999994) + CHASTE_CONST(0.14499999999999999) * var_chaste_interface__membrane__V); const double var_x269 = -1 + var_x268; const double var_x270 = 1 / var_x269; - const double var_x271 = exp(-1.7465999999999999 - 0.123 * var_chaste_interface__membrane__V); + const double var_x271 = CHASTE_MATH::Exp(-CHASTE_CONST(1.7465999999999999) - CHASTE_CONST(0.123) * var_chaste_interface__membrane__V); const double var_x272 = 1 - var_x271; const double var_x273 = 1 / var_x272; - const double var_x274 = 14.199999999999999 + var_chaste_interface__membrane__V; - const double var_x275 = 38.899999999999999 + var_chaste_interface__membrane__V; + const double var_x274 = CHASTE_CONST(14.199999999999999) + var_chaste_interface__membrane__V; + const double var_x275 = CHASTE_CONST(38.899999999999999) + var_chaste_interface__membrane__V; - partialF = -0.0013799999999999999 * var_x273 * var_x274 - 0.00060999999999999997 * var_x270 * var_x275; + partialF = -CHASTE_CONST(0.0013799999999999999) * var_x273 * var_x274 - CHASTE_CONST(0.00060999999999999997) * var_x270 * var_x275; } else { @@ -2056,7 +2058,7 @@ std::shared_ptr 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -2071,7 +2073,7 @@ std::shared_ptr 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 + const double d_dt_chaste_interface_var_slow_delayed_rectifier_potassium_current_xs1_gate__xs1 = CHASTE_CONST(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; } @@ -2081,22 +2083,22 @@ std::shared_ptr double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -88.984 - const double var_x279 = exp(2.0609999999999999 + 0.068699999999999997 * var_chaste_interface__membrane__V); + const double var_x279 = CHASTE_MATH::Exp(CHASTE_CONST(2.0609999999999999) + CHASTE_CONST(0.068699999999999997) * var_chaste_interface__membrane__V); const double var_x280 = -1 + var_x279; const double var_x281 = 1 / var_x280; - const double var_x282 = exp(-4.4399999999999995 - 0.14799999999999999 * var_chaste_interface__membrane__V); + const double var_x282 = CHASTE_MATH::Exp(-CHASTE_CONST(4.4399999999999995) - CHASTE_CONST(0.14799999999999999) * var_chaste_interface__membrane__V); const double var_x283 = 1 - var_x282; const double var_x284 = 1 / var_x283; const double var_x285 = 30 + var_chaste_interface__membrane__V; const double var_x289 = var_x281 * var_x285; const double var_x290 = var_x284 * var_x285; - partialF = -0.00013100000000000001 * var_x289 - 7.1899999999999999e-5 * var_x290; + partialF = -CHASTE_CONST(0.00013100000000000001) * var_x289 - CHASTE_CONST(7.1899999999999999e-5) * var_x290; } else { @@ -2111,7 +2113,7 @@ std::shared_ptr 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -2126,7 +2128,7 @@ std::shared_ptr 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 + const double d_dt_chaste_interface_var_slow_delayed_rectifier_potassium_current_xs2_gate__xs2 = CHASTE_CONST(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; } @@ -2136,22 +2138,22 @@ std::shared_ptr double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -88.984 - const double var_x279 = exp(2.0609999999999999 + 0.068699999999999997 * var_chaste_interface__membrane__V); + const double var_x279 = CHASTE_MATH::Exp(CHASTE_CONST(2.0609999999999999) + CHASTE_CONST(0.068699999999999997) * var_chaste_interface__membrane__V); const double var_x280 = -1 + var_x279; const double var_x281 = 1 / var_x280; - const double var_x282 = exp(-4.4399999999999995 - 0.14799999999999999 * var_chaste_interface__membrane__V); + const double var_x282 = CHASTE_MATH::Exp(-CHASTE_CONST(4.4399999999999995) - CHASTE_CONST(0.14799999999999999) * var_chaste_interface__membrane__V); const double var_x283 = 1 - var_x282; const double var_x284 = 1 / var_x283; const double var_x285 = 30 + var_chaste_interface__membrane__V; const double var_x289 = var_x281 * var_x285; const double var_x290 = var_x284 * var_x285; - partialF = -3.2750000000000003e-5 * var_x289 - 1.7975e-5 * var_x290; + partialF = -CHASTE_CONST(3.2750000000000003e-5) * var_x289 - CHASTE_CONST(1.7975e-5) * var_x290; } else { @@ -2166,7 +2168,7 @@ std::shared_ptr 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -2183,7 +2185,7 @@ std::shared_ptr // 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 + const double d_dt_chaste_interface_var_transient_outward_current_zdv_gate__zdv = CHASTE_CONST(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; } @@ -2193,17 +2195,17 @@ std::shared_ptr double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -88.984 - const double var_x291 = 0.040000000000000001 * var_chaste_interface__membrane__V; - const double var_x292 = exp(-1.6000000000000001 + var_x291); + const double var_x291 = CHASTE_CONST(0.040000000000000001) * var_chaste_interface__membrane__V; + const double var_x292 = CHASTE_MATH::Exp(-CHASTE_CONST(1.6000000000000001) + var_x291); const double var_x293 = 1 + var_x292; const double var_x294 = 1 / var_x293; const double var_x295 = var_x292 * var_x294; - const double var_x296 = exp(-3.6000000000000001 - var_x291); + const double var_x296 = CHASTE_MATH::Exp(-CHASTE_CONST(3.6000000000000001) - var_x291); const double var_x297 = 1 + var_x296; const double var_x298 = var_x296 / var_x297; @@ -2222,7 +2224,7 @@ std::shared_ptr 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -2239,7 +2241,7 @@ std::shared_ptr // 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 + const double d_dt_chaste_interface_var_transient_outward_current_ydv_gate__ydv = CHASTE_CONST(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; } @@ -2249,20 +2251,20 @@ std::shared_ptr double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -88.984 - const double var_x304 = 0.20000000000000001 * var_chaste_interface__membrane__V; - const double var_x305 = exp(12 + var_x304); + const double var_x304 = CHASTE_CONST(0.20000000000000001) * var_chaste_interface__membrane__V; + const double var_x305 = CHASTE_MATH::Exp(12 + var_x304); const double var_x306 = 1 + var_x305; const double var_x307 = 1 / var_x306; - const double var_x308 = exp(5 + var_x304); + const double var_x308 = CHASTE_MATH::Exp(5 + var_x304); const double var_x309 = 1 + var_x308; const double var_x310 = var_x308 / var_x309; - partialF = -0.014999999999999999 * var_x307 - 0.10000000000000001 * var_x310; + partialF = -CHASTE_CONST(0.014999999999999999) * var_x307 - CHASTE_CONST(0.10000000000000001) * var_x310; } else { @@ -2293,9 +2295,9 @@ std::shared_ptr // 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 + 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 > CHASTE_CONST(0.00018000000000000001)) ? (60000 * (1 - var_chaste_interface__calcium_dynamics__APtrack2) * (-CHASTE_CONST(0.00018000000000000001) + var_chaste_interface__calcium_dynamics__Cainfluxtrack) * var_chaste_interface__calcium_dynamics__APtrack2 / (CHASTE_CONST(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 = CHASTE_CONST(5.5555555555555554) * var_chaste_interface__calcium_dynamics__Ca_NSR - CHASTE_CONST(5.5555555555555554) * var_chaste_interface__calcium_dynamics__Ca_JSR; // millimolar_per_second + const double d_dt_chaste_interface_var_calcium_dynamics__Ca_JSR = CHASTE_CONST(0.001) * (-var_calcium_dynamics__i_rel + var_calcium_dynamics__i_tr) / (1 + 8 / CHASTE_MATH::Pow((CHASTE_CONST(0.80000000000000004) + var_chaste_interface__calcium_dynamics__Ca_JSR), 2)); // millimolar / millisecond return d_dt_chaste_interface_var_calcium_dynamics__Ca_JSR; } @@ -2320,12 +2322,12 @@ std::shared_ptr - const double var_x161 = 0.00062 + var_chaste_interface__calcium_dynamics__Cainfluxtrack; + const double var_x161 = CHASTE_CONST(0.00062) + var_chaste_interface__calcium_dynamics__Cainfluxtrack; const double var_x162 = 1 / var_x161; const double var_x163 = 1 - var_chaste_interface__calcium_dynamics__APtrack2; - const double var_x164 = -0.00018000000000000001 + var_chaste_interface__calcium_dynamics__Cainfluxtrack; + const double var_x164 = -CHASTE_CONST(0.00018000000000000001) + var_chaste_interface__calcium_dynamics__Cainfluxtrack; const double var_x165 = 60000 * var_x162 * var_x163 * var_x164 * var_chaste_interface__calcium_dynamics__APtrack2; - const double var_x166 = var_chaste_interface__calcium_dynamics__Cainfluxtrack > 0.00018000000000000001; + const double var_x166 = var_chaste_interface__calcium_dynamics__Cainfluxtrack > CHASTE_CONST(0.00018000000000000001); const double var_x167 = 4000 * var_chaste_interface__calcium_dynamics__OVRLDtrack2; const double var_x168 = -4000 + var_x167; const double var_x169 = var_chaste_interface__calcium_dynamics__OVRLDtrack2 > 0; @@ -2333,12 +2335,12 @@ std::shared_ptr const double var_x179 = ((var_x166) ? (var_x165 * var_x178) : ((var_x169) ? (var_x167 * var_x178 * (1 - var_chaste_interface__calcium_dynamics__OVRLDtrack2)) : (0))); const double var_x187 = -var_x168; const double var_x188 = ((var_x166) ? (var_x165) : ((var_x169) ? (var_x187 * var_chaste_interface__calcium_dynamics__OVRLDtrack2) : (0))); - const double var_x315 = 0.80000000000000004 + var_chaste_interface__calcium_dynamics__Ca_JSR; - const double var_x316 = pow(var_x315, (-2)); + const double var_x315 = CHASTE_CONST(0.80000000000000004) + var_chaste_interface__calcium_dynamics__Ca_JSR; + const double var_x316 = CHASTE_MATH::Pow(var_x315, (-2)); const double var_x317 = 1 / (1 + 8 * var_x316); - const double var_x318 = 0.001 * var_x317; + const double var_x318 = CHASTE_CONST(0.001) * var_x317; - partialF = var_x318 * (-5.5555555555555554 - var_x188) + 0.00025000000000000001 * (-var_x179 + 5.5555555555555554 * var_chaste_interface__calcium_dynamics__Ca_NSR - 5.5555555555555554 * var_chaste_interface__calcium_dynamics__Ca_JSR) / (pow(var_x315, 3) * pow((0.125 + var_x316), 2)); + partialF = var_x318 * (-CHASTE_CONST(5.5555555555555554) - var_x188) + CHASTE_CONST(0.00025000000000000001) * (-var_x179 + CHASTE_CONST(5.5555555555555554) * var_chaste_interface__calcium_dynamics__Ca_NSR - CHASTE_CONST(5.5555555555555554) * var_chaste_interface__calcium_dynamics__Ca_JSR) / (CHASTE_MATH::Pow(var_x315, 3) * CHASTE_MATH::Pow((CHASTE_CONST(0.125) + var_x316), 2)); } else { @@ -2363,13 +2365,13 @@ std::shared_ptr // 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 + const double var_calcium_dynamics__i_leak = CHASTE_CONST(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 / (CHASTE_CONST(0.00092000000000000003) + var_chaste_interface__calcium_dynamics__Cai); // millimolar_per_second + const double var_calcium_dynamics__i_tr = CHASTE_CONST(5.5555555555555554) * var_chaste_interface__calcium_dynamics__Ca_NSR - CHASTE_CONST(5.5555555555555554) * var_chaste_interface__calcium_dynamics__Ca_JSR; // millimolar_per_second + const double var_ionic_concentrations__V_myo = CHASTE_CONST(8.2280000000000009e-12) * CHASTE_CONST(CHASTE_MATH::Pi); // micro_litre + const double var_calcium_dynamics__V_JSR = CHASTE_CONST(0.0070588235294117632) * var_ionic_concentrations__V_myo; // micro_litre + const double var_calcium_dynamics__V_NSR = CHASTE_CONST(0.081176470588235281) * var_ionic_concentrations__V_myo; // micro_litre + const double d_dt_chaste_interface_var_calcium_dynamics__Ca_NSR = CHASTE_CONST(0.001) * var_calcium_dynamics__i_up - CHASTE_CONST(0.001) * var_calcium_dynamics__i_leak - CHASTE_CONST(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; } @@ -2383,7 +2385,7 @@ std::shared_ptr - partialF = -0.00081642512077294684; + partialF = -CHASTE_CONST(0.00081642512077294684); } else { @@ -2398,7 +2400,7 @@ std::shared_ptr 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -2439,31 +2441,31 @@ std::shared_ptr 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_L_type_Ca_channel_f_Ca_gate__f_Ca = 1 / (1 + CHASTE_CONST(1666.6666666666667) * var_chaste_interface__calcium_dynamics__Cai); // dimensionless + const double var_calcium_background_current__E_Ca = CHASTE_CONST(13.356169352749133) * CHASTE_MATH::Log(mParameters[0] / var_chaste_interface__calcium_dynamics__Cai); // millivolt + const double var_fast_sodium_current__E_Na = CHASTE_CONST(26.712338705498265) * CHASTE_MATH::Log(mParameters[2] / var_chaste_interface__ionic_concentrations__Nai); // millivolt + const double var_L_type_Ca_channel__i_CaCa = CHASTE_CONST(7.8019226357407252) * (-CHASTE_CONST(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 = CHASTE_CONST(0.00069711623550831479) * (-CHASTE_CONST(0.75) * mParameters[1] + CHASTE_CONST(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 = CHASTE_CONST(0.0024381008236689767) * (-CHASTE_CONST(0.75) * mParameters[2] + CHASTE_CONST(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 = CHASTE_CONST(0.002) * (CHASTE_MATH::Pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] * _lt_0_row[4] - CHASTE_MATH::Pow(mParameters[2], 3) * var_chaste_interface__calcium_dynamics__Cai * _lt_0_row[5]) / ((1 + CHASTE_CONST(144.92753623188406) * var_chaste_interface__calcium_dynamics__Cai) * (1 + CHASTE_CONST(0.001) * CHASTE_MATH::Pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] + CHASTE_CONST(0.001) * CHASTE_MATH::Pow(mParameters[2], 3) * var_chaste_interface__calcium_dynamics__Cai)); // microA_per_microF + const double var_T_type_Ca_channel__i_Ca_T = CHASTE_CONST(0.050000000000000003) * CHASTE_MATH::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 = CHASTE_CONST(0.003016) * var_chaste_interface__membrane__V - CHASTE_CONST(0.003016) * var_calcium_background_current__E_Ca; // microA_per_microF + const double var_fast_sodium_current__i_Na = CHASTE_MATH::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_non_specific_calcium_activated_current__i_ns_K = CHASTE_CONST(3612.0012202503358) * (-CHASTE_CONST(0.75) * mParameters[1] + CHASTE_CONST(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 + CHASTE_CONST(1.7279999999999996e-9) / CHASTE_MATH::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 = CHASTE_CONST(3612.0012202503358) * (-CHASTE_CONST(0.75) * mParameters[2] + CHASTE_CONST(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 + CHASTE_CONST(1.7279999999999996e-9) / CHASTE_MATH::Pow(var_chaste_interface__calcium_dynamics__Cai, 3)) * (_lt_0_row[3])); // microA_per_microF + const double var_sarcolemmal_calcium_pump__i_p_Ca = CHASTE_CONST(1.1499999999999999) * var_chaste_interface__calcium_dynamics__Cai / (CHASTE_CONST(0.00050000000000000001) + var_chaste_interface__calcium_dynamics__Cai); // microA_per_microF + const double var_slow_delayed_rectifier_potassium_current__i_Ks = (CHASTE_CONST(0.433) + CHASTE_CONST(0.25979999999999998) / (1 + CHASTE_CONST(6.4818210260626455e-7) * CHASTE_MATH::Pow((1 / var_chaste_interface__calcium_dynamics__Cai), CHASTE_CONST(1.3999999999999999)))) * (-CHASTE_CONST(26.712338705498265) * CHASTE_MATH::Log((CHASTE_CONST(0.018329999999999999) * mParameters[2] + mParameters[1]) / (CHASTE_CONST(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 = CHASTE_CONST(0.0040000000000000001) * var_chaste_interface__membrane__V - CHASTE_CONST(0.0040000000000000001) * var_fast_sodium_current__E_Na; // microA_per_microF + const double var_sodium_potassium_pump__i_NaK = 2 * mParameters[1] / ((1 + 100 / CHASTE_MATH::Pow(var_chaste_interface__ionic_concentrations__Nai, 2)) * (CHASTE_CONST(1.5) + mParameters[1]) * (1 + _lt_0_row[7] + CHASTE_CONST(0.036499999999999998) * (-CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * CHASTE_MATH::Exp(CHASTE_CONST(0.01485884101040119) * mParameters[2])) * _lt_0_row[6])); // microA_per_microF + const double var_time_independent_potassium_current__E_K = CHASTE_CONST(26.712338705498265) * CHASTE_MATH::Log(mParameters[1] / var_chaste_interface__ionic_concentrations__Ki); // millivolt + const double var_ATP_sensitive_potassium_current__i_K_ATP = CHASTE_CONST(1.921898339896919e-8) * CHASTE_MATH::Pow(mParameters[1], CHASTE_CONST(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 = CHASTE_CONST(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 = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::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 = CHASTE_CONST(438.93811257017387) * CHASTE_MATH::Sqrt(mParameters[1]) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[5] / ((1 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.23849999999999999) * var_time_independent_potassium_current__E_K)) * (1020 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.23849999999999999) * var_time_independent_potassium_current__E_K)) + 1000 * (CHASTE_CONST(0.49124000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.43983232) + CHASTE_CONST(0.080320000000000003) * var_chaste_interface__membrane__V - CHASTE_CONST(0.080320000000000003) * var_time_independent_potassium_current__E_K) + CHASTE_MATH::Exp(-CHASTE_CONST(36.698642499999998) + CHASTE_CONST(0.061749999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.061749999999999999) * var_time_independent_potassium_current__E_K)) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.4444678999999998) + CHASTE_CONST(0.51429999999999998) * var_time_independent_potassium_current__E_K - CHASTE_CONST(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 + const double var_membrane__dVdt = -(CHASTE_STIM(var_chaste_interface__environment__time_converted) / CHASTE_CAP() + 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 = CHASTE_CONST(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; } @@ -2473,7 +2475,7 @@ std::shared_ptr double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -2512,107 +2514,107 @@ std::shared_ptr const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); const double var_x0 = 1 / var_chaste_interface__calcium_dynamics__Cai; - const double var_x1 = pow(var_x0, 1.3999999999999999); - const double var_x2 = 1 + 6.4818210260626455e-7 * var_x1; - const double var_x3 = 0.433 + 0.25979999999999998 / var_x2; + const double var_x1 = CHASTE_MATH::Pow(var_x0, CHASTE_CONST(1.3999999999999999)); + const double var_x2 = 1 + CHASTE_CONST(6.4818210260626455e-7) * var_x1; + const double var_x3 = CHASTE_CONST(0.433) + CHASTE_CONST(0.25979999999999998) / var_x2; const double var_x4 = 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_x5 = var_x3 * var_x4; - const double var_x6 = 0.018717941753901308 * var_chaste_interface__membrane__V; - const double var_x7 = exp(var_x6); - const double var_x8 = pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0]; + const double var_x6 = CHASTE_CONST(0.018717941753901308) * var_chaste_interface__membrane__V; + const double var_x7 = CHASTE_MATH::Exp(var_x6); + const double var_x8 = CHASTE_MATH::Pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0]; const double var_x9 = var_x7 * var_x8; - const double var_x10 = exp(-var_x6); - const double var_x11 = pow(mParameters[2], 3); + const double var_x10 = CHASTE_MATH::Exp(-var_x6); + const double var_x11 = CHASTE_MATH::Pow(mParameters[2], 3); const double var_x12 = var_x11 * var_chaste_interface__calcium_dynamics__Cai; const double var_x13 = var_x10 * var_x12; - const double var_x15 = 1 / (1 + 144.92753623188406 * var_chaste_interface__calcium_dynamics__Cai); - const double var_x16 = 1 + 0.001 * var_x12 + 0.001 * var_x8; + const double var_x15 = 1 / (1 + CHASTE_CONST(144.92753623188406) * var_chaste_interface__calcium_dynamics__Cai); + const double var_x16 = 1 + CHASTE_CONST(0.001) * var_x12 + CHASTE_CONST(0.001) * var_x8; const double var_x17 = 1 / var_x16; const double var_x18 = var_x15 * var_x17; - const double var_x19 = 0.002 * var_x18; - const double var_x21 = pow(var_chaste_interface__ionic_concentrations__Nai, (-2)); + const double var_x19 = CHASTE_CONST(0.002) * var_x18; + const double var_x21 = CHASTE_MATH::Pow(var_chaste_interface__ionic_concentrations__Nai, (-2)); const double var_x22 = 1 / (1 + 100 * var_x21); const double var_x23 = 2 * var_x22; - const double var_x24 = 1 / (1.5 + mParameters[1]); - const double var_x25 = exp(-0.003743588350780262 * var_chaste_interface__membrane__V); - const double var_x26 = exp(0.01485884101040119 * mParameters[2]); - const double var_x27 = 0.037435883507802616 * var_chaste_interface__membrane__V; - const double var_x28 = exp(-var_x27); - const double var_x29 = 1 + 0.1245 * var_x25 + 0.036499999999999998 * var_x28 * (-0.14285714285714285 + 0.14285714285714285 * var_x26); - const double var_x33 = pow(var_chaste_interface__T_type_Ca_channel_b_gate__b, 2); + const double var_x24 = 1 / (CHASTE_CONST(1.5) + mParameters[1]); + const double var_x25 = CHASTE_MATH::Exp(-CHASTE_CONST(0.003743588350780262) * var_chaste_interface__membrane__V); + const double var_x26 = CHASTE_MATH::Exp(CHASTE_CONST(0.01485884101040119) * mParameters[2]); + const double var_x27 = CHASTE_CONST(0.037435883507802616) * var_chaste_interface__membrane__V; + const double var_x28 = CHASTE_MATH::Exp(-var_x27); + const double var_x29 = 1 + CHASTE_CONST(0.1245) * var_x25 + CHASTE_CONST(0.036499999999999998) * var_x28 * (-CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * var_x26); + const double var_x33 = CHASTE_MATH::Pow(var_chaste_interface__T_type_Ca_channel_b_gate__b, 2); const double var_x34 = var_x33 * var_chaste_interface__T_type_Ca_channel_g_gate__g; - const double var_x35 = 0.050000000000000003 * var_x34; - const double var_x36 = 1 / (1 + 1666.6666666666667 * var_chaste_interface__calcium_dynamics__Cai); + const double var_x35 = CHASTE_CONST(0.050000000000000003) * var_x34; + const double var_x36 = 1 / (1 + CHASTE_CONST(1666.6666666666667) * var_chaste_interface__calcium_dynamics__Cai); const double var_x37 = var_x36 * var_chaste_interface__L_type_Ca_channel_f_gate__f; const double var_x38 = var_x37 * var_chaste_interface__L_type_Ca_channel_d_gate__d; const double var_x39 = _lt_0_row[0]; const double var_x40 = -1 + var_x39; const double var_x41 = 1 / var_x40; const double var_x42 = var_x39 * var_chaste_interface__calcium_dynamics__Cai; - const double var_x43 = var_x42 - 0.34100000000000003 * mParameters[0]; + const double var_x43 = var_x42 - CHASTE_CONST(0.34100000000000003) * mParameters[0]; const double var_x44 = var_x41 * var_x43; - const double var_x45 = 7.8019226357407252 * var_x44; + const double var_x45 = CHASTE_CONST(7.8019226357407252) * var_x44; const double var_x46 = var_x38 * var_x45; - const double var_x50 = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3); + const double var_x50 = CHASTE_MATH::Pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3); const double var_x51 = var_x50 * mParameters[4] * var_chaste_interface__fast_sodium_current_j_gate__j; const double var_x52 = var_x51 * var_chaste_interface__fast_sodium_current_h_gate__h; - const double var_x53 = exp(var_x27); + const double var_x53 = CHASTE_MATH::Exp(var_x27); const double var_x54 = -1 + var_x53; const double var_x55 = 1 / var_x54; const double var_x56 = var_x38 * var_x55; - const double var_x57 = 0.75 * var_x53; - const double var_x58 = -0.75 * mParameters[2] + var_x57 * var_chaste_interface__ionic_concentrations__Nai; - const double var_x59 = 0.0024381008236689767 * var_x58; + const double var_x57 = CHASTE_CONST(0.75) * var_x53; + const double var_x58 = -CHASTE_CONST(0.75) * mParameters[2] + var_x57 * var_chaste_interface__ionic_concentrations__Nai; + const double var_x59 = CHASTE_CONST(0.0024381008236689767) * var_x58; const double var_x60 = var_x56 * var_x59; - const double var_x64 = exp(1.2521739130434781 - 0.16722408026755853 * var_chaste_interface__membrane__V); + const double var_x64 = CHASTE_MATH::Exp(CHASTE_CONST(1.2521739130434781) - CHASTE_CONST(0.16722408026755853) * var_chaste_interface__membrane__V); const double var_x65 = 1 + var_x64; const double var_x66 = 1 / var_x65; - const double var_x67 = 0.0055199999999999997 * var_x66; - const double var_x68 = pow(mParameters[1], 0.23999999999999999); - const double var_x69 = 1.921898339896919e-8 * var_x68; + const double var_x67 = CHASTE_CONST(0.0055199999999999997) * var_x66; + const double var_x68 = CHASTE_MATH::Pow(mParameters[1], CHASTE_CONST(0.23999999999999999)); + const double var_x69 = CHASTE_CONST(1.921898339896919e-8) * var_x68; const double var_x70 = 1 / var_chaste_interface__ionic_concentrations__Ki; - const double var_x71 = log(var_x70 * mParameters[1]); - const double var_x72 = -26.712338705498265 * var_x71 + var_chaste_interface__membrane__V; - const double var_x73 = exp(0.4017857142857143 + 0.044642857142857144 * var_chaste_interface__membrane__V); + const double var_x71 = CHASTE_MATH::Log(var_x70 * mParameters[1]); + const double var_x72 = -CHASTE_CONST(26.712338705498265) * var_x71 + var_chaste_interface__membrane__V; + const double var_x73 = CHASTE_MATH::Exp(CHASTE_CONST(0.4017857142857143) + CHASTE_CONST(0.044642857142857144) * var_chaste_interface__membrane__V); const double var_x74 = 1 + var_x73; - const double var_x75 = sqrt(mParameters[1]); + const double var_x75 = CHASTE_MATH::Sqrt(mParameters[1]); const double var_x76 = var_x75 * mParameters[6] / var_x74; const double var_x77 = var_x76 * var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr; - const double var_x78 = 0.43033148291193518 * var_x77; - const double var_x79 = exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 6.3708927812613361 * var_x71); + const double var_x78 = CHASTE_CONST(0.43033148291193518) * var_x77; + const double var_x79 = CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(6.3708927812613361) * var_x71); const double var_x80 = 1 + var_x79; const double var_x81 = 1 / var_x80; - const double var_x82 = exp(-2.4444678999999998 + 13.738155796237757 * var_x71 - 0.51429999999999998 * var_chaste_interface__membrane__V); + const double var_x82 = CHASTE_MATH::Exp(-CHASTE_CONST(2.4444678999999998) + CHASTE_CONST(13.738155796237757) * var_x71 - CHASTE_CONST(0.51429999999999998) * var_chaste_interface__membrane__V); const double var_x83 = 1 + var_x82; const double var_x84 = 1 / var_x83; - const double var_x85 = exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__V - 2.1455350448256207 * var_x71); - const double var_x86 = exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__V - 1.6494869150645177 * var_x71); - const double var_x87 = var_x86 + 0.49124000000000001 * var_x85; + const double var_x85 = CHASTE_MATH::Exp(CHASTE_CONST(0.43983232) + CHASTE_CONST(0.080320000000000003) * var_chaste_interface__membrane__V - CHASTE_CONST(2.1455350448256207) * var_x71); + const double var_x86 = CHASTE_MATH::Exp(-CHASTE_CONST(36.698642499999998) + CHASTE_CONST(0.061749999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(1.6494869150645177) * var_x71); + const double var_x87 = var_x86 + CHASTE_CONST(0.49124000000000001) * var_x85; const double var_x88 = var_x84 * var_x87; const double var_x89 = 1 / (1000 * var_x88 + 1020 * var_x81); const double var_x90 = var_x75 * var_x81 * mParameters[5]; const double var_x91 = var_x89 * var_x90; - const double var_x92 = 438.93811257017387 * var_x91; - const double var_x93 = -0.75 * mParameters[1] + var_x57 * var_chaste_interface__ionic_concentrations__Ki; - const double var_x94 = 0.00069711623550831479 * var_x93; + const double var_x92 = CHASTE_CONST(438.93811257017387) * var_x91; + const double var_x93 = -CHASTE_CONST(0.75) * mParameters[1] + var_x57 * var_chaste_interface__ionic_concentrations__Ki; + const double var_x94 = CHASTE_CONST(0.00069711623550831479) * var_x93; const double var_x95 = var_x56 * var_x94; const double var_x104 = 1 / mParameters[3]; - const double var_x110 = 0.00050000000000000001 + var_chaste_interface__calcium_dynamics__Cai; + const double var_x110 = CHASTE_CONST(0.00050000000000000001) + var_chaste_interface__calcium_dynamics__Cai; const double var_x111 = 1 / var_x110; - const double var_x115 = 1 / (0.018329999999999999 * var_chaste_interface__ionic_concentrations__Nai + var_chaste_interface__ionic_concentrations__Ki); - const double var_x116 = -26.712338705498265 * log(var_x115 * (0.018329999999999999 * mParameters[2] + mParameters[1])) + var_chaste_interface__membrane__V; + const double var_x115 = 1 / (CHASTE_CONST(0.018329999999999999) * var_chaste_interface__ionic_concentrations__Nai + var_chaste_interface__ionic_concentrations__Ki); + const double var_x116 = -CHASTE_CONST(26.712338705498265) * CHASTE_MATH::Log(var_x115 * (CHASTE_CONST(0.018329999999999999) * mParameters[2] + mParameters[1])) + var_chaste_interface__membrane__V; const double var_x118 = var_x9 - var_x13; const double var_x125 = 1 / var_chaste_interface__ionic_concentrations__Nai; - const double var_x126 = log(var_x125 * mParameters[2]); - const double var_x127 = -26.712338705498265 * var_x126 + var_chaste_interface__membrane__V; - const double var_x136 = log(var_x0 * mParameters[0]); - const double var_x137 = -13.356169352749133 * var_x136 + var_chaste_interface__membrane__V; + const double var_x126 = CHASTE_MATH::Log(var_x125 * mParameters[2]); + const double var_x127 = -CHASTE_CONST(26.712338705498265) * var_x126 + var_chaste_interface__membrane__V; + const double var_x136 = CHASTE_MATH::Log(var_x0 * mParameters[0]); + const double var_x137 = -CHASTE_CONST(13.356169352749133) * var_x136 + var_chaste_interface__membrane__V; const double var_x150 = var_x24 * mParameters[1] / var_x29; - const double var_x175 = 1.1499999999999999 * var_x111; + const double var_x175 = CHASTE_CONST(1.1499999999999999) * var_x111; const double var_x180 = var_x118 * var_x19; - const double var_x181 = -0.040282206767891383 * var_x136 + var_x137 * var_x35 + var_x175 * var_chaste_interface__calcium_dynamics__Cai + var_x46 * var_chaste_interface__membrane__V; + const double var_x181 = -CHASTE_CONST(0.040282206767891383) * var_x136 + var_x137 * var_x35 + var_x175 * var_chaste_interface__calcium_dynamics__Cai + var_x46 * var_chaste_interface__membrane__V; - partialF = ((var_x104 * (var_x180 + var_x181 + 0.0070159999999999997 * var_chaste_interface__membrane__V - 0.10684935482199306 * var_x126 + var_x116 * var_x5 + var_x127 * var_x52 + var_x150 * var_x23 + var_x60 * var_chaste_interface__membrane__V + var_x67 * var_x72 + var_x69 * var_x72 + var_x72 * var_x78 + var_x72 * var_x92 + var_x95 * var_chaste_interface__membrane__V + GetIntracellularAreaStimulus(var_chaste_interface__environment__time_converted) / HeartConfig::Instance()->GetCapacitance()) < -150000) ? (-100.5) : (-0.5)); + partialF = ((var_x104 * (var_x180 + var_x181 + CHASTE_CONST(0.0070159999999999997) * var_chaste_interface__membrane__V - CHASTE_CONST(0.10684935482199306) * var_x126 + var_x116 * var_x5 + var_x127 * var_x52 + var_x150 * var_x23 + var_x60 * var_chaste_interface__membrane__V + var_x67 * var_x72 + var_x69 * var_x72 + var_x72 * var_x78 + var_x72 * var_x92 + var_x95 * var_chaste_interface__membrane__V + CHASTE_STIM(var_chaste_interface__environment__time_converted) / CHASTE_CAP()) < -150000) ? (-CHASTE_CONST(100.5)) : (-CHASTE_CONST(0.5))); } else { @@ -2635,7 +2637,7 @@ std::shared_ptr // 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 + const double d_dt_chaste_interface_var_calcium_dynamics__APtrack2 = CHASTE_CONST(0.001) * (((var_chaste_interface__calcium_dynamics__APtrack > CHASTE_CONST(0.17999999999999999)) && (var_chaste_interface__calcium_dynamics__APtrack < CHASTE_CONST(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; } @@ -2650,9 +2652,9 @@ std::shared_ptr - const double var_x319 = (var_chaste_interface__calcium_dynamics__APtrack > 0.17999999999999999) && (var_chaste_interface__calcium_dynamics__APtrack < 0.20000000000000001); + const double var_x319 = (var_chaste_interface__calcium_dynamics__APtrack > CHASTE_CONST(0.17999999999999999)) && (var_chaste_interface__calcium_dynamics__APtrack < CHASTE_CONST(0.20000000000000001)); - partialF = ((var_x319) ? (-100.5) : (-0.5)); + partialF = ((var_x319) ? (-CHASTE_CONST(100.5)) : (-CHASTE_CONST(0.5))); } else { @@ -2675,7 +2677,7 @@ std::shared_ptr // 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 + const double d_dt_chaste_interface_var_calcium_dynamics__APtrack3 = CHASTE_CONST(0.001) * (((var_chaste_interface__calcium_dynamics__APtrack > CHASTE_CONST(0.17999999999999999)) && (var_chaste_interface__calcium_dynamics__APtrack < CHASTE_CONST(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; } @@ -2690,9 +2692,9 @@ std::shared_ptr - const double var_x319 = (var_chaste_interface__calcium_dynamics__APtrack > 0.17999999999999999) && (var_chaste_interface__calcium_dynamics__APtrack < 0.20000000000000001); + const double var_x319 = (var_chaste_interface__calcium_dynamics__APtrack > CHASTE_CONST(0.17999999999999999)) && (var_chaste_interface__calcium_dynamics__APtrack < CHASTE_CONST(0.20000000000000001)); - partialF = ((var_x319) ? (-100.5) : (-0.01)); + partialF = ((var_x319) ? (-CHASTE_CONST(100.5)) : (-CHASTE_CONST(0.01))); } else { @@ -2707,7 +2709,7 @@ std::shared_ptr 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -2738,15 +2740,15 @@ std::shared_ptr 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 + const double var_L_type_Ca_channel_f_Ca_gate__f_Ca = 1 / (1 + CHASTE_CONST(1666.6666666666667) * var_chaste_interface__calcium_dynamics__Cai); // dimensionless + const double var_ionic_concentrations__V_myo = CHASTE_CONST(8.2280000000000009e-12) * CHASTE_CONST(CHASTE_MATH::Pi); // micro_litre + const double var_calcium_background_current__E_Ca = CHASTE_CONST(13.356169352749133) * CHASTE_MATH::Log(mParameters[0] / var_chaste_interface__calcium_dynamics__Cai); // millivolt + const double var_L_type_Ca_channel__i_CaCa = CHASTE_CONST(7.8019226357407252) * (-CHASTE_CONST(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 = CHASTE_CONST(0.002) * (CHASTE_MATH::Pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] * _lt_0_row[4] - CHASTE_MATH::Pow(mParameters[2], 3) * var_chaste_interface__calcium_dynamics__Cai * _lt_0_row[5]) / ((1 + CHASTE_CONST(144.92753623188406) * var_chaste_interface__calcium_dynamics__Cai) * (1 + CHASTE_CONST(0.001) * CHASTE_MATH::Pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] + CHASTE_CONST(0.001) * CHASTE_MATH::Pow(mParameters[2], 3) * var_chaste_interface__calcium_dynamics__Cai)); // microA_per_microF + const double var_T_type_Ca_channel__i_Ca_T = CHASTE_CONST(0.050000000000000003) * CHASTE_MATH::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 = CHASTE_CONST(0.003016) * var_chaste_interface__membrane__V - CHASTE_CONST(0.003016) * var_calcium_background_current__E_Ca; // microA_per_microF + const double var_sarcolemmal_calcium_pump__i_p_Ca = CHASTE_CONST(1.1499999999999999) * var_chaste_interface__calcium_dynamics__Cai / (CHASTE_CONST(0.00050000000000000001) + var_chaste_interface__calcium_dynamics__Cai); // microA_per_microF + const double d_dt_chaste_interface_var_calcium_dynamics__Cainfluxtrack = CHASTE_CONST(0.001) * ((var_chaste_interface__calcium_dynamics__APtrack > CHASTE_CONST(0.20000000000000001)) ? (-CHASTE_CONST(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 > CHASTE_CONST(0.01)) ? (0) : (-500 * var_chaste_interface__calcium_dynamics__Cainfluxtrack))); // 1 / millisecond return d_dt_chaste_interface_var_calcium_dynamics__Cainfluxtrack; } @@ -2763,9 +2765,9 @@ std::shared_ptr - const double var_x320 = var_chaste_interface__calcium_dynamics__APtrack > 0.20000000000000001; + const double var_x320 = var_chaste_interface__calcium_dynamics__APtrack > CHASTE_CONST(0.20000000000000001); - partialF = (((var_x320) || (var_chaste_interface__calcium_dynamics__APtrack2 > 0.01)) ? (0) : (-0.5)); + partialF = (((var_x320) || (var_chaste_interface__calcium_dynamics__APtrack2 > CHASTE_CONST(0.01))) ? (0) : (-CHASTE_CONST(0.5))); } else { @@ -2792,7 +2794,7 @@ std::shared_ptr // 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 + const double d_dt_chaste_interface_var_calcium_dynamics__OVRLDtrack = CHASTE_CONST(0.001) * (((var_chaste_interface__calcium_dynamics__APtrack3 < CHASTE_CONST(0.37)) && (var_chaste_interface__calcium_dynamics__OVRLDtrack3 < CHASTE_CONST(0.37)) && (1 / (1 + CHASTE_CONST(0.80000000000000004) / var_chaste_interface__calcium_dynamics__Ca_JSR) > CHASTE_CONST(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; } @@ -2812,7 +2814,7 @@ std::shared_ptr - 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)); + partialF = (((var_chaste_interface__calcium_dynamics__APtrack3 < CHASTE_CONST(0.37)) && (var_chaste_interface__calcium_dynamics__OVRLDtrack3 < CHASTE_CONST(0.37)) && (1 / (1 + CHASTE_CONST(0.80000000000000004) / var_chaste_interface__calcium_dynamics__Ca_JSR) > CHASTE_CONST(0.69999999999999996))) ? (-50) : (-CHASTE_CONST(0.5))); } else { @@ -2835,7 +2837,7 @@ std::shared_ptr // 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 + const double d_dt_chaste_interface_var_calcium_dynamics__OVRLDtrack2 = CHASTE_CONST(0.001) * (((var_chaste_interface__calcium_dynamics__OVRLDtrack > CHASTE_CONST(0.97999999999999998)) && (var_chaste_interface__calcium_dynamics__OVRLDtrack2 < CHASTE_CONST(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; } @@ -2852,9 +2854,9 @@ std::shared_ptr - const double var_x321 = var_chaste_interface__calcium_dynamics__OVRLDtrack > 0.97999999999999998; + const double var_x321 = var_chaste_interface__calcium_dynamics__OVRLDtrack > CHASTE_CONST(0.97999999999999998); - partialF = (((var_x321) && (var_chaste_interface__calcium_dynamics__OVRLDtrack2 < 0.97999999999999998)) ? (-50) : (-0.5)); + partialF = (((var_x321) && (var_chaste_interface__calcium_dynamics__OVRLDtrack2 < CHASTE_CONST(0.97999999999999998))) ? (-50) : (-CHASTE_CONST(0.5))); } else { @@ -2877,7 +2879,7 @@ std::shared_ptr // 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 + const double d_dt_chaste_interface_var_calcium_dynamics__OVRLDtrack3 = CHASTE_CONST(0.001) * (((var_chaste_interface__calcium_dynamics__OVRLDtrack > CHASTE_CONST(0.97999999999999998)) && (var_chaste_interface__calcium_dynamics__OVRLDtrack3 < CHASTE_CONST(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; } @@ -2894,9 +2896,9 @@ std::shared_ptr - const double var_x321 = var_chaste_interface__calcium_dynamics__OVRLDtrack > 0.97999999999999998; + const double var_x321 = var_chaste_interface__calcium_dynamics__OVRLDtrack > CHASTE_CONST(0.97999999999999998); - partialF = (((var_x321) && (var_chaste_interface__calcium_dynamics__OVRLDtrack3 < 0.97999999999999998)) ? (-50) : (-0.01)); + partialF = (((var_x321) && (var_chaste_interface__calcium_dynamics__OVRLDtrack3 < CHASTE_CONST(0.97999999999999998))) ? (-50) : (-CHASTE_CONST(0.01))); } else { @@ -2911,7 +2913,7 @@ std::shared_ptr 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -2938,17 +2940,17 @@ std::shared_ptr 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_L_type_Ca_channel_f_Ca_gate__f_Ca = 1 / (1 + CHASTE_CONST(1666.6666666666667) * var_chaste_interface__calcium_dynamics__Cai); // dimensionless + const double var_ionic_concentrations__V_myo = CHASTE_CONST(8.2280000000000009e-12) * CHASTE_CONST(CHASTE_MATH::Pi); // micro_litre + const double var_fast_sodium_current__E_Na = CHASTE_CONST(26.712338705498265) * CHASTE_MATH::Log(mParameters[2] / var_chaste_interface__ionic_concentrations__Nai); // millivolt + const double var_L_type_Ca_channel__i_CaNa = CHASTE_CONST(0.0024381008236689767) * (-CHASTE_CONST(0.75) * mParameters[2] + CHASTE_CONST(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 = CHASTE_CONST(0.002) * (CHASTE_MATH::Pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] * _lt_0_row[4] - CHASTE_MATH::Pow(mParameters[2], 3) * var_chaste_interface__calcium_dynamics__Cai * _lt_0_row[5]) / ((1 + CHASTE_CONST(144.92753623188406) * var_chaste_interface__calcium_dynamics__Cai) * (1 + CHASTE_CONST(0.001) * CHASTE_MATH::Pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] + CHASTE_CONST(0.001) * CHASTE_MATH::Pow(mParameters[2], 3) * var_chaste_interface__calcium_dynamics__Cai)); // microA_per_microF + const double var_fast_sodium_current__i_Na = CHASTE_MATH::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 + const double var_non_specific_calcium_activated_current__i_ns_Na = CHASTE_CONST(3612.0012202503358) * (-CHASTE_CONST(0.75) * mParameters[2] + CHASTE_CONST(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 + CHASTE_CONST(1.7279999999999996e-9) / CHASTE_MATH::Pow(var_chaste_interface__calcium_dynamics__Cai, 3)) * (_lt_0_row[3])); // microA_per_microF + const double var_sodium_background_current__i_Na_b = CHASTE_CONST(0.0040000000000000001) * var_chaste_interface__membrane__V - CHASTE_CONST(0.0040000000000000001) * var_fast_sodium_current__E_Na; // microA_per_microF + const double var_sodium_potassium_pump__i_NaK = 2 * mParameters[1] / ((1 + 100 / CHASTE_MATH::Pow(var_chaste_interface__ionic_concentrations__Nai, 2)) * (CHASTE_CONST(1.5) + mParameters[1]) * (1 + _lt_0_row[7] + CHASTE_CONST(0.036499999999999998) * (-CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * CHASTE_MATH::Exp(CHASTE_CONST(0.01485884101040119) * mParameters[2])) * _lt_0_row[6])); // microA_per_microF + const double d_dt_chaste_interface_var_ionic_concentrations__Nai = CHASTE_CONST(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; } @@ -2958,7 +2960,7 @@ std::shared_ptr double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -2977,49 +2979,49 @@ std::shared_ptr - const double var_x6 = 0.018717941753901308 * var_chaste_interface__membrane__V; - const double var_x7 = exp(var_x6); - const double var_x8 = pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0]; + const double var_x6 = CHASTE_CONST(0.018717941753901308) * var_chaste_interface__membrane__V; + const double var_x7 = CHASTE_MATH::Exp(var_x6); + const double var_x8 = CHASTE_MATH::Pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0]; const double var_x9 = var_x7 * var_x8; - const double var_x10 = exp(-var_x6); - const double var_x11 = pow(mParameters[2], 3); + const double var_x10 = CHASTE_MATH::Exp(-var_x6); + const double var_x11 = CHASTE_MATH::Pow(mParameters[2], 3); const double var_x12 = var_x11 * var_chaste_interface__calcium_dynamics__Cai; const double var_x13 = var_x10 * var_x12; - const double var_x15 = 1 / (1 + 144.92753623188406 * var_chaste_interface__calcium_dynamics__Cai); - const double var_x16 = 1 + 0.001 * var_x12 + 0.001 * var_x8; + const double var_x15 = 1 / (1 + CHASTE_CONST(144.92753623188406) * var_chaste_interface__calcium_dynamics__Cai); + const double var_x16 = 1 + CHASTE_CONST(0.001) * var_x12 + CHASTE_CONST(0.001) * var_x8; const double var_x17 = 1 / var_x16; const double var_x18 = var_x15 * var_x17; - const double var_x21 = pow(var_chaste_interface__ionic_concentrations__Nai, (-2)); - const double var_x24 = 1 / (1.5 + mParameters[1]); - const double var_x25 = exp(-0.003743588350780262 * var_chaste_interface__membrane__V); - const double var_x26 = exp(0.01485884101040119 * mParameters[2]); - const double var_x27 = 0.037435883507802616 * var_chaste_interface__membrane__V; - const double var_x28 = exp(-var_x27); - const double var_x29 = 1 + 0.1245 * var_x25 + 0.036499999999999998 * var_x28 * (-0.14285714285714285 + 0.14285714285714285 * var_x26); - const double var_x36 = 1 / (1 + 1666.6666666666667 * var_chaste_interface__calcium_dynamics__Cai); + const double var_x21 = CHASTE_MATH::Pow(var_chaste_interface__ionic_concentrations__Nai, (-2)); + const double var_x24 = 1 / (CHASTE_CONST(1.5) + mParameters[1]); + const double var_x25 = CHASTE_MATH::Exp(-CHASTE_CONST(0.003743588350780262) * var_chaste_interface__membrane__V); + const double var_x26 = CHASTE_MATH::Exp(CHASTE_CONST(0.01485884101040119) * mParameters[2]); + const double var_x27 = CHASTE_CONST(0.037435883507802616) * var_chaste_interface__membrane__V; + const double var_x28 = CHASTE_MATH::Exp(-var_x27); + const double var_x29 = 1 + CHASTE_CONST(0.1245) * var_x25 + CHASTE_CONST(0.036499999999999998) * var_x28 * (-CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * var_x26); + const double var_x36 = 1 / (1 + CHASTE_CONST(1666.6666666666667) * var_chaste_interface__calcium_dynamics__Cai); const double var_x37 = var_x36 * var_chaste_interface__L_type_Ca_channel_f_gate__f; const double var_x38 = var_x37 * var_chaste_interface__L_type_Ca_channel_d_gate__d; - const double var_x50 = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3); + const double var_x50 = CHASTE_MATH::Pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3); const double var_x51 = var_x50 * mParameters[4] * var_chaste_interface__fast_sodium_current_j_gate__j; const double var_x52 = var_x51 * var_chaste_interface__fast_sodium_current_h_gate__h; - const double var_x53 = exp(var_x27); + const double var_x53 = CHASTE_MATH::Exp(var_x27); const double var_x54 = -1 + var_x53; const double var_x55 = 1 / var_x54; const double var_x56 = var_x38 * var_x55; const double var_x61 = var_x53 * var_x56 * var_chaste_interface__membrane__V; const double var_x118 = var_x9 - var_x13; - const double var_x121 = pow(var_x16, (-2)); + const double var_x121 = CHASTE_MATH::Pow(var_x16, (-2)); const double var_x125 = 1 / var_chaste_interface__ionic_concentrations__Nai; - const double var_x146 = pow(var_chaste_interface__ionic_concentrations__Nai, 2); + const double var_x146 = CHASTE_MATH::Pow(var_chaste_interface__ionic_concentrations__Nai, 2); const double var_x147 = var_x146 * mParameters[0]; const double var_x148 = var_x147 * var_x7; const double var_x150 = var_x24 * mParameters[1] / var_x29; - const double var_x151 = var_x150 / (pow((0.01 + var_x21), 2) * pow(var_chaste_interface__ionic_concentrations__Nai, 3)); - const double var_x153 = 0.10684935482199306 * var_x125 + 0.0018285756177517324 * var_x61 + 26.712338705498265 * var_x125 * var_x52; - const double var_x158 = 1 / M_PI; - const double var_x322 = 0.00018063215662022267 * var_x158; + const double var_x151 = var_x150 / (CHASTE_MATH::Pow((CHASTE_CONST(0.01) + var_x21), 2) * CHASTE_MATH::Pow(var_chaste_interface__ionic_concentrations__Nai, 3)); + const double var_x153 = CHASTE_CONST(0.10684935482199306) * var_x125 + CHASTE_CONST(0.0018285756177517324) * var_x61 + CHASTE_CONST(26.712338705498265) * var_x125 * var_x52; + const double var_x158 = 1 / CHASTE_CONST(CHASTE_MATH::Pi); + const double var_x322 = CHASTE_CONST(0.00018063215662022267) * var_x158; - partialF = var_x322 * (-var_x153 - 0.12 * var_x151 - 0.018000000000000002 * var_x148 * var_x18 + 1.8e-5 * var_x118 * var_x121 * var_x146 * var_x15 * mParameters[0]); + partialF = var_x322 * (-var_x153 - CHASTE_CONST(0.12) * var_x151 - CHASTE_CONST(0.018000000000000002) * var_x148 * var_x18 + CHASTE_CONST(1.8e-5) * var_x118 * var_x121 * var_x146 * var_x15 * mParameters[0]); } else { @@ -3034,7 +3036,7 @@ std::shared_ptr 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -3063,20 +3065,20 @@ std::shared_ptr 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_L_type_Ca_channel_f_Ca_gate__f_Ca = 1 / (1 + CHASTE_CONST(1666.6666666666667) * var_chaste_interface__calcium_dynamics__Cai); // dimensionless + const double var_ionic_concentrations__V_myo = CHASTE_CONST(8.2280000000000009e-12) * CHASTE_CONST(CHASTE_MATH::Pi); // micro_litre + const double var_L_type_Ca_channel__i_CaK = CHASTE_CONST(0.00069711623550831479) * (-CHASTE_CONST(0.75) * mParameters[1] + CHASTE_CONST(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_non_specific_calcium_activated_current__i_ns_K = CHASTE_CONST(3612.0012202503358) * (-CHASTE_CONST(0.75) * mParameters[1] + CHASTE_CONST(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 + CHASTE_CONST(1.7279999999999996e-9) / CHASTE_MATH::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 = (CHASTE_CONST(0.433) + CHASTE_CONST(0.25979999999999998) / (1 + CHASTE_CONST(6.4818210260626455e-7) * CHASTE_MATH::Pow((1 / var_chaste_interface__calcium_dynamics__Cai), CHASTE_CONST(1.3999999999999999)))) * (-CHASTE_CONST(26.712338705498265) * CHASTE_MATH::Log((CHASTE_CONST(0.018329999999999999) * mParameters[2] + mParameters[1]) / (CHASTE_CONST(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 / CHASTE_MATH::Pow(var_chaste_interface__ionic_concentrations__Nai, 2)) * (CHASTE_CONST(1.5) + mParameters[1]) * (1 + _lt_0_row[7] + CHASTE_CONST(0.036499999999999998) * (-CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * CHASTE_MATH::Exp(CHASTE_CONST(0.01485884101040119) * mParameters[2])) * _lt_0_row[6])); // microA_per_microF + const double var_time_independent_potassium_current__E_K = CHASTE_CONST(26.712338705498265) * CHASTE_MATH::Log(mParameters[1] / var_chaste_interface__ionic_concentrations__Ki); // millivolt + const double var_ATP_sensitive_potassium_current__i_K_ATP = CHASTE_CONST(1.921898339896919e-8) * CHASTE_MATH::Pow(mParameters[1], CHASTE_CONST(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 = CHASTE_CONST(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 = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::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 = CHASTE_CONST(438.93811257017387) * CHASTE_MATH::Sqrt(mParameters[1]) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[5] / ((1 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.23849999999999999) * var_time_independent_potassium_current__E_K)) * (1020 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.23849999999999999) * var_time_independent_potassium_current__E_K)) + 1000 * (CHASTE_CONST(0.49124000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.43983232) + CHASTE_CONST(0.080320000000000003) * var_chaste_interface__membrane__V - CHASTE_CONST(0.080320000000000003) * var_time_independent_potassium_current__E_K) + CHASTE_MATH::Exp(-CHASTE_CONST(36.698642499999998) + CHASTE_CONST(0.061749999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.061749999999999999) * var_time_independent_potassium_current__E_K)) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.4444678999999998) + CHASTE_CONST(0.51429999999999998) * var_time_independent_potassium_current__E_K - CHASTE_CONST(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 + const double d_dt_chaste_interface_var_ionic_concentrations__Ki = CHASTE_CONST(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; } @@ -3086,7 +3088,7 @@ std::shared_ptr double partialF; if (!forceNumerical && this->mUseAnalyticJacobian) { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -3108,57 +3110,57 @@ std::shared_ptr const double var_x0 = 1 / var_chaste_interface__calcium_dynamics__Cai; - const double var_x1 = pow(var_x0, 1.3999999999999999); - const double var_x2 = 1 + 6.4818210260626455e-7 * var_x1; - const double var_x3 = 0.433 + 0.25979999999999998 / var_x2; - const double var_x27 = 0.037435883507802616 * var_chaste_interface__membrane__V; - const double var_x36 = 1 / (1 + 1666.6666666666667 * var_chaste_interface__calcium_dynamics__Cai); + const double var_x1 = CHASTE_MATH::Pow(var_x0, CHASTE_CONST(1.3999999999999999)); + const double var_x2 = 1 + CHASTE_CONST(6.4818210260626455e-7) * var_x1; + const double var_x3 = CHASTE_CONST(0.433) + CHASTE_CONST(0.25979999999999998) / var_x2; + const double var_x27 = CHASTE_CONST(0.037435883507802616) * var_chaste_interface__membrane__V; + const double var_x36 = 1 / (1 + CHASTE_CONST(1666.6666666666667) * var_chaste_interface__calcium_dynamics__Cai); const double var_x37 = var_x36 * var_chaste_interface__L_type_Ca_channel_f_gate__f; const double var_x38 = var_x37 * var_chaste_interface__L_type_Ca_channel_d_gate__d; - const double var_x53 = exp(var_x27); + const double var_x53 = CHASTE_MATH::Exp(var_x27); const double var_x54 = -1 + var_x53; const double var_x55 = 1 / var_x54; const double var_x56 = var_x38 * var_x55; const double var_x61 = var_x53 * var_x56 * var_chaste_interface__membrane__V; - const double var_x64 = exp(1.2521739130434781 - 0.16722408026755853 * var_chaste_interface__membrane__V); + const double var_x64 = CHASTE_MATH::Exp(CHASTE_CONST(1.2521739130434781) - CHASTE_CONST(0.16722408026755853) * var_chaste_interface__membrane__V); const double var_x65 = 1 + var_x64; const double var_x66 = 1 / var_x65; - const double var_x68 = pow(mParameters[1], 0.23999999999999999); + const double var_x68 = CHASTE_MATH::Pow(mParameters[1], CHASTE_CONST(0.23999999999999999)); const double var_x70 = 1 / var_chaste_interface__ionic_concentrations__Ki; - const double var_x71 = log(var_x70 * mParameters[1]); - const double var_x72 = -26.712338705498265 * var_x71 + var_chaste_interface__membrane__V; - const double var_x73 = exp(0.4017857142857143 + 0.044642857142857144 * var_chaste_interface__membrane__V); + const double var_x71 = CHASTE_MATH::Log(var_x70 * mParameters[1]); + const double var_x72 = -CHASTE_CONST(26.712338705498265) * var_x71 + var_chaste_interface__membrane__V; + const double var_x73 = CHASTE_MATH::Exp(CHASTE_CONST(0.4017857142857143) + CHASTE_CONST(0.044642857142857144) * var_chaste_interface__membrane__V); const double var_x74 = 1 + var_x73; - const double var_x75 = sqrt(mParameters[1]); + const double var_x75 = CHASTE_MATH::Sqrt(mParameters[1]); const double var_x76 = var_x75 * mParameters[6] / var_x74; const double var_x77 = var_x76 * var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr; - const double var_x79 = exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 6.3708927812613361 * var_x71); + const double var_x79 = CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(6.3708927812613361) * var_x71); const double var_x80 = 1 + var_x79; const double var_x81 = 1 / var_x80; - const double var_x82 = exp(-2.4444678999999998 + 13.738155796237757 * var_x71 - 0.51429999999999998 * var_chaste_interface__membrane__V); + const double var_x82 = CHASTE_MATH::Exp(-CHASTE_CONST(2.4444678999999998) + CHASTE_CONST(13.738155796237757) * var_x71 - CHASTE_CONST(0.51429999999999998) * var_chaste_interface__membrane__V); const double var_x83 = 1 + var_x82; const double var_x84 = 1 / var_x83; - const double var_x85 = exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__V - 2.1455350448256207 * var_x71); - const double var_x86 = exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__V - 1.6494869150645177 * var_x71); - const double var_x87 = var_x86 + 0.49124000000000001 * var_x85; + const double var_x85 = CHASTE_MATH::Exp(CHASTE_CONST(0.43983232) + CHASTE_CONST(0.080320000000000003) * var_chaste_interface__membrane__V - CHASTE_CONST(2.1455350448256207) * var_x71); + const double var_x86 = CHASTE_MATH::Exp(-CHASTE_CONST(36.698642499999998) + CHASTE_CONST(0.061749999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(1.6494869150645177) * var_x71); + const double var_x87 = var_x86 + CHASTE_CONST(0.49124000000000001) * var_x85; const double var_x88 = var_x84 * var_x87; const double var_x89 = 1 / (1000 * var_x88 + 1020 * var_x81); const double var_x90 = var_x75 * var_x81 * mParameters[5]; const double var_x91 = var_x89 * var_x90; const double var_x96 = 1000 * var_x84; - const double var_x97 = pow(var_x80, (-2)); - const double var_x98 = var_x82 * var_x87 / pow(var_x83, 2); - const double var_x99 = 0.0004218936106979757 * var_x72 * var_x90 / pow((var_x81 + 0.98039215686274506 * var_x88), 2); + const double var_x97 = CHASTE_MATH::Pow(var_x80, (-2)); + const double var_x98 = var_x82 * var_x87 / CHASTE_MATH::Pow(var_x83, 2); + const double var_x99 = CHASTE_CONST(0.0004218936106979757) * var_x72 * var_x90 / CHASTE_MATH::Pow((var_x81 + CHASTE_CONST(0.98039215686274506) * var_x88), 2); const double var_x100 = var_x72 * var_x75; const double var_x101 = var_x79 * var_x97; const double var_x102 = var_x100 * var_x89 * mParameters[5]; - const double var_x115 = 1 / (0.018329999999999999 * var_chaste_interface__ionic_concentrations__Nai + var_chaste_interface__ionic_concentrations__Ki); - const double var_x154 = 0.00052283717663123607 * var_x61 + var_x99 * (-var_x96 * (1.053972635420138 * var_x70 * var_x85 + 1.6494869150645177 * var_x70 * var_x86) - 13738.155796237757 * var_x70 * var_x98 + 6498.310636886562 * var_x70 * var_x79 * var_x97) + 11.495160327182951 * var_x70 * var_x77 + 5.1338399412861326e-7 * var_x68 * var_x70 + 0.14745210965435041 * var_x66 * var_x70 + 11725.06353372661 * var_x70 * var_x91 - 2796.4276527937964 * var_x101 * var_x102 * var_x70; - const double var_x158 = 1 / M_PI; - const double var_x322 = 0.00018063215662022267 * var_x158; + const double var_x115 = 1 / (CHASTE_CONST(0.018329999999999999) * var_chaste_interface__ionic_concentrations__Nai + var_chaste_interface__ionic_concentrations__Ki); + const double var_x154 = CHASTE_CONST(0.00052283717663123607) * var_x61 + var_x99 * (-var_x96 * (CHASTE_CONST(1.053972635420138) * var_x70 * var_x85 + CHASTE_CONST(1.6494869150645177) * var_x70 * var_x86) - CHASTE_CONST(13738.155796237757) * var_x70 * var_x98 + CHASTE_CONST(6498.310636886562) * var_x70 * var_x79 * var_x97) + CHASTE_CONST(11.495160327182951) * var_x70 * var_x77 + CHASTE_CONST(5.1338399412861326e-7) * var_x68 * var_x70 + CHASTE_CONST(0.14745210965435041) * var_x66 * var_x70 + CHASTE_CONST(11725.06353372661) * var_x70 * var_x91 - CHASTE_CONST(2796.4276527937964) * var_x101 * var_x102 * var_x70; + const double var_x158 = 1 / CHASTE_CONST(CHASTE_MATH::Pi); + const double var_x322 = CHASTE_CONST(0.00018063215662022267) * var_x158; const double var_x327 = -var_x3; - partialF = var_x322 * (-var_x154 + 26.712338705498265 * var_x115 * var_x327 * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2); + partialF = var_x322 * (-var_x154 + CHASTE_CONST(26.712338705498265) * var_x115 * var_x327 * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2); } else { @@ -3175,7 +3177,7 @@ std::shared_ptr { // Inputs: // Time units: millisecond - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -3205,43 +3207,43 @@ std::shared_ptr 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__P_Ca = CHASTE_CONST(0.00054000000000000001); // cm_per_second + const double var_L_type_Ca_channel__P_K = CHASTE_CONST(1.9299999999999999e-7); // cm_per_second + const double var_L_type_Ca_channel__P_Na = CHASTE_CONST(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__gamma_Cao = CHASTE_CONST(0.34100000000000003); // dimensionless + const double var_L_type_Ca_channel__gamma_Ki = CHASTE_CONST(0.75); // dimensionless + const double var_L_type_Ca_channel__gamma_Ko = CHASTE_CONST(0.75); // dimensionless + const double var_L_type_Ca_channel__gamma_Nai = CHASTE_CONST(0.75); // dimensionless + const double var_L_type_Ca_channel__gamma_Nao = CHASTE_CONST(0.75); // dimensionless + const double var_L_type_Ca_channel_f_Ca_gate__Km_Ca = CHASTE_CONST(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__I_st_converted = CHASTE_STIM(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_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * CHASTE_MATH::Log(mParameters[2] / var_chaste_interface__ionic_concentrations__Nai) / var_membrane__F; // millivolt + const double var_L_type_Ca_channel__I_CaCa = 4 * CHASTE_MATH::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 * CHASTE_MATH::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 + CHASTE_MATH::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 = CHASTE_MATH::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 * CHASTE_MATH::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 + CHASTE_MATH::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 = CHASTE_MATH::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 * CHASTE_MATH::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 + CHASTE_MATH::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_L_type_Ca_channel__i_Ca_L_converted = CHASTE_CAP() * var_L_type_Ca_channel__i_Ca_L; // uA_per_cm2 + const double var_fast_sodium_current__i_Na = CHASTE_MATH::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 = CHASTE_CAP() * 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__g_Kr = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::Sqrt(mParameters[1]) * mParameters[6]; // milliS_per_microF + const double var_time_independent_potassium_current__E_K = var_membrane__R * var_membrane__T * CHASTE_MATH::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_rapid_delayed_rectifier_potassium_current__i_Kr_converted = CHASTE_CAP() * var_rapid_delayed_rectifier_potassium_current__i_Kr; // uA_per_cm2 + const double var_time_independent_potassium_current__g_K1 = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::Sqrt(mParameters[1]) * mParameters[5]; // milliS_per_cm2 + const double var_time_independent_potassium_current_K1_gate__alpha_K1 = 1020 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.23849999999999999) * var_time_independent_potassium_current__E_K)); // per_second + const double var_time_independent_potassium_current_K1_gate__beta_K1 = 1000 * (CHASTE_CONST(0.49124000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.43983232) + CHASTE_CONST(0.080320000000000003) * var_chaste_interface__membrane__V - CHASTE_CONST(0.080320000000000003) * var_time_independent_potassium_current__E_K) + CHASTE_MATH::Exp(-CHASTE_CONST(36.698642499999998) + CHASTE_CONST(0.061749999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.061749999999999999) * var_time_independent_potassium_current__E_K)) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.4444678999999998) + CHASTE_CONST(0.51429999999999998) * var_time_independent_potassium_current__E_K - CHASTE_CONST(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 + const double var_time_independent_potassium_current__i_K1_converted = CHASTE_CAP() * 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; diff --git a/chaste_codegen/data/tests/chaste_reference_models/GRL2Opt/dynamic_viswanathan_model_1999_epi.hpp b/chaste_codegen/data/tests/chaste_reference_models/GRL2Opt/dynamic_viswanathan_model_1999_epi.hpp index bd776ac22..f67af549b 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/GRL2Opt/dynamic_viswanathan_model_1999_epi.hpp +++ b/chaste_codegen/data/tests/chaste_reference_models/GRL2Opt/dynamic_viswanathan_model_1999_epi.hpp @@ -17,6 +17,9 @@ #include #include "AbstractDynamicallyLoadableEntity.hpp" #include "AbstractStimulusFunction.hpp" +#if USING_DEVICE_COMPILER +#include "StimulusEvaluatorCuda.hpp" +#endif #include "AbstractGeneralizedRushLarsenCardiacCell.hpp" class Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt : public AbstractGeneralizedRushLarsenCardiacCell, public AbstractDynamicallyLoadableEntity diff --git a/chaste_codegen/data/tests/chaste_reference_models/GRL2Opt/dynamic_winslow_model_1999.cpp b/chaste_codegen/data/tests/chaste_reference_models/GRL2Opt/dynamic_winslow_model_1999.cpp index 77a50e74f..f093f7d7b 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/GRL2Opt/dynamic_winslow_model_1999.cpp +++ b/chaste_codegen/data/tests/chaste_reference_models/GRL2Opt/dynamic_winslow_model_1999.cpp @@ -5,13 +5,14 @@ //! Model: winslow_model_1999 //! //! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen -//! (translator: chaste_codegen, model type: GeneralizedRushLarsenSecondOrderOpt) +//! (translator: chaste_codegen, model type: GeneralizedRushLarsenSecondOrder) //! on (date omitted as unimportant) //! //! #include "dynamic_winslow_model_1999.hpp" #include +#include #include #include #include "Exception.hpp" @@ -20,25 +21,34 @@ #include "HeartConfig.hpp" #include "IsNan.hpp" #include "MathsCustomFunctions.hpp" +#include "ChasteMathDeviceNamespaces.hpp" +#include "ChasteCpuMacros.hpp" - boost::shared_ptr Dynamicwinslow_model_1999FromCellMLGRL2Opt::UseCellMLDefaultStimulus() + + + + + boost::shared_ptr Dynamicwinslow_model_1999FromCellMLGRL2::UseCellMLDefaultStimulus() { // Use the default stimulus specified by CellML metadata - const double var_chaste_interface__membrane__stim_amplitude = -21.126799999999999 * HeartConfig::Instance()->GetCapacitance(); // microA_per_microF - const double var_chaste_interface__membrane__stim_duration = 2.0; // millisecond - const double var_chaste_interface__membrane__stim_period = 1000.0; // millisecond - const double var_chaste_interface__membrane__stim_start = 100.0; // millisecond + const double var_chaste_interface__membrane__stim_amplitude_converted = -CHASTE_CONST(21.126799999999999) * CHASTE_CAP(); // 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), - var_chaste_interface__membrane__stim_duration, - var_chaste_interface__membrane__stim_period, - var_chaste_interface__membrane__stim_start + -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; } - - Dynamicwinslow_model_1999FromCellMLGRL2Opt::Dynamicwinslow_model_1999FromCellMLGRL2Opt(boost::shared_ptr /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus) + 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, @@ -46,213 +56,246 @@ { // Time units: millisecond // - this->mpSystemInfo = OdeSystemInformation::Instance(); + 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] = CHASTE_CONST(0.00031250000000000001); // (var_L_type_Ca_current__P_Ca) [cm_per_second] + this->mParameters[7] = CHASTE_CONST(0.001); // (var_membrane__C_sc) [microF_per_cm2] + this->mParameters[8] = CHASTE_CONST(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] = CHASTE_CONST(2.7999999999999998); // (var_time_independent_potassium_current__g_K1) [milliS_per_microF] + this->mParameters[12] = CHASTE_CONST(0.0033999999999999998); // (var_rapid_activating_delayed_rectifiyer_K_current__g_Kr) [milliS_per_microF] + this->mParameters[13] = CHASTE_CONST(0.0027133999999999999); // (var_slow_activating_delayed_rectifiyer_K_current__g_Ks) [milliS_per_microF] + this->mParameters[14] = CHASTE_CONST(0.29999999999999999); // (var_Na_Ca_exchanger__K_NaCa) [microA_per_microF] + this->mParameters[15] = CHASTE_CONST(0.23815); // (var_transient_outward_potassium_current__g_to1) [milliS_per_microF] } - Dynamicwinslow_model_1999FromCellMLGRL2Opt::~Dynamicwinslow_model_1999FromCellMLGRL2Opt() + Dynamicwinslow_model_1999FromCellMLGRL2::~Dynamicwinslow_model_1999FromCellMLGRL2() { } + - double Dynamicwinslow_model_1999FromCellMLGRL2Opt::GetIIonic(const std::vector* pStateVariables) + 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -96.1638 - double var_chaste_interface__fast_sodium_current_m_gate__m = rY[1]; + 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[2]; + 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[3]; + 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[4]; + 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[5]; + 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[6]; + 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[7]; + 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[8]; + 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[9]; + 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[20]; + 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[27]; + double var_chaste_interface__intracellular_ion_concentrations__Nai = rY[28]; // Units: millimolar; Initial value: 10.0 - double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[28]; - // Units: millimolar; Initial value: 8e-05 double var_chaste_interface__intracellular_ion_concentrations__Ki = rY[29]; // Units: millimolar; Initial value: 157.8 - const double var_L_type_Ca_current__P_Ca = 0.00031250000000000001; // cm_per_second - 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_NaCa = 0.29999999999999999; // 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_fast_sodium_current__g_Na = 12.800000000000001; // milliS_per_microF - const double var_membrane__C_sc = 0.001; // microF_per_cm2 - 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.0; // kelvin - const double var_membrane__i_Stim = 0.0; // 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.0 / (1.0 + exp(1.2521739130434781 - 0.16722408026755853 * var_chaste_interface__membrane__V)); // dimensionless - const double var_rapid_activating_delayed_rectifiyer_K_current__R_V = 1.0 / (1.0 + 1.4944999999999999 * exp(0.044600000000000001 * var_chaste_interface__membrane__V)); // dimensionless - const double var_rapid_activating_delayed_rectifiyer_K_current__g_Kr = 0.0033999999999999998; // milliS_per_microF - 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_L_type_Ca_current__P_K = CHASTE_CONST(5.7899999999999998e-7); // cm_per_second + const double var_L_type_Ca_current__i_Ca_half = -CHASTE_CONST(0.26500000000000001); // microA_per_microF + const double var_Na_Ca_exchanger__K_mCa = CHASTE_CONST(1.3799999999999999); // millimolar + const double var_Na_Ca_exchanger__K_mNa = CHASTE_CONST(87.5); // millimolar + const double var_Na_Ca_exchanger__K_sat = CHASTE_CONST(0.20000000000000001); // dimensionless + const double var_Na_Ca_exchanger__eta = CHASTE_CONST(0.34999999999999998); // dimensionless + const double var_calcium_background_current__g_Cab = CHASTE_CONST(0.00038420000000000001); // milliS_per_microF + const double var_membrane__F = CHASTE_CONST(96.485341500000004); // coulomb_per_millimole + const double var_membrane__R = CHASTE_CONST(8.3144720000000003); // joule_per_mole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_plateau_potassium_current__g_Kp = CHASTE_CONST(0.0022160000000000001); // milliS_per_microF + const double var_plateau_potassium_current_Kp_gate__Kp_V = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(1.2521739130434781) - CHASTE_CONST(0.16722408026755853) * var_chaste_interface__membrane__V)); // dimensionless + const double var_rapid_activating_delayed_rectifiyer_K_current__R_V = 1 / (1 + CHASTE_CONST(1.4944999999999999) * CHASTE_MATH::Exp(CHASTE_CONST(0.044600000000000001) * var_chaste_interface__membrane__V)); // dimensionless + const double var_sarcolemmal_calcium_pump__I_pCa = CHASTE_CONST(0.050000000000000003); // microA_per_microF + const double var_sarcolemmal_calcium_pump__K_mpCa = CHASTE_CONST(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__g_Ks = 0.0027133999999999999; // milliS_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.0; // millimolar - const double var_standard_ionic_concentrations__Cao = 2.0; // millimolar - const double var_L_type_Ca_current__i_Ca_max = 4000.0 * pow(var_membrane__F, 2) * (0.001 * exp(2.0 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - 0.34100000000000003 * var_standard_ionic_concentrations__Cao) * var_L_type_Ca_current__P_Ca * var_chaste_interface__membrane__V / ((-1.0 + exp(2.0 * 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_sodium_background_current__g_Nab = CHASTE_CONST(0.0030999999999999999); // milliS_per_microF + const double var_sodium_potassium_pump__I_NaK = CHASTE_CONST(0.69299999999999995); // microA_per_microF + const double var_sodium_potassium_pump__K_mKo = CHASTE_CONST(1.5); // millimolar + const double var_sodium_potassium_pump__K_mNai = 10; // millimolar + const double var_L_type_Ca_current__i_Ca_max = 4000 * CHASTE_MATH::Pow(var_membrane__F, 2) * (CHASTE_CONST(0.001) * CHASTE_MATH::Exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - CHASTE_CONST(0.34100000000000003) * mParameters[3]) * mParameters[6] * var_chaste_interface__membrane__V / ((-1 + CHASTE_MATH::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.0 + 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(var_standard_ionic_concentrations__Cao / var_chaste_interface__intracellular_ion_concentrations__Cai) / var_membrane__F; // millivolt + const double var_L_type_Ca_current__i_Ca_converted = CHASTE_CAP() * 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 = CHASTE_CONST(0.5) * var_membrane__R * var_membrane__T * CHASTE_MATH::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_standard_ionic_concentrations__Ko = 4.0; // millimolar - const double var_L_type_Ca_current__i_Ca_K = 1.0 * pow(var_membrane__F, 2) * (-var_standard_ionic_concentrations__Ko + 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.0 + 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(var_standard_ionic_concentrations__Ko / var_chaste_interface__intracellular_ion_concentrations__Ki) / var_membrane__F; // millivolt + const double var_L_type_Ca_current__i_Ca_K = CHASTE_MATH::Pow(var_membrane__F, 2) * (-mParameters[4] + var_chaste_interface__intracellular_ion_concentrations__Ki * CHASTE_MATH::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 + CHASTE_MATH::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 * CHASTE_MATH::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(var_standard_ionic_concentrations__Ko); // 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 * var_rapid_activating_delayed_rectifiyer_K_current__g_Kr * var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr; // microA_per_microF - const double var_standard_ionic_concentrations__Nao = 138.0; // millimolar - const double var_Na_Ca_exchanger__i_NaCa = 5000.0 * (pow(var_chaste_interface__intracellular_ion_concentrations__Nai, 3) * var_standard_ionic_concentrations__Cao * exp(var_Na_Ca_exchanger__eta * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - pow(var_standard_ionic_concentrations__Nao, 3) * var_chaste_interface__intracellular_ion_concentrations__Cai * exp((-1.0 + 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.0 + var_Na_Ca_exchanger__K_sat * exp((-1.0 + 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(var_standard_ionic_concentrations__Nao, 3)) * (var_Na_Ca_exchanger__K_mCa + var_standard_ionic_concentrations__Cao)); // microA_per_microF - const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * log(var_standard_ionic_concentrations__Nao / 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) * var_fast_sodium_current__g_Na * 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.0 * var_standard_ionic_concentrations__Ko + 0.018329999999999999 * var_standard_ionic_concentrations__Nao) / (1.0 * 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) * var_slow_activating_delayed_rectifiyer_K_current__g_Ks; // microA_per_microF + const double var_rapid_activating_delayed_rectifiyer_K_current__f_Ko = CHASTE_CONST(0.5) * CHASTE_MATH::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 = CHASTE_CAP() * var_rapid_activating_delayed_rectifiyer_K_current__i_Kr; // uA_per_cm2 + const double var_Na_Ca_exchanger__i_NaCa = 5000 * (CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Nai, 3) * mParameters[3] * CHASTE_MATH::Exp(var_Na_Ca_exchanger__eta * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - CHASTE_MATH::Pow(mParameters[5], 3) * var_chaste_interface__intracellular_ion_concentrations__Cai * CHASTE_MATH::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 * CHASTE_MATH::Exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (CHASTE_MATH::Pow(var_Na_Ca_exchanger__K_mNa, 3) + CHASTE_MATH::Pow(mParameters[5], 3)) * (var_Na_Ca_exchanger__K_mCa + mParameters[3])); // microA_per_microF + const double var_Na_Ca_exchanger__i_NaCa_converted = CHASTE_CAP() * var_Na_Ca_exchanger__i_NaCa; // uA_per_cm2 + const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * CHASTE_MATH::Log(mParameters[5] / var_chaste_interface__intracellular_ion_concentrations__Nai) / var_membrane__F; // millivolt + const double var_fast_sodium_current__i_Na = CHASTE_MATH::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 = CHASTE_CAP() * 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 * CHASTE_MATH::Log((mParameters[4] + CHASTE_CONST(0.018329999999999999) * mParameters[5]) / (var_chaste_interface__intracellular_ion_concentrations__Ki + CHASTE_CONST(0.018329999999999999) * var_chaste_interface__intracellular_ion_concentrations__Nai)) / var_membrane__F; // millivolt + const double var_slow_activating_delayed_rectifiyer_K_current__i_Ks = CHASTE_MATH::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 = CHASTE_CAP() * 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 * var_standard_ionic_concentrations__Nao); // dimensionless - const double var_sodium_potassium_pump__f_NaK = 1.0 / (1.0 + 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 * var_standard_ionic_concentrations__Ko / ((1.0 + pow((var_sodium_potassium_pump__K_mNai / var_chaste_interface__intracellular_ion_concentrations__Nai), 1.5)) * (var_sodium_potassium_pump__K_mKo + var_standard_ionic_concentrations__Ko)); // microA_per_microF - const double var_time_independent_potassium_current__K_mK1 = 13.0; // millimolar - const double var_time_independent_potassium_current__g_K1 = 2.7999999999999998; // milliS_per_microF - const double var_time_independent_potassium_current_K1_gate__K1_infinity_V = 1.0 / (2.0 + 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) * var_standard_ionic_concentrations__Ko * var_time_independent_potassium_current__g_K1 * var_time_independent_potassium_current_K1_gate__K1_infinity_V / (var_standard_ionic_concentrations__Ko + var_time_independent_potassium_current__K_mK1); // microA_per_microF - const double var_transient_outward_potassium_current__g_to1 = 0.23815; // milliS_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) * var_transient_outward_potassium_current__g_to1 * 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.0 * (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) / var_membrane__C_sc; // millivolt / second - const double var_chaste_interface__i_ionic = 0.001 * HeartConfig::Instance()->GetCapacitance() * var_membrane__V_orig_deriv; // uA_per_cm2 + const double var_sodium_potassium_pump__sigma = -CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * CHASTE_MATH::Exp(CHASTE_CONST(0.01485884101040119) * mParameters[5]); // dimensionless + const double var_sodium_potassium_pump__f_NaK = 1 / (1 + CHASTE_CONST(0.1245) * CHASTE_MATH::Exp(-CHASTE_CONST(0.10000000000000001) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) + CHASTE_CONST(0.036499999999999998) * var_sodium_potassium_pump__sigma * CHASTE_MATH::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 + CHASTE_MATH::Pow((var_sodium_potassium_pump__K_mNai / var_chaste_interface__intracellular_ion_concentrations__Nai), CHASTE_CONST(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 + CHASTE_MATH::Exp(CHASTE_CONST(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 = CHASTE_CAP() * 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 = CHASTE_CAP() * var_transient_outward_potassium_current__i_to1; // uA_per_cm2 + const double var_chaste_interface__i_ionic = CHASTE_CAP() * var_L_type_Ca_current__i_Ca_K + CHASTE_CAP() * var_calcium_background_current__i_Ca_b + CHASTE_CAP() * var_plateau_potassium_current__i_Kp + CHASTE_CAP() * var_sarcolemmal_calcium_pump__i_p_Ca + CHASTE_CAP() * var_sodium_background_current__i_Na_b + CHASTE_CAP() * 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_1999FromCellMLGRL2Opt::UpdateTransmembranePotential(double var_chaste_interface__environment__time_converted) + 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -96.1638 - double var_chaste_interface__fast_sodium_current_m_gate__m = rY[1]; + 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[2]; + 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[3]; + 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[4]; + 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[5]; + 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[6]; + 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[7]; + 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[8]; + 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[9]; + 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[20]; + 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[27]; + double var_chaste_interface__intracellular_ion_concentrations__Nai = rY[28]; // Units: millimolar; Initial value: 10.0 - double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[28]; - // Units: millimolar; Initial value: 8e-05 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_Ca = 0.00031250000000000001; // cm_per_second - 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_NaCa = 0.29999999999999999; // 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_fast_sodium_current__g_Na = 12.800000000000001; // milliS_per_microF - const double var_membrane__C_sc = 0.001; // microF_per_cm2 - 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.0; // kelvin - const double var_membrane__i_Stim_converter = GetIntracellularAreaStimulus(var_chaste_interface__environment__time_converted); // uA_per_cm2 - const double var_membrane__i_Stim = var_membrane__i_Stim_converter / 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.0 / (1.0 + exp(1.2521739130434781 - 0.16722408026755853 * var_chaste_interface__membrane__V)); // dimensionless - const double var_rapid_activating_delayed_rectifiyer_K_current__R_V = 1.0 / (1.0 + 1.4944999999999999 * exp(0.044600000000000001 * var_chaste_interface__membrane__V)); // dimensionless - const double var_rapid_activating_delayed_rectifiyer_K_current__g_Kr = 0.0033999999999999998; // milliS_per_microF - 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_L_type_Ca_current__P_K = CHASTE_CONST(5.7899999999999998e-7); // cm_per_second + const double var_L_type_Ca_current__i_Ca_half = -CHASTE_CONST(0.26500000000000001); // microA_per_microF + const double var_Na_Ca_exchanger__K_mCa = CHASTE_CONST(1.3799999999999999); // millimolar + const double var_Na_Ca_exchanger__K_mNa = CHASTE_CONST(87.5); // millimolar + const double var_Na_Ca_exchanger__K_sat = CHASTE_CONST(0.20000000000000001); // dimensionless + const double var_Na_Ca_exchanger__eta = CHASTE_CONST(0.34999999999999998); // dimensionless + const double var_calcium_background_current__g_Cab = CHASTE_CONST(0.00038420000000000001); // milliS_per_microF + const double var_membrane__F = CHASTE_CONST(96.485341500000004); // coulomb_per_millimole + const double var_membrane__R = CHASTE_CONST(8.3144720000000003); // joule_per_mole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_membrane__i_Stim_converted = CHASTE_STIM(var_chaste_interface__environment__time_converted); // uA_per_cm2 + const double var_membrane__i_Stim = var_membrane__i_Stim_converted / CHASTE_CAP(); // microA_per_microF + const double var_plateau_potassium_current__g_Kp = CHASTE_CONST(0.0022160000000000001); // milliS_per_microF + const double var_plateau_potassium_current_Kp_gate__Kp_V = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(1.2521739130434781) - CHASTE_CONST(0.16722408026755853) * var_chaste_interface__membrane__V)); // dimensionless + const double var_rapid_activating_delayed_rectifiyer_K_current__R_V = 1 / (1 + CHASTE_CONST(1.4944999999999999) * CHASTE_MATH::Exp(CHASTE_CONST(0.044600000000000001) * var_chaste_interface__membrane__V)); // dimensionless + const double var_sarcolemmal_calcium_pump__I_pCa = CHASTE_CONST(0.050000000000000003); // microA_per_microF + const double var_sarcolemmal_calcium_pump__K_mpCa = CHASTE_CONST(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__g_Ks = 0.0027133999999999999; // milliS_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.0; // millimolar - const double var_standard_ionic_concentrations__Cao = 2.0; // millimolar - const double var_L_type_Ca_current__i_Ca_max = 4000.0 * pow(var_membrane__F, 2) * (0.001 * exp(2.0 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - 0.34100000000000003 * var_standard_ionic_concentrations__Cao) * var_L_type_Ca_current__P_Ca * var_chaste_interface__membrane__V / ((-1.0 + exp(2.0 * 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_sodium_background_current__g_Nab = CHASTE_CONST(0.0030999999999999999); // milliS_per_microF + const double var_sodium_potassium_pump__I_NaK = CHASTE_CONST(0.69299999999999995); // microA_per_microF + const double var_sodium_potassium_pump__K_mKo = CHASTE_CONST(1.5); // millimolar + const double var_sodium_potassium_pump__K_mNai = 10; // millimolar + const double var_L_type_Ca_current__i_Ca_max = 4000 * CHASTE_MATH::Pow(var_membrane__F, 2) * (CHASTE_CONST(0.001) * CHASTE_MATH::Exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - CHASTE_CONST(0.34100000000000003) * mParameters[3]) * mParameters[6] * var_chaste_interface__membrane__V / ((-1 + CHASTE_MATH::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.0 + 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(var_standard_ionic_concentrations__Cao / var_chaste_interface__intracellular_ion_concentrations__Cai) / var_membrane__F; // millivolt + 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 = CHASTE_CONST(0.5) * var_membrane__R * var_membrane__T * CHASTE_MATH::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_standard_ionic_concentrations__Ko = 4.0; // millimolar - const double var_L_type_Ca_current__i_Ca_K = 1.0 * pow(var_membrane__F, 2) * (-var_standard_ionic_concentrations__Ko + 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.0 + 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(var_standard_ionic_concentrations__Ko / var_chaste_interface__intracellular_ion_concentrations__Ki) / var_membrane__F; // millivolt + const double var_L_type_Ca_current__i_Ca_K = CHASTE_MATH::Pow(var_membrane__F, 2) * (-mParameters[4] + var_chaste_interface__intracellular_ion_concentrations__Ki * CHASTE_MATH::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 + CHASTE_MATH::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 * CHASTE_MATH::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(var_standard_ionic_concentrations__Ko); // 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 * var_rapid_activating_delayed_rectifiyer_K_current__g_Kr * var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr; // microA_per_microF - const double var_standard_ionic_concentrations__Nao = 138.0; // millimolar - const double var_Na_Ca_exchanger__i_NaCa = 5000.0 * (pow(var_chaste_interface__intracellular_ion_concentrations__Nai, 3) * var_standard_ionic_concentrations__Cao * exp(var_Na_Ca_exchanger__eta * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - pow(var_standard_ionic_concentrations__Nao, 3) * var_chaste_interface__intracellular_ion_concentrations__Cai * exp((-1.0 + 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.0 + var_Na_Ca_exchanger__K_sat * exp((-1.0 + 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(var_standard_ionic_concentrations__Nao, 3)) * (var_Na_Ca_exchanger__K_mCa + var_standard_ionic_concentrations__Cao)); // microA_per_microF - const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * log(var_standard_ionic_concentrations__Nao / 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) * var_fast_sodium_current__g_Na * 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.0 * var_standard_ionic_concentrations__Ko + 0.018329999999999999 * var_standard_ionic_concentrations__Nao) / (1.0 * 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) * var_slow_activating_delayed_rectifiyer_K_current__g_Ks; // microA_per_microF + const double var_rapid_activating_delayed_rectifiyer_K_current__f_Ko = CHASTE_CONST(0.5) * CHASTE_MATH::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 * (CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Nai, 3) * mParameters[3] * CHASTE_MATH::Exp(var_Na_Ca_exchanger__eta * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - CHASTE_MATH::Pow(mParameters[5], 3) * var_chaste_interface__intracellular_ion_concentrations__Cai * CHASTE_MATH::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 * CHASTE_MATH::Exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (CHASTE_MATH::Pow(var_Na_Ca_exchanger__K_mNa, 3) + CHASTE_MATH::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 * CHASTE_MATH::Log(mParameters[5] / var_chaste_interface__intracellular_ion_concentrations__Nai) / var_membrane__F; // millivolt + const double var_fast_sodium_current__i_Na = CHASTE_MATH::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 * CHASTE_MATH::Log((mParameters[4] + CHASTE_CONST(0.018329999999999999) * mParameters[5]) / (var_chaste_interface__intracellular_ion_concentrations__Ki + CHASTE_CONST(0.018329999999999999) * var_chaste_interface__intracellular_ion_concentrations__Nai)) / var_membrane__F; // millivolt + const double var_slow_activating_delayed_rectifiyer_K_current__i_Ks = CHASTE_MATH::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 * var_standard_ionic_concentrations__Nao); // dimensionless - const double var_sodium_potassium_pump__f_NaK = 1.0 / (1.0 + 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 * var_standard_ionic_concentrations__Ko / ((1.0 + pow((var_sodium_potassium_pump__K_mNai / var_chaste_interface__intracellular_ion_concentrations__Nai), 1.5)) * (var_sodium_potassium_pump__K_mKo + var_standard_ionic_concentrations__Ko)); // microA_per_microF - const double var_time_independent_potassium_current__K_mK1 = 13.0; // millimolar - const double var_time_independent_potassium_current__g_K1 = 2.7999999999999998; // milliS_per_microF - const double var_time_independent_potassium_current_K1_gate__K1_infinity_V = 1.0 / (2.0 + 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) * var_standard_ionic_concentrations__Ko * var_time_independent_potassium_current__g_K1 * var_time_independent_potassium_current_K1_gate__K1_infinity_V / (var_standard_ionic_concentrations__Ko + var_time_independent_potassium_current__K_mK1); // microA_per_microF - const double var_transient_outward_potassium_current__g_to1 = 0.23815; // milliS_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) * var_transient_outward_potassium_current__g_to1 * 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.0 * (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) / var_membrane__C_sc; // millivolt / second - d_dt_chaste_interface_var_membrane__V = 0.001 * var_membrane__V_orig_deriv; // millivolt / millisecond + const double var_sodium_potassium_pump__sigma = -CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * CHASTE_MATH::Exp(CHASTE_CONST(0.01485884101040119) * mParameters[5]); // dimensionless + const double var_sodium_potassium_pump__f_NaK = 1 / (1 + CHASTE_CONST(0.1245) * CHASTE_MATH::Exp(-CHASTE_CONST(0.10000000000000001) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) + CHASTE_CONST(0.036499999999999998) * var_sodium_potassium_pump__sigma * CHASTE_MATH::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 + CHASTE_MATH::Pow((var_sodium_potassium_pump__K_mNai / var_chaste_interface__intracellular_ion_concentrations__Nai), CHASTE_CONST(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 + CHASTE_MATH::Exp(CHASTE_CONST(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 = CHASTE_CONST(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; @@ -280,7 +323,7 @@ } } - void Dynamicwinslow_model_1999FromCellMLGRL2Opt::ComputeOneStepExceptVoltage(double var_chaste_interface__environment__time_converted) + void Dynamicwinslow_model_1999FromCellMLGRL2::ComputeOneStepExceptVoltage(double var_chaste_interface__environment__time_converted) { std::vector& rY = rGetStateVariables(); const double delta=1e-8; @@ -288,64 +331,64 @@ mYInit = rY; double y_save; - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -96.1638 - double var_chaste_interface__fast_sodium_current_m_gate__m = rY[1]; + 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[2]; + 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[3]; + 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[4]; + 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[5]; + 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[6]; + 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[7]; + 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[8]; + 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[9]; + 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[10]; + 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[11]; + 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[12]; + 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[13]; + 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[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[15]; + 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[16]; + 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[17]; + 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[18]; + 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[19]; + 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[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[21]; + 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[22]; + 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[23]; + 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[24]; + 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[25]; + 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[26]; + 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[27]; + double var_chaste_interface__intracellular_ion_concentrations__Nai = rY[28]; // Units: millimolar; Initial value: 10.0 - double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[28]; - // Units: millimolar; Initial value: 8e-05 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]; @@ -355,172 +398,197 @@ 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_Ca = 0.00031250000000000001; // cm_per_second - const double var_L_type_Ca_current__a = 2.0; // dimensionless - const double var_L_type_Ca_current__b = 2.0; // dimensionless - const double var_L_type_Ca_current__f = 300.0; // per_second - const double var_L_type_Ca_current__fprime = 7.0; // per_second - const double var_L_type_Ca_current__g = 2000.0; // per_second + const double var_L_type_Ca_current__P_K = CHASTE_CONST(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.0; // per_second + const double d_dt_chaste_interface_var_L_type_Ca_current__O = CHASTE_CONST(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__omega = 10.0; // per_second - const double var_Na_Ca_exchanger__K_NaCa = 0.29999999999999999; // 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_RyR_channel__k_a_minus = 576.0; // per_second - const double var_RyR_channel__k_a_plus = 12150000000000.0; // millimolar4_per_second - const double var_RyR_channel__k_b_minus = 1930.0; // 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.0; // per_second + const double d_dt_chaste_interface_var_L_type_Ca_current__O_Ca = CHASTE_CONST(0.001) * var_L_type_Ca_current__O_Ca_orig_deriv; // 1 / millisecond + const double var_L_type_Ca_current__i_Ca_half = -CHASTE_CONST(0.26500000000000001); // microA_per_microF + const double var_L_type_Ca_current__omega = 10; // per_second + const double var_Na_Ca_exchanger__K_mCa = CHASTE_CONST(1.3799999999999999); // millimolar + const double var_Na_Ca_exchanger__K_mNa = CHASTE_CONST(87.5); // millimolar + const double var_Na_Ca_exchanger__K_sat = CHASTE_CONST(0.20000000000000001); // dimensionless + const double var_Na_Ca_exchanger__eta = CHASTE_CONST(0.34999999999999998); // dimensionless + const double var_RyR_channel__k_a_minus = 576; // per_second + const double var_RyR_channel__k_a_plus = CHASTE_CONST(12150000000000.0); // millimolar4_per_second + const double var_RyR_channel__k_b_minus = 1930; // per_second + const double var_RyR_channel__k_b_plus = CHASTE_CONST(4050000000.0); // millimolar3_per_second + const double var_RyR_channel__k_c_minus = CHASTE_CONST(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.0; // dimensionless - const double var_RyR_channel__n = 4.0; // dimensionless - const double var_RyR_channel__v1 = 1800.0; // per_second - const double var_SERCA2a_pump__K_SR = 1.0; // 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.0; // 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.0; // per_millimolar_second - const double var_intracellular_Ca_fluxes__k_ltrpn_minus = 40.0; // per_second - const double var_intracellular_Ca_fluxes__k_ltrpn_plus = 40000.0; // 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.0; // 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 d_dt_chaste_interface_var_RyR_channel__P_C2 = CHASTE_CONST(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 = CHASTE_CONST(0.00016799999999999999); // millimolar + const double var_SERCA2a_pump__K_rb = CHASTE_CONST(3.29); // millimolar + const double var_SERCA2a_pump__N_fb = CHASTE_CONST(1.2); // dimensionless + const double var_SERCA2a_pump__N_rb = 1; // dimensionless + const double var_SERCA2a_pump__Vmaxf = CHASTE_CONST(0.081299999999999997); // millimolar_per_second + const double var_SERCA2a_pump__Vmaxr = CHASTE_CONST(0.318); // millimolar_per_second + const double var_calcium_background_current__g_Cab = CHASTE_CONST(0.00038420000000000001); // milliS_per_microF + const double var_intracellular_Ca_fluxes__HTRPN_tot = CHASTE_CONST(0.14000000000000001); // dimensionless + const double var_intracellular_Ca_fluxes__LTRPN_tot = CHASTE_CONST(0.070000000000000007); // dimensionless + const double var_intracellular_Ca_fluxes__k_htrpn_minus = CHASTE_CONST(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 = CHASTE_CONST(0.00057470000000000004); // second + const double var_intracellular_Ca_fluxes__tau_xfer = CHASTE_CONST(0.026700000000000002); // second + const double var_intracellular_ion_concentrations__A_cap = CHASTE_CONST(0.00015339999999999999); // cm2 + const double var_intracellular_ion_concentrations__CMDN_tot = CHASTE_CONST(0.050000000000000003); // millimolar + const double var_intracellular_ion_concentrations__CSQN_tot = 15; // millimolar + const double var_SERCA2a_pump__rb = CHASTE_MATH::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) * var_RyR_channel__v1; // 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) * var_SERCA2a_pump__K_SR / (1.0 + 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.0 - 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_L_type_Ca_current__gamma = CHASTE_CONST(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 - CHASTE_MATH::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 = CHASTE_CONST(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 + CHASTE_MATH::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 - CHASTE_MATH::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 = CHASTE_CONST(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 + CHASTE_MATH::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 = CHASTE_CONST(0.001) * var_RyR_channel__P_O2_orig_deriv; // 1 / millisecond + const double var_SERCA2a_pump__fb = CHASTE_MATH::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 = CHASTE_CONST(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.0 - 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__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 = CHASTE_CONST(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__Ki_orig_deriv = 0; // 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_intracellular_ion_concentrations__Nai_orig_deriv = 0; // 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_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__K_mCMDN = CHASTE_CONST(0.0023800000000000002); // millimolar + const double var_intracellular_ion_concentrations__K_mCSQN = CHASTE_CONST(0.80000000000000004); // millimolar + const double var_intracellular_ion_concentrations__K_mEGTA = CHASTE_CONST(0.00014999999999999999); // millimolar + const double var_intracellular_ion_concentrations__V_JSR = CHASTE_CONST(1.6e-7); // micro_litre + const double var_intracellular_ion_concentrations__V_NSR = CHASTE_CONST(2.0999999999999998e-6); // micro_litre + const double var_intracellular_ion_concentrations__V_SS = CHASTE_CONST(1.2e-9); // micro_litre + const double var_intracellular_ion_concentrations__V_myo = CHASTE_CONST(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.0 / (1.0 + 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 d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_NSR = CHASTE_CONST(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 / CHASTE_MATH::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.0 / (1.0 + 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.0 / (1.0 + 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.0; // kelvin - const double var_L_type_Ca_current__alpha = 400.0 * exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); // per_second + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_JSR = CHASTE_CONST(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 / CHASTE_MATH::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 / CHASTE_MATH::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 / CHASTE_MATH::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 / CHASTE_MATH::Pow((var_chaste_interface__intracellular_ion_concentrations__Cai + var_intracellular_ion_concentrations__K_mEGTA), 2)); // dimensionless + const double var_membrane__F = CHASTE_CONST(96.485341500000004); // coulomb_per_millimole + const double var_membrane__R = CHASTE_CONST(8.3144720000000003); // joule_per_mole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_L_type_Ca_current__alpha = 400 * CHASTE_MATH::Exp(CHASTE_CONST(0.20000000000000001) + CHASTE_CONST(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.0 * 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.0 * 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.0 * 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.0 * var_chaste_interface__L_type_Ca_current__C2 * var_L_type_Ca_current__beta + 4.0 * 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.0 * var_L_type_Ca_current__alpha + 2.0 * 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.0 * var_chaste_interface__L_type_Ca_current__C1 * var_L_type_Ca_current__alpha + 3.0 * 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.0 * 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.0 * var_chaste_interface__L_type_Ca_current__C2 * var_L_type_Ca_current__alpha + 4.0 * 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.0 * 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 = 50 * CHASTE_MATH::Exp(-CHASTE_CONST(0.15384615384615385) - CHASTE_CONST(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 = CHASTE_CONST(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 = CHASTE_CONST(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 + CHASTE_MATH::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 / CHASTE_MATH::Pow(var_L_type_Ca_current__b, 2); // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__C2 = CHASTE_CONST(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 + CHASTE_MATH::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 / CHASTE_MATH::Pow(var_L_type_Ca_current__b, 3); // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__C3 = CHASTE_CONST(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 + CHASTE_MATH::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 / CHASTE_MATH::Pow(var_L_type_Ca_current__b, 4); // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__C4 = CHASTE_CONST(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.0 * 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.0 * 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.0 * var_chaste_interface__L_type_Ca_current__C_Ca2 * var_L_type_Ca_current__beta_b + 4.0 * 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.0 * var_L_type_Ca_current__alpha_a + 2.0 * 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.0 * var_chaste_interface__L_type_Ca_current__C_Ca1 * var_L_type_Ca_current__alpha_a + 3.0 * 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.0 * 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.0 * var_chaste_interface__L_type_Ca_current__C_Ca2 * var_L_type_Ca_current__alpha_a + 4.0 * 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.0 * 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.0 + 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.0 + exp(2.5 + 0.20000000000000001 * var_chaste_interface__membrane__V)); // dimensionless + 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 = CHASTE_CONST(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 = CHASTE_CONST(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 / CHASTE_MATH::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 + CHASTE_MATH::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 = CHASTE_CONST(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 / CHASTE_MATH::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 + CHASTE_MATH::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 = CHASTE_CONST(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 / CHASTE_MATH::Pow(var_L_type_Ca_current__b, 4) + var_L_type_Ca_current__fprime) * var_chaste_interface__L_type_Ca_current__C_Ca4 + CHASTE_MATH::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 = CHASTE_CONST(0.001) * var_L_type_Ca_current__C_Ca4_orig_deriv; // 1 / millisecond + const double var_L_type_Ca_current_y_gate__tau_y = CHASTE_CONST(0.02) + CHASTE_CONST(0.59999999999999998) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(2.1052631578947367) + CHASTE_CONST(0.10526315789473684) * var_chaste_interface__membrane__V)); // second + const double var_L_type_Ca_current_y_gate__y_infinity = CHASTE_CONST(0.20000000000000001) + CHASTE_CONST(0.80000000000000004) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(2.5) + CHASTE_CONST(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.0) ? (135.0 * exp(-11.764705882352942 - 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.0) ? (3560.0 * exp(0.079000000000000001 * var_chaste_interface__membrane__V) + 310000.0 * exp(0.34999999999999998 * var_chaste_interface__membrane__V)) : (7692.3076923076924 / (1.0 + exp(-0.96036036036036043 - 0.0900900900900901 * var_chaste_interface__membrane__V)))); // per_second - const double var_fast_sodium_current_h_gate__h_orig_deriv = (1.0 - 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_j_gate__alpha_j = ((var_chaste_interface__membrane__V < -40.0) ? (1000.0 * (37.780000000000001 + var_chaste_interface__membrane__V) * (-127140.0 * exp(0.24440000000000001 * var_chaste_interface__membrane__V) - 3.4740000000000003e-5 * exp(-0.043909999999999998 * var_chaste_interface__membrane__V)) / (1.0 + exp(24.640530000000002 + 0.311 * var_chaste_interface__membrane__V))) : (0)); // per_second - const double var_fast_sodium_current_j_gate__beta_j = ((var_chaste_interface__membrane__V < -40.0) ? (121.2 * exp(-0.01052 * var_chaste_interface__membrane__V) / (1.0 + exp(-5.5312920000000005 - 0.13780000000000001 * var_chaste_interface__membrane__V))) : (300.0 * exp(-2.5349999999999999e-7 * var_chaste_interface__membrane__V) / (1.0 + exp(-3.2000000000000002 - 0.10000000000000001 * var_chaste_interface__membrane__V)))); // per_second - const double var_fast_sodium_current_j_gate__j_orig_deriv = (1.0 - 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 / 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 / (0.10000000000000001 - 0.0050000000000000001 * var_fast_sodium_current_m_gate__E0_m)) : (320.0 * var_fast_sodium_current_m_gate__E0_m / (1.0 - exp(-0.10000000000000001 * var_fast_sodium_current_m_gate__E0_m)))); // per_second - const double var_fast_sodium_current_m_gate__beta_m = 80.0 * 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.0) ? ((1.0 - 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_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 d_dt_chaste_interface_var_L_type_Ca_current_y_gate__y = CHASTE_CONST(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 * CHASTE_MATH::Exp(-CHASTE_CONST(11.764705882352942) + CHASTE_CONST(0.14705882352941177) * mParameters[10] - CHASTE_CONST(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 * CHASTE_MATH::Exp(CHASTE_CONST(0.079000000000000001) * var_chaste_interface__membrane__V - CHASTE_CONST(0.079000000000000001) * mParameters[10]) + 310000 * CHASTE_MATH::Exp(CHASTE_CONST(0.34999999999999998) * var_chaste_interface__membrane__V - CHASTE_CONST(0.34999999999999998) * mParameters[10])) : (CHASTE_CONST(7692.3076923076924) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.96036036036036043) + CHASTE_CONST(0.0900900900900901) * mParameters[10] - CHASTE_CONST(0.0900900900900901) * var_chaste_interface__membrane__V)))); // per_second + const double var_fast_sodium_current_h_gate__h_inf = CHASTE_CONST(0.01) * mParameters[9] + (1 - CHASTE_CONST(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 = CHASTE_CONST(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 * (CHASTE_CONST(37.780000000000001) + var_chaste_interface__membrane__V) * (-127140 * CHASTE_MATH::Exp(CHASTE_CONST(0.24440000000000001) * var_chaste_interface__membrane__V - CHASTE_CONST(0.24440000000000001) * mParameters[10]) - CHASTE_CONST(3.4740000000000003e-5) * CHASTE_MATH::Exp(CHASTE_CONST(0.043909999999999998) * mParameters[10] - CHASTE_CONST(0.043909999999999998) * var_chaste_interface__membrane__V)) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(24.640530000000002) + CHASTE_CONST(0.311) * var_chaste_interface__membrane__V - CHASTE_CONST(0.311) * mParameters[10]))) : (0)); // per_second + const double var_fast_sodium_current_j_gate__beta_j = ((var_chaste_interface__membrane__V < -40) ? (CHASTE_CONST(121.2) * CHASTE_MATH::Exp(CHASTE_CONST(0.01052) * mParameters[10] - CHASTE_CONST(0.01052) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(5.5312920000000005) + CHASTE_CONST(0.13780000000000001) * mParameters[10] - CHASTE_CONST(0.13780000000000001) * var_chaste_interface__membrane__V))) : (300 * CHASTE_MATH::Exp(CHASTE_CONST(2.5349999999999999e-7) * mParameters[10] - CHASTE_CONST(2.5349999999999999e-7) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(3.2000000000000002) + CHASTE_CONST(0.10000000000000001) * mParameters[10] - CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V)))); // per_second + const double var_fast_sodium_current_j_gate__j_inf = CHASTE_CONST(0.01) * mParameters[9] + (1 - CHASTE_CONST(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 = CHASTE_CONST(0.001) * var_fast_sodium_current_j_gate__j_orig_deriv; // 1 / millisecond + const double var_fast_sodium_current_m_gate__E0_m = CHASTE_CONST(47.130000000000003) + var_chaste_interface__membrane__V; // millivolt + const double var_fast_sodium_current_m_gate__alpha_m = ((CHASTE_MATH::Abs(var_fast_sodium_current_m_gate__E0_m) < CHASTE_CONST(1.0000000000000001e-5)) ? (1000 / (CHASTE_CONST(0.10000000000000001) - CHASTE_CONST(0.0050000000000000001) * var_fast_sodium_current_m_gate__E0_m)) : (320 * var_fast_sodium_current_m_gate__E0_m / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(0.10000000000000001) * var_fast_sodium_current_m_gate__E0_m)))); // per_second + const double var_fast_sodium_current_m_gate__beta_m = 80 * CHASTE_MATH::Exp(-CHASTE_CONST(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 = CHASTE_CONST(0.001) * var_fast_sodium_current_m_gate__m_orig_deriv; // 1 / millisecond + const double var_plateau_potassium_current__g_Kp = CHASTE_CONST(0.0022160000000000001); // milliS_per_microF + const double var_plateau_potassium_current_Kp_gate__Kp_V = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(1.2521739130434781) - CHASTE_CONST(0.16722408026755853) * var_chaste_interface__membrane__V)); // dimensionless + const double var_rapid_activating_delayed_rectifiyer_K_current__R_V = 1 / (1 + CHASTE_CONST(1.4944999999999999) * CHASTE_MATH::Exp(CHASTE_CONST(0.044600000000000001) * var_chaste_interface__membrane__V)); // dimensionless + const double var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__K12 = CHASTE_MATH::Exp(-CHASTE_CONST(5.4950000000000001) + CHASTE_CONST(0.1691) * var_chaste_interface__membrane__V); // dimensionless + const double var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__K21 = CHASTE_MATH::Exp(-CHASTE_CONST(7.6769999999999996) - CHASTE_CONST(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.0; // 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__tau_factor = 1; // dimensionless + const double var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__tau_X_kr = CHASTE_CONST(0.001) / (var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__K12 + var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__K21) + CHASTE_CONST(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 d_dt_chaste_interface_var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr = CHASTE_CONST(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 = CHASTE_CONST(0.050000000000000003); // microA_per_microF + const double var_sarcolemmal_calcium_pump__K_mpCa = CHASTE_CONST(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.0 / (1.0 + 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.0 + var_chaste_interface__membrane__V) / (-1.0 + exp(-0.68699999999999994 + 0.068699999999999997 * var_chaste_interface__membrane__V)) + 7.1899999999999999e-5 * (-10.0 + var_chaste_interface__membrane__V) / (1.0 - 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_infinity = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(1.8161764705882353) - CHASTE_CONST(0.073529411764705885) * var_chaste_interface__membrane__V)); // dimensionless + const double var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__tau_X_ks = CHASTE_CONST(0.001) / (CHASTE_CONST(0.00013100000000000001) * (-10 + var_chaste_interface__membrane__V) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.68699999999999994) + CHASTE_CONST(0.068699999999999997) * var_chaste_interface__membrane__V)) + CHASTE_CONST(7.1899999999999999e-5) * (-10 + var_chaste_interface__membrane__V) / (1 - CHASTE_MATH::Exp(CHASTE_CONST(1.48) - CHASTE_CONST(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_standard_ionic_concentrations__Cao = 2.0; // millimolar - const double var_L_type_Ca_current__i_Ca_max = 4000.0 * pow(var_membrane__F, 2) * (0.001 * exp(2.0 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - 0.34100000000000003 * var_standard_ionic_concentrations__Cao) * var_L_type_Ca_current__P_Ca * var_chaste_interface__membrane__V / ((-1.0 + exp(2.0 * 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 d_dt_chaste_interface_var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks = CHASTE_CONST(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 = CHASTE_CONST(0.0030999999999999999); // milliS_per_microF + const double var_sodium_potassium_pump__I_NaK = CHASTE_CONST(0.69299999999999995); // microA_per_microF + const double var_sodium_potassium_pump__K_mKo = CHASTE_CONST(1.5); // millimolar + const double var_sodium_potassium_pump__K_mNai = 10; // millimolar + const double var_L_type_Ca_current__i_Ca_max = 4000 * CHASTE_MATH::Pow(var_membrane__F, 2) * (CHASTE_CONST(0.001) * CHASTE_MATH::Exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - CHASTE_CONST(0.34100000000000003) * mParameters[3]) * mParameters[6] * var_chaste_interface__membrane__V / ((-1 + CHASTE_MATH::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_calcium_background_current__E_Ca = 0.5 * var_membrane__R * var_membrane__T * log(var_standard_ionic_concentrations__Cao / var_chaste_interface__intracellular_ion_concentrations__Cai) / var_membrane__F; // millivolt + 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 = CHASTE_CONST(0.5) * var_membrane__R * var_membrane__T * CHASTE_MATH::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_standard_ionic_concentrations__Nao = 138.0; // millimolar - const double var_Na_Ca_exchanger__i_NaCa = 5000.0 * (pow(var_chaste_interface__intracellular_ion_concentrations__Nai, 3) * var_standard_ionic_concentrations__Cao * exp(var_Na_Ca_exchanger__eta * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - pow(var_standard_ionic_concentrations__Nao, 3) * var_chaste_interface__intracellular_ion_concentrations__Cai * exp((-1.0 + 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.0 + var_Na_Ca_exchanger__K_sat * exp((-1.0 + 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(var_standard_ionic_concentrations__Nao, 3)) * (var_Na_Ca_exchanger__K_mCa + var_standard_ionic_concentrations__Cao)); // 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.0 * 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_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.0 - 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_Y_to1_gate__alpha_Y_to1 = 5.415 * exp(-6.7000000000000002 - 0.20000000000000001 * var_chaste_interface__membrane__V) / (1.0 + 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 + 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.0 - 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 + 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 - CHASTE_CONST(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 = CHASTE_CONST(0.001) * var_intracellular_ion_concentrations__Ca_ss_orig_deriv; // millimolar / millisecond + const double var_L_type_Ca_current__i_Ca_K = CHASTE_MATH::Pow(var_membrane__F, 2) * (-mParameters[4] + var_chaste_interface__intracellular_ion_concentrations__Ki * CHASTE_MATH::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 + CHASTE_MATH::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 * CHASTE_MATH::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 = CHASTE_CONST(0.5) * CHASTE_MATH::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 * (CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Nai, 3) * mParameters[3] * CHASTE_MATH::Exp(var_Na_Ca_exchanger__eta * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - CHASTE_MATH::Pow(mParameters[5], 3) * var_chaste_interface__intracellular_ion_concentrations__Cai * CHASTE_MATH::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 * CHASTE_MATH::Exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (CHASTE_MATH::Pow(var_Na_Ca_exchanger__K_mNa, 3) + CHASTE_MATH::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 * CHASTE_MATH::Log(mParameters[5] / var_chaste_interface__intracellular_ion_concentrations__Nai) / var_membrane__F; // millivolt + const double var_fast_sodium_current__i_Na = CHASTE_MATH::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 + CHASTE_CONST(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 = CHASTE_CONST(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 * CHASTE_MATH::Log((mParameters[4] + CHASTE_CONST(0.018329999999999999) * mParameters[5]) / (var_chaste_interface__intracellular_ion_concentrations__Ki + CHASTE_CONST(0.018329999999999999) * var_chaste_interface__intracellular_ion_concentrations__Nai)) / var_membrane__F; // millivolt + const double var_slow_activating_delayed_rectifiyer_K_current__i_Ks = CHASTE_MATH::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 = -CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * CHASTE_MATH::Exp(CHASTE_CONST(0.01485884101040119) * mParameters[5]); // dimensionless + const double var_sodium_potassium_pump__f_NaK = 1 / (1 + CHASTE_CONST(0.1245) * CHASTE_MATH::Exp(-CHASTE_CONST(0.10000000000000001) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) + CHASTE_CONST(0.036499999999999998) * var_sodium_potassium_pump__sigma * CHASTE_MATH::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 + CHASTE_MATH::Pow((var_sodium_potassium_pump__K_mNai / var_chaste_interface__intracellular_ion_concentrations__Nai), CHASTE_CONST(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 = CHASTE_CONST(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 + CHASTE_MATH::Exp(CHASTE_CONST(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 = CHASTE_CONST(45.159999999999997) * CHASTE_MATH::Exp(CHASTE_CONST(0.035770000000000003) * var_chaste_interface__membrane__V); // per_second + const double var_transient_outward_potassium_current_X_to1_gate__beta_X_to1 = CHASTE_CONST(98.900000000000006) * CHASTE_MATH::Exp(-CHASTE_CONST(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 = CHASTE_CONST(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 = CHASTE_CONST(0.001) * var_intracellular_ion_concentrations__Ki_orig_deriv; // millimolar / millisecond + const double var_transient_outward_potassium_current_Y_to1_gate__alpha_Y_to1 = CHASTE_CONST(5.415) * CHASTE_MATH::Exp(-CHASTE_CONST(6.7000000000000002) - CHASTE_CONST(0.20000000000000001) * var_chaste_interface__membrane__V) / (1 + CHASTE_CONST(0.051334999999999999) * CHASTE_MATH::Exp(-CHASTE_CONST(6.7000000000000002) - CHASTE_CONST(0.20000000000000001) * var_chaste_interface__membrane__V)); // per_second + const double var_transient_outward_potassium_current_Y_to1_gate__beta_Y_to1 = CHASTE_CONST(5.415) * CHASTE_MATH::Exp(CHASTE_CONST(6.7000000000000002) + CHASTE_CONST(0.20000000000000001) * var_chaste_interface__membrane__V) / (1 + CHASTE_CONST(0.051334999999999999) * CHASTE_MATH::Exp(CHASTE_CONST(6.7000000000000002) + CHASTE_CONST(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 = CHASTE_CONST(0.001) * var_transient_outward_potassium_current_Y_to1_gate__Y_to1_orig_deriv; // 1 / millisecond if (mSetVoltageDerivativeToZero) { @@ -528,75 +596,41 @@ } else { - 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_fast_sodium_current__g_Na = 12.800000000000001; // milliS_per_microF - const double var_membrane__C_sc = 0.001; // microF_per_cm2 - const double var_membrane__i_Stim_converter = GetIntracellularAreaStimulus(var_chaste_interface__environment__time_converted); // uA_per_cm2 - const double var_membrane__i_Stim = var_membrane__i_Stim_converter / 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.0 / (1.0 + exp(1.2521739130434781 - 0.16722408026755853 * var_chaste_interface__membrane__V)); // dimensionless - const double var_rapid_activating_delayed_rectifiyer_K_current__R_V = 1.0 / (1.0 + 1.4944999999999999 * exp(0.044600000000000001 * var_chaste_interface__membrane__V)); // dimensionless - const double var_rapid_activating_delayed_rectifiyer_K_current__g_Kr = 0.0033999999999999998; // milliS_per_microF - const double var_slow_activating_delayed_rectifiyer_K_current__g_Ks = 0.0027133999999999999; // milliS_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.0; // millimolar - const double var_L_type_Ca_current__p_prime_k = var_L_type_Ca_current__P_K / (1.0 + var_L_type_Ca_current__i_Ca_max / var_L_type_Ca_current__i_Ca_half); // cm_per_second - const double var_standard_ionic_concentrations__Ko = 4.0; // millimolar - const double var_L_type_Ca_current__i_Ca_K = 1.0 * pow(var_membrane__F, 2) * (-var_standard_ionic_concentrations__Ko + 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.0 + 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(var_standard_ionic_concentrations__Ko / 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(var_standard_ionic_concentrations__Ko); // 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 * var_rapid_activating_delayed_rectifiyer_K_current__g_Kr * 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(var_standard_ionic_concentrations__Nao / 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) * var_fast_sodium_current__g_Na * 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.0 * var_standard_ionic_concentrations__Ko + 0.018329999999999999 * var_standard_ionic_concentrations__Nao) / (1.0 * 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) * var_slow_activating_delayed_rectifiyer_K_current__g_Ks; // 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 * var_standard_ionic_concentrations__Nao); // dimensionless - const double var_sodium_potassium_pump__f_NaK = 1.0 / (1.0 + 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 * var_standard_ionic_concentrations__Ko / ((1.0 + pow((var_sodium_potassium_pump__K_mNai / var_chaste_interface__intracellular_ion_concentrations__Nai), 1.5)) * (var_sodium_potassium_pump__K_mKo + var_standard_ionic_concentrations__Ko)); // microA_per_microF - const double var_time_independent_potassium_current__K_mK1 = 13.0; // millimolar - const double var_time_independent_potassium_current__g_K1 = 2.7999999999999998; // milliS_per_microF - const double var_time_independent_potassium_current_K1_gate__K1_infinity_V = 1.0 / (2.0 + 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) * var_standard_ionic_concentrations__Ko * var_time_independent_potassium_current__g_K1 * var_time_independent_potassium_current_K1_gate__K1_infinity_V / (var_standard_ionic_concentrations__Ko + var_time_independent_potassium_current__K_mK1); // microA_per_microF - const double var_transient_outward_potassium_current__g_to1 = 0.23815; // milliS_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) * var_transient_outward_potassium_current__g_to1 * 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.0 * (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) / var_membrane__C_sc; // millivolt / second - d_dt_chaste_interface_var_membrane__V = 0.001 * var_membrane__V_orig_deriv; // millivolt / millisecond + const double var_membrane__i_Stim_converted = CHASTE_STIM(var_chaste_interface__environment__time_converted); // uA_per_cm2 + const double var_membrane__i_Stim = var_membrane__i_Stim_converted / CHASTE_CAP(); // 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 = CHASTE_CONST(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_fast_sodium_current_m_gate__m; - mEvalF[2] = d_dt_chaste_interface_var_fast_sodium_current_h_gate__h; - mEvalF[3] = d_dt_chaste_interface_var_fast_sodium_current_j_gate__j; - mEvalF[4] = d_dt_chaste_interface_var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr; - mEvalF[5] = d_dt_chaste_interface_var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks; - mEvalF[6] = d_dt_chaste_interface_var_transient_outward_potassium_current_X_to1_gate__X_to1; - mEvalF[7] = d_dt_chaste_interface_var_transient_outward_potassium_current_Y_to1_gate__Y_to1; - mEvalF[8] = d_dt_chaste_interface_var_L_type_Ca_current__O; - mEvalF[9] = d_dt_chaste_interface_var_L_type_Ca_current__O_Ca; - mEvalF[10] = d_dt_chaste_interface_var_L_type_Ca_current__C0; - mEvalF[11] = d_dt_chaste_interface_var_L_type_Ca_current__C1; - mEvalF[12] = d_dt_chaste_interface_var_L_type_Ca_current__C2; - mEvalF[13] = d_dt_chaste_interface_var_L_type_Ca_current__C3; - mEvalF[14] = d_dt_chaste_interface_var_L_type_Ca_current__C4; - mEvalF[15] = d_dt_chaste_interface_var_L_type_Ca_current__C_Ca0; - mEvalF[16] = d_dt_chaste_interface_var_L_type_Ca_current__C_Ca1; - mEvalF[17] = d_dt_chaste_interface_var_L_type_Ca_current__C_Ca2; - mEvalF[18] = d_dt_chaste_interface_var_L_type_Ca_current__C_Ca3; - mEvalF[19] = d_dt_chaste_interface_var_L_type_Ca_current__C_Ca4; - mEvalF[20] = d_dt_chaste_interface_var_L_type_Ca_current_y_gate__y; - mEvalF[21] = d_dt_chaste_interface_var_RyR_channel__P_O1; - mEvalF[22] = d_dt_chaste_interface_var_RyR_channel__P_O2; - mEvalF[23] = d_dt_chaste_interface_var_RyR_channel__P_C1; - mEvalF[24] = d_dt_chaste_interface_var_RyR_channel__P_C2; - mEvalF[25] = d_dt_chaste_interface_var_intracellular_Ca_fluxes__HTRPNCa; - mEvalF[26] = d_dt_chaste_interface_var_intracellular_Ca_fluxes__LTRPNCa; - mEvalF[27] = d_dt_chaste_interface_var_intracellular_ion_concentrations__Nai; - mEvalF[28] = d_dt_chaste_interface_var_intracellular_ion_concentrations__Cai; + 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; @@ -892,196 +926,212 @@ } - double Dynamicwinslow_model_1999FromCellMLGRL2Opt::EvaluateYDerivative0(double var_chaste_interface__environment__time_converted, std::vector& rY) + double Dynamicwinslow_model_1999FromCellMLGRL2::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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -96.1638 - double var_chaste_interface__fast_sodium_current_m_gate__m = rY[1]; + 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[2]; + 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[3]; + 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[4]; + 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[5]; + 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[6]; + 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[7]; + 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[8]; + 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[9]; + 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[20]; + 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[27]; + double var_chaste_interface__intracellular_ion_concentrations__Nai = rY[28]; // Units: millimolar; Initial value: 10.0 - double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[28]; - // Units: millimolar; Initial value: 8e-05 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_Ca = 0.00031250000000000001; // cm_per_second - 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_NaCa = 0.29999999999999999; // 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_fast_sodium_current__g_Na = 12.800000000000001; // milliS_per_microF - const double var_membrane__C_sc = 0.001; // microF_per_cm2 - 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.0; // kelvin - const double var_membrane__i_Stim_converter = GetIntracellularAreaStimulus(var_chaste_interface__environment__time_converted); // uA_per_cm2 - const double var_membrane__i_Stim = var_membrane__i_Stim_converter / 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.0 / (1.0 + exp(1.2521739130434781 - 0.16722408026755853 * var_chaste_interface__membrane__V)); // dimensionless - const double var_rapid_activating_delayed_rectifiyer_K_current__R_V = 1.0 / (1.0 + 1.4944999999999999 * exp(0.044600000000000001 * var_chaste_interface__membrane__V)); // dimensionless - const double var_rapid_activating_delayed_rectifiyer_K_current__g_Kr = 0.0033999999999999998; // milliS_per_microF - 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_L_type_Ca_current__P_K = CHASTE_CONST(5.7899999999999998e-7); // cm_per_second + const double var_L_type_Ca_current__i_Ca_half = -CHASTE_CONST(0.26500000000000001); // microA_per_microF + const double var_Na_Ca_exchanger__K_mCa = CHASTE_CONST(1.3799999999999999); // millimolar + const double var_Na_Ca_exchanger__K_mNa = CHASTE_CONST(87.5); // millimolar + const double var_Na_Ca_exchanger__K_sat = CHASTE_CONST(0.20000000000000001); // dimensionless + const double var_Na_Ca_exchanger__eta = CHASTE_CONST(0.34999999999999998); // dimensionless + const double var_calcium_background_current__g_Cab = CHASTE_CONST(0.00038420000000000001); // milliS_per_microF + const double var_membrane__F = CHASTE_CONST(96.485341500000004); // coulomb_per_millimole + const double var_membrane__R = CHASTE_CONST(8.3144720000000003); // joule_per_mole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_membrane__i_Stim_converted = CHASTE_STIM(var_chaste_interface__environment__time_converted); // uA_per_cm2 + const double var_membrane__i_Stim = var_membrane__i_Stim_converted / CHASTE_CAP(); // microA_per_microF + const double var_plateau_potassium_current__g_Kp = CHASTE_CONST(0.0022160000000000001); // milliS_per_microF + const double var_plateau_potassium_current_Kp_gate__Kp_V = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(1.2521739130434781) - CHASTE_CONST(0.16722408026755853) * var_chaste_interface__membrane__V)); // dimensionless + const double var_rapid_activating_delayed_rectifiyer_K_current__R_V = 1 / (1 + CHASTE_CONST(1.4944999999999999) * CHASTE_MATH::Exp(CHASTE_CONST(0.044600000000000001) * var_chaste_interface__membrane__V)); // dimensionless + const double var_sarcolemmal_calcium_pump__I_pCa = CHASTE_CONST(0.050000000000000003); // microA_per_microF + const double var_sarcolemmal_calcium_pump__K_mpCa = CHASTE_CONST(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__g_Ks = 0.0027133999999999999; // milliS_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.0; // millimolar - const double var_standard_ionic_concentrations__Cao = 2.0; // millimolar - const double var_L_type_Ca_current__i_Ca_max = 4000.0 * pow(var_membrane__F, 2) * (0.001 * exp(2.0 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - 0.34100000000000003 * var_standard_ionic_concentrations__Cao) * var_L_type_Ca_current__P_Ca * var_chaste_interface__membrane__V / ((-1.0 + exp(2.0 * 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_sodium_background_current__g_Nab = CHASTE_CONST(0.0030999999999999999); // milliS_per_microF + const double var_sodium_potassium_pump__I_NaK = CHASTE_CONST(0.69299999999999995); // microA_per_microF + const double var_sodium_potassium_pump__K_mKo = CHASTE_CONST(1.5); // millimolar + const double var_sodium_potassium_pump__K_mNai = 10; // millimolar + const double var_L_type_Ca_current__i_Ca_max = 4000 * CHASTE_MATH::Pow(var_membrane__F, 2) * (CHASTE_CONST(0.001) * CHASTE_MATH::Exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - CHASTE_CONST(0.34100000000000003) * mParameters[3]) * mParameters[6] * var_chaste_interface__membrane__V / ((-1 + CHASTE_MATH::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.0 + 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(var_standard_ionic_concentrations__Cao / var_chaste_interface__intracellular_ion_concentrations__Cai) / var_membrane__F; // millivolt + 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 = CHASTE_CONST(0.5) * var_membrane__R * var_membrane__T * CHASTE_MATH::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_standard_ionic_concentrations__Ko = 4.0; // millimolar - const double var_L_type_Ca_current__i_Ca_K = 1.0 * pow(var_membrane__F, 2) * (-var_standard_ionic_concentrations__Ko + 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.0 + 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(var_standard_ionic_concentrations__Ko / var_chaste_interface__intracellular_ion_concentrations__Ki) / var_membrane__F; // millivolt + const double var_L_type_Ca_current__i_Ca_K = CHASTE_MATH::Pow(var_membrane__F, 2) * (-mParameters[4] + var_chaste_interface__intracellular_ion_concentrations__Ki * CHASTE_MATH::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 + CHASTE_MATH::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 * CHASTE_MATH::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(var_standard_ionic_concentrations__Ko); // 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 * var_rapid_activating_delayed_rectifiyer_K_current__g_Kr * var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr; // microA_per_microF - const double var_standard_ionic_concentrations__Nao = 138.0; // millimolar - const double var_Na_Ca_exchanger__i_NaCa = 5000.0 * (pow(var_chaste_interface__intracellular_ion_concentrations__Nai, 3) * var_standard_ionic_concentrations__Cao * exp(var_Na_Ca_exchanger__eta * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - pow(var_standard_ionic_concentrations__Nao, 3) * var_chaste_interface__intracellular_ion_concentrations__Cai * exp((-1.0 + 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.0 + var_Na_Ca_exchanger__K_sat * exp((-1.0 + 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(var_standard_ionic_concentrations__Nao, 3)) * (var_Na_Ca_exchanger__K_mCa + var_standard_ionic_concentrations__Cao)); // microA_per_microF - const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * log(var_standard_ionic_concentrations__Nao / 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) * var_fast_sodium_current__g_Na * 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.0 * var_standard_ionic_concentrations__Ko + 0.018329999999999999 * var_standard_ionic_concentrations__Nao) / (1.0 * 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) * var_slow_activating_delayed_rectifiyer_K_current__g_Ks; // microA_per_microF + const double var_rapid_activating_delayed_rectifiyer_K_current__f_Ko = CHASTE_CONST(0.5) * CHASTE_MATH::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 * (CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Nai, 3) * mParameters[3] * CHASTE_MATH::Exp(var_Na_Ca_exchanger__eta * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - CHASTE_MATH::Pow(mParameters[5], 3) * var_chaste_interface__intracellular_ion_concentrations__Cai * CHASTE_MATH::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 * CHASTE_MATH::Exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (CHASTE_MATH::Pow(var_Na_Ca_exchanger__K_mNa, 3) + CHASTE_MATH::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 * CHASTE_MATH::Log(mParameters[5] / var_chaste_interface__intracellular_ion_concentrations__Nai) / var_membrane__F; // millivolt + const double var_fast_sodium_current__i_Na = CHASTE_MATH::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 * CHASTE_MATH::Log((mParameters[4] + CHASTE_CONST(0.018329999999999999) * mParameters[5]) / (var_chaste_interface__intracellular_ion_concentrations__Ki + CHASTE_CONST(0.018329999999999999) * var_chaste_interface__intracellular_ion_concentrations__Nai)) / var_membrane__F; // millivolt + const double var_slow_activating_delayed_rectifiyer_K_current__i_Ks = CHASTE_MATH::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 * var_standard_ionic_concentrations__Nao); // dimensionless - const double var_sodium_potassium_pump__f_NaK = 1.0 / (1.0 + 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 * var_standard_ionic_concentrations__Ko / ((1.0 + pow((var_sodium_potassium_pump__K_mNai / var_chaste_interface__intracellular_ion_concentrations__Nai), 1.5)) * (var_sodium_potassium_pump__K_mKo + var_standard_ionic_concentrations__Ko)); // microA_per_microF - const double var_time_independent_potassium_current__K_mK1 = 13.0; // millimolar - const double var_time_independent_potassium_current__g_K1 = 2.7999999999999998; // milliS_per_microF - const double var_time_independent_potassium_current_K1_gate__K1_infinity_V = 1.0 / (2.0 + 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) * var_standard_ionic_concentrations__Ko * var_time_independent_potassium_current__g_K1 * var_time_independent_potassium_current_K1_gate__K1_infinity_V / (var_standard_ionic_concentrations__Ko + var_time_independent_potassium_current__K_mK1); // microA_per_microF - const double var_transient_outward_potassium_current__g_to1 = 0.23815; // milliS_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) * var_transient_outward_potassium_current__g_to1 * 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.0 * (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) / var_membrane__C_sc; // millivolt / second - d_dt_chaste_interface_var_membrane__V = 0.001 * var_membrane__V_orig_deriv; // millivolt / millisecond + const double var_sodium_potassium_pump__sigma = -CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * CHASTE_MATH::Exp(CHASTE_CONST(0.01485884101040119) * mParameters[5]); // dimensionless + const double var_sodium_potassium_pump__f_NaK = 1 / (1 + CHASTE_CONST(0.1245) * CHASTE_MATH::Exp(-CHASTE_CONST(0.10000000000000001) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) + CHASTE_CONST(0.036499999999999998) * var_sodium_potassium_pump__sigma * CHASTE_MATH::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 + CHASTE_MATH::Pow((var_sodium_potassium_pump__K_mNai / var_chaste_interface__intracellular_ion_concentrations__Nai), CHASTE_CONST(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 + CHASTE_MATH::Exp(CHASTE_CONST(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 = CHASTE_CONST(0.001) * var_membrane__V_orig_deriv; // millivolt / millisecond return d_dt_chaste_interface_var_membrane__V; } - double Dynamicwinslow_model_1999FromCellMLGRL2Opt::EvaluatePartialDerivative0(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -96.1638 - double var_chaste_interface__fast_sodium_current_m_gate__m = rY[1]; + 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[2]; + 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[3]; + 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[4]; + 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[5]; + 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[6]; + 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[7]; + 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[8]; + 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[9]; + 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[20]; + 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[27]; + double var_chaste_interface__intracellular_ion_concentrations__Nai = rY[28]; // Units: millimolar; Initial value: 10.0 - double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[28]; - // Units: millimolar; Initial value: 8e-05 double var_chaste_interface__intracellular_ion_concentrations__Ki = rY[29]; // Units: millimolar; Initial value: 157.8 - const double var_x0 = pow(var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks, 2); - const double var_x1 = exp(1.2521739130434781 - 0.16722408026755853 * var_chaste_interface__membrane__V); - const double var_x2 = 1.0 + var_x1; - const double var_x3 = 1 / var_x2; - const double var_x4 = 1 / var_chaste_interface__intracellular_ion_concentrations__Ki; - const double var_x5 = log(4.0 * var_x4); - const double var_x6 = exp(0.056150836234118207 * var_chaste_interface__membrane__V - 1.5 * var_x5); - const double var_x7 = 1 / (2.0 + var_x6); - const double var_x8 = exp(0.044600000000000001 * var_chaste_interface__membrane__V); - const double var_x9 = 1 / (1.0 + 1.4944999999999999 * var_x8); - const double var_x10 = 0.0033999999999999998 * var_x9; - const double var_x11 = var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1 * var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1; - const double var_x12 = exp(-0.024332029034784559 * var_chaste_interface__membrane__V); - const double var_x13 = 1.0 + 0.20000000000000001 * var_x12; - const double var_x14 = 1 / var_x13; - const double var_x15 = var_x12 * var_chaste_interface__intracellular_ion_concentrations__Cai; - const double var_x16 = exp(0.013101861787960915 * var_chaste_interface__membrane__V); - const double var_x17 = var_x16 * pow(var_chaste_interface__intracellular_ion_concentrations__Nai, 3); - const double var_x18 = var_x14 * (63946.324209504324 * var_x15 + 0.026203723575921829 * var_x17); - const double var_x19 = -26.713760659695648 * var_x5 + var_chaste_interface__membrane__V; - const double var_x20 = var_x19 * var_x6 / pow((1 + 0.5 * var_x6), 2); - const double var_x21 = 2.0 * var_x17 - 2628072.0 * var_x15; - const double var_x22 = var_x12 * var_x21 / pow(var_x13, 2); - const double var_x23 = 1 / var_chaste_interface__intracellular_ion_concentrations__Nai; - const double var_x24 = pow(var_x23, 1.5); - const double var_x25 = exp(-0.0037433890822745476 * var_chaste_interface__membrane__V); - const double var_x26 = exp(2.0505200594353643); - const double var_x27 = 0.037433890822745473 * var_chaste_interface__membrane__V; - const double var_x28 = exp(-var_x27); - const double var_x29 = 1.0 + 0.1245 * var_x25 + 0.036499999999999998 * var_x28 * (-0.14285714285714285 + 0.14285714285714285 * var_x26); - const double var_x30 = var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j; - const double var_x31 = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3); - const double var_x32 = 12.800000000000001 * var_x31; - const double var_x33 = 4.5147771746328917 * var_chaste_interface__L_type_Ca_current_y_gate__y; - const double var_x34 = var_chaste_interface__L_type_Ca_current__O + var_chaste_interface__L_type_Ca_current__O_Ca; - const double var_x35 = exp(0.074867781645490947 * var_chaste_interface__membrane__V); - const double var_x36 = -1.0 + var_x35; - const double var_x37 = 1 / var_x36; - const double var_x38 = -0.68200000000000005 + 0.001 * var_x35; - const double var_x39 = var_x37 * var_x38; - const double var_x40 = var_x34 * var_x39; - const double var_x41 = var_x39 * var_chaste_interface__membrane__V; - const double var_x42 = 1 / (1.0 - 17.036894998614684 * var_x41); - const double var_x43 = exp(var_x27); - const double var_x44 = var_x43 * var_chaste_interface__intracellular_ion_concentrations__Ki; - const double var_x45 = -4.0 + var_x44; - const double var_x46 = var_x34 * var_chaste_interface__L_type_Ca_current_y_gate__y; - const double var_x47 = var_x42 * var_x45 * var_x46; - const double var_x48 = -1.0 + var_x43; - const double var_x49 = 1 / var_x48; - const double var_x50 = 2.091244787289955e-6 * var_x49; - const double var_x51 = var_x35 * var_chaste_interface__membrane__V; - const double var_x52 = var_x37 * var_x51; - const double var_x53 = var_x46 * var_x52; - const double var_x54 = var_x38 * var_x51 / pow(var_x36, 2); - const double var_x55 = var_x46 * var_x54; - const double var_x56 = var_x42 * var_chaste_interface__membrane__V; - const double var_x57 = var_x46 * var_x49; - - partialF = -0.0034841999999999998 + 0.0092483730267959394 * var_x20 + 0.33801135168846186 * var_x55 - 0.0027133999999999999 * var_x0 - 6.5483673691361389e-7 * var_x22 - 0.23815 * var_x11 - 0.00013456270662374128 * var_x18 - 0.0022160000000000001 * var_x3 - 0.6588235294117647 * var_x7 - 0.00033801135168846187 * var_x53 - var_x10 * var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr - var_x30 * var_x32 - var_x33 * var_x40 - var_x47 * var_x50 - 0.00037056856187290968 * var_x1 * var_x19 / pow(var_x2, 2) - 0.504 * (0.00046605194074318115 * var_x25 + 0.037433890822745473 * var_x28 * (-0.0052142857142857138 + 0.0052142857142857138 * var_x26)) / (pow(var_x29, 2) * (1.0 + 31.622776601683793 * var_x24)) - 7.8283429051047759e-8 * var_x44 * var_x56 * var_x57 + 7.8283429051047759e-8 * var_x43 * var_x47 * var_chaste_interface__membrane__V / pow(var_x48, 2) + 0.00010146537303445968 * var_x19 * var_x8 * var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr / pow((0.66912010705921721 + var_x8), 2) - 7.2048339800169557e-9 * var_x45 * var_x57 * (17.036894998614684 * var_x39 + 0.0012755145346734409 * var_x52 - 1.2755145346734409 * var_x54) * var_chaste_interface__membrane__V / pow((0.058696141525865643 - var_x41), 2); + + const double var_x0 = CHASTE_MATH::Exp(CHASTE_CONST(1.2521739130434781) - CHASTE_CONST(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 = CHASTE_MATH::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 = CHASTE_MATH::Log(var_x7); + const double var_x9 = -CHASTE_CONST(26.713760659695648) * var_x8 + var_chaste_interface__membrane__V; + const double var_x10 = var_x0 * var_x9 / CHASTE_MATH::Pow(var_x1, 2); + const double var_x11 = CHASTE_MATH::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 = CHASTE_MATH::Exp(CHASTE_CONST(0.044600000000000001) * var_chaste_interface__membrane__V); + const double var_x15 = CHASTE_MATH::Sqrt(mParameters[4]); + const double var_x16 = var_x15 * mParameters[12] / (1 + CHASTE_CONST(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 = CHASTE_MATH::Exp(CHASTE_CONST(0.056150836234118207) * var_chaste_interface__membrane__V - CHASTE_CONST(1.5) * var_x8); + const double var_x20 = 1 / (13 + mParameters[4]); + const double var_x21 = var_x20 * mParameters[11]; + const double var_x22 = var_x21 / (2 + var_x19); + const double var_x23 = CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Nai, 3); + const double var_x24 = CHASTE_MATH::Exp(CHASTE_CONST(0.013101861787960915) * var_chaste_interface__membrane__V); + const double var_x25 = var_x24 * mParameters[3]; + const double var_x26 = CHASTE_MATH::Exp(-CHASTE_CONST(0.024332029034784559) * var_chaste_interface__membrane__V); + const double var_x27 = CHASTE_MATH::Pow(mParameters[5], 3); + const double var_x28 = var_x26 * var_x27; + const double var_x29 = var_x28 * var_chaste_interface__intracellular_ion_concentrations__Cai; + const double var_x30 = 1 + CHASTE_CONST(0.20000000000000001) * var_x26; + const double var_x31 = 1 / var_x30; + const double var_x32 = 1 / (CHASTE_CONST(669921.875) + var_x27); + const double var_x33 = 1 / (CHASTE_CONST(1.3799999999999999) + mParameters[3]); + const double var_x34 = var_x32 * var_x33 * mParameters[14]; + const double var_x35 = var_x31 * var_x34; + const double var_x36 = var_x35 * (CHASTE_CONST(0.024332029034784559) * var_x29 + CHASTE_CONST(0.013101861787960915) * var_x23 * var_x25); + const double var_x37 = 1 / var_chaste_interface__intracellular_ion_concentrations__Nai; + const double var_x38 = CHASTE_MATH::Pow(var_x37, CHASTE_CONST(1.5)); + const double var_x39 = 1 / (1 + CHASTE_CONST(31.622776601683793) * var_x38); + const double var_x40 = CHASTE_MATH::Exp(-CHASTE_CONST(0.0037433890822745476) * var_chaste_interface__membrane__V); + const double var_x41 = CHASTE_MATH::Exp(CHASTE_CONST(0.01485884101040119) * mParameters[5]); + const double var_x42 = CHASTE_CONST(0.037433890822745473) * var_chaste_interface__membrane__V; + const double var_x43 = CHASTE_MATH::Exp(-var_x42); + const double var_x44 = 1 + CHASTE_CONST(0.1245) * var_x40 + CHASTE_CONST(0.036499999999999998) * var_x43 * (-CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * var_x41); + const double var_x45 = CHASTE_MATH::Pow(var_x44, (-2)); + const double var_x46 = CHASTE_CONST(0.00046605194074318115) * var_x40 + CHASTE_CONST(0.037433890822745473) * var_x43 * (-CHASTE_CONST(0.0052142857142857138) + CHASTE_CONST(0.0052142857142857138) * var_x41); + const double var_x47 = 1 / (CHASTE_CONST(1.5) + mParameters[4]); + const double var_x48 = var_x47 * mParameters[4]; + const double var_x49 = var_x39 * var_x45 * var_x46 * var_x48; + const double var_x50 = var_chaste_interface__L_type_Ca_current__O + var_chaste_interface__L_type_Ca_current__O_Ca; + const double var_x51 = var_x50 * var_chaste_interface__L_type_Ca_current_y_gate__y; + const double var_x52 = CHASTE_MATH::Exp(CHASTE_CONST(0.074867781645490947) * var_chaste_interface__membrane__V); + const double var_x53 = -1 + var_x52; + const double var_x54 = 1 / var_x53; + const double var_x55 = CHASTE_CONST(0.001) * var_x52 - CHASTE_CONST(0.34100000000000003) * mParameters[3]; + const double var_x56 = var_x54 * var_x55 * mParameters[6]; + const double var_x57 = var_x56 * var_chaste_interface__membrane__V; + const double var_x58 = 1 / (1 - CHASTE_CONST(54518.063995566983) * var_x57); + const double var_x59 = CHASTE_MATH::Exp(var_x42); + const double var_x60 = -1 + var_x59; + const double var_x61 = 1 / var_x60; + const double var_x62 = var_x59 * var_chaste_interface__intracellular_ion_concentrations__Ki; + const double var_x63 = var_x62 - mParameters[4]; + const double var_x64 = var_x58 * var_x61 * var_x63; + const double var_x65 = CHASTE_CONST(2.0912447872899554e-6) * var_x64; + const double var_x66 = var_x51 * var_x56; + const double var_x67 = var_x52 * mParameters[6] * var_chaste_interface__membrane__V; + const double var_x68 = var_x54 * var_x67; + const double var_x69 = var_x51 * var_x68; + const double var_x70 = -var_x29 + var_x23 * var_x24 * mParameters[3]; + const double var_x71 = var_x26 * var_x34 * var_x70 / CHASTE_MATH::Pow(var_x30, 2); + const double var_x72 = CHASTE_MATH::Pow((1 + CHASTE_CONST(0.5) * var_x19), (-2)); + const double var_x73 = var_x19 * var_x21 * var_x72 * var_x9; + const double var_x74 = CHASTE_MATH::Pow((CHASTE_CONST(0.66912010705921721) + var_x14), (-2)); + const double var_x75 = var_x51 * var_x61 * var_chaste_interface__membrane__V; + const double var_x76 = var_x58 * var_x75; + const double var_x77 = var_x62 * var_x76; + const double var_x78 = CHASTE_MATH::Pow(var_x53, (-2)); + const double var_x79 = var_x55 * var_x67 * var_x78; + const double var_x80 = var_x63 * var_x75 * (CHASTE_CONST(4.0816465109550109) * var_x68 + CHASTE_CONST(54518.063995566983) * var_x56 - CHASTE_CONST(4081.6465109550109) * var_x79) / CHASTE_MATH::Pow((CHASTE_CONST(1.8342544226833014e-5) - var_x57), 2); + const double var_x81 = CHASTE_MATH::Pow(var_x60, (-2)); + const double var_x82 = 1 / mParameters[7]; + const double var_x83 = CHASTE_CONST(0.001) * var_x82; + + partialF = -var_x83 * (CHASTE_CONST(0.0034841999999999998) + var_x13 + var_x3 + var_x5 + CHASTE_CONST(0.5) * var_x17 + 5000 * var_x36 + CHASTE_CONST(0.0022160000000000001) * var_x2 + CHASTE_CONST(0.69299999999999995) * var_x49 + CHASTE_CONST(1.0816363254030779) * var_x69 + CHASTE_CONST(7.8283429051047759e-8) * var_x77 + CHASTE_CONST(0.00037056856187290968) * var_x10 + CHASTE_CONST(24.332029034784558) * var_x71 + CHASTE_CONST(7.035970683610309e-16) * var_x80 + CHASTE_CONST(14447.286958825252) * var_x66 + var_x18 * var_x22 + var_x51 * var_x65 - CHASTE_CONST(1081.636325403078) * var_x51 * var_x79 - CHASTE_CONST(0.014037709058529552) * var_x73 * mParameters[4] - CHASTE_CONST(7.8283429051047759e-8) * var_x51 * var_x58 * var_x59 * var_x63 * var_x81 * var_chaste_interface__membrane__V - CHASTE_CONST(0.014921378387420543) * var_x14 * var_x15 * var_x74 * var_x9 * mParameters[12] * var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr); } else { @@ -1093,44 +1143,128 @@ } return partialF; } - double Dynamicwinslow_model_1999FromCellMLGRL2Opt::EvaluateYDerivative1(double var_chaste_interface__environment__time_converted, std::vector& rY) + 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -96.1638 - double var_chaste_interface__fast_sodium_current_m_gate__m = rY[1]; - // Units: dimensionless; Initial value: 0.0328302 - + 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_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 / (0.10000000000000001 - 0.0050000000000000001 * var_fast_sodium_current_m_gate__E0_m)) : (320.0 * var_fast_sodium_current_m_gate__E0_m / (1.0 - exp(-0.10000000000000001 * var_fast_sodium_current_m_gate__E0_m)))); // per_second - const double var_fast_sodium_current_m_gate__beta_m = 80.0 * 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.0) ? ((1.0 - 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_Na_Ca_exchanger__K_mCa = CHASTE_CONST(1.3799999999999999); // millimolar + const double var_Na_Ca_exchanger__K_mNa = CHASTE_CONST(87.5); // millimolar + const double var_Na_Ca_exchanger__K_sat = CHASTE_CONST(0.20000000000000001); // dimensionless + const double var_Na_Ca_exchanger__eta = CHASTE_CONST(0.34999999999999998); // dimensionless + const double var_SERCA2a_pump__K_fb = CHASTE_CONST(0.00016799999999999999); // millimolar + const double var_SERCA2a_pump__K_rb = CHASTE_CONST(3.29); // millimolar + const double var_SERCA2a_pump__N_fb = CHASTE_CONST(1.2); // dimensionless + const double var_SERCA2a_pump__N_rb = 1; // dimensionless + const double var_SERCA2a_pump__Vmaxf = CHASTE_CONST(0.081299999999999997); // millimolar_per_second + const double var_SERCA2a_pump__Vmaxr = CHASTE_CONST(0.318); // millimolar_per_second + const double var_calcium_background_current__g_Cab = CHASTE_CONST(0.00038420000000000001); // milliS_per_microF + const double var_intracellular_Ca_fluxes__HTRPN_tot = CHASTE_CONST(0.14000000000000001); // dimensionless + const double var_intracellular_Ca_fluxes__LTRPN_tot = CHASTE_CONST(0.070000000000000007); // dimensionless + const double var_intracellular_Ca_fluxes__k_htrpn_minus = CHASTE_CONST(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 = CHASTE_CONST(0.026700000000000002); // second + const double var_intracellular_ion_concentrations__A_cap = CHASTE_CONST(0.00015339999999999999); // cm2 + const double var_intracellular_ion_concentrations__CMDN_tot = CHASTE_CONST(0.050000000000000003); // millimolar + const double var_SERCA2a_pump__rb = CHASTE_MATH::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 = CHASTE_MATH::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 = CHASTE_CONST(0.0023800000000000002); // millimolar + const double var_intracellular_ion_concentrations__K_mEGTA = CHASTE_CONST(0.00014999999999999999); // millimolar + const double var_intracellular_ion_concentrations__V_myo = CHASTE_CONST(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 / CHASTE_MATH::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 / CHASTE_MATH::Pow((var_chaste_interface__intracellular_ion_concentrations__Cai + var_intracellular_ion_concentrations__K_mEGTA), 2)); // dimensionless + const double var_membrane__F = CHASTE_CONST(96.485341500000004); // coulomb_per_millimole + const double var_membrane__R = CHASTE_CONST(8.3144720000000003); // joule_per_mole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_sarcolemmal_calcium_pump__I_pCa = CHASTE_CONST(0.050000000000000003); // microA_per_microF + const double var_sarcolemmal_calcium_pump__K_mpCa = CHASTE_CONST(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 = CHASTE_CONST(0.5) * var_membrane__R * var_membrane__T * CHASTE_MATH::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 * (CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Nai, 3) * mParameters[3] * CHASTE_MATH::Exp(var_Na_Ca_exchanger__eta * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - CHASTE_MATH::Pow(mParameters[5], 3) * var_chaste_interface__intracellular_ion_concentrations__Cai * CHASTE_MATH::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 * CHASTE_MATH::Exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (CHASTE_MATH::Pow(var_Na_Ca_exchanger__K_mNa, 3) + CHASTE_MATH::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 + CHASTE_CONST(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 = CHASTE_CONST(0.001) * var_intracellular_ion_concentrations__Cai_orig_deriv; // millimolar / millisecond - return d_dt_chaste_interface_var_fast_sodium_current_m_gate__m; + return d_dt_chaste_interface_var_intracellular_ion_concentrations__Cai; } - double Dynamicwinslow_model_1999FromCellMLGRL2Opt::EvaluatePartialDerivative1(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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_x74 = exp(-0.090909090909090912 * var_chaste_interface__membrane__V); - const double var_x76 = var_chaste_interface__membrane__V >= -90.0; - const double var_x77 = 47.130000000000003 + var_chaste_interface__membrane__V; - const double var_x78 = (var_x76) && (fabs(var_x77) < 1.0000000000000001e-5); - const double var_x79 = -0.10000000000000001 * var_chaste_interface__membrane__V; - const double var_x80 = exp(-4.7130000000000001 + var_x79); - const double var_x81 = 1.0 - var_x80; - const double var_x82 = 320.0 / var_x81; - const double var_x83 = -80.0 * var_x74; - - partialF = 0.001 * ((var_x78) ? (var_x83 - 1000.0 / (-0.13565000000000002 - 0.0050000000000000001 * var_chaste_interface__membrane__V)) : ((var_x76) ? (var_x83 - var_x77 * var_x82) : (0))); + + const double var_x23 = CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Nai, 3); + const double var_x24 = CHASTE_MATH::Exp(CHASTE_CONST(0.013101861787960915) * var_chaste_interface__membrane__V); + const double var_x26 = CHASTE_MATH::Exp(-CHASTE_CONST(0.024332029034784559) * var_chaste_interface__membrane__V); + const double var_x27 = CHASTE_MATH::Pow(mParameters[5], 3); + const double var_x28 = var_x26 * var_x27; + const double var_x29 = var_x28 * var_chaste_interface__intracellular_ion_concentrations__Cai; + const double var_x30 = 1 + CHASTE_CONST(0.20000000000000001) * var_x26; + const double var_x31 = 1 / var_x30; + const double var_x32 = 1 / (CHASTE_CONST(669921.875) + var_x27); + const double var_x33 = 1 / (CHASTE_CONST(1.3799999999999999) + mParameters[3]); + const double var_x34 = var_x32 * var_x33 * mParameters[14]; + const double var_x35 = var_x31 * var_x34; + const double var_x70 = -var_x29 + var_x23 * var_x24 * mParameters[3]; + const double var_x84 = CHASTE_CONST(5.0000000000000002e-5) + var_chaste_interface__intracellular_ion_concentrations__Cai; + const double var_x85 = 1 / var_x84; + const double var_x86 = 1 / var_chaste_interface__intracellular_ion_concentrations__Cai; + const double var_x87 = CHASTE_MATH::Pow(var_x84, (-2)); + const double var_x113 = CHASTE_CONST(0.0023800000000000002) + var_chaste_interface__intracellular_ion_concentrations__Cai; + const double var_x114 = 1 + CHASTE_CONST(0.00011900000000000002) / CHASTE_MATH::Pow(var_x113, 2); + const double var_x115 = 1 / var_x114; + const double var_x116 = CHASTE_CONST(0.001) * var_x115; + const double var_x117 = CHASTE_CONST(0.0015381954438488301) * var_x85; + const double var_x118 = CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Cai, CHASTE_CONST(0.19999999999999996)); + const double var_x119 = CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Cai, CHASTE_CONST(1.2)); + const double var_x120 = CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Ca_NSR, 1); + const double var_x121 = 1 / (1 + CHASTE_CONST(33855.471141425078) * var_x119 + CHASTE_CONST(0.303951367781155) * var_x120); + const double var_x122 = var_x121 * mParameters[1]; + const double var_x123 = CHASTE_MATH::Pow((CHASTE_CONST(2.9537323401073989e-5) + var_x119 + CHASTE_CONST(8.9779098483507565e-6) * var_x120), (-2)); + const double var_x124 = CHASTE_CONST(2752.4498037978587) * var_x119 - CHASTE_CONST(0.096656534954407292) * var_x120; + const double var_x125 = CHASTE_CONST(2800.0000000000005) * var_chaste_interface__intracellular_ion_concentrations__Cai; + + partialF = var_x116 * (-CHASTE_CONST(5637.4531835205999) - var_x117 + CHASTE_CONST(2800.0000000000005) * var_chaste_interface__intracellular_Ca_fluxes__HTRPNCa + CHASTE_CONST(2800.0000000000005) * var_chaste_interface__intracellular_Ca_fluxes__LTRPNCa - CHASTE_CONST(0.00015787156411954756) * var_x86 + CHASTE_CONST(0.0015381954438488301) * var_x87 * var_chaste_interface__intracellular_ion_concentrations__Cai - CHASTE_CONST(307.63908876976598) * var_x28 * var_x35 - CHASTE_CONST(3302.9397645574304) * var_x118 * var_x122 + CHASTE_CONST(3.5444788081288787e-5) * var_x118 * var_x123 * var_x124 * mParameters[1]) + CHASTE_CONST(2.3800000000000004e-7) * (CHASTE_CONST(2.8000000000000003) * var_chaste_interface__intracellular_Ca_fluxes__LTRPNCa + CHASTE_CONST(37.453183520599246) * var_chaste_interface__intracellular_ion_concentrations__Ca_ss + CHASTE_CONST(0.0092400000000000017) * var_chaste_interface__intracellular_Ca_fluxes__HTRPNCa + CHASTE_CONST(0.00015787156411954756) * CHASTE_MATH::Log(var_x86 * mParameters[3]) - CHASTE_CONST(37.453183520599246) * var_chaste_interface__intracellular_ion_concentrations__Cai - CHASTE_CONST(1.181949379053441e-5) * var_chaste_interface__membrane__V - var_x117 * var_chaste_interface__intracellular_ion_concentrations__Cai - var_x122 * var_x124 - var_x125 * (1 - var_chaste_interface__intracellular_Ca_fluxes__HTRPNCa) - var_x125 * (1 - var_chaste_interface__intracellular_Ca_fluxes__LTRPNCa) + CHASTE_CONST(307.63908876976598) * var_x31 * var_x32 * var_x33 * var_x70 * mParameters[14]) / (CHASTE_MATH::Pow(var_x113, 3) * CHASTE_MATH::Pow(var_x114, 2)); } else { @@ -1142,40 +1276,45 @@ } return partialF; } - double Dynamicwinslow_model_1999FromCellMLGRL2Opt::EvaluateYDerivative2(double var_chaste_interface__environment__time_converted, std::vector& rY) + 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -96.1638 - double var_chaste_interface__fast_sodium_current_h_gate__h = rY[2]; - // Units: dimensionless; Initial value: 0.988354 - + 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_h_gate__alpha_h = ((var_chaste_interface__membrane__V < -40.0) ? (135.0 * exp(-11.764705882352942 - 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.0) ? (3560.0 * exp(0.079000000000000001 * var_chaste_interface__membrane__V) + 310000.0 * exp(0.34999999999999998 * var_chaste_interface__membrane__V)) : (7692.3076923076924 / (1.0 + exp(-0.96036036036036043 - 0.0900900900900901 * var_chaste_interface__membrane__V)))); // per_second - const double var_fast_sodium_current_h_gate__h_orig_deriv = (1.0 - 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__E0_m = CHASTE_CONST(47.130000000000003) + var_chaste_interface__membrane__V; // millivolt + const double var_fast_sodium_current_m_gate__alpha_m = ((CHASTE_MATH::Abs(var_fast_sodium_current_m_gate__E0_m) < CHASTE_CONST(1.0000000000000001e-5)) ? (1000 / (CHASTE_CONST(0.10000000000000001) - CHASTE_CONST(0.0050000000000000001) * var_fast_sodium_current_m_gate__E0_m)) : (320 * var_fast_sodium_current_m_gate__E0_m / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(0.10000000000000001) * var_fast_sodium_current_m_gate__E0_m)))); // per_second + const double var_fast_sodium_current_m_gate__beta_m = 80 * CHASTE_MATH::Exp(-CHASTE_CONST(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 = CHASTE_CONST(0.001) * var_fast_sodium_current_m_gate__m_orig_deriv; // 1 / millisecond - return d_dt_chaste_interface_var_fast_sodium_current_h_gate__h; + return d_dt_chaste_interface_var_fast_sodium_current_m_gate__m; } - double Dynamicwinslow_model_1999FromCellMLGRL2Opt::EvaluatePartialDerivative2(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -96.1638 - const double var_x85 = exp(-11.764705882352942 - 0.14705882352941177 * var_chaste_interface__membrane__V); - const double var_x86 = var_chaste_interface__membrane__V < -40.0; - const double var_x87 = exp(0.079000000000000001 * var_chaste_interface__membrane__V); - const double var_x88 = exp(0.34999999999999998 * var_chaste_interface__membrane__V); - const double var_x89 = exp(-0.96036036036036043 - 0.0900900900900901 * var_chaste_interface__membrane__V); - const double var_x90 = 1.0 + var_x89; + + const double var_x128 = CHASTE_MATH::Exp(-CHASTE_CONST(0.090909090909090912) * var_chaste_interface__membrane__V); + const double var_x130 = var_chaste_interface__membrane__V >= -90; + const double var_x131 = CHASTE_CONST(47.130000000000003) + var_chaste_interface__membrane__V; + const double var_x132 = (var_x130) && (CHASTE_MATH::Abs(var_x131) < CHASTE_CONST(1.0000000000000001e-5)); + const double var_x133 = CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V; + const double var_x134 = CHASTE_MATH::Exp(-CHASTE_CONST(4.7130000000000001) - var_x133); + const double var_x135 = 1 - var_x134; + const double var_x136 = 320 / var_x135; + const double var_x137 = 80 * var_x128; - partialF = -0.001 * ((var_x86) ? (135.0 * var_x85) : (0)) - 0.001 * ((var_x86) ? (3560.0 * var_x87 + 310000.0 * var_x88) : (7692.3076923076924 / var_x90)); + partialF = CHASTE_CONST(0.001) * ((var_x132) ? (-var_x137 - 1000 / (-CHASTE_CONST(0.13565000000000002) - CHASTE_CONST(0.0050000000000000001) * var_chaste_interface__membrane__V)) : ((var_x130) ? (-var_x137 - var_x131 * var_x136) : (0))); } else { @@ -1187,52 +1326,46 @@ } return partialF; } - double Dynamicwinslow_model_1999FromCellMLGRL2Opt::EvaluateYDerivative3(double var_chaste_interface__environment__time_converted, std::vector& rY) + 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -96.1638 - double var_chaste_interface__fast_sodium_current_j_gate__j = rY[3]; - // Units: dimensionless; Initial value: 0.99254 - + 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_j_gate__alpha_j = ((var_chaste_interface__membrane__V < -40.0) ? (1000.0 * (37.780000000000001 + var_chaste_interface__membrane__V) * (-127140.0 * exp(0.24440000000000001 * var_chaste_interface__membrane__V) - 3.4740000000000003e-5 * exp(-0.043909999999999998 * var_chaste_interface__membrane__V)) / (1.0 + exp(24.640530000000002 + 0.311 * var_chaste_interface__membrane__V))) : (0)); // per_second - const double var_fast_sodium_current_j_gate__beta_j = ((var_chaste_interface__membrane__V < -40.0) ? (121.2 * exp(-0.01052 * var_chaste_interface__membrane__V) / (1.0 + exp(-5.5312920000000005 - 0.13780000000000001 * var_chaste_interface__membrane__V))) : (300.0 * exp(-2.5349999999999999e-7 * var_chaste_interface__membrane__V) / (1.0 + exp(-3.2000000000000002 - 0.10000000000000001 * var_chaste_interface__membrane__V)))); // per_second - const double var_fast_sodium_current_j_gate__j_orig_deriv = (1.0 - 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 / 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_h_gate__alpha_h = ((var_chaste_interface__membrane__V < -40) ? (135 * CHASTE_MATH::Exp(-CHASTE_CONST(11.764705882352942) + CHASTE_CONST(0.14705882352941177) * mParameters[10] - CHASTE_CONST(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 * CHASTE_MATH::Exp(CHASTE_CONST(0.079000000000000001) * var_chaste_interface__membrane__V - CHASTE_CONST(0.079000000000000001) * mParameters[10]) + 310000 * CHASTE_MATH::Exp(CHASTE_CONST(0.34999999999999998) * var_chaste_interface__membrane__V - CHASTE_CONST(0.34999999999999998) * mParameters[10])) : (CHASTE_CONST(7692.3076923076924) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.96036036036036043) + CHASTE_CONST(0.0900900900900901) * mParameters[10] - CHASTE_CONST(0.0900900900900901) * var_chaste_interface__membrane__V)))); // per_second + const double var_fast_sodium_current_h_gate__h_inf = CHASTE_CONST(0.01) * mParameters[9] + (1 - CHASTE_CONST(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 = CHASTE_CONST(0.001) * var_fast_sodium_current_h_gate__h_orig_deriv; // 1 / millisecond - return d_dt_chaste_interface_var_fast_sodium_current_j_gate__j; + return d_dt_chaste_interface_var_fast_sodium_current_h_gate__h; } - double Dynamicwinslow_model_1999FromCellMLGRL2Opt::EvaluatePartialDerivative3(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -96.1638 - const double var_x79 = -0.10000000000000001 * var_chaste_interface__membrane__V; - const double var_x86 = var_chaste_interface__membrane__V < -40.0; - const double var_x92 = exp(0.24440000000000001 * var_chaste_interface__membrane__V); - const double var_x93 = exp(-0.043909999999999998 * var_chaste_interface__membrane__V); - const double var_x94 = -127140.0 * var_x92 - 3.4740000000000003e-5 * var_x93; - const double var_x95 = exp(24.640530000000002 + 0.311 * var_chaste_interface__membrane__V); - const double var_x96 = 1.0 + var_x95; - const double var_x97 = 1000.0 / var_x96; - const double var_x98 = var_x94 * var_x97; - const double var_x99 = 37.780000000000001 + var_chaste_interface__membrane__V; - const double var_x100 = exp(-5.5312920000000005 - 0.13780000000000001 * var_chaste_interface__membrane__V); - const double var_x101 = 1.0 + var_x100; - const double var_x102 = exp(-0.01052 * var_chaste_interface__membrane__V); - const double var_x103 = var_x102 / var_x101; - const double var_x104 = exp(-3.2000000000000002 + var_x79); - const double var_x105 = 1.0 + var_x104; - const double var_x106 = exp(-2.5349999999999999e-7 * var_chaste_interface__membrane__V); - const double var_x107 = var_x106 / var_x105; - - partialF = -0.001 * ((var_x86) ? (121.2 * var_x103) : (300.0 * var_x107)) - 0.001 * ((var_x86) ? (var_x98 * var_x99) : (0)); + + const double var_x138 = CHASTE_MATH::Exp(-CHASTE_CONST(11.764705882352942) + CHASTE_CONST(0.14705882352941177) * mParameters[10] - CHASTE_CONST(0.14705882352941177) * var_chaste_interface__membrane__V); + const double var_x139 = var_chaste_interface__membrane__V < -40; + const double var_x140 = ((var_x139) ? (135 * var_x138) : (0)); + const double var_x141 = CHASTE_MATH::Exp(CHASTE_CONST(0.079000000000000001) * var_chaste_interface__membrane__V - CHASTE_CONST(0.079000000000000001) * mParameters[10]); + const double var_x142 = CHASTE_MATH::Exp(CHASTE_CONST(0.34999999999999998) * var_chaste_interface__membrane__V - CHASTE_CONST(0.34999999999999998) * mParameters[10]); + const double var_x143 = CHASTE_MATH::Exp(-CHASTE_CONST(0.96036036036036043) + CHASTE_CONST(0.0900900900900901) * mParameters[10] - CHASTE_CONST(0.0900900900900901) * var_chaste_interface__membrane__V); + const double var_x144 = 1 + var_x143; + const double var_x145 = ((var_x139) ? (3560 * var_x141 + 310000 * var_x142) : (CHASTE_CONST(7692.3076923076924) / var_x144)); + const double var_x146 = CHASTE_CONST(0.001) * var_x140 + CHASTE_CONST(0.001) * var_x145; + + partialF = -var_x146; } else { @@ -1244,42 +1377,58 @@ } return partialF; } - double Dynamicwinslow_model_1999FromCellMLGRL2Opt::EvaluateYDerivative4(double var_chaste_interface__environment__time_converted, std::vector& rY) + 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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[4]; - // Units: dimensionless; Initial value: 0.51 - + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.99254 + // 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.0; // 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_fast_sodium_current_j_gate__alpha_j = ((var_chaste_interface__membrane__V < -40) ? (1000 * (CHASTE_CONST(37.780000000000001) + var_chaste_interface__membrane__V) * (-127140 * CHASTE_MATH::Exp(CHASTE_CONST(0.24440000000000001) * var_chaste_interface__membrane__V - CHASTE_CONST(0.24440000000000001) * mParameters[10]) - CHASTE_CONST(3.4740000000000003e-5) * CHASTE_MATH::Exp(CHASTE_CONST(0.043909999999999998) * mParameters[10] - CHASTE_CONST(0.043909999999999998) * var_chaste_interface__membrane__V)) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(24.640530000000002) + CHASTE_CONST(0.311) * var_chaste_interface__membrane__V - CHASTE_CONST(0.311) * mParameters[10]))) : (0)); // per_second + const double var_fast_sodium_current_j_gate__beta_j = ((var_chaste_interface__membrane__V < -40) ? (CHASTE_CONST(121.2) * CHASTE_MATH::Exp(CHASTE_CONST(0.01052) * mParameters[10] - CHASTE_CONST(0.01052) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(5.5312920000000005) + CHASTE_CONST(0.13780000000000001) * mParameters[10] - CHASTE_CONST(0.13780000000000001) * var_chaste_interface__membrane__V))) : (300 * CHASTE_MATH::Exp(CHASTE_CONST(2.5349999999999999e-7) * mParameters[10] - CHASTE_CONST(2.5349999999999999e-7) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(3.2000000000000002) + CHASTE_CONST(0.10000000000000001) * mParameters[10] - CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V)))); // per_second + const double var_fast_sodium_current_j_gate__j_inf = CHASTE_CONST(0.01) * mParameters[9] + (1 - CHASTE_CONST(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 = CHASTE_CONST(0.001) * var_fast_sodium_current_j_gate__j_orig_deriv; // 1 / millisecond - return d_dt_chaste_interface_var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr; + return d_dt_chaste_interface_var_fast_sodium_current_j_gate__j; } - double Dynamicwinslow_model_1999FromCellMLGRL2Opt::EvaluatePartialDerivative4(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -96.1638 - const double var_x108 = exp(-7.6769999999999996 - 0.012800000000000001 * var_chaste_interface__membrane__V); - const double var_x109 = exp(-5.4950000000000001 + 0.1691 * var_chaste_interface__membrane__V); - const double var_x110 = var_x108 + var_x109; - const double var_x111 = 1 / var_x110; - const double var_x114 = 0.001 / (0.027 + 0.001 * var_x111); - - partialF = -var_x114; + + const double var_x133 = CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V; + const double var_x139 = var_chaste_interface__membrane__V < -40; + const double var_x153 = CHASTE_MATH::Exp(-CHASTE_CONST(5.5312920000000005) + CHASTE_CONST(0.13780000000000001) * mParameters[10] - CHASTE_CONST(0.13780000000000001) * var_chaste_interface__membrane__V); + const double var_x154 = 1 + var_x153; + const double var_x155 = CHASTE_MATH::Exp(CHASTE_CONST(0.01052) * mParameters[10] - CHASTE_CONST(0.01052) * var_chaste_interface__membrane__V); + const double var_x156 = var_x155 / var_x154; + const double var_x157 = CHASTE_MATH::Exp(-CHASTE_CONST(3.2000000000000002) - var_x133 + CHASTE_CONST(0.10000000000000001) * mParameters[10]); + const double var_x158 = 1 + var_x157; + const double var_x159 = CHASTE_MATH::Exp(CHASTE_CONST(2.5349999999999999e-7) * mParameters[10] - CHASTE_CONST(2.5349999999999999e-7) * var_chaste_interface__membrane__V); + const double var_x160 = var_x159 / var_x158; + const double var_x161 = ((var_x139) ? (CHASTE_CONST(121.2) * var_x156) : (300 * var_x160)); + const double var_x162 = CHASTE_CONST(37.780000000000001) + var_chaste_interface__membrane__V; + const double var_x163 = CHASTE_MATH::Exp(CHASTE_CONST(0.24440000000000001) * var_chaste_interface__membrane__V - CHASTE_CONST(0.24440000000000001) * mParameters[10]); + const double var_x164 = CHASTE_MATH::Exp(CHASTE_CONST(0.043909999999999998) * mParameters[10] - CHASTE_CONST(0.043909999999999998) * var_chaste_interface__membrane__V); + const double var_x165 = -127140 * var_x163 - CHASTE_CONST(3.4740000000000003e-5) * var_x164; + const double var_x166 = CHASTE_MATH::Exp(CHASTE_CONST(24.640530000000002) + CHASTE_CONST(0.311) * var_chaste_interface__membrane__V - CHASTE_CONST(0.311) * mParameters[10]); + const double var_x167 = 1 + var_x166; + const double var_x168 = 1000 / var_x167; + const double var_x169 = var_x165 * var_x168; + const double var_x170 = ((var_x139) ? (var_x162 * var_x169) : (0)); + const double var_x171 = CHASTE_CONST(0.001) * var_x161 + CHASTE_CONST(0.001) * var_x170; + + partialF = -var_x171; } else { @@ -1291,41 +1440,43 @@ } return partialF; } - double Dynamicwinslow_model_1999FromCellMLGRL2Opt::EvaluateYDerivative5(double var_chaste_interface__environment__time_converted, std::vector& rY) + 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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[5]; - // Units: dimensionless; Initial value: 0.264 - + 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_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks_infinity = 1.0 / (1.0 + 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.0 + var_chaste_interface__membrane__V) / (-1.0 + exp(-0.68699999999999994 + 0.068699999999999997 * var_chaste_interface__membrane__V)) + 7.1899999999999999e-5 * (-10.0 + var_chaste_interface__membrane__V) / (1.0 - 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_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__K12 = CHASTE_MATH::Exp(-CHASTE_CONST(5.4950000000000001) + CHASTE_CONST(0.1691) * var_chaste_interface__membrane__V); // dimensionless + const double var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__K21 = CHASTE_MATH::Exp(-CHASTE_CONST(7.6769999999999996) - CHASTE_CONST(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 = CHASTE_CONST(0.001) / (var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__K12 + var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__K21) + CHASTE_CONST(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 = CHASTE_CONST(0.001) * var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr_orig_deriv; // 1 / millisecond - return d_dt_chaste_interface_var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks; + return d_dt_chaste_interface_var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr; } - double Dynamicwinslow_model_1999FromCellMLGRL2Opt::EvaluatePartialDerivative5(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -96.1638 - const double var_x117 = exp(-0.68699999999999994 + 0.068699999999999997 * var_chaste_interface__membrane__V); - const double var_x118 = -1.0 + var_x117; - const double var_x119 = 1 / var_x118; - const double var_x121 = exp(1.48 - 0.14799999999999999 * var_chaste_interface__membrane__V); - const double var_x122 = 1.0 - var_x121; - const double var_x123 = 1 / var_x122; - const double var_x125 = -10.0 + var_chaste_interface__membrane__V; + + const double var_x176 = CHASTE_MATH::Exp(-CHASTE_CONST(7.6769999999999996) - CHASTE_CONST(0.012800000000000001) * var_chaste_interface__membrane__V); + const double var_x177 = CHASTE_MATH::Exp(-CHASTE_CONST(5.4950000000000001) + CHASTE_CONST(0.1691) * var_chaste_interface__membrane__V); + const double var_x178 = var_x176 + var_x177; + const double var_x179 = 1 / var_x178; + const double var_x180 = 1 / (CHASTE_CONST(0.027) + CHASTE_CONST(0.001) * var_x179); - partialF = -0.00013100000000000001 * var_x119 * var_x125 - 7.1899999999999999e-5 * var_x123 * var_x125; + partialF = -CHASTE_CONST(0.001) * var_x180; } else { @@ -1337,36 +1488,42 @@ } return partialF; } - double Dynamicwinslow_model_1999FromCellMLGRL2Opt::EvaluateYDerivative6(double var_chaste_interface__environment__time_converted, std::vector& rY) + 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -96.1638 - double var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1 = rY[6]; - // Units: dimensionless; Initial value: 2.63 - + 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_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.0 - 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_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks_infinity = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(1.8161764705882353) - CHASTE_CONST(0.073529411764705885) * var_chaste_interface__membrane__V)); // dimensionless + const double var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__tau_X_ks = CHASTE_CONST(0.001) / (CHASTE_CONST(0.00013100000000000001) * (-10 + var_chaste_interface__membrane__V) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.68699999999999994) + CHASTE_CONST(0.068699999999999997) * var_chaste_interface__membrane__V)) + CHASTE_CONST(7.1899999999999999e-5) * (-10 + var_chaste_interface__membrane__V) / (1 - CHASTE_MATH::Exp(CHASTE_CONST(1.48) - CHASTE_CONST(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 = CHASTE_CONST(0.001) * var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks_orig_deriv; // 1 / millisecond - return d_dt_chaste_interface_var_transient_outward_potassium_current_X_to1_gate__X_to1; + return d_dt_chaste_interface_var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks; } - double Dynamicwinslow_model_1999FromCellMLGRL2Opt::EvaluatePartialDerivative6(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -96.1638 - const double var_x126 = exp(0.035770000000000003 * var_chaste_interface__membrane__V); - const double var_x127 = exp(-0.062370000000000002 * var_chaste_interface__membrane__V); + + const double var_x185 = CHASTE_MATH::Exp(-CHASTE_CONST(0.68699999999999994) + CHASTE_CONST(0.068699999999999997) * var_chaste_interface__membrane__V); + const double var_x186 = -1 + var_x185; + const double var_x187 = 1 / var_x186; + const double var_x188 = CHASTE_MATH::Exp(CHASTE_CONST(1.48) - CHASTE_CONST(0.14799999999999999) * var_chaste_interface__membrane__V); + const double var_x189 = 1 - var_x188; + const double var_x190 = 1 / var_x189; + const double var_x191 = -10 + var_chaste_interface__membrane__V; - partialF = -0.045159999999999999 * var_x126 - 0.098900000000000002 * var_x127; + partialF = -CHASTE_CONST(0.00013100000000000001) * var_x187 * var_x191 - CHASTE_CONST(7.1899999999999999e-5) * var_x190 * var_x191; } else { @@ -1378,41 +1535,37 @@ } return partialF; } - double Dynamicwinslow_model_1999FromCellMLGRL2Opt::EvaluateYDerivative7(double var_chaste_interface__environment__time_converted, std::vector& rY) + 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -96.1638 - double var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1 = rY[7]; - // Units: dimensionless; Initial value: 0.99 - + 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_Y_to1_gate__alpha_Y_to1 = 5.415 * exp(-6.7000000000000002 - 0.20000000000000001 * var_chaste_interface__membrane__V) / (1.0 + 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 + 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.0 - 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 + const double var_transient_outward_potassium_current_X_to1_gate__alpha_X_to1 = CHASTE_CONST(45.159999999999997) * CHASTE_MATH::Exp(CHASTE_CONST(0.035770000000000003) * var_chaste_interface__membrane__V); // per_second + const double var_transient_outward_potassium_current_X_to1_gate__beta_X_to1 = CHASTE_CONST(98.900000000000006) * CHASTE_MATH::Exp(-CHASTE_CONST(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 = CHASTE_CONST(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_Y_to1_gate__Y_to1; + return d_dt_chaste_interface_var_transient_outward_potassium_current_X_to1_gate__X_to1; } - double Dynamicwinslow_model_1999FromCellMLGRL2Opt::EvaluatePartialDerivative7(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -96.1638 - const double var_x128 = 0.20000000000000001 * var_chaste_interface__membrane__V; - const double var_x129 = exp(6.7000000000000002 + var_x128); - const double var_x130 = 1.0 + 0.051334999999999999 * var_x129; - const double var_x131 = exp(-6.7000000000000002 - var_x128); - const double var_x132 = 1.0 + 0.051334999999999999 * var_x131; - const double var_x134 = var_x129 / var_x130; - const double var_x135 = var_x131 / var_x132; + + const double var_x192 = CHASTE_MATH::Exp(CHASTE_CONST(0.035770000000000003) * var_chaste_interface__membrane__V); + const double var_x193 = CHASTE_MATH::Exp(-CHASTE_CONST(0.062370000000000002) * var_chaste_interface__membrane__V); - partialF = -0.0054149999999999997 * var_x134 - 0.0054149999999999997 * var_x135; + partialF = -CHASTE_CONST(0.045159999999999999) * var_x192 - CHASTE_CONST(0.098900000000000002) * var_x193; } else { @@ -1424,32 +1577,43 @@ } return partialF; } - double Dynamicwinslow_model_1999FromCellMLGRL2Opt::EvaluateYDerivative8(double var_chaste_interface__environment__time_converted, std::vector& rY) + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative8(double var_chaste_interface__environment__time_converted, std::vector& rY) { - double var_chaste_interface__L_type_Ca_current__O = rY[8]; - // Units: dimensionless; Initial value: 9.84546e-21 - double var_chaste_interface__L_type_Ca_current__C4 = rY[14]; - // Units: dimensionless; Initial value: 6.56337e-20 - + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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_L_type_Ca_current__f = 300.0; // per_second - const double var_L_type_Ca_current__g = 2000.0; // 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_transient_outward_potassium_current_Y_to1_gate__alpha_Y_to1 = CHASTE_CONST(5.415) * CHASTE_MATH::Exp(-CHASTE_CONST(6.7000000000000002) - CHASTE_CONST(0.20000000000000001) * var_chaste_interface__membrane__V) / (1 + CHASTE_CONST(0.051334999999999999) * CHASTE_MATH::Exp(-CHASTE_CONST(6.7000000000000002) - CHASTE_CONST(0.20000000000000001) * var_chaste_interface__membrane__V)); // per_second + const double var_transient_outward_potassium_current_Y_to1_gate__beta_Y_to1 = CHASTE_CONST(5.415) * CHASTE_MATH::Exp(CHASTE_CONST(6.7000000000000002) + CHASTE_CONST(0.20000000000000001) * var_chaste_interface__membrane__V) / (1 + CHASTE_CONST(0.051334999999999999) * CHASTE_MATH::Exp(CHASTE_CONST(6.7000000000000002) + CHASTE_CONST(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 = CHASTE_CONST(0.001) * var_transient_outward_potassium_current_Y_to1_gate__Y_to1_orig_deriv; // 1 / millisecond - return d_dt_chaste_interface_var_L_type_Ca_current__O; + return d_dt_chaste_interface_var_transient_outward_potassium_current_Y_to1_gate__Y_to1; } - double Dynamicwinslow_model_1999FromCellMLGRL2Opt::EvaluatePartialDerivative8(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + 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 ? CHASTE_THIS(mFixedVoltage) : rY[0]); + // Units: millivolt; Initial value: -96.1638 + + const double var_x194 = CHASTE_CONST(0.20000000000000001) * var_chaste_interface__membrane__V; + const double var_x195 = CHASTE_CONST(6.7000000000000002) + var_x194; + const double var_x196 = CHASTE_MATH::Exp(var_x195); + const double var_x197 = 1 + CHASTE_CONST(0.051334999999999999) * var_x196; + const double var_x198 = var_x196 / var_x197; + const double var_x200 = CHASTE_MATH::Exp(-var_x195); + const double var_x201 = 1 + CHASTE_CONST(0.051334999999999999) * var_x200; + const double var_x202 = var_x200 / var_x201; - partialF = -2.0; + partialF = -CHASTE_CONST(0.0054149999999999997) * var_x198 - CHASTE_CONST(0.0054149999999999997) * var_x202; } else { @@ -1461,32 +1625,33 @@ } return partialF; } - double Dynamicwinslow_model_1999FromCellMLGRL2Opt::EvaluateYDerivative9(double var_chaste_interface__environment__time_converted, std::vector& rY) + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative9(double var_chaste_interface__environment__time_converted, std::vector& rY) { - double var_chaste_interface__L_type_Ca_current__O_Ca = rY[9]; - // Units: dimensionless; Initial value: 0.0 - double var_chaste_interface__L_type_Ca_current__C_Ca4 = rY[19]; - // Units: dimensionless; Initial value: 4.59752e-20 - + 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__fprime = 7.0; // per_second - const double var_L_type_Ca_current__gprime = 7000.0; // 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__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 = CHASTE_CONST(0.001) * var_L_type_Ca_current__O_orig_deriv; // 1 / millisecond - return d_dt_chaste_interface_var_L_type_Ca_current__O_Ca; + return d_dt_chaste_interface_var_L_type_Ca_current__O; } - double Dynamicwinslow_model_1999FromCellMLGRL2Opt::EvaluatePartialDerivative9(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + 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 = -7.0; + partialF = -2; } else { @@ -1498,48 +1663,33 @@ } return partialF; } - double Dynamicwinslow_model_1999FromCellMLGRL2Opt::EvaluateYDerivative10(double var_chaste_interface__environment__time_converted, std::vector& rY) + double Dynamicwinslow_model_1999FromCellMLGRL2::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: -96.1638 - double var_chaste_interface__L_type_Ca_current__C0 = rY[10]; - // Units: dimensionless; Initial value: 0.997208 - double var_chaste_interface__L_type_Ca_current__C1 = rY[11]; - // Units: dimensionless; Initial value: 6.38897e-05 - double var_chaste_interface__L_type_Ca_current__C_Ca0 = rY[15]; - // Units: dimensionless; Initial value: 0.00272826 - double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; - // Units: millimolar; Initial value: 0.00011 - + 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__omega = 10.0; // 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.0 * exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); // per_second - const double var_L_type_Ca_current__beta = 50.0 * 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.0 * 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__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 = CHASTE_CONST(0.001) * var_L_type_Ca_current__O_Ca_orig_deriv; // 1 / millisecond - return d_dt_chaste_interface_var_L_type_Ca_current__C0; + return d_dt_chaste_interface_var_L_type_Ca_current__O_Ca; } - double Dynamicwinslow_model_1999FromCellMLGRL2Opt::EvaluatePartialDerivative10(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + 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) { - 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_x138 = exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); - const double var_x141 = 1.6000000000000001 * var_x138; - const double var_x142 = -var_x141; - const double var_x143 = 0.10375 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; + - partialF = var_x142 - var_x143; + partialF = -7; } else { @@ -1551,54 +1701,48 @@ } return partialF; } - double Dynamicwinslow_model_1999FromCellMLGRL2Opt::EvaluateYDerivative11(double var_chaste_interface__environment__time_converted, std::vector& rY) + 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -96.1638 - double var_chaste_interface__L_type_Ca_current__C0 = rY[10]; + 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[11]; + 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[12]; - // Units: dimensionless; Initial value: 1.535e-09 - double var_chaste_interface__L_type_Ca_current__C_Ca1 = rY[16]; - // Units: dimensionless; Initial value: 6.99215e-07 + 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__a = 2.0; // dimensionless - const double var_L_type_Ca_current__b = 2.0; // dimensionless - const double var_L_type_Ca_current__omega = 10.0; // 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.0 * exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); // per_second - const double var_L_type_Ca_current__beta = 50.0 * exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); // per_second - const double var_L_type_Ca_current__C1_orig_deriv = -(3.0 * 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.0 * var_chaste_interface__L_type_Ca_current__C2 * var_L_type_Ca_current__beta + 4.0 * 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__omega = 10; // per_second + const double var_L_type_Ca_current__gamma = CHASTE_CONST(103.75) * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; // per_second + const double var_L_type_Ca_current__alpha = 400 * CHASTE_MATH::Exp(CHASTE_CONST(0.20000000000000001) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V); // per_second + const double var_L_type_Ca_current__beta = 50 * CHASTE_MATH::Exp(-CHASTE_CONST(0.15384615384615385) - CHASTE_CONST(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 = CHASTE_CONST(0.001) * var_L_type_Ca_current__C0_orig_deriv; // 1 / millisecond - return d_dt_chaste_interface_var_L_type_Ca_current__C1; + return d_dt_chaste_interface_var_L_type_Ca_current__C0; } - double Dynamicwinslow_model_1999FromCellMLGRL2Opt::EvaluatePartialDerivative11(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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_x136 = exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); - const double var_x138 = exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); - const double var_x144 = 0.050000000000000003 * var_x136; - const double var_x148 = 1.2 * var_x138; - const double var_x149 = -var_x144; - const double var_x150 = 0.20749999999999999 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; + + const double var_x205 = CHASTE_MATH::Exp(CHASTE_CONST(0.20000000000000001) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V); + const double var_x208 = CHASTE_CONST(1.6000000000000001) * var_x205; + const double var_x209 = CHASTE_CONST(0.10375) * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; - partialF = var_x149 - var_x148 - var_x150; + partialF = -var_x208 - var_x209; } else { @@ -1610,55 +1754,54 @@ } return partialF; } - double Dynamicwinslow_model_1999FromCellMLGRL2Opt::EvaluateYDerivative12(double var_chaste_interface__environment__time_converted, std::vector& rY) + 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -96.1638 - double var_chaste_interface__L_type_Ca_current__C1 = rY[11]; + 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[12]; + 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[13]; - // Units: dimensionless; Initial value: 1.63909e-14 - double var_chaste_interface__L_type_Ca_current__C_Ca2 = rY[17]; - // Units: dimensionless; Initial value: 6.71989e-11 + 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.0; // dimensionless - const double var_L_type_Ca_current__b = 2.0; // dimensionless - const double var_L_type_Ca_current__omega = 10.0; // 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.0 * exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); // per_second - const double var_L_type_Ca_current__beta = 50.0 * exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); // per_second - const double var_L_type_Ca_current__C2_orig_deriv = -(2.0 * var_L_type_Ca_current__alpha + 2.0 * 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.0 * var_chaste_interface__L_type_Ca_current__C1 * var_L_type_Ca_current__alpha + 3.0 * 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__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 = CHASTE_CONST(103.75) * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; // per_second + const double var_L_type_Ca_current__alpha = 400 * CHASTE_MATH::Exp(CHASTE_CONST(0.20000000000000001) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V); // per_second + const double var_L_type_Ca_current__beta = 50 * CHASTE_MATH::Exp(-CHASTE_CONST(0.15384615384615385) - CHASTE_CONST(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 = CHASTE_CONST(0.001) * var_L_type_Ca_current__C1_orig_deriv; // 1 / millisecond - return d_dt_chaste_interface_var_L_type_Ca_current__C2; + return d_dt_chaste_interface_var_L_type_Ca_current__C1; } - double Dynamicwinslow_model_1999FromCellMLGRL2Opt::EvaluatePartialDerivative12(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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_x136 = exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); - const double var_x138 = exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); - const double var_x151 = 0.10000000000000001 * var_x136; - const double var_x155 = -var_x151; - const double var_x156 = 0.80000000000000004 * var_x138; - const double var_x157 = -var_x156; - const double var_x158 = 0.41499999999999998 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; + + const double var_x203 = CHASTE_MATH::Exp(-CHASTE_CONST(0.15384615384615385) - CHASTE_CONST(0.076923076923076927) * var_chaste_interface__membrane__V); + const double var_x205 = CHASTE_MATH::Exp(CHASTE_CONST(0.20000000000000001) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V); + const double var_x210 = CHASTE_CONST(0.050000000000000003) * var_x203; + const double var_x214 = CHASTE_CONST(1.2) * var_x205; + const double var_x215 = CHASTE_CONST(0.20749999999999999) * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; - partialF = var_x155 + var_x157 - var_x158; + partialF = -var_x210 - var_x214 - var_x215; } else { @@ -1670,53 +1813,54 @@ } return partialF; } - double Dynamicwinslow_model_1999FromCellMLGRL2Opt::EvaluateYDerivative13(double var_chaste_interface__environment__time_converted, std::vector& rY) + 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -96.1638 - double var_chaste_interface__L_type_Ca_current__C2 = rY[12]; + 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[13]; + 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[14]; - // Units: dimensionless; Initial value: 6.56337e-20 - double var_chaste_interface__L_type_Ca_current__C_Ca3 = rY[18]; - // Units: dimensionless; Initial value: 2.87031e-15 + 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.0; // dimensionless - const double var_L_type_Ca_current__b = 2.0; // dimensionless - const double var_L_type_Ca_current__omega = 10.0; // 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.0 * exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); // per_second - const double var_L_type_Ca_current__beta = 50.0 * exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); // per_second - const double var_L_type_Ca_current__C3_orig_deriv = -(3.0 * 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.0 * var_chaste_interface__L_type_Ca_current__C2 * var_L_type_Ca_current__alpha + 4.0 * 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__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 = CHASTE_CONST(103.75) * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; // per_second + const double var_L_type_Ca_current__alpha = 400 * CHASTE_MATH::Exp(CHASTE_CONST(0.20000000000000001) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V); // per_second + const double var_L_type_Ca_current__beta = 50 * CHASTE_MATH::Exp(-CHASTE_CONST(0.15384615384615385) - CHASTE_CONST(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 + CHASTE_MATH::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 / CHASTE_MATH::Pow(var_L_type_Ca_current__b, 2); // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__C2 = CHASTE_CONST(0.001) * var_L_type_Ca_current__C2_orig_deriv; // 1 / millisecond - return d_dt_chaste_interface_var_L_type_Ca_current__C3; + return d_dt_chaste_interface_var_L_type_Ca_current__C2; } - double Dynamicwinslow_model_1999FromCellMLGRL2Opt::EvaluatePartialDerivative13(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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_x136 = exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); - const double var_x138 = exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); - const double var_x159 = 0.14999999999999999 * var_x136; - const double var_x163 = 0.40000000000000002 * var_x138; - const double var_x164 = 0.82999999999999996 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; + + const double var_x203 = CHASTE_MATH::Exp(-CHASTE_CONST(0.15384615384615385) - CHASTE_CONST(0.076923076923076927) * var_chaste_interface__membrane__V); + const double var_x205 = CHASTE_MATH::Exp(CHASTE_CONST(0.20000000000000001) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V); + const double var_x216 = CHASTE_CONST(0.10000000000000001) * var_x203; + const double var_x220 = CHASTE_CONST(0.80000000000000004) * var_x205; + const double var_x221 = CHASTE_CONST(0.41499999999999998) * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; - partialF = -var_x159 - var_x163 - var_x164; + partialF = -var_x216 - var_x220 - var_x221; } else { @@ -1728,53 +1872,54 @@ } return partialF; } - double Dynamicwinslow_model_1999FromCellMLGRL2Opt::EvaluateYDerivative14(double var_chaste_interface__environment__time_converted, std::vector& rY) + 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -96.1638 - double var_chaste_interface__L_type_Ca_current__O = rY[8]; - // Units: dimensionless; Initial value: 9.84546e-21 - double var_chaste_interface__L_type_Ca_current__C3 = rY[13]; + 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[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[19]; - // Units: dimensionless; Initial value: 4.59752e-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.0; // dimensionless - const double var_L_type_Ca_current__b = 2.0; // dimensionless - const double var_L_type_Ca_current__f = 300.0; // per_second - const double var_L_type_Ca_current__g = 2000.0; // per_second - const double var_L_type_Ca_current__omega = 10.0; // 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.0 * exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); // per_second - const double var_L_type_Ca_current__beta = 50.0 * 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.0 * 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__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 = CHASTE_CONST(103.75) * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; // per_second + const double var_L_type_Ca_current__alpha = 400 * CHASTE_MATH::Exp(CHASTE_CONST(0.20000000000000001) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V); // per_second + const double var_L_type_Ca_current__beta = 50 * CHASTE_MATH::Exp(-CHASTE_CONST(0.15384615384615385) - CHASTE_CONST(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 + CHASTE_MATH::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 / CHASTE_MATH::Pow(var_L_type_Ca_current__b, 3); // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__C3 = CHASTE_CONST(0.001) * var_L_type_Ca_current__C3_orig_deriv; // 1 / millisecond - return d_dt_chaste_interface_var_L_type_Ca_current__C4; + return d_dt_chaste_interface_var_L_type_Ca_current__C3; } - double Dynamicwinslow_model_1999FromCellMLGRL2Opt::EvaluatePartialDerivative14(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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_x136 = exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); - const double var_x165 = 0.20000000000000001 * var_x136; - const double var_x167 = 1.6599999999999999 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; + + const double var_x203 = CHASTE_MATH::Exp(-CHASTE_CONST(0.15384615384615385) - CHASTE_CONST(0.076923076923076927) * var_chaste_interface__membrane__V); + const double var_x205 = CHASTE_MATH::Exp(CHASTE_CONST(0.20000000000000001) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V); + const double var_x222 = CHASTE_CONST(0.14999999999999999) * var_x203; + const double var_x226 = CHASTE_CONST(0.40000000000000002) * var_x205; + const double var_x227 = CHASTE_CONST(0.82999999999999996) * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; - partialF = -0.29999999999999999 - var_x165 - var_x167; + partialF = -var_x222 - var_x226 - var_x227; } else { @@ -1786,48 +1931,54 @@ } return partialF; } - double Dynamicwinslow_model_1999FromCellMLGRL2Opt::EvaluateYDerivative15(double var_chaste_interface__environment__time_converted, std::vector& rY) + 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -96.1638 - double var_chaste_interface__L_type_Ca_current__C0 = rY[10]; - // Units: dimensionless; Initial value: 0.997208 - double var_chaste_interface__L_type_Ca_current__C_Ca0 = rY[15]; - // Units: dimensionless; Initial value: 0.00272826 - double var_chaste_interface__L_type_Ca_current__C_Ca1 = rY[16]; - // Units: dimensionless; Initial value: 6.99215e-07 + 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.0; // dimensionless - const double var_L_type_Ca_current__b = 2.0; // dimensionless - const double var_L_type_Ca_current__omega = 10.0; // 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.0 * 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.0 * 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.0 * 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__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 = CHASTE_CONST(103.75) * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; // per_second + const double var_L_type_Ca_current__alpha = 400 * CHASTE_MATH::Exp(CHASTE_CONST(0.20000000000000001) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V); // per_second + const double var_L_type_Ca_current__beta = 50 * CHASTE_MATH::Exp(-CHASTE_CONST(0.15384615384615385) - CHASTE_CONST(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 + CHASTE_MATH::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 / CHASTE_MATH::Pow(var_L_type_Ca_current__b, 4); // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__C4 = CHASTE_CONST(0.001) * var_L_type_Ca_current__C4_orig_deriv; // 1 / millisecond - return d_dt_chaste_interface_var_L_type_Ca_current__C_Ca0; + return d_dt_chaste_interface_var_L_type_Ca_current__C4; } - double Dynamicwinslow_model_1999FromCellMLGRL2Opt::EvaluatePartialDerivative15(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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_x138 = exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); - const double var_x171 = 3.2000000000000002 * var_x138; + + const double var_x203 = CHASTE_MATH::Exp(-CHASTE_CONST(0.15384615384615385) - CHASTE_CONST(0.076923076923076927) * var_chaste_interface__membrane__V); + const double var_x228 = CHASTE_CONST(0.20000000000000001) * var_x203; + const double var_x230 = CHASTE_CONST(1.6599999999999999) * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; - partialF = -0.01 - var_x171; + partialF = -CHASTE_CONST(0.29999999999999999) - var_x228 - var_x230; } else { @@ -1839,52 +1990,49 @@ } return partialF; } - double Dynamicwinslow_model_1999FromCellMLGRL2Opt::EvaluateYDerivative16(double var_chaste_interface__environment__time_converted, std::vector& rY) + 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -96.1638 - double var_chaste_interface__L_type_Ca_current__C1 = rY[11]; - // Units: dimensionless; Initial value: 6.38897e-05 - double var_chaste_interface__L_type_Ca_current__C_Ca0 = rY[15]; + 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[16]; + 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[17]; - // 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.0; // dimensionless - const double var_L_type_Ca_current__b = 2.0; // dimensionless - const double var_L_type_Ca_current__omega = 10.0; // 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.0 * exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); // 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__omega = 10; // per_second + const double var_L_type_Ca_current__gamma = CHASTE_CONST(103.75) * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; // per_second + const double var_L_type_Ca_current__alpha = 400 * CHASTE_MATH::Exp(CHASTE_CONST(0.20000000000000001) + CHASTE_CONST(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.0 * exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); // per_second + const double var_L_type_Ca_current__beta = 50 * CHASTE_MATH::Exp(-CHASTE_CONST(0.15384615384615385) - CHASTE_CONST(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.0 * 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.0 * var_chaste_interface__L_type_Ca_current__C_Ca2 * var_L_type_Ca_current__beta_b + 4.0 * 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_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 = CHASTE_CONST(0.001) * var_L_type_Ca_current__C_Ca0_orig_deriv; // 1 / millisecond - return d_dt_chaste_interface_var_L_type_Ca_current__C_Ca1; + return d_dt_chaste_interface_var_L_type_Ca_current__C_Ca0; } - double Dynamicwinslow_model_1999FromCellMLGRL2Opt::EvaluatePartialDerivative16(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -96.1638 - const double var_x136 = exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); - const double var_x138 = exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); - const double var_x172 = 0.025000000000000001 * var_x136; - const double var_x174 = 2.3999999999999999 * var_x138; + + const double var_x205 = CHASTE_MATH::Exp(CHASTE_CONST(0.20000000000000001) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V); + const double var_x234 = CHASTE_CONST(3.2000000000000002) * var_x205; - partialF = -0.0050000000000000001 - var_x172 - var_x174; + partialF = -CHASTE_CONST(0.01) - var_x234; } else { @@ -1896,54 +2044,53 @@ } return partialF; } - double Dynamicwinslow_model_1999FromCellMLGRL2Opt::EvaluateYDerivative17(double var_chaste_interface__environment__time_converted, std::vector& rY) + 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -96.1638 - double var_chaste_interface__L_type_Ca_current__C2 = rY[12]; - // Units: dimensionless; Initial value: 1.535e-09 - double var_chaste_interface__L_type_Ca_current__C_Ca1 = rY[16]; + 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[17]; + 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[18]; - // 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.0; // dimensionless - const double var_L_type_Ca_current__b = 2.0; // dimensionless - const double var_L_type_Ca_current__omega = 10.0; // 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.0 * exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); // 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__omega = 10; // per_second + const double var_L_type_Ca_current__gamma = CHASTE_CONST(103.75) * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; // per_second + const double var_L_type_Ca_current__alpha = 400 * CHASTE_MATH::Exp(CHASTE_CONST(0.20000000000000001) + CHASTE_CONST(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.0 * exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); // per_second + const double var_L_type_Ca_current__beta = 50 * CHASTE_MATH::Exp(-CHASTE_CONST(0.15384615384615385) - CHASTE_CONST(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.0 * var_L_type_Ca_current__alpha_a + 2.0 * 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.0 * var_chaste_interface__L_type_Ca_current__C_Ca1 * var_L_type_Ca_current__alpha_a + 3.0 * 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_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 = CHASTE_CONST(0.001) * var_L_type_Ca_current__C_Ca1_orig_deriv; // 1 / millisecond - return d_dt_chaste_interface_var_L_type_Ca_current__C_Ca2; + return d_dt_chaste_interface_var_L_type_Ca_current__C_Ca1; } - double Dynamicwinslow_model_1999FromCellMLGRL2Opt::EvaluatePartialDerivative17(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -96.1638 - const double var_x136 = exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); - const double var_x138 = exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); - const double var_x141 = 1.6000000000000001 * var_x138; - const double var_x142 = -var_x141; - const double var_x144 = 0.050000000000000003 * var_x136; - const double var_x149 = -var_x144; + + const double var_x203 = CHASTE_MATH::Exp(-CHASTE_CONST(0.15384615384615385) - CHASTE_CONST(0.076923076923076927) * var_chaste_interface__membrane__V); + const double var_x205 = CHASTE_MATH::Exp(CHASTE_CONST(0.20000000000000001) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V); + const double var_x235 = CHASTE_CONST(0.025000000000000001) * var_x203; + const double var_x237 = CHASTE_CONST(2.3999999999999999) * var_x205; - partialF = -0.0025000000000000001 + var_x142 + var_x149; + partialF = -CHASTE_CONST(0.0050000000000000001) - var_x235 - var_x237; } else { @@ -1955,53 +2102,53 @@ } return partialF; } - double Dynamicwinslow_model_1999FromCellMLGRL2Opt::EvaluateYDerivative18(double var_chaste_interface__environment__time_converted, std::vector& rY) + 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -96.1638 - double var_chaste_interface__L_type_Ca_current__C3 = rY[13]; - // Units: dimensionless; Initial value: 1.63909e-14 - double var_chaste_interface__L_type_Ca_current__C_Ca2 = rY[17]; + 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[18]; + 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[19]; - // 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.0; // dimensionless - const double var_L_type_Ca_current__b = 2.0; // dimensionless - const double var_L_type_Ca_current__omega = 10.0; // 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.0 * exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); // 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__omega = 10; // per_second + const double var_L_type_Ca_current__gamma = CHASTE_CONST(103.75) * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; // per_second + const double var_L_type_Ca_current__alpha = 400 * CHASTE_MATH::Exp(CHASTE_CONST(0.20000000000000001) + CHASTE_CONST(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.0 * exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); // per_second + const double var_L_type_Ca_current__beta = 50 * CHASTE_MATH::Exp(-CHASTE_CONST(0.15384615384615385) - CHASTE_CONST(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.0 * 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.0 * var_chaste_interface__L_type_Ca_current__C_Ca2 * var_L_type_Ca_current__alpha_a + 4.0 * 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_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 / CHASTE_MATH::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 + CHASTE_MATH::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 = CHASTE_CONST(0.001) * var_L_type_Ca_current__C_Ca2_orig_deriv; // 1 / millisecond - return d_dt_chaste_interface_var_L_type_Ca_current__C_Ca3; + return d_dt_chaste_interface_var_L_type_Ca_current__C_Ca2; } - double Dynamicwinslow_model_1999FromCellMLGRL2Opt::EvaluatePartialDerivative18(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -96.1638 - const double var_x136 = exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); - const double var_x138 = exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); - const double var_x156 = 0.80000000000000004 * var_x138; - const double var_x157 = -var_x156; - const double var_x175 = 0.074999999999999997 * var_x136; + + const double var_x203 = CHASTE_MATH::Exp(-CHASTE_CONST(0.15384615384615385) - CHASTE_CONST(0.076923076923076927) * var_chaste_interface__membrane__V); + const double var_x205 = CHASTE_MATH::Exp(CHASTE_CONST(0.20000000000000001) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V); + const double var_x208 = CHASTE_CONST(1.6000000000000001) * var_x205; + const double var_x210 = CHASTE_CONST(0.050000000000000003) * var_x203; - partialF = -0.00125 + var_x157 - var_x175; + partialF = -CHASTE_CONST(0.0025000000000000001) - var_x208 - var_x210; } else { @@ -2013,53 +2160,53 @@ } return partialF; } - double Dynamicwinslow_model_1999FromCellMLGRL2Opt::EvaluateYDerivative19(double var_chaste_interface__environment__time_converted, std::vector& rY) + 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -96.1638 - double var_chaste_interface__L_type_Ca_current__O_Ca = rY[9]; - // Units: dimensionless; Initial value: 0.0 - double var_chaste_interface__L_type_Ca_current__C4 = rY[14]; - // Units: dimensionless; Initial value: 6.56337e-20 - double var_chaste_interface__L_type_Ca_current__C_Ca3 = rY[18]; + 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[19]; + 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.0; // dimensionless - const double var_L_type_Ca_current__b = 2.0; // dimensionless - const double var_L_type_Ca_current__fprime = 7.0; // per_second - const double var_L_type_Ca_current__gprime = 7000.0; // per_second - const double var_L_type_Ca_current__omega = 10.0; // 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.0 * exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); // 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__omega = 10; // per_second + const double var_L_type_Ca_current__gamma = CHASTE_CONST(103.75) * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; // per_second + const double var_L_type_Ca_current__alpha = 400 * CHASTE_MATH::Exp(CHASTE_CONST(0.20000000000000001) + CHASTE_CONST(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.0 * exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); // per_second + const double var_L_type_Ca_current__beta = 50 * CHASTE_MATH::Exp(-CHASTE_CONST(0.15384615384615385) - CHASTE_CONST(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.0 * 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__C_Ca3_orig_deriv = -(3 * var_L_type_Ca_current__beta_b + var_L_type_Ca_current__omega / CHASTE_MATH::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 + CHASTE_MATH::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 = CHASTE_CONST(0.001) * var_L_type_Ca_current__C_Ca3_orig_deriv; // 1 / millisecond - return d_dt_chaste_interface_var_L_type_Ca_current__C_Ca4; + return d_dt_chaste_interface_var_L_type_Ca_current__C_Ca3; } - double Dynamicwinslow_model_1999FromCellMLGRL2Opt::EvaluatePartialDerivative19(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -96.1638 - const double var_x136 = exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); - const double var_x151 = 0.10000000000000001 * var_x136; - const double var_x155 = -var_x151; + + const double var_x203 = CHASTE_MATH::Exp(-CHASTE_CONST(0.15384615384615385) - CHASTE_CONST(0.076923076923076927) * var_chaste_interface__membrane__V); + const double var_x205 = CHASTE_MATH::Exp(CHASTE_CONST(0.20000000000000001) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V); + const double var_x220 = CHASTE_CONST(0.80000000000000004) * var_x205; + const double var_x238 = CHASTE_CONST(0.074999999999999997) * var_x203; - partialF = -0.0076249999999999998 + var_x155; + partialF = -CHASTE_CONST(0.00125) - var_x220 - var_x238; } else { @@ -2071,38 +2218,53 @@ } return partialF; } - double Dynamicwinslow_model_1999FromCellMLGRL2Opt::EvaluateYDerivative20(double var_chaste_interface__environment__time_converted, std::vector& rY) + 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -96.1638 - double var_chaste_interface__L_type_Ca_current_y_gate__y = rY[20]; - // Units: dimensionless; Initial value: 0.798 - + 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_y_gate__tau_y = 0.02 + 0.59999999999999998 / (1.0 + 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.0 + 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_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 = CHASTE_CONST(103.75) * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; // per_second + const double var_L_type_Ca_current__alpha = 400 * CHASTE_MATH::Exp(CHASTE_CONST(0.20000000000000001) + CHASTE_CONST(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 * CHASTE_MATH::Exp(-CHASTE_CONST(0.15384615384615385) - CHASTE_CONST(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 / CHASTE_MATH::Pow(var_L_type_Ca_current__b, 4) + var_L_type_Ca_current__fprime) * var_chaste_interface__L_type_Ca_current__C_Ca4 + CHASTE_MATH::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 = CHASTE_CONST(0.001) * var_L_type_Ca_current__C_Ca4_orig_deriv; // 1 / millisecond - return d_dt_chaste_interface_var_L_type_Ca_current_y_gate__y; + return d_dt_chaste_interface_var_L_type_Ca_current__C_Ca4; } - double Dynamicwinslow_model_1999FromCellMLGRL2Opt::EvaluatePartialDerivative20(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -96.1638 - const double var_x179 = exp(2.1052631578947367 + 0.10526315789473684 * var_chaste_interface__membrane__V); - const double var_x180 = 1.0 + var_x179; - const double var_x181 = 1 / var_x180; - const double var_x182 = 1 / (0.02 + 0.59999999999999998 * var_x181); + + const double var_x203 = CHASTE_MATH::Exp(-CHASTE_CONST(0.15384615384615385) - CHASTE_CONST(0.076923076923076927) * var_chaste_interface__membrane__V); + const double var_x216 = CHASTE_CONST(0.10000000000000001) * var_x203; - partialF = -0.001 * var_x182; + partialF = -CHASTE_CONST(0.0076249999999999998) - var_x216; } else { @@ -2114,48 +2276,39 @@ } return partialF; } - double Dynamicwinslow_model_1999FromCellMLGRL2Opt::EvaluateYDerivative21(double var_chaste_interface__environment__time_converted, std::vector& rY) + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative21(double var_chaste_interface__environment__time_converted, std::vector& rY) { - double var_chaste_interface__RyR_channel__P_O1 = rY[21]; - // Units: dimensionless; Initial value: 0.0 - double var_chaste_interface__RyR_channel__P_O2 = rY[22]; - // Units: dimensionless; Initial value: 0.0 - double var_chaste_interface__RyR_channel__P_C1 = rY[23]; - // Units: dimensionless; Initial value: 0.47 - double var_chaste_interface__RyR_channel__P_C2 = rY[24]; - // Units: dimensionless; Initial value: 0.53 - double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; - // Units: millimolar; Initial value: 0.00011 - + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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_RyR_channel__k_a_minus = 576.0; // per_second - const double var_RyR_channel__k_a_plus = 12150000000000.0; // millimolar4_per_second - const double var_RyR_channel__k_b_minus = 1930.0; // 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.0; // per_second - const double var_RyR_channel__m = 3.0; // dimensionless - const double var_RyR_channel__n = 4.0; // 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 + const double var_L_type_Ca_current_y_gate__tau_y = CHASTE_CONST(0.02) + CHASTE_CONST(0.59999999999999998) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(2.1052631578947367) + CHASTE_CONST(0.10526315789473684) * var_chaste_interface__membrane__V)); // second + const double var_L_type_Ca_current_y_gate__y_infinity = CHASTE_CONST(0.20000000000000001) + CHASTE_CONST(0.80000000000000004) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(2.5) + CHASTE_CONST(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 = CHASTE_CONST(0.001) * var_L_type_Ca_current_y_gate__y_orig_deriv; // 1 / millisecond - return d_dt_chaste_interface_var_RyR_channel__P_O1; + return d_dt_chaste_interface_var_L_type_Ca_current_y_gate__y; } - double Dynamicwinslow_model_1999FromCellMLGRL2Opt::EvaluatePartialDerivative21(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + 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__intracellular_ion_concentrations__Ca_ss = rY[30]; - // Units: millimolar; Initial value: 0.00011 + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); + // Units: millivolt; Initial value: -96.1638 - const double var_x183 = pow(var_chaste_interface__intracellular_ion_concentrations__Ca_ss, 3.0); - const double var_x184 = 4050000.0 * var_x183; + + const double var_x242 = CHASTE_MATH::Exp(CHASTE_CONST(2.1052631578947367) + CHASTE_CONST(0.10526315789473684) * var_chaste_interface__membrane__V); + const double var_x243 = 1 + var_x242; + const double var_x244 = 1 / var_x243; + const double var_x245 = 1 / (CHASTE_CONST(0.02) + CHASTE_CONST(0.59999999999999998) * var_x244); - partialF = -0.67600000000000005 - var_x184; + partialF = -CHASTE_CONST(0.001) * var_x245; } else { @@ -2167,35 +2320,49 @@ } return partialF; } - double Dynamicwinslow_model_1999FromCellMLGRL2Opt::EvaluateYDerivative22(double var_chaste_interface__environment__time_converted, std::vector& rY) + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative22(double var_chaste_interface__environment__time_converted, std::vector& rY) { - double var_chaste_interface__RyR_channel__P_O1 = rY[21]; + 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[22]; + 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_b_minus = 1930.0; // per_second - const double var_RyR_channel__k_b_plus = 4050000000.0; // millimolar3_per_second - const double var_RyR_channel__m = 3.0; // 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 + const double var_RyR_channel__k_a_minus = 576; // per_second + const double var_RyR_channel__k_a_plus = CHASTE_CONST(12150000000000.0); // millimolar4_per_second + const double var_RyR_channel__k_b_minus = 1930; // per_second + const double var_RyR_channel__k_b_plus = CHASTE_CONST(4050000000.0); // millimolar3_per_second + const double var_RyR_channel__k_c_minus = CHASTE_CONST(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 + CHASTE_MATH::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 - CHASTE_MATH::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 = CHASTE_CONST(0.001) * var_RyR_channel__P_O1_orig_deriv; // 1 / millisecond - return d_dt_chaste_interface_var_RyR_channel__P_O2; + return d_dt_chaste_interface_var_RyR_channel__P_O1; } - double Dynamicwinslow_model_1999FromCellMLGRL2Opt::EvaluatePartialDerivative22(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + 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_x246 = CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Ca_ss, 3); + const double var_x247 = 4050000 * var_x246; - partialF = -1.9299999999999999; + partialF = -CHASTE_CONST(0.67600000000000005) - var_x247; } else { @@ -2207,38 +2374,36 @@ } return partialF; } - double Dynamicwinslow_model_1999FromCellMLGRL2Opt::EvaluateYDerivative23(double var_chaste_interface__environment__time_converted, std::vector& rY) + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative23(double var_chaste_interface__environment__time_converted, std::vector& rY) { - double var_chaste_interface__RyR_channel__P_O1 = rY[21]; + 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[23]; - // 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.0; // per_second - const double var_RyR_channel__k_a_plus = 12150000000000.0; // millimolar4_per_second - const double var_RyR_channel__n = 4.0; // 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 + const double var_RyR_channel__k_b_minus = 1930; // per_second + const double var_RyR_channel__k_b_plus = CHASTE_CONST(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 + CHASTE_MATH::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 = CHASTE_CONST(0.001) * var_RyR_channel__P_O2_orig_deriv; // 1 / millisecond - return d_dt_chaste_interface_var_RyR_channel__P_C1; + return d_dt_chaste_interface_var_RyR_channel__P_O2; } - double Dynamicwinslow_model_1999FromCellMLGRL2Opt::EvaluatePartialDerivative23(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + 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) { - double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; - // Units: millimolar; Initial value: 0.00011 - const double var_x185 = 12150000000.0 * pow(var_chaste_interface__intracellular_ion_concentrations__Ca_ss, 4.0); + - partialF = -var_x185; + partialF = -CHASTE_CONST(1.9299999999999999); } else { @@ -2250,32 +2415,39 @@ } return partialF; } - double Dynamicwinslow_model_1999FromCellMLGRL2Opt::EvaluateYDerivative24(double var_chaste_interface__environment__time_converted, std::vector& rY) + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative24(double var_chaste_interface__environment__time_converted, std::vector& rY) { - double var_chaste_interface__RyR_channel__P_O1 = rY[21]; + 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[24]; - // Units: dimensionless; Initial value: 0.53 - + 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_c_minus = 0.80000000000000004; // per_second - const double var_RyR_channel__k_c_plus = 100.0; // 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__k_a_minus = 576; // per_second + const double var_RyR_channel__k_a_plus = CHASTE_CONST(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 - CHASTE_MATH::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 = CHASTE_CONST(0.001) * var_RyR_channel__P_C1_orig_deriv; // 1 / millisecond - return d_dt_chaste_interface_var_RyR_channel__P_C2; + return d_dt_chaste_interface_var_RyR_channel__P_C1; } - double Dynamicwinslow_model_1999FromCellMLGRL2Opt::EvaluatePartialDerivative24(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + 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_x248 = CHASTE_CONST(12150000000.0) * CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Ca_ss, 4); - partialF = -0.00080000000000000004; + partialF = -var_x248; } else { @@ -2287,34 +2459,33 @@ } return partialF; } - double Dynamicwinslow_model_1999FromCellMLGRL2Opt::EvaluateYDerivative25(double var_chaste_interface__environment__time_converted, std::vector& rY) + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative25(double var_chaste_interface__environment__time_converted, std::vector& rY) { - double var_chaste_interface__intracellular_Ca_fluxes__HTRPNCa = rY[25]; - // Units: millimolar; Initial value: 0.98 - double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[28]; - // Units: millimolar; Initial value: 8e-05 - + 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_intracellular_Ca_fluxes__k_htrpn_minus = 0.066000000000000003; // per_second - const double var_intracellular_Ca_fluxes__k_htrpn_plus = 20000.0; // 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.0 - 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_RyR_channel__k_c_minus = CHASTE_CONST(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 = CHASTE_CONST(0.001) * var_RyR_channel__P_C2_orig_deriv; // 1 / millisecond - return d_dt_chaste_interface_var_intracellular_Ca_fluxes__HTRPNCa; + return d_dt_chaste_interface_var_RyR_channel__P_C2; } - double Dynamicwinslow_model_1999FromCellMLGRL2Opt::EvaluatePartialDerivative25(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + 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) { - double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[28]; - // Units: millimolar; Initial value: 8e-05 + - partialF = -6.6000000000000005e-5 - 20.0 * var_chaste_interface__intracellular_ion_concentrations__Cai; + partialF = -CHASTE_CONST(0.00080000000000000004); } else { @@ -2326,34 +2497,35 @@ } return partialF; } - double Dynamicwinslow_model_1999FromCellMLGRL2Opt::EvaluateYDerivative26(double var_chaste_interface__environment__time_converted, std::vector& rY) + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative26(double var_chaste_interface__environment__time_converted, std::vector& rY) { - double var_chaste_interface__intracellular_Ca_fluxes__LTRPNCa = rY[26]; - // Units: millimolar; Initial value: 0.078 - double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[28]; + 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_ltrpn_minus = 40.0; // per_second - const double var_intracellular_Ca_fluxes__k_ltrpn_plus = 40000.0; // 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.0 - 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__k_htrpn_minus = CHASTE_CONST(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 = CHASTE_CONST(0.001) * var_intracellular_Ca_fluxes__HTRPNCa_orig_deriv; // millimolar / millisecond - return d_dt_chaste_interface_var_intracellular_Ca_fluxes__LTRPNCa; + return d_dt_chaste_interface_var_intracellular_Ca_fluxes__HTRPNCa; } - double Dynamicwinslow_model_1999FromCellMLGRL2Opt::EvaluatePartialDerivative26(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + 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[28]; + double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[1]; // Units: millimolar; Initial value: 8e-05 + - partialF = -0.040000000000000001 - 40.0 * var_chaste_interface__intracellular_ion_concentrations__Cai; + partialF = -CHASTE_CONST(6.6000000000000005e-5) - 20 * var_chaste_interface__intracellular_ion_concentrations__Cai; } else { @@ -2365,26 +2537,35 @@ } return partialF; } - double Dynamicwinslow_model_1999FromCellMLGRL2Opt::EvaluateYDerivative27(double var_chaste_interface__environment__time_converted, std::vector& rY) + 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_ion_concentrations__Nai_orig_deriv = 0; // 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_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 = CHASTE_CONST(0.001) * var_intracellular_Ca_fluxes__LTRPNCa_orig_deriv; // millimolar / millisecond - return d_dt_chaste_interface_var_intracellular_ion_concentrations__Nai; + return d_dt_chaste_interface_var_intracellular_Ca_fluxes__LTRPNCa; } - double Dynamicwinslow_model_1999FromCellMLGRL2Opt::EvaluatePartialDerivative27(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + 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; + partialF = -CHASTE_CONST(0.040000000000000001) - 40 * var_chaste_interface__intracellular_ion_concentrations__Cai; } else { @@ -2396,127 +2577,96 @@ } return partialF; } - double Dynamicwinslow_model_1999FromCellMLGRL2Opt::EvaluateYDerivative28(double var_chaste_interface__environment__time_converted, std::vector& rY) + 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -96.1638 - double var_chaste_interface__intracellular_Ca_fluxes__HTRPNCa = rY[25]; - // Units: millimolar; Initial value: 0.98 - double var_chaste_interface__intracellular_Ca_fluxes__LTRPNCa = rY[26]; - // Units: millimolar; Initial value: 0.078 - double var_chaste_interface__intracellular_ion_concentrations__Nai = rY[27]; - // Units: millimolar; Initial value: 10.0 - double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[28]; + double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[1]; // Units: millimolar; Initial value: 8e-05 - 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 - + 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_NaCa = 0.29999999999999999; // 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_SERCA2a_pump__K_SR = 1.0; // 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.0; // 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.0; // per_millimolar_second - const double var_intracellular_Ca_fluxes__k_ltrpn_minus = 40.0; // per_second - const double var_intracellular_Ca_fluxes__k_ltrpn_plus = 40000.0; // 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) * var_SERCA2a_pump__K_SR / (1.0 + 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.0 - 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.0 - 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.0 / (1.0 + 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.0; // 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_standard_ionic_concentrations__Cao = 2.0; // millimolar - const double var_calcium_background_current__E_Ca = 0.5 * var_membrane__R * var_membrane__T * log(var_standard_ionic_concentrations__Cao / 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_standard_ionic_concentrations__Nao = 138.0; // millimolar - const double var_Na_Ca_exchanger__i_NaCa = 5000.0 * (pow(var_chaste_interface__intracellular_ion_concentrations__Nai, 3) * var_standard_ionic_concentrations__Cao * exp(var_Na_Ca_exchanger__eta * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - pow(var_standard_ionic_concentrations__Nao, 3) * var_chaste_interface__intracellular_ion_concentrations__Cai * exp((-1.0 + 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.0 + var_Na_Ca_exchanger__K_sat * exp((-1.0 + 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(var_standard_ionic_concentrations__Nao, 3)) * (var_Na_Ca_exchanger__K_mCa + var_standard_ionic_concentrations__Cao)); // 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.0 * 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_Na_Ca_exchanger__K_mCa = CHASTE_CONST(1.3799999999999999); // millimolar + const double var_Na_Ca_exchanger__K_mNa = CHASTE_CONST(87.5); // millimolar + const double var_Na_Ca_exchanger__K_sat = CHASTE_CONST(0.20000000000000001); // dimensionless + const double var_Na_Ca_exchanger__eta = CHASTE_CONST(0.34999999999999998); // dimensionless + const double var_intracellular_ion_concentrations__A_cap = CHASTE_CONST(0.00015339999999999999); // cm2 + const double var_intracellular_ion_concentrations__V_myo = CHASTE_CONST(2.584e-5); // micro_litre + const double var_membrane__F = CHASTE_CONST(96.485341500000004); // coulomb_per_millimole + const double var_membrane__R = CHASTE_CONST(8.3144720000000003); // joule_per_mole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_sodium_background_current__g_Nab = CHASTE_CONST(0.0030999999999999999); // milliS_per_microF + const double var_sodium_potassium_pump__I_NaK = CHASTE_CONST(0.69299999999999995); // microA_per_microF + const double var_sodium_potassium_pump__K_mKo = CHASTE_CONST(1.5); // millimolar + const double var_sodium_potassium_pump__K_mNai = 10; // millimolar + const double var_Na_Ca_exchanger__i_NaCa = 5000 * (CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Nai, 3) * mParameters[3] * CHASTE_MATH::Exp(var_Na_Ca_exchanger__eta * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - CHASTE_MATH::Pow(mParameters[5], 3) * var_chaste_interface__intracellular_ion_concentrations__Cai * CHASTE_MATH::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 * CHASTE_MATH::Exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (CHASTE_MATH::Pow(var_Na_Ca_exchanger__K_mNa, 3) + CHASTE_MATH::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 * CHASTE_MATH::Log(mParameters[5] / var_chaste_interface__intracellular_ion_concentrations__Nai) / var_membrane__F; // millivolt + const double var_fast_sodium_current__i_Na = CHASTE_MATH::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 = -CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * CHASTE_MATH::Exp(CHASTE_CONST(0.01485884101040119) * mParameters[5]); // dimensionless + const double var_sodium_potassium_pump__f_NaK = 1 / (1 + CHASTE_CONST(0.1245) * CHASTE_MATH::Exp(-CHASTE_CONST(0.10000000000000001) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) + CHASTE_CONST(0.036499999999999998) * var_sodium_potassium_pump__sigma * CHASTE_MATH::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 + CHASTE_MATH::Pow((var_sodium_potassium_pump__K_mNai / var_chaste_interface__intracellular_ion_concentrations__Nai), CHASTE_CONST(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 = CHASTE_CONST(0.001) * var_intracellular_ion_concentrations__Nai_orig_deriv; // millimolar / millisecond - return d_dt_chaste_interface_var_intracellular_ion_concentrations__Cai; + return d_dt_chaste_interface_var_intracellular_ion_concentrations__Nai; } - double Dynamicwinslow_model_1999FromCellMLGRL2Opt::EvaluatePartialDerivative28(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -96.1638 - double var_chaste_interface__intracellular_Ca_fluxes__HTRPNCa = rY[25]; - // Units: millimolar; Initial value: 0.98 - double var_chaste_interface__intracellular_Ca_fluxes__LTRPNCa = rY[26]; - // Units: millimolar; Initial value: 0.078 - double var_chaste_interface__intracellular_ion_concentrations__Nai = rY[27]; + 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 - double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[28]; - // Units: millimolar; Initial value: 8e-05 - 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_x12 = exp(-0.024332029034784559 * var_chaste_interface__membrane__V); - const double var_x13 = 1.0 + 0.20000000000000001 * var_x12; - const double var_x14 = 1 / var_x13; - const double var_x15 = var_x12 * var_chaste_interface__intracellular_ion_concentrations__Cai; - const double var_x16 = exp(0.013101861787960915 * var_chaste_interface__membrane__V); - const double var_x17 = var_x16 * pow(var_chaste_interface__intracellular_ion_concentrations__Nai, 3); - const double var_x21 = 2.0 * var_x17 - 2628072.0 * var_x15; - const double var_x68 = 5.0000000000000002e-5 + var_chaste_interface__intracellular_ion_concentrations__Cai; - const double var_x69 = 1 / var_x68; - const double var_x70 = 1 / var_chaste_interface__intracellular_ion_concentrations__Cai; - const double var_x71 = var_x12 * var_x14; - const double var_x72 = var_chaste_interface__intracellular_ion_concentrations__Cai / pow(var_x68, 2); - const double var_x188 = 0.0023800000000000002 + var_chaste_interface__intracellular_ion_concentrations__Cai; - const double var_x189 = 1.0 + 0.00011900000000000002 / pow(var_x188, 2); - const double var_x190 = 1 / var_x189; - const double var_x191 = 0.001 * var_x190; - const double var_x192 = 2800.0000000000005 * var_chaste_interface__intracellular_ion_concentrations__Cai; - const double var_x193 = 0.0015381954438488301 * var_x69; - const double var_x194 = pow(var_chaste_interface__intracellular_ion_concentrations__Cai, 1.2); - const double var_x195 = pow(var_chaste_interface__intracellular_ion_concentrations__Ca_NSR, 1.0); - const double var_x196 = 1 / (1.0 + 33855.471141425078 * var_x194 + 0.303951367781155 * var_x195); - const double var_x197 = pow(var_chaste_interface__intracellular_ion_concentrations__Cai, 0.19999999999999996); - const double var_x198 = var_x196 * var_x197; - const double var_x199 = 2752.4498037978587 * var_x194 - 0.096656534954407292 * var_x195; - const double var_x200 = var_x199 / pow((2.9537323401073989e-5 + var_x194 + 8.9779098483507565e-6 * var_x195), 2); - const double var_x201 = var_x197 * var_x200; - - partialF = var_x191 * (-5637.4531835205999 - var_x193 + 3.5444788081288787e-5 * var_x201 + 0.0015381954438488301 * var_x72 + 2800.0000000000005 * var_chaste_interface__intracellular_Ca_fluxes__HTRPNCa + 2800.0000000000005 * var_chaste_interface__intracellular_Ca_fluxes__LTRPNCa - 0.00015787156411954756 * var_x70 - 21.758727097510118 * var_x71 - 3302.9397645574304 * var_x198) + 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(2.0 * var_x70) - 37.453183520599246 * var_chaste_interface__intracellular_ion_concentrations__Cai - 1.181949379053441e-5 * var_chaste_interface__membrane__V - var_x192 * (1.0 - var_chaste_interface__intracellular_Ca_fluxes__HTRPNCa) - var_x192 * (1.0 - var_chaste_interface__intracellular_Ca_fluxes__LTRPNCa) - var_x193 * var_chaste_interface__intracellular_ion_concentrations__Cai + 8.279349689624225e-6 * var_x14 * var_x21 - 1.0 * var_x196 * var_x199) / (pow(var_x188, 3) * pow(var_x189, 2)); + + const double var_x11 = CHASTE_MATH::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_x24 = CHASTE_MATH::Exp(CHASTE_CONST(0.013101861787960915) * var_chaste_interface__membrane__V); + const double var_x25 = var_x24 * mParameters[3]; + const double var_x26 = CHASTE_MATH::Exp(-CHASTE_CONST(0.024332029034784559) * var_chaste_interface__membrane__V); + const double var_x27 = CHASTE_MATH::Pow(mParameters[5], 3); + const double var_x30 = 1 + CHASTE_CONST(0.20000000000000001) * var_x26; + const double var_x31 = 1 / var_x30; + const double var_x32 = 1 / (CHASTE_CONST(669921.875) + var_x27); + const double var_x33 = 1 / (CHASTE_CONST(1.3799999999999999) + mParameters[3]); + const double var_x34 = var_x32 * var_x33 * mParameters[14]; + const double var_x35 = var_x31 * var_x34; + const double var_x37 = 1 / var_chaste_interface__intracellular_ion_concentrations__Nai; + const double var_x38 = CHASTE_MATH::Pow(var_x37, CHASTE_CONST(1.5)); + const double var_x40 = CHASTE_MATH::Exp(-CHASTE_CONST(0.0037433890822745476) * var_chaste_interface__membrane__V); + const double var_x41 = CHASTE_MATH::Exp(CHASTE_CONST(0.01485884101040119) * mParameters[5]); + const double var_x42 = CHASTE_CONST(0.037433890822745473) * var_chaste_interface__membrane__V; + const double var_x43 = CHASTE_MATH::Exp(-var_x42); + const double var_x44 = 1 + CHASTE_CONST(0.1245) * var_x40 + CHASTE_CONST(0.036499999999999998) * var_x43 * (-CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * var_x41); + const double var_x47 = 1 / (CHASTE_CONST(1.5) + mParameters[4]); + const double var_x48 = var_x47 * mParameters[4]; + const double var_x103 = var_x13 * var_x37; + const double var_x104 = CHASTE_MATH::Pow((CHASTE_CONST(0.031622776601683791) + var_x38), (-2)); + const double var_x105 = 1 / var_x44; + const double var_x106 = var_x104 * var_x105 * var_x37 * var_x38 * var_x48; + const double var_x107 = var_x25 * var_x35 * CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Nai, 2); + + partialF = (-CHASTE_CONST(5.0952821319166834e-6) * var_x37 - CHASTE_CONST(2.768751798927894) * var_x107 - CHASTE_CONST(6.0676044384883792e-6) * var_x106 - CHASTE_CONST(0.0016436393973924784) * var_x103) * mParameters[2]; } else { @@ -2528,26 +2678,137 @@ } return partialF; } - double Dynamicwinslow_model_1999FromCellMLGRL2Opt::EvaluateYDerivative29(double var_chaste_interface__environment__time_converted, std::vector& rY) + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative29(double var_chaste_interface__environment__time_converted, std::vector& rY) { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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_intracellular_ion_concentrations__Ki_orig_deriv = 0; // 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_L_type_Ca_current__P_K = CHASTE_CONST(5.7899999999999998e-7); // cm_per_second + const double var_L_type_Ca_current__i_Ca_half = -CHASTE_CONST(0.26500000000000001); // microA_per_microF + const double var_intracellular_ion_concentrations__A_cap = CHASTE_CONST(0.00015339999999999999); // cm2 + const double var_intracellular_ion_concentrations__V_myo = CHASTE_CONST(2.584e-5); // micro_litre + const double var_membrane__F = CHASTE_CONST(96.485341500000004); // coulomb_per_millimole + const double var_membrane__R = CHASTE_CONST(8.3144720000000003); // joule_per_mole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_plateau_potassium_current__g_Kp = CHASTE_CONST(0.0022160000000000001); // milliS_per_microF + const double var_plateau_potassium_current_Kp_gate__Kp_V = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(1.2521739130434781) - CHASTE_CONST(0.16722408026755853) * var_chaste_interface__membrane__V)); // dimensionless + const double var_rapid_activating_delayed_rectifiyer_K_current__R_V = 1 / (1 + CHASTE_CONST(1.4944999999999999) * CHASTE_MATH::Exp(CHASTE_CONST(0.044600000000000001) * var_chaste_interface__membrane__V)); // dimensionless + const double var_sodium_potassium_pump__I_NaK = CHASTE_CONST(0.69299999999999995); // microA_per_microF + const double var_sodium_potassium_pump__K_mKo = CHASTE_CONST(1.5); // millimolar + const double var_sodium_potassium_pump__K_mNai = 10; // millimolar + const double var_L_type_Ca_current__i_Ca_max = 4000 * CHASTE_MATH::Pow(var_membrane__F, 2) * (CHASTE_CONST(0.001) * CHASTE_MATH::Exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - CHASTE_CONST(0.34100000000000003) * mParameters[3]) * mParameters[6] * var_chaste_interface__membrane__V / ((-1 + CHASTE_MATH::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 = CHASTE_MATH::Pow(var_membrane__F, 2) * (-mParameters[4] + var_chaste_interface__intracellular_ion_concentrations__Ki * CHASTE_MATH::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 + CHASTE_MATH::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 * CHASTE_MATH::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 = CHASTE_CONST(0.5) * CHASTE_MATH::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 * CHASTE_MATH::Log((mParameters[4] + CHASTE_CONST(0.018329999999999999) * mParameters[5]) / (var_chaste_interface__intracellular_ion_concentrations__Ki + CHASTE_CONST(0.018329999999999999) * var_chaste_interface__intracellular_ion_concentrations__Nai)) / var_membrane__F; // millivolt + const double var_slow_activating_delayed_rectifiyer_K_current__i_Ks = CHASTE_MATH::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 = -CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * CHASTE_MATH::Exp(CHASTE_CONST(0.01485884101040119) * mParameters[5]); // dimensionless + const double var_sodium_potassium_pump__f_NaK = 1 / (1 + CHASTE_CONST(0.1245) * CHASTE_MATH::Exp(-CHASTE_CONST(0.10000000000000001) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) + CHASTE_CONST(0.036499999999999998) * var_sodium_potassium_pump__sigma * CHASTE_MATH::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 + CHASTE_MATH::Pow((var_sodium_potassium_pump__K_mNai / var_chaste_interface__intracellular_ion_concentrations__Nai), CHASTE_CONST(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 + CHASTE_MATH::Exp(CHASTE_CONST(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 = CHASTE_CONST(0.001) * var_intracellular_ion_concentrations__Ki_orig_deriv; // millimolar / millisecond return d_dt_chaste_interface_var_intracellular_ion_concentrations__Ki; } - double Dynamicwinslow_model_1999FromCellMLGRL2Opt::EvaluatePartialDerivative29(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + 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 ? CHASTE_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 - - partialF = 0; + + const double var_x0 = CHASTE_MATH::Exp(CHASTE_CONST(1.2521739130434781) - CHASTE_CONST(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 = CHASTE_MATH::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 = CHASTE_MATH::Log(var_x7); + const double var_x9 = -CHASTE_CONST(26.713760659695648) * var_x8 + var_chaste_interface__membrane__V; + const double var_x14 = CHASTE_MATH::Exp(CHASTE_CONST(0.044600000000000001) * var_chaste_interface__membrane__V); + const double var_x15 = CHASTE_MATH::Sqrt(mParameters[4]); + const double var_x16 = var_x15 * mParameters[12] / (1 + CHASTE_CONST(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 = CHASTE_MATH::Exp(CHASTE_CONST(0.056150836234118207) * var_chaste_interface__membrane__V - CHASTE_CONST(1.5) * var_x8); + const double var_x20 = 1 / (13 + mParameters[4]); + const double var_x21 = var_x20 * mParameters[11]; + const double var_x22 = var_x21 / (2 + var_x19); + const double var_x42 = CHASTE_CONST(0.037433890822745473) * var_chaste_interface__membrane__V; + const double var_x50 = var_chaste_interface__L_type_Ca_current__O + var_chaste_interface__L_type_Ca_current__O_Ca; + const double var_x51 = var_x50 * var_chaste_interface__L_type_Ca_current_y_gate__y; + const double var_x52 = CHASTE_MATH::Exp(CHASTE_CONST(0.074867781645490947) * var_chaste_interface__membrane__V); + const double var_x53 = -1 + var_x52; + const double var_x54 = 1 / var_x53; + const double var_x55 = CHASTE_CONST(0.001) * var_x52 - CHASTE_CONST(0.34100000000000003) * mParameters[3]; + const double var_x56 = var_x54 * var_x55 * mParameters[6]; + const double var_x57 = var_x56 * var_chaste_interface__membrane__V; + const double var_x58 = 1 / (1 - CHASTE_CONST(54518.063995566983) * var_x57); + const double var_x59 = CHASTE_MATH::Exp(var_x42); + const double var_x60 = -1 + var_x59; + const double var_x61 = 1 / var_x60; + const double var_x72 = CHASTE_MATH::Pow((1 + CHASTE_CONST(0.5) * var_x19), (-2)); + const double var_x75 = var_x51 * var_x61 * var_chaste_interface__membrane__V; + const double var_x76 = var_x58 * var_x75; + const double var_x95 = 1 / (var_chaste_interface__intracellular_ion_concentrations__Ki + CHASTE_CONST(0.018329999999999999) * var_chaste_interface__intracellular_ion_concentrations__Nai); + const double var_x102 = var_x3 * var_x95; + const double var_x108 = var_x2 * var_x6; + const double var_x109 = var_x5 * var_x6; + const double var_x110 = var_x17 * var_x6; + const double var_x111 = var_x22 * var_x7; + const double var_x112 = var_x59 * var_x76; + + partialF = (-CHASTE_CONST(3.6423049046217326e-6) * var_x108 - CHASTE_CONST(1.28669728151281e-10) * var_x112 - CHASTE_CONST(0.00082181969869623921) * var_x110 - CHASTE_CONST(0.0016436393973924784) * var_x102 - CHASTE_CONST(0.0016436393973924784) * var_x109 - CHASTE_CONST(0.0016436393973924784) * var_x111 + CHASTE_CONST(2.3072931657732449e-5) * var_x19 * var_x20 * var_x6 * var_x72 * var_x9 * mParameters[4] * mParameters[11]) * mParameters[2]; } else { @@ -2559,98 +2820,95 @@ } return partialF; } - double Dynamicwinslow_model_1999FromCellMLGRL2Opt::EvaluateYDerivative30(double var_chaste_interface__environment__time_converted, std::vector& rY) + 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -96.1638 - double var_chaste_interface__L_type_Ca_current__O = rY[8]; + 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[9]; + 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[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[21]; + 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[22]; + double var_chaste_interface__RyR_channel__P_O2 = rY[23]; // Units: dimensionless; Initial value: 0.0 - double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[28]; - // Units: millimolar; Initial value: 8e-05 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_L_type_Ca_current__P_Ca = 0.00031250000000000001; // cm_per_second - const double var_RyR_channel__v1 = 1800.0; // per_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_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) * var_RyR_channel__v1; // millimolar_per_second + const double var_intracellular_Ca_fluxes__tau_xfer = CHASTE_CONST(0.026700000000000002); // second + const double var_intracellular_ion_concentrations__A_cap = CHASTE_CONST(0.00015339999999999999); // cm2 + const double var_intracellular_ion_concentrations__CMDN_tot = CHASTE_CONST(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.0 / (1.0 + 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.0; // kelvin - const double var_standard_ionic_concentrations__Cao = 2.0; // millimolar - const double var_L_type_Ca_current__i_Ca_max = 4000.0 * pow(var_membrane__F, 2) * (0.001 * exp(2.0 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - 0.34100000000000003 * var_standard_ionic_concentrations__Cao) * var_L_type_Ca_current__P_Ca * var_chaste_interface__membrane__V / ((-1.0 + exp(2.0 * 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_intracellular_ion_concentrations__K_mCMDN = CHASTE_CONST(0.0023800000000000002); // millimolar + const double var_intracellular_ion_concentrations__K_mEGTA = CHASTE_CONST(0.00014999999999999999); // millimolar + const double var_intracellular_ion_concentrations__V_JSR = CHASTE_CONST(1.6e-7); // micro_litre + const double var_intracellular_ion_concentrations__V_SS = CHASTE_CONST(1.2e-9); // micro_litre + const double var_intracellular_ion_concentrations__V_myo = CHASTE_CONST(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 / CHASTE_MATH::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 / CHASTE_MATH::Pow((var_chaste_interface__intracellular_ion_concentrations__Ca_ss + var_intracellular_ion_concentrations__K_mEGTA), 2)); // dimensionless + const double var_membrane__F = CHASTE_CONST(96.485341500000004); // coulomb_per_millimole + const double var_membrane__R = CHASTE_CONST(8.3144720000000003); // joule_per_mole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_L_type_Ca_current__i_Ca_max = 4000 * CHASTE_MATH::Pow(var_membrane__F, 2) * (CHASTE_CONST(0.001) * CHASTE_MATH::Exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - CHASTE_CONST(0.34100000000000003) * mParameters[3]) * mParameters[6] * var_chaste_interface__membrane__V / ((-1 + CHASTE_MATH::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 + 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 - CHASTE_CONST(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 = CHASTE_CONST(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_1999FromCellMLGRL2Opt::EvaluatePartialDerivative30(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -96.1638 - double var_chaste_interface__L_type_Ca_current__O = rY[8]; + 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[9]; + 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[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[21]; + 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[22]; + double var_chaste_interface__RyR_channel__P_O2 = rY[23]; // Units: dimensionless; Initial value: 0.0 - double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[28]; - // Units: millimolar; Initial value: 8e-05 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_x34 = var_chaste_interface__L_type_Ca_current__O + var_chaste_interface__L_type_Ca_current__O_Ca; - const double var_x35 = exp(0.074867781645490947 * var_chaste_interface__membrane__V); - const double var_x36 = -1.0 + var_x35; - const double var_x37 = 1 / var_x36; - const double var_x38 = -0.68200000000000005 + 0.001 * var_x35; - const double var_x39 = var_x37 * var_x38; - const double var_x41 = var_x39 * var_chaste_interface__membrane__V; - const double var_x65 = var_x34 * var_x41; - const double var_x202 = 2990.8119021922685 * var_chaste_interface__L_type_Ca_current_y_gate__y; - const double var_x203 = 0.0023800000000000002 + var_chaste_interface__intracellular_ion_concentrations__Ca_ss; - const double var_x204 = 1.0 + 0.00011900000000000002 / pow(var_x203, 2); - const double var_x205 = 1 / var_x204; - const double var_x206 = 0.001 * var_x205; - const double var_x210 = 240000.0 * var_chaste_interface__RyR_channel__P_O1; - const double var_x211 = 240000.0 * var_chaste_interface__RyR_channel__P_O2; - const double var_x212 = (-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); - - partialF = var_x206 * (-806491.88514357049 - var_x210 - var_x211) + 2.3800000000000004e-7 * (806491.88514357049 * var_chaste_interface__intracellular_ion_concentrations__Cai + 240000.0 * var_x212 - 806491.88514357049 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss - var_x202 * var_x65) / (pow(var_x203, 3) * pow(var_x204, 2)); + + const double var_x50 = var_chaste_interface__L_type_Ca_current__O + var_chaste_interface__L_type_Ca_current__O_Ca; + const double var_x51 = var_x50 * var_chaste_interface__L_type_Ca_current_y_gate__y; + const double var_x52 = CHASTE_MATH::Exp(CHASTE_CONST(0.074867781645490947) * var_chaste_interface__membrane__V); + const double var_x53 = -1 + var_x52; + const double var_x54 = 1 / var_x53; + const double var_x55 = CHASTE_CONST(0.001) * var_x52 - CHASTE_CONST(0.34100000000000003) * mParameters[3]; + const double var_x56 = var_x54 * var_x55 * mParameters[6]; + const double var_x57 = var_x56 * var_chaste_interface__membrane__V; + const double var_x257 = CHASTE_CONST(0.0023800000000000002) + var_chaste_interface__intracellular_ion_concentrations__Ca_ss; + const double var_x258 = 1 + CHASTE_CONST(0.00011900000000000002) / CHASTE_MATH::Pow(var_x257, 2); + const double var_x259 = 1 / var_x258; + const double var_x260 = CHASTE_CONST(0.001) * var_x259; + const double var_x265 = CHASTE_CONST(133.33333333333334) * var_chaste_interface__RyR_channel__P_O1 + CHASTE_CONST(133.33333333333334) * var_chaste_interface__RyR_channel__P_O2; + const double var_x266 = -var_chaste_interface__intracellular_ion_concentrations__Ca_ss + var_chaste_interface__intracellular_ion_concentrations__Ca_JSR; + const double var_x267 = var_chaste_interface__RyR_channel__P_O1 + var_chaste_interface__RyR_channel__P_O2; + + partialF = var_x260 * (-CHASTE_CONST(806491.88514357049) - var_x265 * mParameters[0]) + CHASTE_CONST(2.3800000000000004e-7) * (CHASTE_CONST(806491.88514357049) * var_chaste_interface__intracellular_ion_concentrations__Cai - CHASTE_CONST(806491.88514357049) * var_chaste_interface__intracellular_ion_concentrations__Ca_ss - CHASTE_CONST(9570598.0870152581) * var_x51 * var_x57 + CHASTE_CONST(133.33333333333334) * var_x266 * var_x267 * mParameters[0]) / (CHASTE_MATH::Pow(var_x257, 3) * CHASTE_MATH::Pow(var_x258, 2)); } else { @@ -2662,12 +2920,12 @@ } return partialF; } - double Dynamicwinslow_model_1999FromCellMLGRL2Opt::EvaluateYDerivative31(double var_chaste_interface__environment__time_converted, std::vector& rY) + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative31(double var_chaste_interface__environment__time_converted, std::vector& rY) { - double var_chaste_interface__RyR_channel__P_O1 = rY[21]; + 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[22]; + 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 @@ -2676,29 +2934,28 @@ double var_chaste_interface__intracellular_ion_concentrations__Ca_NSR = rY[32]; // Units: millimolar; Initial value: 0.257 - + // Mathematics - const double var_RyR_channel__v1 = 1800.0; // per_second - const double var_intracellular_Ca_fluxes__tau_tr = 0.00057470000000000004; // second - const double var_intracellular_ion_concentrations__CSQN_tot = 15.0; // millimolar + const double var_intracellular_Ca_fluxes__tau_tr = CHASTE_CONST(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) * var_RyR_channel__v1; // millimolar_per_second - const double var_intracellular_ion_concentrations__K_mCSQN = 0.80000000000000004; // millimolar - const double var_intracellular_ion_concentrations__beta_JSR = 1.0 / (1.0 + 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_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 = CHASTE_CONST(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 / CHASTE_MATH::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 d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_JSR = CHASTE_CONST(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_1999FromCellMLGRL2Opt::EvaluatePartialDerivative31(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + 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[21]; + 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[22]; + 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 @@ -2707,15 +2964,16 @@ double var_chaste_interface__intracellular_ion_concentrations__Ca_NSR = rY[32]; // Units: millimolar; Initial value: 0.257 - const double var_x212 = (-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); - const double var_x213 = 0.80000000000000004 + var_chaste_interface__intracellular_ion_concentrations__Ca_JSR; - const double var_x214 = pow(var_x213, (-2)); - const double var_x215 = 1 / (1.0 + 12.0 * var_x214); - const double var_x216 = 0.001 * var_x215; - const double var_x218 = 1800.0 * var_chaste_interface__RyR_channel__P_O1; - const double var_x219 = 1800.0 * var_chaste_interface__RyR_channel__P_O2; + + const double var_x266 = -var_chaste_interface__intracellular_ion_concentrations__Ca_ss + var_chaste_interface__intracellular_ion_concentrations__Ca_JSR; + const double var_x267 = var_chaste_interface__RyR_channel__P_O1 + var_chaste_interface__RyR_channel__P_O2; + const double var_x268 = CHASTE_CONST(0.80000000000000004) + var_chaste_interface__intracellular_ion_concentrations__Ca_JSR; + const double var_x269 = CHASTE_MATH::Pow(var_x268, (-2)); + const double var_x270 = 1 / (1 + 12 * var_x269); + const double var_x271 = CHASTE_CONST(0.001) * var_x270; + const double var_x273 = var_x267 * mParameters[0]; - partialF = var_x216 * (-1740.0382808421784 - var_x218 - var_x219) + 0.00016666666666666666 * (1740.0382808421784 * var_chaste_interface__intracellular_ion_concentrations__Ca_NSR - 1800.0 * var_x212 - 1740.0382808421784 * var_chaste_interface__intracellular_ion_concentrations__Ca_JSR) / (pow(var_x213, 3) * pow((0.083333333333333329 + var_x214), 2)); + partialF = var_x271 * (-CHASTE_CONST(1740.0382808421784) - var_x267 * mParameters[0]) + CHASTE_CONST(0.00016666666666666666) * (CHASTE_CONST(1740.0382808421784) * var_chaste_interface__intracellular_ion_concentrations__Ca_NSR - CHASTE_CONST(1740.0382808421784) * var_chaste_interface__intracellular_ion_concentrations__Ca_JSR - var_x266 * var_x273) / (CHASTE_MATH::Pow(var_x268, 3) * CHASTE_MATH::Pow((CHASTE_CONST(0.083333333333333329) + var_x269), 2)); } else { @@ -2727,56 +2985,58 @@ } return partialF; } - double Dynamicwinslow_model_1999FromCellMLGRL2Opt::EvaluateYDerivative32(double var_chaste_interface__environment__time_converted, std::vector& rY) + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative32(double var_chaste_interface__environment__time_converted, std::vector& rY) { - double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[28]; + 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_SR = 1.0; // 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.0; // 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_SERCA2a_pump__K_fb = CHASTE_CONST(0.00016799999999999999); // millimolar + const double var_SERCA2a_pump__K_rb = CHASTE_CONST(3.29); // millimolar + const double var_SERCA2a_pump__N_fb = CHASTE_CONST(1.2); // dimensionless + const double var_SERCA2a_pump__N_rb = 1; // dimensionless + const double var_SERCA2a_pump__Vmaxf = CHASTE_CONST(0.081299999999999997); // millimolar_per_second + const double var_SERCA2a_pump__Vmaxr = CHASTE_CONST(0.318); // millimolar_per_second + const double var_intracellular_Ca_fluxes__tau_tr = CHASTE_CONST(0.00057470000000000004); // second + const double var_SERCA2a_pump__rb = CHASTE_MATH::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) * var_SERCA2a_pump__K_SR / (1.0 + 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_SERCA2a_pump__fb = CHASTE_MATH::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 = CHASTE_CONST(1.6e-7); // micro_litre + const double var_intracellular_ion_concentrations__V_NSR = CHASTE_CONST(2.0999999999999998e-6); // micro_litre + const double var_intracellular_ion_concentrations__V_myo = CHASTE_CONST(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 d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_NSR = CHASTE_CONST(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_1999FromCellMLGRL2Opt::EvaluatePartialDerivative32(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + 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[28]; + 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_x194 = pow(var_chaste_interface__intracellular_ion_concentrations__Cai, 1.2); - const double var_x195 = pow(var_chaste_interface__intracellular_ion_concentrations__Ca_NSR, 1.0); - const double var_x196 = 1 / (1.0 + 33855.471141425078 * var_x194 + 0.303951367781155 * var_x195); - const double var_x199 = 2752.4498037978587 * var_x194 - 0.096656534954407292 * var_x195; - const double var_x200 = var_x199 / pow((2.9537323401073989e-5 + var_x194 + 8.9779098483507565e-6 * var_x195), 2); + + const double var_x119 = CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Cai, CHASTE_CONST(1.2)); + const double var_x120 = CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Ca_NSR, 1); + const double var_x121 = 1 / (1 + CHASTE_CONST(33855.471141425078) * var_x119 + CHASTE_CONST(0.303951367781155) * var_x120); + const double var_x122 = var_x121 * mParameters[1]; + const double var_x123 = CHASTE_MATH::Pow((CHASTE_CONST(2.9537323401073989e-5) + var_x119 + CHASTE_CONST(8.9779098483507565e-6) * var_x120), (-2)); + const double var_x124 = CHASTE_CONST(2752.4498037978587) * var_x119 - CHASTE_CONST(0.096656534954407292) * var_x120; + const double var_x126 = var_x123 * var_x124 * mParameters[1]; - partialF = -0.13257434520702313 - 0.0011893356491532784 * var_x196 - 3.2630189260961817e-12 * var_x200; + partialF = -CHASTE_CONST(0.13257434520702313) - CHASTE_CONST(0.0011893356491532784) * var_x122 - CHASTE_CONST(3.2630189260961817e-12) * var_x126; } else { @@ -2789,26 +3049,109 @@ return partialF; } - std::vector Dynamicwinslow_model_1999FromCellMLGRL2Opt::ComputeDerivedQuantities(double var_chaste_interface__environment__time_converted, const std::vector & rY) + 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 ? CHASTE_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_membrane__i_Stim_converter = GetIntracellularAreaStimulus(var_chaste_interface__environment__time_converted); // uA_per_cm2 - - std::vector dqs(2); - dqs[0] = var_chaste_interface__environment__time_converted; - dqs[1] = var_membrane__i_Stim_converter; + const double var_Na_Ca_exchanger__K_mCa = CHASTE_CONST(1.3799999999999999); // millimolar + const double var_Na_Ca_exchanger__K_mNa = CHASTE_CONST(87.5); // millimolar + const double var_Na_Ca_exchanger__K_sat = CHASTE_CONST(0.20000000000000001); // dimensionless + const double var_Na_Ca_exchanger__eta = CHASTE_CONST(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 = CHASTE_CONST(96.485341500000004); // coulomb_per_millimole + const double var_membrane__R = CHASTE_CONST(8.3144720000000003); // joule_per_mole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_L_type_Ca_current_y_gate__tau_y = CHASTE_CONST(0.02) + CHASTE_CONST(0.59999999999999998) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(2.1052631578947367) + CHASTE_CONST(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 * CHASTE_MATH::Exp(-CHASTE_CONST(11.764705882352942) + CHASTE_CONST(0.14705882352941177) * mParameters[10] - CHASTE_CONST(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 * CHASTE_MATH::Exp(CHASTE_CONST(0.079000000000000001) * var_chaste_interface__membrane__V - CHASTE_CONST(0.079000000000000001) * mParameters[10]) + 310000 * CHASTE_MATH::Exp(CHASTE_CONST(0.34999999999999998) * var_chaste_interface__membrane__V - CHASTE_CONST(0.34999999999999998) * mParameters[10])) : (CHASTE_CONST(7692.3076923076924) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.96036036036036043) + CHASTE_CONST(0.0900900900900901) * mParameters[10] - CHASTE_CONST(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 * (CHASTE_CONST(37.780000000000001) + var_chaste_interface__membrane__V) * (-127140 * CHASTE_MATH::Exp(CHASTE_CONST(0.24440000000000001) * var_chaste_interface__membrane__V - CHASTE_CONST(0.24440000000000001) * mParameters[10]) - CHASTE_CONST(3.4740000000000003e-5) * CHASTE_MATH::Exp(CHASTE_CONST(0.043909999999999998) * mParameters[10] - CHASTE_CONST(0.043909999999999998) * var_chaste_interface__membrane__V)) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(24.640530000000002) + CHASTE_CONST(0.311) * var_chaste_interface__membrane__V - CHASTE_CONST(0.311) * mParameters[10]))) : (0)); // per_second + const double var_fast_sodium_current_j_gate__beta_j = ((var_chaste_interface__membrane__V < -40) ? (CHASTE_CONST(121.2) * CHASTE_MATH::Exp(CHASTE_CONST(0.01052) * mParameters[10] - CHASTE_CONST(0.01052) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(5.5312920000000005) + CHASTE_CONST(0.13780000000000001) * mParameters[10] - CHASTE_CONST(0.13780000000000001) * var_chaste_interface__membrane__V))) : (300 * CHASTE_MATH::Exp(CHASTE_CONST(2.5349999999999999e-7) * mParameters[10] - CHASTE_CONST(2.5349999999999999e-7) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(3.2000000000000002) + CHASTE_CONST(0.10000000000000001) * mParameters[10] - CHASTE_CONST(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 = CHASTE_STIM(var_chaste_interface__environment__time_converted); // uA_per_cm2 + const double var_rapid_activating_delayed_rectifiyer_K_current__R_V = 1 / (1 + CHASTE_CONST(1.4944999999999999) * CHASTE_MATH::Exp(CHASTE_CONST(0.044600000000000001) * var_chaste_interface__membrane__V)); // dimensionless + const double var_L_type_Ca_current__i_Ca_max = 4000 * CHASTE_MATH::Pow(var_membrane__F, 2) * (CHASTE_CONST(0.001) * CHASTE_MATH::Exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - CHASTE_CONST(0.34100000000000003) * mParameters[3]) * mParameters[6] * var_chaste_interface__membrane__V / ((-1 + CHASTE_MATH::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 = CHASTE_CAP() * 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 * CHASTE_MATH::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 = CHASTE_CONST(0.5) * CHASTE_MATH::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 = CHASTE_CAP() * var_rapid_activating_delayed_rectifiyer_K_current__i_Kr; // uA_per_cm2 + const double var_Na_Ca_exchanger__i_NaCa = 5000 * (CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Nai, 3) * mParameters[3] * CHASTE_MATH::Exp(var_Na_Ca_exchanger__eta * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - CHASTE_MATH::Pow(mParameters[5], 3) * var_chaste_interface__intracellular_ion_concentrations__Cai * CHASTE_MATH::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 * CHASTE_MATH::Exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (CHASTE_MATH::Pow(var_Na_Ca_exchanger__K_mNa, 3) + CHASTE_MATH::Pow(mParameters[5], 3)) * (var_Na_Ca_exchanger__K_mCa + mParameters[3])); // microA_per_microF + const double var_Na_Ca_exchanger__i_NaCa_converted = CHASTE_CAP() * var_Na_Ca_exchanger__i_NaCa; // uA_per_cm2 + const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * CHASTE_MATH::Log(mParameters[5] / var_chaste_interface__intracellular_ion_concentrations__Nai) / var_membrane__F; // millivolt + const double var_fast_sodium_current__i_Na = CHASTE_MATH::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 = CHASTE_CAP() * 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 * CHASTE_MATH::Log((mParameters[4] + CHASTE_CONST(0.018329999999999999) * mParameters[5]) / (var_chaste_interface__intracellular_ion_concentrations__Ki + CHASTE_CONST(0.018329999999999999) * var_chaste_interface__intracellular_ion_concentrations__Nai)) / var_membrane__F; // millivolt + const double var_slow_activating_delayed_rectifiyer_K_current__i_Ks = CHASTE_MATH::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 = CHASTE_CAP() * 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 + CHASTE_MATH::Exp(CHASTE_CONST(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 = CHASTE_CAP() * 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 = CHASTE_CAP() * 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) +void OdeSystemInformation::Initialise(void) { this->mSystemName = "winslow_model_1999"; - this->mFreeVariableName = "environment__time"; + this->mFreeVariableName = "time"; this->mFreeVariableUnits = "millisecond"; // rY[0]: @@ -2817,188 +3160,294 @@ void OdeSystemInformation::Initialis this->mInitialConditions.push_back(-96.1638); // rY[1]: - this->mVariableNames.push_back("fast_sodium_current_m_gate__m"); + 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[2]: - this->mVariableNames.push_back("fast_sodium_current_h_gate__h"); + // rY[3]: + this->mVariableNames.push_back("membrane_fast_sodium_current_h_gate"); this->mVariableUnits.push_back("dimensionless"); this->mInitialConditions.push_back(0.988354); - // rY[3]: - this->mVariableNames.push_back("fast_sodium_current_j_gate__j"); + // rY[4]: + this->mVariableNames.push_back("membrane_fast_sodium_current_j_gate"); this->mVariableUnits.push_back("dimensionless"); this->mInitialConditions.push_back(0.99254); - // rY[4]: + // 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[5]: + // 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[6]: + // 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[7]: + // 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[8]: - this->mVariableNames.push_back("L_type_Ca_current__O"); + // 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[9]: - this->mVariableNames.push_back("L_type_Ca_current__O_Ca"); + // 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[10]: + // rY[11]: this->mVariableNames.push_back("L_type_Ca_current__C0"); this->mVariableUnits.push_back("dimensionless"); this->mInitialConditions.push_back(0.997208); - // rY[11]: + // rY[12]: this->mVariableNames.push_back("L_type_Ca_current__C1"); this->mVariableUnits.push_back("dimensionless"); this->mInitialConditions.push_back(6.38897e-05); - // rY[12]: + // rY[13]: this->mVariableNames.push_back("L_type_Ca_current__C2"); this->mVariableUnits.push_back("dimensionless"); this->mInitialConditions.push_back(1.535e-09); - // rY[13]: + // rY[14]: this->mVariableNames.push_back("L_type_Ca_current__C3"); this->mVariableUnits.push_back("dimensionless"); this->mInitialConditions.push_back(1.63909e-14); - // rY[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[15]: + // rY[16]: this->mVariableNames.push_back("L_type_Ca_current__C_Ca0"); this->mVariableUnits.push_back("dimensionless"); this->mInitialConditions.push_back(0.00272826); - // rY[16]: + // 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[17]: + // 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[18]: + // 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[19]: + // 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[20]: - this->mVariableNames.push_back("L_type_Ca_current_y_gate__y"); + // 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[21]: + // rY[22]: this->mVariableNames.push_back("RyR_channel__P_O1"); this->mVariableUnits.push_back("dimensionless"); this->mInitialConditions.push_back(0.0); - // rY[22]: + // rY[23]: this->mVariableNames.push_back("RyR_channel__P_O2"); this->mVariableUnits.push_back("dimensionless"); this->mInitialConditions.push_back(0.0); - // rY[23]: + // rY[24]: this->mVariableNames.push_back("RyR_channel__P_C1"); this->mVariableUnits.push_back("dimensionless"); this->mInitialConditions.push_back(0.47); - // rY[24]: + // rY[25]: this->mVariableNames.push_back("RyR_channel__P_C2"); this->mVariableUnits.push_back("dimensionless"); this->mInitialConditions.push_back(0.53); - // rY[25]: + // rY[26]: this->mVariableNames.push_back("intracellular_Ca_fluxes__HTRPNCa"); this->mVariableUnits.push_back("millimolar"); this->mInitialConditions.push_back(0.98); - // rY[26]: + // rY[27]: this->mVariableNames.push_back("intracellular_Ca_fluxes__LTRPNCa"); this->mVariableUnits.push_back("millimolar"); this->mInitialConditions.push_back(0.078); - // rY[27]: - this->mVariableNames.push_back("intracellular_ion_concentrations__Nai"); - this->mVariableUnits.push_back("millimolar"); - this->mInitialConditions.push_back(10.0); - // rY[28]: - this->mVariableNames.push_back("intracellular_ion_concentrations__Cai"); + this->mVariableNames.push_back("cytosolic_sodium_concentration"); this->mVariableUnits.push_back("millimolar"); - this->mInitialConditions.push_back(8e-05); + this->mInitialConditions.push_back(10.0); // rY[29]: - this->mVariableNames.push_back("intracellular_ion_concentrations__Ki"); + this->mVariableNames.push_back("cytosolic_potassium_concentration"); this->mVariableUnits.push_back("millimolar"); this->mInitialConditions.push_back(157.8); // rY[30]: - this->mVariableNames.push_back("intracellular_ion_concentrations__Ca_ss"); + 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("intracellular_ion_concentrations__Ca_JSR"); + this->mVariableNames.push_back("JSR_calcium_concentration"); this->mVariableUnits.push_back("millimolar"); this->mInitialConditions.push_back(0.257); // rY[32]: - this->mVariableNames.push_back("intracellular_ion_concentrations__Ca_NSR"); + 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("environment__time"); - this->mDerivedQuantityUnits.push_back("millisecond"); + 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"); - - this->mAttributes["SuggestedForwardEulerTimestep"] = 0.0001; + // 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_1999FromCellMLGRL2Opt) +CHASTE_CLASS_EXPORT(Dynamicwinslow_model_1999FromCellMLGRL2) extern "C" { AbstractCardiacCellInterface* MakeCardiacCell( boost::shared_ptr pSolver, boost::shared_ptr pStimulus) { - return new Dynamicwinslow_model_1999FromCellMLGRL2Opt(pSolver, pStimulus); + return new Dynamicwinslow_model_1999FromCellMLGRL2(pSolver, pStimulus); } -} \ No newline at end of file +} diff --git a/chaste_codegen/data/tests/chaste_reference_models/GRL2Opt/dynamic_winslow_model_1999.hpp b/chaste_codegen/data/tests/chaste_reference_models/GRL2Opt/dynamic_winslow_model_1999.hpp index 224f28d13..57fd8d110 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/GRL2Opt/dynamic_winslow_model_1999.hpp +++ b/chaste_codegen/data/tests/chaste_reference_models/GRL2Opt/dynamic_winslow_model_1999.hpp @@ -1,5 +1,5 @@ -#ifndef DYNAMICWINSLOW_MODEL_1999FROMCELLMLGRL2OPT_HPP_ -#define DYNAMICWINSLOW_MODEL_1999FROMCELLMLGRL2OPT_HPP_ +#ifndef DYNAMICWINSLOW_MODEL_1999FROMCELLMLGRL2_HPP_ +#define DYNAMICWINSLOW_MODEL_1999FROMCELLMLGRL2_HPP_ //! @file //! @@ -8,7 +8,7 @@ //! Model: winslow_model_1999 //! //! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen -//! (translator: chaste_codegen, model type: GeneralizedRushLarsenSecondOrderOpt) +//! (translator: chaste_codegen, model type: GeneralizedRushLarsenSecondOrder) //! on (date omitted as unimportant) //! //! @@ -17,9 +17,12 @@ #include #include "AbstractDynamicallyLoadableEntity.hpp" #include "AbstractStimulusFunction.hpp" +#if USING_DEVICE_COMPILER +#include "StimulusEvaluatorCuda.hpp" +#endif #include "AbstractGeneralizedRushLarsenCardiacCell.hpp" -class Dynamicwinslow_model_1999FromCellMLGRL2Opt : public AbstractGeneralizedRushLarsenCardiacCell, public AbstractDynamicallyLoadableEntity +class Dynamicwinslow_model_1999FromCellMLGRL2 : public AbstractGeneralizedRushLarsenCardiacCell, public AbstractDynamicallyLoadableEntity { friend class boost::serialization::access; template @@ -33,11 +36,17 @@ class Dynamicwinslow_model_1999FromCellMLGRL2Opt : public AbstractGeneralizedRus // Settable parameters and readable variables // + +private: +const bool is_concentration[33] = {false, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true, true, true, true}; +const bool is_probability[33] = {false, false, true, true, true, false, false, false, false, true, true, false, false, false, false, false, false, false, false, false, false, true, false, false, false, false, false, false, false, false, false, false, false}; public: boost::shared_ptr UseCellMLDefaultStimulus(); - Dynamicwinslow_model_1999FromCellMLGRL2Opt(boost::shared_ptr /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus); - ~Dynamicwinslow_model_1999FromCellMLGRL2Opt(); + double GetIntracellularCalciumConcentration(); + Dynamicwinslow_model_1999FromCellMLGRL2(boost::shared_ptr /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus); + ~Dynamicwinslow_model_1999FromCellMLGRL2(); + void VerifyStateVariables(); double GetIIonic(const std::vector* pStateVariables=NULL); void UpdateTransmembranePotential(double var_chaste_interface__environment__time_converted); void ComputeOneStepExceptVoltage(double var_chaste_interface__environment__time_converted); @@ -114,7 +123,7 @@ class Dynamicwinslow_model_1999FromCellMLGRL2Opt : public AbstractGeneralizedRus // Needs to be included last #include "SerializationExportWrapper.hpp" -CHASTE_CLASS_EXPORT(Dynamicwinslow_model_1999FromCellMLGRL2Opt) +CHASTE_CLASS_EXPORT(Dynamicwinslow_model_1999FromCellMLGRL2) namespace boost { @@ -122,7 +131,7 @@ namespace boost { template inline void save_construct_data( - Archive & ar, const Dynamicwinslow_model_1999FromCellMLGRL2Opt * t, const unsigned int fileVersion) + Archive & ar, const Dynamicwinslow_model_1999FromCellMLGRL2 * t, const unsigned int fileVersion) { const boost::shared_ptr p_solver = t->GetSolver(); const boost::shared_ptr p_stimulus = t->GetStimulusFunction(); @@ -132,17 +141,17 @@ namespace boost template inline void load_construct_data( - Archive & ar, Dynamicwinslow_model_1999FromCellMLGRL2Opt * t, const unsigned int fileVersion) + Archive & ar, Dynamicwinslow_model_1999FromCellMLGRL2 * t, const unsigned int fileVersion) { boost::shared_ptr p_solver; boost::shared_ptr p_stimulus; ar >> p_solver; ar >> p_stimulus; - ::new(t)Dynamicwinslow_model_1999FromCellMLGRL2Opt(p_solver, p_stimulus); + ::new(t)Dynamicwinslow_model_1999FromCellMLGRL2(p_solver, p_stimulus); } } } -#endif // DYNAMICWINSLOW_MODEL_1999FROMCELLMLGRL2OPT_HPP_ \ No newline at end of file +#endif // DYNAMICWINSLOW_MODEL_1999FROMCELLMLGRL2_HPP_ \ No newline at end of file diff --git a/chaste_codegen/data/tests/chaste_reference_models/GRL2Opt/hodgkin_huxley_squid_axon_model_1952_modified.cpp b/chaste_codegen/data/tests/chaste_reference_models/GRL2Opt/hodgkin_huxley_squid_axon_model_1952_modified.cpp index b5ce43475..73d979ee2 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/GRL2Opt/hodgkin_huxley_squid_axon_model_1952_modified.cpp +++ b/chaste_codegen/data/tests/chaste_reference_models/GRL2Opt/hodgkin_huxley_squid_axon_model_1952_modified.cpp @@ -21,6 +21,8 @@ #include "HeartConfig.hpp" #include "IsNan.hpp" #include "MathsCustomFunctions.hpp" +#include "ChasteMathDeviceNamespaces.hpp" +#include "ChasteCpuMacros.hpp" @@ -143,7 +145,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 (((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)))); + return (((CHASTE_CONST(6.5) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V >= -CHASTE_CONST(9.9999999999999995e-8)) && (CHASTE_CONST(6.5) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V <= CHASTE_CONST(9.9999999999999995e-8))) ? (CHASTE_CONST(0.42499999999999999) + CHASTE_CONST(0.0050000000000000001) * var_chaste_interface__membrane__V) : (-CHASTE_CONST(0.099999999999999992) * (CHASTE_CONST(6.5) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(6.5) - CHASTE_CONST(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); @@ -165,7 +167,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 exp(0.9375 + 0.012500000000000001 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(CHASTE_CONST(0.9375) + CHASTE_CONST(0.012500000000000001) * 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); @@ -176,7 +178,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 exp(-3.75 - 0.050000000000000003 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(-CHASTE_CONST(3.75) - CHASTE_CONST(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); @@ -187,7 +189,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 + CHASTE_MATH::Exp(-CHASTE_CONST(4.5) - CHASTE_CONST(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 +200,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 (((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)))); + return (((5 + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V >= -CHASTE_CONST(9.9999999999999995e-8)) && (5 + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V <= CHASTE_CONST(9.9999999999999995e-8))) ? (CHASTE_CONST(3.5) + CHASTE_CONST(0.050000000000000003) * var_chaste_interface__membrane__V) : (-(5 + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V) / (-1 + CHASTE_MATH::Exp(-5 - CHASTE_CONST(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); @@ -220,7 +222,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 exp(-4.166666666666667 - 0.055555555555555552 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(-CHASTE_CONST(4.166666666666667) - CHASTE_CONST(0.055555555555555552) * 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); @@ -254,7 +256,7 @@ std::shared_ptr p_cellml_stim(new RegularStimulus( @@ -283,7 +285,7 @@ std::shared_ptrmParameters[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[2] = CHASTE_CONST(0.29999999999999999); // (var_leakage_current__g_L) [milliS_per_cm2] this->mParameters[3] = 36; // (var_potassium_channel__g_K) [milliS_per_cm2] } @@ -335,7 +337,7 @@ std::shared_ptr& rY = *pStateVariables; - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -345,9 +347,9 @@ std::shared_ptrmFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -375,7 +377,7 @@ std::shared_ptrmFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -431,8 +433,8 @@ std::shared_ptr& rY) { double d_dt_chaste_interface_var_membrane__V; - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -522,7 +524,7 @@ std::shared_ptr& rY) { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -584,7 +586,7 @@ std::shared_ptrmUseAnalyticJacobian) { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -75.0 @@ -597,15 +599,15 @@ std::shared_ptrIndexTable0(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_x4 = CHASTE_CONST(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_x6 = (var_x5 >= -CHASTE_CONST(9.9999999999999995e-8)) && (var_x5 <= CHASTE_CONST(9.9999999999999995e-8)); + const double var_x7 = CHASTE_MATH::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_x6) ? (-3.5 - var_x11 - 0.050000000000000003 * var_chaste_interface__membrane__V) : (-var_x11 + var_x5 * var_x9)); + partialF = ((var_x6) ? (-CHASTE_CONST(3.5) - var_x11 - CHASTE_CONST(0.050000000000000003) * var_chaste_interface__membrane__V) : (-var_x11 + var_x5 * var_x9)); } else { @@ -620,7 +622,7 @@ std::shared_ptr& rY) { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -75.0 double var_chaste_interface__sodium_channel_h_gate__h = rY[2]; // Units: dimensionless; Initial value: 0.6 @@ -635,7 +637,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 = CHASTE_CONST(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 return d_dt_chaste_interface_var_sodium_channel_h_gate__h; } @@ -645,7 +647,7 @@ std::shared_ptrmUseAnalyticJacobian) { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -75.0 @@ -658,10 +660,10 @@ std::shared_ptrIndexTable0(var_chaste_interface__membrane__V); 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_x13 = CHASTE_MATH::Exp(-CHASTE_CONST(4.5) - CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V); const double var_x14 = 1 + var_x13; - partialF = -1 / var_x14 - 0.070000000000000007 * var_x12; + partialF = -1 / var_x14 - CHASTE_CONST(0.070000000000000007) * var_x12; } else { @@ -676,7 +678,7 @@ std::shared_ptr& rY) { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -75.0 double var_chaste_interface__potassium_channel_n_gate__n = rY[3]; // Units: dimensionless; Initial value: 0.325 @@ -691,7 +693,7 @@ std::shared_ptrIndexTable0(var_chaste_interface__membrane__V); // Mathematics - 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_potassium_channel_n_gate__n = (1 - var_chaste_interface__potassium_channel_n_gate__n) * _lt_0_row[0] - CHASTE_CONST(0.125) * var_chaste_interface__potassium_channel_n_gate__n * _lt_0_row[1]; // 1 / millisecond return d_dt_chaste_interface_var_potassium_channel_n_gate__n; } @@ -701,7 +703,7 @@ std::shared_ptrmUseAnalyticJacobian) { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: millivolt; Initial value: -75.0 @@ -713,16 +715,16 @@ std::shared_ptrIndexTable0(var_chaste_interface__membrane__V); - const double var_x4 = 0.10000000000000001 * var_chaste_interface__membrane__V; + const double var_x4 = CHASTE_CONST(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_x17 = CHASTE_CONST(6.5) + var_x4; + const double var_x18 = (var_x17 >= -CHASTE_CONST(9.9999999999999995e-8)) && (var_x17 <= CHASTE_CONST(9.9999999999999995e-8)); + const double var_x19 = CHASTE_MATH::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; + const double var_x23 = CHASTE_CONST(0.125) * var_x15; - partialF = ((var_x18) ? (-0.42499999999999999 - var_x23 - 0.0050000000000000001 * var_chaste_interface__membrane__V) : (-var_x23 + 0.099999999999999992 * var_x17 * var_x21)); + partialF = ((var_x18) ? (-CHASTE_CONST(0.42499999999999999) - var_x23 - CHASTE_CONST(0.0050000000000000001) * var_chaste_interface__membrane__V) : (-var_x23 + CHASTE_CONST(0.099999999999999992) * var_x17 * var_x21)); } else { @@ -739,7 +741,7 @@ std::shared_ptrmFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -751,13 +753,13 @@ std::shared_ptr dqs(5); dqs[0] = var_sodium_channel__i_Na; diff --git a/chaste_codegen/data/tests/chaste_reference_models/GRL2Opt/hodgkin_huxley_squid_axon_model_1952_modified.hpp b/chaste_codegen/data/tests/chaste_reference_models/GRL2Opt/hodgkin_huxley_squid_axon_model_1952_modified.hpp index 119bf02a5..897980249 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/GRL2Opt/hodgkin_huxley_squid_axon_model_1952_modified.hpp +++ b/chaste_codegen/data/tests/chaste_reference_models/GRL2Opt/hodgkin_huxley_squid_axon_model_1952_modified.hpp @@ -16,6 +16,9 @@ #include "ChasteSerialization.hpp" #include #include "AbstractStimulusFunction.hpp" +#if USING_DEVICE_COMPILER +#include "StimulusEvaluatorCuda.hpp" +#endif #include "AbstractGeneralizedRushLarsenCardiacCell.hpp" class Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLGRL2Opt : public AbstractGeneralizedRushLarsenCardiacCell diff --git a/chaste_codegen/data/tests/chaste_reference_models/Normal/fox_mcharg_gilmour_2002_console_script.cpp b/chaste_codegen/data/tests/chaste_reference_models/Normal/fox_mcharg_gilmour_2002_console_script.cpp index 0bfa64612..affe9bade 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/Normal/fox_mcharg_gilmour_2002_console_script.cpp +++ b/chaste_codegen/data/tests/chaste_reference_models/Normal/fox_mcharg_gilmour_2002_console_script.cpp @@ -21,6 +21,8 @@ #include "HeartConfig.hpp" #include "IsNan.hpp" #include "MathsCustomFunctions.hpp" +#include "ChasteMathDeviceNamespaces.hpp" +#include "ChasteCpuMacros.hpp" @@ -29,7 +31,7 @@ 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_amplitude_converted = -80 * CHASTE_CAP(); // 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 @@ -61,24 +63,24 @@ // 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[0] = CHASTE_CONST(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[2] = CHASTE_CONST(0.10000000000000001); // (var_calcium_dynamics__V_up) [micromolar_per_millisecond] + this->mParameters[3] = CHASTE_CONST(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[8] = CHASTE_CONST(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[10] = CHASTE_CONST(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[13] = CHASTE_CONST(2.7999999999999998); // (var_time_independent_potassium_current__g_K1) [milliS_per_microF] + this->mParameters[14] = CHASTE_CONST(0.013599999999999999); // (var_rapid_activating_delayed_rectifiyer_K_current__g_Kr) [milliS_per_microF] + this->mParameters[15] = CHASTE_CONST(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] + this->mParameters[17] = CHASTE_CONST(0.23815); // (var_transient_outward_potassium_current__g_to) [milliS_per_microF] } Cellfox_mcharg_gilmour_2002FromCellML::~Cellfox_mcharg_gilmour_2002FromCellML() @@ -125,7 +127,7 @@ // 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -151,56 +153,56 @@ // 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_L_type_Ca_current__P_CaK = CHASTE_CONST(5.7899999999999998e-7); // cm_per_millisecond + const double var_L_type_Ca_current__i_Ca_half = -CHASTE_CONST(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_Na_Ca_exchanger__K_mNa = CHASTE_CONST(87.5); // millimolar + const double var_Na_Ca_exchanger__K_sat = CHASTE_CONST(0.20000000000000001); // dimensionless + const double var_Na_Ca_exchanger__eta = CHASTE_CONST(0.34999999999999998); // dimensionless + const double var_calcium_background_current__g_Cab = CHASTE_CONST(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__F = CHASTE_CONST(96.5); // coulomb_per_millimole + const double var_membrane__R = CHASTE_CONST(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_plateau_potassium_current__g_Kp = CHASTE_CONST(0.0022160000000000001); // milliS_per_microF + const double var_plateau_potassium_current_Kp_gate__Kp_V = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(1.2521739130434781) - CHASTE_CONST(0.16722408026755853) * var_chaste_interface__membrane__V)); // dimensionless + const double var_rapid_activating_delayed_rectifiyer_K_current__R_V = 1 / (1 + CHASTE_CONST(2.5) * CHASTE_MATH::Exp(CHASTE_CONST(2.8000000000000003) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V)); // dimensionless + const double var_sarcolemmal_calcium_pump__K_mpCa = CHASTE_CONST(0.050000000000000003); // micromolar + const double var_sarcolemmal_calcium_pump__i_pCa_max = CHASTE_CONST(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_background_current__g_Nab = CHASTE_CONST(0.0030999999999999999); // milliS_per_microF + const double var_sodium_potassium_pump__K_mKo = CHASTE_CONST(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_sodium_potassium_pump__i_NaK_max = CHASTE_CONST(0.69299999999999995); // microA_per_microF + const double var_L_type_Ca_current__i_Ca_max = 4 * CHASTE_MATH::Pow(var_membrane__F, 2) * (-CHASTE_CONST(0.34100000000000003) * mParameters[5] + var_calcium_dynamics__Ca_i * CHASTE_MATH::Exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[8] * var_chaste_interface__membrane__V / ((-1 + CHASTE_MATH::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_L_type_Ca_current__i_Ca_converted = CHASTE_CAP() * var_L_type_Ca_current__i_Ca; // uA_per_cm2 + const double var_calcium_background_current__E_Ca = CHASTE_CONST(0.5) * var_membrane__R * var_membrane__T * CHASTE_MATH::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_L_type_Ca_current__i_CaK = 1000 * CHASTE_MATH::Pow(var_membrane__F, 2) * (-mParameters[6] + mParameters[3] * CHASTE_MATH::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 + CHASTE_MATH::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 * CHASTE_MATH::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((mParameters[6] + 0.018329999999999999 * mParameters[7]) / (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_rapid_activating_delayed_rectifiyer_K_current__i_Kr = CHASTE_CONST(0.5) * CHASTE_MATH::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 = CHASTE_CAP() * var_rapid_activating_delayed_rectifiyer_K_current__i_Kr; // uA_per_cm2 + const double var_Na_Ca_exchanger__i_NaCa = (CHASTE_MATH::Pow(mParameters[4], 3) * mParameters[5] * CHASTE_MATH::Exp(var_Na_Ca_exchanger__eta * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - CHASTE_MATH::Pow(mParameters[7], 3) * var_calcium_dynamics__Ca_i * CHASTE_MATH::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 * CHASTE_MATH::Exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (CHASTE_MATH::Pow(var_Na_Ca_exchanger__K_mNa, 3) + CHASTE_MATH::Pow(mParameters[7], 3)) * (var_Na_Ca_exchanger__K_mCa + mParameters[5])); // microA_per_microF + const double var_Na_Ca_exchanger__i_NaCa_converted = CHASTE_CAP() * var_Na_Ca_exchanger__i_NaCa; // uA_per_cm2 + const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * CHASTE_MATH::Log(mParameters[7] / mParameters[4]) / var_membrane__F; // millivolt + const double var_fast_sodium_current__i_Na = CHASTE_MATH::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 = CHASTE_CAP() * 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 * CHASTE_MATH::Log((mParameters[6] + CHASTE_CONST(0.018329999999999999) * mParameters[7]) / (mParameters[3] + CHASTE_CONST(0.018329999999999999) * mParameters[4])) / var_membrane__F; // millivolt + const double var_slow_activating_delayed_rectifiyer_K_current__i_Ks = CHASTE_MATH::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 = CHASTE_CAP() * 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_sodium_potassium_pump__sigma = -CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * CHASTE_MATH::Exp(CHASTE_CONST(0.01485884101040119) * mParameters[7]); // dimensionless + const double var_sodium_potassium_pump__f_NaK = 1 / (1 + CHASTE_CONST(0.1245) * CHASTE_MATH::Exp(-CHASTE_CONST(0.10000000000000001) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) + CHASTE_CONST(0.036499999999999998) * var_sodium_potassium_pump__sigma * CHASTE_MATH::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 + CHASTE_MATH::Pow((var_sodium_potassium_pump__K_mNai / mParameters[4]), CHASTE_CONST(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_K1_gate__K1_infinity = 1 / (2 + CHASTE_MATH::Exp(CHASTE_CONST(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_time_independent_potassium_current__i_K1_converted = CHASTE_CAP() * 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 var_transient_outward_potassium_current__i_to_converted = CHASTE_CAP() * var_transient_outward_potassium_current__i_to; // uA_per_cm2 + const double var_chaste_interface__i_ionic = CHASTE_CAP() * var_L_type_Ca_current__i_CaK + CHASTE_CAP() * var_calcium_background_current__i_Ca_b + CHASTE_CAP() * var_plateau_potassium_current__i_Kp + CHASTE_CAP() * var_sarcolemmal_calcium_pump__i_p_Ca + CHASTE_CAP() * var_sodium_background_current__i_Na_b + CHASTE_CAP() * 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)); @@ -211,7 +213,7 @@ { // Inputs: // Time units: millisecond - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -241,75 +243,75 @@ // 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_L_type_Ca_current_f_Ca_gate__K_mfCa = CHASTE_CONST(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_Na_Ca_exchanger__K_mNa = CHASTE_CONST(87.5); // millimolar + const double var_Na_Ca_exchanger__K_sat = CHASTE_CONST(0.20000000000000001); // dimensionless + const double var_Na_Ca_exchanger__eta = CHASTE_CONST(0.34999999999999998); // dimensionless + const double var_calcium_background_current__g_Cab = CHASTE_CONST(0.00038420000000000001); // milliS_per_microF + const double var_calcium_dynamics__A_Cap = CHASTE_CONST(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 var_L_type_Ca_current_f_Ca_gate__f_Ca_infinity = 1 / (1 + CHASTE_MATH::Pow(var_calcium_dynamics__Ca_i, 3) / CHASTE_MATH::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__K_mup = CHASTE_CONST(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_calcium_dynamics__V_SR = CHASTE_CONST(1.9999999999999999e-6); // microlitre + const double var_calcium_dynamics__V_myo = CHASTE_CONST(2.584e-5); // microlitre + const double var_calcium_dynamics__J_up = mParameters[2] / (1 + CHASTE_MATH::Pow(var_calcium_dynamics__K_mup, 2) / CHASTE_MATH::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 / CHASTE_MATH::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 / CHASTE_MATH::Pow((var_calcium_dynamics__Ca_i + var_calcium_dynamics__K_mCMDN), 2)); // dimensionless + const double var_calcium_dynamics__gamma = 1 / (1 + CHASTE_CONST(8000000000.0) / CHASTE_MATH::Pow(var_chaste_interface__calcium_dynamics__Ca_SR, 3)); // dimensionless + const double var_membrane__F = CHASTE_CONST(96.5); // coulomb_per_millimole + const double var_membrane__R = CHASTE_CONST(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 var_L_type_Ca_current_d_gate__d_infinity = 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(1.6025641025641024) - CHASTE_CONST(0.16025641025641024) * var_chaste_interface__membrane__V)); // dimensionless + const double var_L_type_Ca_current_d_gate__tau_d = 1 / (CHASTE_CONST(0.25) * CHASTE_MATH::Exp(-CHASTE_CONST(0.01) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.070000000000000007) * var_chaste_interface__membrane__V)) + CHASTE_CONST(0.070000000000000007) * CHASTE_MATH::Exp(-CHASTE_CONST(0.050000000000000003) * var_L_type_Ca_current_d_gate__E0_m) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(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 var_L_type_Ca_current_f_gate__f_infinity = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(2.5) + CHASTE_CONST(0.20000000000000001) * var_chaste_interface__membrane__V)); // dimensionless + const double var_L_type_Ca_current_f_gate__tau_f = 30 + 200 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(2.1052631578947367) + CHASTE_CONST(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 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 + CHASTE_CONST(1.6499999999999999) * CHASTE_MATH::Exp(CHASTE_CONST(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__alpha_h = CHASTE_CONST(0.13500000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(11.764705882352942) + CHASTE_CONST(0.14705882352941177) * mParameters[12] - CHASTE_CONST(0.14705882352941177) * var_chaste_interface__membrane__V); // per_millisecond + const double var_fast_sodium_current_h_gate__beta_h = CHASTE_CONST(7.5) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(1.1000000000000001) + CHASTE_CONST(0.10000000000000001) * mParameters[12] - CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V)); // per_millisecond + const double var_fast_sodium_current_h_gate__h_inf = CHASTE_CONST(0.01) * mParameters[11] + (1 - CHASTE_CONST(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__alpha_j = CHASTE_CONST(0.17499999999999999) * CHASTE_MATH::Exp(-CHASTE_CONST(4.3478260869565215) + CHASTE_CONST(0.043478260869565216) * mParameters[12] - CHASTE_CONST(0.043478260869565216) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(11.85) + CHASTE_CONST(0.14999999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.14999999999999999) * mParameters[12])); // per_millisecond + const double var_fast_sodium_current_j_gate__beta_j = CHASTE_CONST(0.29999999999999999) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(3.2000000000000002) + CHASTE_CONST(0.10000000000000001) * mParameters[12] - CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V)); // per_millisecond + const double var_fast_sodium_current_j_gate__j_inf = CHASTE_CONST(0.01) * mParameters[11] + (1 - CHASTE_CONST(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 var_fast_sodium_current_m_gate__E0_m = CHASTE_CONST(47.130000000000003) + var_chaste_interface__membrane__V; // millivolt + const double var_fast_sodium_current_m_gate__alpha_m = CHASTE_CONST(0.32000000000000001) * var_fast_sodium_current_m_gate__E0_m / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(0.10000000000000001) * var_fast_sodium_current_m_gate__E0_m)); // per_millisecond + const double var_fast_sodium_current_m_gate__beta_m = CHASTE_CONST(0.080000000000000002) * CHASTE_MATH::Exp(-CHASTE_CONST(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 var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr_inf = 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.1819999999999999) - CHASTE_CONST(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 / (CHASTE_MATH::Exp(-CHASTE_CONST(7.6769999999999996) - CHASTE_CONST(0.012800000000000001) * var_chaste_interface__membrane__V) + CHASTE_MATH::Exp(-CHASTE_CONST(5.4950000000000001) + CHASTE_CONST(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__K_mpCa = CHASTE_CONST(0.050000000000000003); // micromolar + const double var_sarcolemmal_calcium_pump__i_pCa_max = CHASTE_CONST(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 var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks_infinity = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(1.1764705882352942) - CHASTE_CONST(0.073529411764705885) * var_chaste_interface__membrane__V)); // dimensionless + const double var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__tau_X_ks = 1 / (CHASTE_CONST(0.00013100000000000001) * (-10 + var_chaste_interface__membrane__V) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.68699999999999994) + CHASTE_CONST(0.068699999999999997) * var_chaste_interface__membrane__V)) + CHASTE_CONST(7.1899999999999999e-5) * (-10 + var_chaste_interface__membrane__V) / (1 - CHASTE_MATH::Exp(CHASTE_CONST(1.48) - CHASTE_CONST(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_max = 4 * CHASTE_MATH::Pow(var_membrane__F, 2) * (-CHASTE_CONST(0.34100000000000003) * mParameters[5] + var_calcium_dynamics__Ca_i * CHASTE_MATH::Exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[8] * var_chaste_interface__membrane__V / ((-1 + CHASTE_MATH::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__E_Ca = CHASTE_CONST(0.5) * var_membrane__R * var_membrane__T * CHASTE_MATH::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 var_Na_Ca_exchanger__i_NaCa = (CHASTE_MATH::Pow(mParameters[4], 3) * mParameters[5] * CHASTE_MATH::Exp(var_Na_Ca_exchanger__eta * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - CHASTE_MATH::Pow(mParameters[7], 3) * var_calcium_dynamics__Ca_i * CHASTE_MATH::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 * CHASTE_MATH::Exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (CHASTE_MATH::Pow(var_Na_Ca_exchanger__K_mNa, 3) + CHASTE_MATH::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 - CHASTE_CONST(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 = CHASTE_CONST(0.001) * var_calcium_dynamics__Ca_i_orig_deriv; // millimolar / millisecond + const double var_transient_outward_potassium_current_X_to_gate__alpha_X_to = CHASTE_CONST(0.045159999999999999) * CHASTE_MATH::Exp(CHASTE_CONST(0.035770000000000003) * var_chaste_interface__membrane__V); // per_millisecond + const double var_transient_outward_potassium_current_X_to_gate__beta_X_to = CHASTE_CONST(0.098900000000000002) * CHASTE_MATH::Exp(-CHASTE_CONST(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 var_transient_outward_potassium_current_Y_to_gate__alpha_Y_to = CHASTE_CONST(0.0054149999999999997) * CHASTE_MATH::Exp(-CHASTE_CONST(6.7000000000000002) - CHASTE_CONST(0.20000000000000001) * var_chaste_interface__membrane__V) / (1 + CHASTE_CONST(0.051334999999999999) * CHASTE_MATH::Exp(-CHASTE_CONST(6.7000000000000002) - CHASTE_CONST(0.20000000000000001) * var_chaste_interface__membrane__V)); // per_millisecond + const double var_transient_outward_potassium_current_Y_to_gate__beta_Y_to = CHASTE_CONST(0.0054149999999999997) * CHASTE_MATH::Exp(CHASTE_CONST(6.7000000000000002) + CHASTE_CONST(0.20000000000000001) * var_chaste_interface__membrane__V) / (1 + CHASTE_CONST(0.051334999999999999) * CHASTE_MATH::Exp(CHASTE_CONST(6.7000000000000002) + CHASTE_CONST(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) @@ -318,31 +320,31 @@ } 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_L_type_Ca_current__P_CaK = CHASTE_CONST(5.7899999999999998e-7); // cm_per_millisecond + const double var_L_type_Ca_current__i_Ca_half = -CHASTE_CONST(0.26500000000000001); // microA_per_microF + const double var_membrane__i_Stim_converted = CHASTE_STIM(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_membrane__i_Stim = var_membrane__i_Stim_converted / CHASTE_CAP(); // microA_per_microF + const double var_plateau_potassium_current__g_Kp = CHASTE_CONST(0.0022160000000000001); // milliS_per_microF + const double var_plateau_potassium_current_Kp_gate__Kp_V = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(1.2521739130434781) - CHASTE_CONST(0.16722408026755853) * var_chaste_interface__membrane__V)); // dimensionless + const double var_rapid_activating_delayed_rectifiyer_K_current__R_V = 1 / (1 + CHASTE_CONST(2.5) * CHASTE_MATH::Exp(CHASTE_CONST(2.8000000000000003) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V)); // dimensionless + const double var_sodium_background_current__g_Nab = CHASTE_CONST(0.0030999999999999999); // milliS_per_microF + const double var_sodium_potassium_pump__K_mKo = CHASTE_CONST(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_sodium_potassium_pump__i_NaK_max = CHASTE_CONST(0.69299999999999995); // microA_per_microF + const double var_L_type_Ca_current__i_CaK = 1000 * CHASTE_MATH::Pow(var_membrane__F, 2) * (-mParameters[6] + mParameters[3] * CHASTE_MATH::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 + CHASTE_MATH::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 * CHASTE_MATH::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((mParameters[6] + 0.018329999999999999 * mParameters[7]) / (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_rapid_activating_delayed_rectifiyer_K_current__i_Kr = CHASTE_CONST(0.5) * CHASTE_MATH::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 * CHASTE_MATH::Log(mParameters[7] / mParameters[4]) / var_membrane__F; // millivolt + const double var_fast_sodium_current__i_Na = CHASTE_MATH::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 * CHASTE_MATH::Log((mParameters[6] + CHASTE_CONST(0.018329999999999999) * mParameters[7]) / (mParameters[3] + CHASTE_CONST(0.018329999999999999) * mParameters[4])) / var_membrane__F; // millivolt + const double var_slow_activating_delayed_rectifiyer_K_current__i_Ks = CHASTE_MATH::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_sodium_potassium_pump__sigma = -CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * CHASTE_MATH::Exp(CHASTE_CONST(0.01485884101040119) * mParameters[7]); // dimensionless + const double var_sodium_potassium_pump__f_NaK = 1 / (1 + CHASTE_CONST(0.1245) * CHASTE_MATH::Exp(-CHASTE_CONST(0.10000000000000001) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) + CHASTE_CONST(0.036499999999999998) * var_sodium_potassium_pump__sigma * CHASTE_MATH::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 + CHASTE_MATH::Pow((var_sodium_potassium_pump__K_mNai / mParameters[4]), CHASTE_CONST(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_K1_gate__K1_infinity = 1 / (2 + CHASTE_MATH::Exp(CHASTE_CONST(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 @@ -367,7 +369,7 @@ { // Inputs: // Time units: millisecond - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -397,44 +399,44 @@ // 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_Na_Ca_exchanger__K_mNa = CHASTE_CONST(87.5); // millimolar + const double var_Na_Ca_exchanger__K_sat = CHASTE_CONST(0.20000000000000001); // dimensionless + const double var_Na_Ca_exchanger__eta = CHASTE_CONST(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_calcium_dynamics__gamma = 1 / (1 + CHASTE_CONST(8000000000.0) / CHASTE_MATH::Pow(var_chaste_interface__calcium_dynamics__Ca_SR, 3)); // dimensionless + const double var_membrane__F = CHASTE_CONST(96.5); // coulomb_per_millimole + const double var_membrane__R = CHASTE_CONST(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_L_type_Ca_current_f_gate__tau_f = 30 + 200 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(2.1052631578947367) + CHASTE_CONST(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 + CHASTE_CONST(1.6499999999999999) * CHASTE_MATH::Exp(CHASTE_CONST(0.050000000000000003) * var_chaste_interface__membrane__V)); // micromolar_per_millisecond + const double var_fast_sodium_current_h_gate__alpha_h = CHASTE_CONST(0.13500000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(11.764705882352942) + CHASTE_CONST(0.14705882352941177) * mParameters[12] - CHASTE_CONST(0.14705882352941177) * var_chaste_interface__membrane__V); // per_millisecond + const double var_fast_sodium_current_h_gate__beta_h = CHASTE_CONST(7.5) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(1.1000000000000001) + CHASTE_CONST(0.10000000000000001) * mParameters[12] - CHASTE_CONST(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__alpha_j = CHASTE_CONST(0.17499999999999999) * CHASTE_MATH::Exp(-CHASTE_CONST(4.3478260869565215) + CHASTE_CONST(0.043478260869565216) * mParameters[12] - CHASTE_CONST(0.043478260869565216) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(11.85) + CHASTE_CONST(0.14999999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.14999999999999999) * mParameters[12])); // per_millisecond + const double var_fast_sodium_current_j_gate__beta_j = CHASTE_CONST(0.29999999999999999) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(3.2000000000000002) + CHASTE_CONST(0.10000000000000001) * mParameters[12] - CHASTE_CONST(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_membrane__i_Stim_converted = CHASTE_STIM(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_rapid_activating_delayed_rectifiyer_K_current__R_V = 1 / (1 + CHASTE_CONST(2.5) * CHASTE_MATH::Exp(CHASTE_CONST(2.8000000000000003) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V)); // dimensionless + const double var_L_type_Ca_current__i_Ca_max = 4 * CHASTE_MATH::Pow(var_membrane__F, 2) * (-CHASTE_CONST(0.34100000000000003) * mParameters[5] + var_calcium_dynamics__Ca_i * CHASTE_MATH::Exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[8] * var_chaste_interface__membrane__V / ((-1 + CHASTE_MATH::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((mParameters[6] + 0.018329999999999999 * mParameters[7]) / (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_L_type_Ca_current__i_Ca_converted = CHASTE_CAP() * 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 * CHASTE_MATH::Log(mParameters[6] / mParameters[3]) / var_membrane__F; // millivolt + const double var_rapid_activating_delayed_rectifiyer_K_current__i_Kr = CHASTE_CONST(0.5) * CHASTE_MATH::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 = CHASTE_CAP() * var_rapid_activating_delayed_rectifiyer_K_current__i_Kr; // uA_per_cm2 + const double var_Na_Ca_exchanger__i_NaCa = (CHASTE_MATH::Pow(mParameters[4], 3) * mParameters[5] * CHASTE_MATH::Exp(var_Na_Ca_exchanger__eta * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - CHASTE_MATH::Pow(mParameters[7], 3) * var_calcium_dynamics__Ca_i * CHASTE_MATH::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 * CHASTE_MATH::Exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (CHASTE_MATH::Pow(var_Na_Ca_exchanger__K_mNa, 3) + CHASTE_MATH::Pow(mParameters[7], 3)) * (var_Na_Ca_exchanger__K_mCa + mParameters[5])); // microA_per_microF + const double var_Na_Ca_exchanger__i_NaCa_converted = CHASTE_CAP() * var_Na_Ca_exchanger__i_NaCa; // uA_per_cm2 + const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * CHASTE_MATH::Log(mParameters[7] / mParameters[4]) / var_membrane__F; // millivolt + const double var_fast_sodium_current__i_Na = CHASTE_MATH::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 = CHASTE_CAP() * 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 * CHASTE_MATH::Log((mParameters[6] + CHASTE_CONST(0.018329999999999999) * mParameters[7]) / (mParameters[3] + CHASTE_CONST(0.018329999999999999) * mParameters[4])) / var_membrane__F; // millivolt + const double var_slow_activating_delayed_rectifiyer_K_current__i_Ks = CHASTE_MATH::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 = CHASTE_CAP() * 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_K1_gate__K1_infinity = 1 / (2 + CHASTE_MATH::Exp(CHASTE_CONST(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_time_independent_potassium_current__i_K1_converted = CHASTE_CAP() * 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_transient_outward_potassium_current__i_to_converted = CHASTE_CAP() * var_transient_outward_potassium_current__i_to; // uA_per_cm2 std::vector dqs(14); dqs[0] = var_calcium_dynamics__J_rel; diff --git a/chaste_codegen/data/tests/chaste_reference_models/Normal/fox_mcharg_gilmour_2002_console_script.hpp b/chaste_codegen/data/tests/chaste_reference_models/Normal/fox_mcharg_gilmour_2002_console_script.hpp index 2bacd16da..b9ee5843b 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/Normal/fox_mcharg_gilmour_2002_console_script.hpp +++ b/chaste_codegen/data/tests/chaste_reference_models/Normal/fox_mcharg_gilmour_2002_console_script.hpp @@ -16,6 +16,9 @@ #include "ChasteSerialization.hpp" #include #include "AbstractStimulusFunction.hpp" +#if USING_DEVICE_COMPILER +#include "StimulusEvaluatorCuda.hpp" +#endif #include "AbstractCardiacCell.hpp" class Cellfox_mcharg_gilmour_2002FromCellML : public AbstractCardiacCell diff --git a/chaste_codegen/data/tests/chaste_reference_models/Normal/luo_rudy_1994.cpp b/chaste_codegen/data/tests/chaste_reference_models/Normal/luo_rudy_1994.cpp index 447bcdcb9..fc39b7a84 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/Normal/luo_rudy_1994.cpp +++ b/chaste_codegen/data/tests/chaste_reference_models/Normal/luo_rudy_1994.cpp @@ -21,6 +21,8 @@ #include "HeartConfig.hpp" #include "IsNan.hpp" #include "MathsCustomFunctions.hpp" +#include "ChasteMathDeviceNamespaces.hpp" +#include "ChasteCpuMacros.hpp" @@ -29,8 +31,8 @@ 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__stimCurrent_converted = CHASTE_CONST(50.000000000000007); // uA_per_cm2 + const double var_chaste_interface__membrane__stimDuration = CHASTE_CONST(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), @@ -60,12 +62,12 @@ // 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[0] = CHASTE_CONST(1.8); // (var_ionic_concentrations__Cao) [mM] + this->mParameters[1] = CHASTE_CONST(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] + this->mParameters[3] = CHASTE_CONST(0.01); // (var_membrane__Cm) [uF_per_mm2] + this->mParameters[4] = CHASTE_CONST(0.16); // (var_fast_sodium_current__g_Na) [mS_per_mm2] + this->mParameters[5] = CHASTE_CONST(0.0074999999999999997); // (var_time_independent_potassium_current__g_K1_max) [mS_per_mm2] } Cellluo_rudy_1994FromCellML::~Cellluo_rudy_1994FromCellML() @@ -112,7 +114,7 @@ // 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -133,66 +135,66 @@ 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_L_type_Ca_channel_f_Ca_gate__Km_Ca = CHASTE_CONST(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_Na_Ca_exchanger__K_mCa = CHASTE_CONST(1.3799999999999999); // mM + const double var_Na_Ca_exchanger__K_mNa = CHASTE_CONST(87.5); // mM + const double var_Na_Ca_exchanger__K_sat = CHASTE_CONST(0.10000000000000001); // dimensionless + const double var_Na_Ca_exchanger__eta = CHASTE_CONST(0.34999999999999998); // dimensionless + const double var_calcium_background_current__g_Cab = CHASTE_CONST(3.0159999999999999e-5); // mS_per_mm2 + const double var_L_type_Ca_channel_f_Ca_gate__f_Ca = 1 / (1 + CHASTE_MATH::Pow(var_chaste_interface__ionic_concentrations__Cai, 2) / CHASTE_MATH::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__R = CHASTE_CONST(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] + var_chaste_interface__ionic_concentrations__Cai * exp(9.9999999999999995e-8)) / (-1 + exp(9.9999999999999995e-8)) + 1.0459259999999999e-7 * (-0.34000000000000002 * mParameters[0] + var_chaste_interface__ionic_concentrations__Cai * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8))) - 1.0459259999999999e-7 * (-0.34000000000000002 * mParameters[0] + var_chaste_interface__ionic_concentrations__Cai * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8))) : (0.078597788527232842 * (-0.34000000000000002 * mParameters[0] + 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_calcium_background_current__E_CaN = CHASTE_CONST(0.5) * var_membrane__R * var_membrane__T * CHASTE_MATH::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 * CHASTE_MATH::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 >= -CHASTE_CONST(1.3307320976818627e-6)) && (var_chaste_interface__membrane__V <= CHASTE_CONST(1.3307320976818627e-6))) ? (CHASTE_CONST(375733.02761014085) * (CHASTE_CONST(1.3307320976818627e-6) + var_chaste_interface__membrane__V) * (CHASTE_CONST(1.0459259999999999e-7) * (-CHASTE_CONST(0.34000000000000002) * mParameters[0] + var_chaste_interface__ionic_concentrations__Cai * CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) + CHASTE_CONST(1.0459259999999999e-7) * (-CHASTE_CONST(0.34000000000000002) * mParameters[0] + var_chaste_interface__ionic_concentrations__Cai * CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8))) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)))) - CHASTE_CONST(1.0459259999999999e-7) * (-CHASTE_CONST(0.34000000000000002) * mParameters[0] + var_chaste_interface__ionic_concentrations__Cai * CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8))) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)))) : (CHASTE_CONST(0.078597788527232842) * (-CHASTE_CONST(0.34000000000000002) * mParameters[0] + var_chaste_interface__ionic_concentrations__Cai * CHASTE_MATH::Exp(CHASTE_CONST(0.075146605522028176) * var_chaste_interface__membrane__V)) * var_chaste_interface__membrane__V / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(0.075146605522028176) * var_chaste_interface__membrane__V)))); // uA_per_mm2 + const double var_L_type_Ca_channel__I_CaK = (((var_chaste_interface__membrane__V >= -CHASTE_CONST(2.6614641953637254e-6)) && (var_chaste_interface__membrane__V <= CHASTE_CONST(2.6614641953637254e-6))) ? (CHASTE_CONST(187866.51380507043) * (CHASTE_CONST(2.6614641953637254e-6) + var_chaste_interface__membrane__V) * (CHASTE_CONST(1.8691085000000002e-11) * (-CHASTE_CONST(0.75) * mParameters[1] + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Ki * CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) + CHASTE_CONST(1.8691085000000002e-11) * (-CHASTE_CONST(0.75) * mParameters[1] + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Ki * CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8))) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)))) - CHASTE_CONST(1.8691085000000002e-11) * (-CHASTE_CONST(0.75) * mParameters[1] + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Ki * CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8))) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)))) : (CHASTE_CONST(7.0228579563684903e-6) * (-CHASTE_CONST(0.75) * mParameters[1] + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Ki * CHASTE_MATH::Exp(CHASTE_CONST(0.037573302761014088) * var_chaste_interface__membrane__V)) * var_chaste_interface__membrane__V / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(0.037573302761014088) * var_chaste_interface__membrane__V)))); // uA_per_mm2 + const double var_L_type_Ca_channel__I_CaNa = (((var_chaste_interface__membrane__V >= -CHASTE_CONST(2.6614641953637254e-6)) && (var_chaste_interface__membrane__V <= CHASTE_CONST(2.6614641953637254e-6))) ? (CHASTE_CONST(187866.51380507043) * (CHASTE_CONST(2.6614641953637254e-6) + var_chaste_interface__membrane__V) * (CHASTE_CONST(6.5370374999999993e-11) * (-CHASTE_CONST(0.75) * mParameters[2] + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Nai * CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) + CHASTE_CONST(6.5370374999999993e-11) * (-CHASTE_CONST(0.75) * mParameters[2] + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Nai * CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8))) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)))) - CHASTE_CONST(6.5370374999999993e-11) * (-CHASTE_CONST(0.75) * mParameters[2] + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Nai * CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8))) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)))) : (CHASTE_CONST(2.4561808914760263e-5) * (-CHASTE_CONST(0.75) * mParameters[2] + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Nai * CHASTE_MATH::Exp(CHASTE_CONST(0.037573302761014088) * var_chaste_interface__membrane__V)) * var_chaste_interface__membrane__V / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(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 = (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_Na_Ca_exchanger__i_NaCa = (CHASTE_MATH::Pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] * CHASTE_MATH::Exp(var_Na_Ca_exchanger__eta * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - CHASTE_MATH::Pow(mParameters[2], 3) * var_chaste_interface__ionic_concentrations__Cai * CHASTE_MATH::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 * CHASTE_MATH::Exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (CHASTE_MATH::Pow(var_Na_Ca_exchanger__K_mNa, 3) + CHASTE_MATH::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 - 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 - 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 - 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 - 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 = 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 = 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_fast_sodium_current__i_Na = CHASTE_MATH::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 = CHASTE_CONST(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 >= -CHASTE_CONST(2.6614641953637254e-6) + CHASTE_CONST(26.614641953637257) * CHASTE_MATH::Log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai))) && (var_chaste_interface__membrane__V <= CHASTE_CONST(2.6614641953637254e-6) + CHASTE_CONST(26.614641953637257) * CHASTE_MATH::Log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai)))) || ((var_chaste_interface__membrane__V >= CHASTE_CONST(2.6614641953637254e-6) + CHASTE_CONST(26.614641953637257) * CHASTE_MATH::Log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai))) && (var_chaste_interface__membrane__V <= -CHASTE_CONST(2.6614641953637254e-6) + CHASTE_CONST(26.614641953637257) * CHASTE_MATH::Log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai))))) ? (CHASTE_CONST(1.6947874999999998e-11) * (-CHASTE_CONST(0.75) * mParameters[1] + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Ki * CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) - CHASTE_CONST(187866.51380507043) * (-CHASTE_CONST(1.6947874999999998e-11) * (-CHASTE_CONST(0.75) * mParameters[1] + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Ki * CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) - CHASTE_CONST(1.6947874999999998e-11) * (-CHASTE_CONST(0.75) * mParameters[1] + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Ki * CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8))) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)))) * (-CHASTE_CONST(2.6614641953637254e-6) - CHASTE_CONST(26.614641953637257) * CHASTE_MATH::Log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai)) + var_chaste_interface__membrane__V)) : (CHASTE_CONST(6.3678763853082156e-6) * (-CHASTE_CONST(0.75) * mParameters[1] + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Ki * CHASTE_MATH::Exp(CHASTE_CONST(0.037573302761014088) * var_chaste_interface__membrane__V - CHASTE_MATH::Log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai)))) * (-CHASTE_CONST(26.614641953637257) * CHASTE_MATH::Log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai)) + var_chaste_interface__membrane__V) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(0.037573302761014088) * var_chaste_interface__membrane__V - CHASTE_MATH::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 >= -CHASTE_CONST(2.6614641953637254e-6) + CHASTE_CONST(26.614641953637257) * CHASTE_MATH::Log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai))) && (var_chaste_interface__membrane__V <= CHASTE_CONST(2.6614641953637254e-6) + CHASTE_CONST(26.614641953637257) * CHASTE_MATH::Log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai)))) || ((var_chaste_interface__membrane__V >= CHASTE_CONST(2.6614641953637254e-6) + CHASTE_CONST(26.614641953637257) * CHASTE_MATH::Log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai))) && (var_chaste_interface__membrane__V <= -CHASTE_CONST(2.6614641953637254e-6) + CHASTE_CONST(26.614641953637257) * CHASTE_MATH::Log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai))))) ? (CHASTE_CONST(1.6947874999999998e-11) * (-CHASTE_CONST(0.75) * mParameters[2] + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Nai * CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) - CHASTE_CONST(187866.51380507043) * (-CHASTE_CONST(1.6947874999999998e-11) * (-CHASTE_CONST(0.75) * mParameters[2] + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Nai * CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) - CHASTE_CONST(1.6947874999999998e-11) * (-CHASTE_CONST(0.75) * mParameters[2] + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Nai * CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8))) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)))) * (-CHASTE_CONST(2.6614641953637254e-6) - CHASTE_CONST(26.614641953637257) * CHASTE_MATH::Log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai)) + var_chaste_interface__membrane__V)) : (CHASTE_CONST(6.3678763853082156e-6) * (-CHASTE_CONST(0.75) * mParameters[2] + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Nai * CHASTE_MATH::Exp(CHASTE_CONST(0.037573302761014088) * var_chaste_interface__membrane__V - CHASTE_MATH::Log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai)))) * (-CHASTE_CONST(26.614641953637257) * CHASTE_MATH::Log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai)) + var_chaste_interface__membrane__V) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(0.037573302761014088) * var_chaste_interface__membrane__V - CHASTE_MATH::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 = CHASTE_CONST(0.0011999999999999999); // mM + const double var_non_specific_calcium_activated_current__i_ns_K = var_non_specific_calcium_activated_current__I_ns_K / (1 + CHASTE_MATH::Pow(var_non_specific_calcium_activated_current__K_m_ns_Ca, 3) / CHASTE_MATH::Pow(var_chaste_interface__ionic_concentrations__Cai, 3)); // uA_per_mm2 + const double var_non_specific_calcium_activated_current__i_ns_Na = var_non_specific_calcium_activated_current__I_ns_Na / (1 + CHASTE_MATH::Pow(var_non_specific_calcium_activated_current__K_m_ns_Ca, 3) / CHASTE_MATH::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_plateau_potassium_current__Kp = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(1.2521739130434781) - CHASTE_CONST(0.16722408026755853) * var_chaste_interface__membrane__V)); // dimensionless + const double var_plateau_potassium_current__g_Kp = CHASTE_CONST(0.000183); // mS_per_mm2 + const double var_sarcolemmal_calcium_pump__I_pCa = CHASTE_CONST(0.0115); // uA_per_mm2 + const double var_sarcolemmal_calcium_pump__K_mpCa = CHASTE_CONST(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__g_Nab = CHASTE_CONST(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__I_NaK = CHASTE_CONST(0.014999999999999999); // uA_per_mm2 + const double var_sodium_potassium_pump__K_mKo = CHASTE_CONST(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 = 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_sodium_potassium_pump__sigma = -CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * CHASTE_MATH::Exp(CHASTE_CONST(0.01485884101040119) * mParameters[2]); // dimensionless + const double var_sodium_potassium_pump__f_NaK = 1 / (1 + CHASTE_CONST(0.1245) * CHASTE_MATH::Exp(-CHASTE_CONST(0.10000000000000001) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) + CHASTE_CONST(0.036499999999999998) * var_sodium_potassium_pump__sigma * CHASTE_MATH::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[1] * var_sodium_potassium_pump__I_NaK * var_sodium_potassium_pump__f_NaK / ((1 + CHASTE_MATH::Pow((var_sodium_potassium_pump__K_mNai / var_chaste_interface__ionic_concentrations__Nai), CHASTE_CONST(1.5))) * (mParameters[1] + var_sodium_potassium_pump__K_mKo)); // uA_per_mm2 + const double var_time_dependent_potassium_current__PR_NaK = CHASTE_CONST(0.018329999999999999); // dimensionless + const double var_time_dependent_potassium_current__E_K = var_membrane__R * var_membrane__T * CHASTE_MATH::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 = CHASTE_CONST(0.00282); // mS_per_mm2 + const double var_time_dependent_potassium_current__g_K = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::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 + CHASTE_MATH::Exp(-CHASTE_CONST(1.7526479750778814) + CHASTE_CONST(0.031152647975077882) * var_chaste_interface__membrane__V)); // dimensionless + const double var_time_dependent_potassium_current__i_K = CHASTE_MATH::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 * CHASTE_MATH::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__g_K1 = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::Sqrt(mParameters[1]) * mParameters[5]; // mS_per_mm2 + const double var_time_independent_potassium_current_K1_gate__alpha_K1 = CHASTE_CONST(1.02) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.23849999999999999) * var_time_independent_potassium_current__E_K1)); // per_ms + const double var_time_independent_potassium_current_K1_gate__beta_K1 = (CHASTE_CONST(0.49124000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.43983232) + CHASTE_CONST(0.080320000000000003) * var_chaste_interface__membrane__V - CHASTE_CONST(0.080320000000000003) * var_time_independent_potassium_current__E_K1) + CHASTE_MATH::Exp(-CHASTE_CONST(36.698642499999998) + CHASTE_CONST(0.061749999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.061749999999999999) * var_time_independent_potassium_current__E_K1)) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.4444678999999998) + CHASTE_CONST(0.51429999999999998) * var_time_independent_potassium_current__E_K1 - CHASTE_CONST(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 var_time_independent_potassium_current__i_K1_converted = CHASTE_CONST(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 - CHASTE_CONST(100.00000000000001) * var_L_type_Ca_channel__i_Ca_L - CHASTE_CONST(100.00000000000001) * var_Na_Ca_exchanger__i_NaCa - CHASTE_CONST(100.00000000000001) * var_calcium_background_current__i_Ca_b - CHASTE_CONST(100.00000000000001) * var_non_specific_calcium_activated_current__i_ns_Ca - CHASTE_CONST(100.00000000000001) * var_plateau_potassium_current__i_Kp - CHASTE_CONST(100.00000000000001) * var_sarcolemmal_calcium_pump__i_p_Ca - CHASTE_CONST(100.00000000000001) * var_sodium_background_current__i_Na_b - CHASTE_CONST(100.00000000000001) * var_sodium_potassium_pump__i_NaK - CHASTE_CONST(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)); @@ -203,7 +205,7 @@ { // Inputs: // Time units: millisecond - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -230,107 +232,107 @@ // 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_L_type_Ca_channel_f_Ca_gate__Km_Ca = CHASTE_CONST(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_Na_Ca_exchanger__K_mCa = CHASTE_CONST(1.3799999999999999); // mM + const double var_Na_Ca_exchanger__K_mNa = CHASTE_CONST(87.5); // mM + const double var_Na_Ca_exchanger__K_sat = CHASTE_CONST(0.10000000000000001); // dimensionless + const double var_Na_Ca_exchanger__eta = CHASTE_CONST(0.34999999999999998); // dimensionless + const double var_calcium_background_current__g_Cab = CHASTE_CONST(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__I_up = CHASTE_CONST(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__K_mrel = CHASTE_CONST(0.00080000000000000004); // mM + const double var_calcium_fluxes_in_the_SR__K_mup = CHASTE_CONST(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__delta_Ca_ith = CHASTE_CONST(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__G_rel = (1 - CHASTE_MATH::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 * CHASTE_MATH::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_L_type_Ca_channel_f_Ca_gate__f_Ca = 1 / (1 + CHASTE_MATH::Pow(var_chaste_interface__ionic_concentrations__Cai, 2) / CHASTE_MATH::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 var_ionic_concentrations__V_JSR = CHASTE_CONST(0.0047999999999999996); // dimensionless + const double var_ionic_concentrations__V_NSR = CHASTE_CONST(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_ionic_concentrations__V_myo = CHASTE_CONST(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__R = CHASTE_CONST(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] + var_chaste_interface__ionic_concentrations__Cai * exp(9.9999999999999995e-8)) / (-1 + exp(9.9999999999999995e-8)) + 1.0459259999999999e-7 * (-0.34000000000000002 * mParameters[0] + var_chaste_interface__ionic_concentrations__Cai * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8))) - 1.0459259999999999e-7 * (-0.34000000000000002 * mParameters[0] + var_chaste_interface__ionic_concentrations__Cai * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8))) : (0.078597788527232842 * (-0.34000000000000002 * mParameters[0] + 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_calcium_background_current__E_CaN = CHASTE_CONST(0.5) * var_membrane__R * var_membrane__T * CHASTE_MATH::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 * CHASTE_MATH::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 >= -CHASTE_CONST(1.3307320976818627e-6)) && (var_chaste_interface__membrane__V <= CHASTE_CONST(1.3307320976818627e-6))) ? (CHASTE_CONST(375733.02761014085) * (CHASTE_CONST(1.3307320976818627e-6) + var_chaste_interface__membrane__V) * (CHASTE_CONST(1.0459259999999999e-7) * (-CHASTE_CONST(0.34000000000000002) * mParameters[0] + var_chaste_interface__ionic_concentrations__Cai * CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) + CHASTE_CONST(1.0459259999999999e-7) * (-CHASTE_CONST(0.34000000000000002) * mParameters[0] + var_chaste_interface__ionic_concentrations__Cai * CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8))) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)))) - CHASTE_CONST(1.0459259999999999e-7) * (-CHASTE_CONST(0.34000000000000002) * mParameters[0] + var_chaste_interface__ionic_concentrations__Cai * CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8))) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)))) : (CHASTE_CONST(0.078597788527232842) * (-CHASTE_CONST(0.34000000000000002) * mParameters[0] + var_chaste_interface__ionic_concentrations__Cai * CHASTE_MATH::Exp(CHASTE_CONST(0.075146605522028176) * var_chaste_interface__membrane__V)) * var_chaste_interface__membrane__V / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(0.075146605522028176) * var_chaste_interface__membrane__V)))); // uA_per_mm2 + const double var_L_type_Ca_channel__I_CaK = (((var_chaste_interface__membrane__V >= -CHASTE_CONST(2.6614641953637254e-6)) && (var_chaste_interface__membrane__V <= CHASTE_CONST(2.6614641953637254e-6))) ? (CHASTE_CONST(187866.51380507043) * (CHASTE_CONST(2.6614641953637254e-6) + var_chaste_interface__membrane__V) * (CHASTE_CONST(1.8691085000000002e-11) * (-CHASTE_CONST(0.75) * mParameters[1] + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Ki * CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) + CHASTE_CONST(1.8691085000000002e-11) * (-CHASTE_CONST(0.75) * mParameters[1] + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Ki * CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8))) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)))) - CHASTE_CONST(1.8691085000000002e-11) * (-CHASTE_CONST(0.75) * mParameters[1] + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Ki * CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8))) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)))) : (CHASTE_CONST(7.0228579563684903e-6) * (-CHASTE_CONST(0.75) * mParameters[1] + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Ki * CHASTE_MATH::Exp(CHASTE_CONST(0.037573302761014088) * var_chaste_interface__membrane__V)) * var_chaste_interface__membrane__V / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(0.037573302761014088) * var_chaste_interface__membrane__V)))); // uA_per_mm2 + const double var_L_type_Ca_channel__I_CaNa = (((var_chaste_interface__membrane__V >= -CHASTE_CONST(2.6614641953637254e-6)) && (var_chaste_interface__membrane__V <= CHASTE_CONST(2.6614641953637254e-6))) ? (CHASTE_CONST(187866.51380507043) * (CHASTE_CONST(2.6614641953637254e-6) + var_chaste_interface__membrane__V) * (CHASTE_CONST(6.5370374999999993e-11) * (-CHASTE_CONST(0.75) * mParameters[2] + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Nai * CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) + CHASTE_CONST(6.5370374999999993e-11) * (-CHASTE_CONST(0.75) * mParameters[2] + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Nai * CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8))) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)))) - CHASTE_CONST(6.5370374999999993e-11) * (-CHASTE_CONST(0.75) * mParameters[2] + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Nai * CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8))) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)))) : (CHASTE_CONST(2.4561808914760263e-5) * (-CHASTE_CONST(0.75) * mParameters[2] + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Nai * CHASTE_MATH::Exp(CHASTE_CONST(0.037573302761014088) * var_chaste_interface__membrane__V)) * var_chaste_interface__membrane__V / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(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__d_infinity = 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(1.6025641025641024) - CHASTE_CONST(0.16025641025641024) * var_chaste_interface__membrane__V)); // dimensionless + const double var_L_type_Ca_channel_d_gate__tau_d = (((var_chaste_interface__membrane__V >= -CHASTE_CONST(10.000000624)) && (var_chaste_interface__membrane__V <= -CHASTE_CONST(9.9999993759999999))) ? (CHASTE_CONST(801282.05129393819) * (CHASTE_CONST(10.000000624) + var_chaste_interface__membrane__V) * (CHASTE_CONST(45787545.788225032) * (1 - CHASTE_MATH::Exp(CHASTE_CONST(9.999999999851651e-8))) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(9.999999999851651e-8))) + CHASTE_CONST(45787545.788225032) * (1 - CHASTE_MATH::Exp(-CHASTE_CONST(9.999999999851651e-8))) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.999999999851651e-8)))) - CHASTE_CONST(45787545.788225032) * (1 - CHASTE_MATH::Exp(CHASTE_CONST(9.999999999851651e-8))) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(9.999999999851651e-8)))) : (CHASTE_CONST(28.571428571428569) * (1 - CHASTE_MATH::Exp(-CHASTE_CONST(1.6025641025641024) - CHASTE_CONST(0.16025641025641024) * var_chaste_interface__membrane__V)) / ((1 + CHASTE_MATH::Exp(-CHASTE_CONST(1.6025641025641024) - CHASTE_CONST(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__f_infinity = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(4.0767441860465121) + CHASTE_CONST(0.11627906976744186) * var_chaste_interface__membrane__V)) + CHASTE_CONST(0.59999999999999998) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(2.5) - CHASTE_CONST(0.050000000000000003) * var_chaste_interface__membrane__V)); // dimensionless + const double var_L_type_Ca_channel_f_gate__tau_f = 1 / (CHASTE_CONST(0.02) + CHASTE_CONST(0.019699999999999999) * CHASTE_MATH::Exp(-CHASTE_CONST(0.113569) * CHASTE_MATH::Pow((1 + CHASTE_CONST(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 = (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_Na_Ca_exchanger__i_NaCa = (CHASTE_MATH::Pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] * CHASTE_MATH::Exp(var_Na_Ca_exchanger__eta * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - CHASTE_MATH::Pow(mParameters[2], 3) * var_chaste_interface__ionic_concentrations__Cai * CHASTE_MATH::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 * CHASTE_MATH::Exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (CHASTE_MATH::Pow(var_Na_Ca_exchanger__K_mNa, 3) + CHASTE_MATH::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 var_fast_sodium_current__i_Na = CHASTE_MATH::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) ? (CHASTE_CONST(0.13500000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(11.764705882352942) - CHASTE_CONST(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 * CHASTE_MATH::Exp(CHASTE_CONST(0.34999999999999998) * var_chaste_interface__membrane__V) + CHASTE_CONST(3.5600000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.079000000000000001) * var_chaste_interface__membrane__V)) : (CHASTE_CONST(7.6923076923076916) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.96036036036036043) - CHASTE_CONST(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 var_fast_sodium_current_j_gate__alpha_j = ((var_chaste_interface__membrane__V < -40) ? ((CHASTE_CONST(37.780000000000001) + var_chaste_interface__membrane__V) * (-127140 * CHASTE_MATH::Exp(CHASTE_CONST(0.24440000000000001) * var_chaste_interface__membrane__V) - CHASTE_CONST(3.4740000000000003e-5) * CHASTE_MATH::Exp(-CHASTE_CONST(0.043909999999999998) * var_chaste_interface__membrane__V)) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(24.640530000000002) + CHASTE_CONST(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) ? (CHASTE_CONST(0.1212) * CHASTE_MATH::Exp(-CHASTE_CONST(0.01052) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(5.5312920000000005) - CHASTE_CONST(0.13780000000000001) * var_chaste_interface__membrane__V))) : (CHASTE_CONST(0.29999999999999999) * CHASTE_MATH::Exp(-CHASTE_CONST(2.5349999999999999e-7) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(3.2000000000000002) - CHASTE_CONST(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 var_fast_sodium_current_m_gate__alpha_m = (((var_chaste_interface__membrane__V >= -CHASTE_CONST(47.130001)) && (var_chaste_interface__membrane__V <= -CHASTE_CONST(47.129999000000005))) ? (-CHASTE_CONST(3.200000000092018e-7) / (1 - CHASTE_MATH::Exp(CHASTE_CONST(1.0000000000287557e-7))) + CHASTE_CONST(499999.99998562218) * (CHASTE_CONST(47.130001) + var_chaste_interface__membrane__V) * (CHASTE_CONST(3.200000000092018e-7) / (1 - CHASTE_MATH::Exp(CHASTE_CONST(1.0000000000287557e-7))) + CHASTE_CONST(3.200000000092018e-7) / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(1.0000000000287557e-7))))) : (CHASTE_CONST(0.32000000000000001) * (CHASTE_CONST(47.130000000000003) + var_chaste_interface__membrane__V) / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(4.7130000000000001) - CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V)))); // per_ms + const double var_fast_sodium_current_m_gate__beta_m = CHASTE_CONST(0.080000000000000002) * CHASTE_MATH::Exp(-CHASTE_CONST(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 - 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 - 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 - 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 - 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 = 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 = 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_non_specific_calcium_activated_current__I_ns_K = ((((var_chaste_interface__membrane__V >= -CHASTE_CONST(2.6614641953637254e-6) + CHASTE_CONST(26.614641953637257) * CHASTE_MATH::Log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai))) && (var_chaste_interface__membrane__V <= CHASTE_CONST(2.6614641953637254e-6) + CHASTE_CONST(26.614641953637257) * CHASTE_MATH::Log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai)))) || ((var_chaste_interface__membrane__V >= CHASTE_CONST(2.6614641953637254e-6) + CHASTE_CONST(26.614641953637257) * CHASTE_MATH::Log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai))) && (var_chaste_interface__membrane__V <= -CHASTE_CONST(2.6614641953637254e-6) + CHASTE_CONST(26.614641953637257) * CHASTE_MATH::Log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai))))) ? (CHASTE_CONST(1.6947874999999998e-11) * (-CHASTE_CONST(0.75) * mParameters[1] + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Ki * CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) - CHASTE_CONST(187866.51380507043) * (-CHASTE_CONST(1.6947874999999998e-11) * (-CHASTE_CONST(0.75) * mParameters[1] + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Ki * CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) - CHASTE_CONST(1.6947874999999998e-11) * (-CHASTE_CONST(0.75) * mParameters[1] + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Ki * CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8))) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)))) * (-CHASTE_CONST(2.6614641953637254e-6) - CHASTE_CONST(26.614641953637257) * CHASTE_MATH::Log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai)) + var_chaste_interface__membrane__V)) : (CHASTE_CONST(6.3678763853082156e-6) * (-CHASTE_CONST(0.75) * mParameters[1] + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Ki * CHASTE_MATH::Exp(CHASTE_CONST(0.037573302761014088) * var_chaste_interface__membrane__V - CHASTE_MATH::Log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai)))) * (-CHASTE_CONST(26.614641953637257) * CHASTE_MATH::Log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai)) + var_chaste_interface__membrane__V) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(0.037573302761014088) * var_chaste_interface__membrane__V - CHASTE_MATH::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 >= -CHASTE_CONST(2.6614641953637254e-6) + CHASTE_CONST(26.614641953637257) * CHASTE_MATH::Log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai))) && (var_chaste_interface__membrane__V <= CHASTE_CONST(2.6614641953637254e-6) + CHASTE_CONST(26.614641953637257) * CHASTE_MATH::Log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai)))) || ((var_chaste_interface__membrane__V >= CHASTE_CONST(2.6614641953637254e-6) + CHASTE_CONST(26.614641953637257) * CHASTE_MATH::Log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai))) && (var_chaste_interface__membrane__V <= -CHASTE_CONST(2.6614641953637254e-6) + CHASTE_CONST(26.614641953637257) * CHASTE_MATH::Log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai))))) ? (CHASTE_CONST(1.6947874999999998e-11) * (-CHASTE_CONST(0.75) * mParameters[2] + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Nai * CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) - CHASTE_CONST(187866.51380507043) * (-CHASTE_CONST(1.6947874999999998e-11) * (-CHASTE_CONST(0.75) * mParameters[2] + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Nai * CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999999995e-8))) - CHASTE_CONST(1.6947874999999998e-11) * (-CHASTE_CONST(0.75) * mParameters[2] + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Nai * CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8))) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999999995e-8)))) * (-CHASTE_CONST(2.6614641953637254e-6) - CHASTE_CONST(26.614641953637257) * CHASTE_MATH::Log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai)) + var_chaste_interface__membrane__V)) : (CHASTE_CONST(6.3678763853082156e-6) * (-CHASTE_CONST(0.75) * mParameters[2] + CHASTE_CONST(0.75) * var_chaste_interface__ionic_concentrations__Nai * CHASTE_MATH::Exp(CHASTE_CONST(0.037573302761014088) * var_chaste_interface__membrane__V - CHASTE_MATH::Log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai)))) * (-CHASTE_CONST(26.614641953637257) * CHASTE_MATH::Log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai)) + var_chaste_interface__membrane__V) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(0.037573302761014088) * var_chaste_interface__membrane__V - CHASTE_MATH::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 = CHASTE_CONST(0.0011999999999999999); // mM + const double var_non_specific_calcium_activated_current__i_ns_K = var_non_specific_calcium_activated_current__I_ns_K / (1 + CHASTE_MATH::Pow(var_non_specific_calcium_activated_current__K_m_ns_Ca, 3) / CHASTE_MATH::Pow(var_chaste_interface__ionic_concentrations__Cai, 3)); // uA_per_mm2 + const double var_non_specific_calcium_activated_current__i_ns_Na = var_non_specific_calcium_activated_current__I_ns_Na / (1 + CHASTE_MATH::Pow(var_non_specific_calcium_activated_current__K_m_ns_Ca, 3) / CHASTE_MATH::Pow(var_chaste_interface__ionic_concentrations__Cai, 3)); // uA_per_mm2 + const double var_plateau_potassium_current__Kp = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(1.2521739130434781) - CHASTE_CONST(0.16722408026755853) * var_chaste_interface__membrane__V)); // dimensionless + const double var_plateau_potassium_current__g_Kp = CHASTE_CONST(0.000183); // mS_per_mm2 + const double var_sarcolemmal_calcium_pump__I_pCa = CHASTE_CONST(0.0115); // uA_per_mm2 + const double var_sarcolemmal_calcium_pump__K_mpCa = CHASTE_CONST(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 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 + CHASTE_CONST(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__g_Nab = CHASTE_CONST(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__I_NaK = CHASTE_CONST(0.014999999999999999); // uA_per_mm2 + const double var_sodium_potassium_pump__K_mKo = CHASTE_CONST(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 = 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_sodium_potassium_pump__sigma = -CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * CHASTE_MATH::Exp(CHASTE_CONST(0.01485884101040119) * mParameters[2]); // dimensionless + const double var_sodium_potassium_pump__f_NaK = 1 / (1 + CHASTE_CONST(0.1245) * CHASTE_MATH::Exp(-CHASTE_CONST(0.10000000000000001) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) + CHASTE_CONST(0.036499999999999998) * var_sodium_potassium_pump__sigma * CHASTE_MATH::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[1] * var_sodium_potassium_pump__I_NaK * var_sodium_potassium_pump__f_NaK / ((1 + CHASTE_MATH::Pow((var_sodium_potassium_pump__K_mNai / var_chaste_interface__ionic_concentrations__Nai), CHASTE_CONST(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 var_time_dependent_potassium_current__PR_NaK = CHASTE_CONST(0.018329999999999999); // dimensionless + const double var_time_dependent_potassium_current__E_K = var_membrane__R * var_membrane__T * CHASTE_MATH::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 = CHASTE_CONST(0.00282); // mS_per_mm2 + const double var_time_dependent_potassium_current__g_K = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::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 >= -CHASTE_CONST(30.000000675675675)) && (var_chaste_interface__membrane__V <= -CHASTE_CONST(29.999999324324325))) ? (-CHASTE_CONST(4.8581081081938701e-11) / (1 - CHASTE_MATH::Exp(CHASTE_CONST(1.0000000000176534e-7))) + CHASTE_CONST(739999.99998693645) * (CHASTE_CONST(30.000000675675675) + var_chaste_interface__membrane__V) * (CHASTE_CONST(4.8581081081938701e-11) / (1 - CHASTE_MATH::Exp(CHASTE_CONST(1.0000000000176534e-7))) + CHASTE_CONST(4.8581081081938701e-11) / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(1.0000000000176534e-7))))) : (CHASTE_CONST(7.1899999999999999e-5) * (30 + var_chaste_interface__membrane__V) / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(4.4399999999999995) - CHASTE_CONST(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 >= -CHASTE_CONST(30.000001455604075)) && (var_chaste_interface__membrane__V <= -CHASTE_CONST(29.999998544395925))) ? (-CHASTE_CONST(1.9068413391534758e-10) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999880736e-8))) + CHASTE_CONST(343500.00000040967) * (CHASTE_CONST(30.000001455604075) + var_chaste_interface__membrane__V) * (CHASTE_CONST(1.9068413391534758e-10) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(9.9999999999880736e-8))) + CHASTE_CONST(1.9068413391534758e-10) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(9.9999999999880736e-8))))) : (CHASTE_CONST(0.00013100000000000001) * (30 + var_chaste_interface__membrane__V) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(2.0609999999999999) + CHASTE_CONST(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_time_dependent_potassium_current_Xi_gate__Xi = 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(1.7526479750778814) + CHASTE_CONST(0.031152647975077882) * var_chaste_interface__membrane__V)); // dimensionless + const double var_time_dependent_potassium_current__i_K = CHASTE_MATH::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 * CHASTE_MATH::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__g_K1 = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::Sqrt(mParameters[1]) * mParameters[5]; // mS_per_mm2 + const double var_time_independent_potassium_current_K1_gate__alpha_K1 = CHASTE_CONST(1.02) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.23849999999999999) * var_time_independent_potassium_current__E_K1)); // per_ms + const double var_time_independent_potassium_current_K1_gate__beta_K1 = (CHASTE_CONST(0.49124000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.43983232) + CHASTE_CONST(0.080320000000000003) * var_chaste_interface__membrane__V - CHASTE_CONST(0.080320000000000003) * var_time_independent_potassium_current__E_K1) + CHASTE_MATH::Exp(-CHASTE_CONST(36.698642499999998) + CHASTE_CONST(0.061749999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.061749999999999999) * var_time_independent_potassium_current__E_K1)) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.4444678999999998) + CHASTE_CONST(0.51429999999999998) * var_time_independent_potassium_current__E_K1 - CHASTE_CONST(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 @@ -341,8 +343,8 @@ } 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_membrane__I_st_converted = -CHASTE_STIM(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_membrane__I_st = CHASTE_CONST(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 @@ -367,7 +369,7 @@ { // Inputs: // Time units: millisecond - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -382,19 +384,19 @@ // 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__I_st_converted = -CHASTE_STIM(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_membrane__R = CHASTE_CONST(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_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * CHASTE_MATH::Log(mParameters[2] / var_chaste_interface__ionic_concentrations__Nai) / var_membrane__F; // mV + const double var_fast_sodium_current__i_Na = CHASTE_MATH::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 = CHASTE_CONST(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 * CHASTE_MATH::Log(mParameters[1] / var_chaste_interface__ionic_concentrations__Ki) / var_membrane__F; // mV + const double var_time_independent_potassium_current__g_K1 = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::Sqrt(mParameters[1]) * mParameters[5]; // mS_per_mm2 + const double var_time_independent_potassium_current_K1_gate__alpha_K1 = CHASTE_CONST(1.02) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.23849999999999999) * var_time_independent_potassium_current__E_K1)); // per_ms + const double var_time_independent_potassium_current_K1_gate__beta_K1 = (CHASTE_CONST(0.49124000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.43983232) + CHASTE_CONST(0.080320000000000003) * var_chaste_interface__membrane__V - CHASTE_CONST(0.080320000000000003) * var_time_independent_potassium_current__E_K1) + CHASTE_MATH::Exp(-CHASTE_CONST(36.698642499999998) + CHASTE_CONST(0.061749999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.061749999999999999) * var_time_independent_potassium_current__E_K1)) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.4444678999999998) + CHASTE_CONST(0.51429999999999998) * var_time_independent_potassium_current__E_K1 - CHASTE_CONST(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_time_independent_potassium_current__i_K1_converted = CHASTE_CONST(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; diff --git a/chaste_codegen/data/tests/chaste_reference_models/Normal/luo_rudy_1994.hpp b/chaste_codegen/data/tests/chaste_reference_models/Normal/luo_rudy_1994.hpp index c32f251f2..817d2929c 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/Normal/luo_rudy_1994.hpp +++ b/chaste_codegen/data/tests/chaste_reference_models/Normal/luo_rudy_1994.hpp @@ -16,6 +16,9 @@ #include "ChasteSerialization.hpp" #include #include "AbstractStimulusFunction.hpp" +#if USING_DEVICE_COMPILER +#include "StimulusEvaluatorCuda.hpp" +#endif #include "AbstractCardiacCell.hpp" class Cellluo_rudy_1994FromCellML : public AbstractCardiacCell diff --git a/chaste_codegen/data/tests/chaste_reference_models/Normal/non_dynamic_aslanidi_Purkinje_model_2009.cpp b/chaste_codegen/data/tests/chaste_reference_models/Normal/non_dynamic_aslanidi_Purkinje_model_2009.cpp index 82dadca51..aa0d77442 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/Normal/non_dynamic_aslanidi_Purkinje_model_2009.cpp +++ b/chaste_codegen/data/tests/chaste_reference_models/Normal/non_dynamic_aslanidi_Purkinje_model_2009.cpp @@ -21,6 +21,8 @@ #include "HeartConfig.hpp" #include "IsNan.hpp" #include "MathsCustomFunctions.hpp" +#include "ChasteMathDeviceNamespaces.hpp" +#include "ChasteCpuMacros.hpp" @@ -29,7 +31,7 @@ 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_amplitude_converted = -80 * CHASTE_CAP(); // 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 @@ -150,22 +152,22 @@ 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[0] = CHASTE_CONST(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[2] = CHASTE_CONST(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[4] = CHASTE_CONST(1.8); // (var_model_parameters__Ca_o) [millimolar] + this->mParameters[5] = CHASTE_CONST(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[7] = CHASTE_CONST(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] + this->mParameters[11] = CHASTE_CONST(0.25); // (var_i_K1__g_K1_max) [milliS_per_microF] + this->mParameters[12] = CHASTE_CONST(0.040008488000000002); // (var_i_Kr__g_Kr_max) [milliS_per_microF] + this->mParameters[13] = CHASTE_CONST(0.052581329000000003); // (var_i_Ks__g_Ks_max) [milliS_per_microF] + this->mParameters[14] = CHASTE_CONST(4.5); // (var_i_NaCa__i_NaCa_max) [microA_per_microF] + this->mParameters[15] = CHASTE_CONST(0.14135944); // (var_i_to_1__g_to_1) [milliS_per_microF] } Cellaslanidi_Purkinje_model_2009FromCellML::~Cellaslanidi_Purkinje_model_2009FromCellML() @@ -212,7 +214,7 @@ // 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -263,74 +265,74 @@ 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_background_currents__g_Cl_b = CHASTE_CONST(0.00022499999999999999); // milliS_per_microF + const double var_background_currents__g_K_b = CHASTE_CONST(0.0050000000000000001); // milliS_per_microF + const double var_background_currents__g_Na_b = CHASTE_CONST(0.0025000000000000001); // milliS_per_microF + const double var_background_currents__p_Ca_b = CHASTE_CONST(1.9950840000000001e-7); // cm_per_second + const double var_equilibrium_potentials__r_NaK = CHASTE_CONST(0.018329999999999999); // dimensionless + const double var_i_Ca_L__p_Ca = CHASTE_CONST(0.000243); // cm_per_second + const double var_i_Ca_T__g_Ca_T = CHASTE_CONST(0.13); // milliS_per_microF + const double var_i_Ca_p__i_Ca_p_max = CHASTE_CONST(0.057500000000000002); // microA_per_microF + const double var_i_Ca_p__km_Ca_p = CHASTE_CONST(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_K_p__g_K_p = CHASTE_CONST(0.0027599999999999999); // milliS_per_microF + const double var_i_Ks__g_Ks = (1 + CHASTE_CONST(0.59999999999999998) / (1 + CHASTE_CONST(6.4818210260626455e-7) * CHASTE_MATH::Pow((1 / var_chaste_interface__Ca_i__Ca_i), CHASTE_CONST(1.3999999999999999)))) * mParameters[13]; // milliS_per_microF + const double var_i_NaCa__X_NaCa = CHASTE_CONST(0.40000000000000002); // dimensionless + const double var_i_NaCa__k_sat = CHASTE_CONST(0.27000000000000002); // dimensionless + const double var_i_NaCa__km_Ca_act = CHASTE_CONST(0.000125); // millimolar + const double var_i_NaCa__km_Ca_i = CHASTE_CONST(0.0035999999999999999); // millimolar + const double var_i_NaCa__km_Ca_o = CHASTE_CONST(1.3); // millimolar + const double var_i_NaCa__km_Na_i_1 = CHASTE_CONST(12.300000000000001); // millimolar + const double var_i_NaCa__km_Na_o = CHASTE_CONST(87.5); // millimolar + const double var_i_NaK__g_NaK = CHASTE_CONST(0.61875000000000002); // microA_per_microF + const double var_i_NaK__km_K_o = CHASTE_CONST(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_Na_L__g_Na_L = CHASTE_CONST(0.037374999999999999); // milliS_per_microF + const double var_i_to_2__p_Cl = CHASTE_CONST(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_i_K_p__kp = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(1.2521739130434781) - CHASTE_CONST(0.16722408026755853) * var_chaste_interface__membrane__V)); // dimensionless + const double var_i_Kr__rr_infinity = 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.26470588235294124) + CHASTE_CONST(0.049019607843137261) * var_chaste_interface__membrane__V)); // dimensionless + const double var_i_NaCa__dNaCa_1 = CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * var_i_NaCa__km_Ca_o + CHASTE_CONST(1.5) * CHASTE_MATH::Pow(var_i_NaCa__km_Na_o, 3) * var_chaste_interface__Ca_i__Ca_i + CHASTE_MATH::Pow(var_i_NaCa__km_Na_i_1, 3) * (1 + CHASTE_CONST(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_i_K1__g_K1 = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::Sqrt(mParameters[5]) * mParameters[11]; // milliS_per_microF + const double var_i_Kr__g_Kr = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::Sqrt(mParameters[5]) * mParameters[12]; // milliS_per_microF + const double var_i_NaCa__dNaCa_2 = CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[4] + CHASTE_CONST(1.5) * CHASTE_MATH::Pow(mParameters[6], 3) * var_chaste_interface__Ca_i__Ca_i + CHASTE_MATH::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 = -CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * CHASTE_MATH::Exp(CHASTE_CONST(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_equilibrium_potentials__E_Cl = -var_model_parameters__R * var_model_parameters__T * CHASTE_MATH::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_equilibrium_potentials__E_K = var_model_parameters__R * var_model_parameters__T * CHASTE_MATH::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_equilibrium_potentials__E_Ks = var_model_parameters__R * var_model_parameters__T * CHASTE_MATH::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 * CHASTE_MATH::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__alpha_xK1 = CHASTE_CONST(1.02) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.23849999999999999) * var_equilibrium_potentials__E_K)); // dimensionless + const double var_i_K1_xK1_gate__beta_xK1 = (CHASTE_CONST(0.49124000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.43983232) + CHASTE_CONST(0.080320000000000003) * var_chaste_interface__membrane__V - CHASTE_CONST(0.080320000000000003) * var_equilibrium_potentials__E_K) + CHASTE_MATH::Exp(-CHASTE_CONST(36.698642499999998) + CHASTE_CONST(0.061749999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.061749999999999999) * var_equilibrium_potentials__E_K)) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.4444678999999998) + CHASTE_CONST(0.51429999999999998) * var_equilibrium_potentials__E_K - CHASTE_CONST(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_K1__i_K1 = (CHASTE_CONST(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 = 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 = 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_Na__i_Na = CHASTE_MATH::Pow(var_chaste_interface__i_Na_m_gate__m, 3) * (-var_equilibrium_potentials__E_Na + var_chaste_interface__membrane__V) * (CHASTE_CONST(0.20000000000000001) * var_chaste_interface__i_Na_j_gate__j + CHASTE_CONST(0.80000000000000004) * var_chaste_interface__i_Na_h_gate__h) * mParameters[8]; // microA_per_microF + const double var_i_NaCa__i_NaCa = (-CHASTE_CONST(1.5) * CHASTE_MATH::Pow(mParameters[6], 3) * var_chaste_interface__Ca_i__Ca_i * CHASTE_MATH::Exp(-CHASTE_CONST(0.65000000000000002) * var_chaste_interface__membrane__V * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T)) + CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * var_i_NaCa__X_NaCa * mParameters[14] * mParameters[4] * CHASTE_MATH::Exp(CHASTE_CONST(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 * CHASTE_MATH::Exp(-CHASTE_CONST(0.65000000000000002) * var_chaste_interface__membrane__V * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T))) * (1 + CHASTE_CONST(0.44444444444444442) * CHASTE_MATH::Pow(var_i_NaCa__km_Ca_act, 2) / CHASTE_MATH::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 + CHASTE_CONST(0.1245) * CHASTE_MATH::Exp(-CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T)) + CHASTE_CONST(0.036499999999999998) * var_i_NaK__sigma * CHASTE_MATH::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 = var_i_NaK__f_NaK * var_i_NaK__g_NaK * mParameters[5] / ((1 + CHASTE_MATH::Pow(var_i_NaK__km_Na_i_2, 2) / CHASTE_MATH::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 = CHASTE_MATH::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) * (CHASTE_CONST(0.20000000000000001) * var_chaste_interface__i_to_1_i2_gate__i2 + CHASTE_CONST(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 = CHASTE_MATH::Pow(var_i_to_2__z_Cl, 2) * CHASTE_MATH::Pow(var_model_parameters__F, 2) * (-var_model_parameters__Cl_o * CHASTE_MATH::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 - CHASTE_MATH::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__gamma_Cao = CHASTE_CONST(0.34100000000000003); // dimensionless const double var_model_parameters__z_Ca = 2; // dimensionless - const double var_background_currents__i_Ca_b = 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 = 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_background_currents__i_Ca_b = CHASTE_MATH::Pow(var_model_parameters__F, 2) * CHASTE_MATH::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 * CHASTE_MATH::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 + CHASTE_MATH::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 = CHASTE_MATH::Pow(var_model_parameters__F, 2) * CHASTE_MATH::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 * CHASTE_MATH::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 + CHASTE_MATH::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 var_chaste_interface__i_ionic = CHASTE_CAP() * var_membrane__i_tot; // uA_per_cm2 const double i_ionic = var_chaste_interface__i_ionic; EXCEPT_IF_NOT(!std::isnan(i_ionic)); @@ -341,7 +343,7 @@ { // 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)); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -404,216 +406,216 @@ // 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_CT_K_Cl__CT_K_Cl_max = CHASTE_CONST(7.0755999999999996e-6); // millimolar_per_millisecond + const double var_CT_Na_Cl__CT_Na_Cl_max = CHASTE_CONST(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_JSR__km_CSQN = CHASTE_CONST(0.80000000000000004); // millimolar + const double var_Ca_MK_act__Ca_MK_0 = CHASTE_CONST(0.050000000000000003); // dimensionless + const double var_Ca_MK_act__alpha_Ca_MK = CHASTE_CONST(0.050000000000000003); // per_millisecond + const double var_Ca_MK_act__beta_Ca_MK = CHASTE_CONST(0.00068000000000000005); // per_millisecond + const double var_Ca_MK_act__km_Ca_MK = CHASTE_CONST(0.14999999999999999); // millimolar + const double var_Ca_i__CMDN_max = CHASTE_CONST(0.050000000000000003); // millimolar + const double var_Ca_i__TRPN_max = CHASTE_CONST(0.070000000000000007); // millimolar + const double var_Ca_i__km_CMDN = CHASTE_CONST(0.0023800000000000002); // millimolar + const double var_Ca_i__CMDN = 2 * var_Ca_i__CMDN_max * var_chaste_interface__Ca_i__Ca_i / CHASTE_MATH::Pow((var_chaste_interface__Ca_i__Ca_i + var_Ca_i__km_CMDN), 2); // dimensionless + const double var_Ca_i__km_TRPN = CHASTE_CONST(0.00050000000000000001); // millimolar + const double var_Ca_i__TRPN = 2 * var_chaste_interface__Ca_i__Ca_i * var_Ca_i__TRPN_max / CHASTE_MATH::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__b_SL_max = CHASTE_CONST(1.1240000000000001); // millimolar + const double var_Ca_r__b_SR_max = CHASTE_CONST(0.047); // millimolar + const double var_Ca_r__km_b_SL = CHASTE_CONST(0.0086999999999999994); // millimolar + const double var_Ca_r__b_SL = 2 * var_chaste_interface__Ca_r__Ca_r * var_Ca_r__b_SL_max / CHASTE_MATH::Pow((var_chaste_interface__Ca_r__Ca_r + var_Ca_r__km_b_SL), 2); // dimensionless + const double var_Ca_r__km_b_SR = CHASTE_CONST(0.00087000000000000001); // millimolar + const double var_Ca_r__b_SR = 2 * var_chaste_interface__Ca_r__Ca_r * var_Ca_r__b_SR_max / CHASTE_MATH::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__tau_ss = CHASTE_CONST(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 / (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_background_currents__g_Cl_b = CHASTE_CONST(0.00022499999999999999); // milliS_per_microF + const double var_background_currents__g_K_b = CHASTE_CONST(0.0050000000000000001); // milliS_per_microF + const double var_background_currents__g_Na_b = CHASTE_CONST(0.0025000000000000001); // milliS_per_microF + const double var_background_currents__p_Ca_b = CHASTE_CONST(1.9950840000000001e-7); // cm_per_second + const double var_equilibrium_potentials__r_NaK = CHASTE_CONST(0.018329999999999999); // dimensionless + const double var_i_Ca_L__p_Ca = CHASTE_CONST(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(CHASTE_CONST(0.5) + 1 / (1 + CHASTE_CONST(333.33333333333331) * var_chaste_interface__Ca_r__Ca_r) + 10 * var_Ca_MK_act__Ca_MK_act / (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 = CHASTE_CONST(0.057500000000000002); // microA_per_microF + const double var_i_Ca_p__km_Ca_p = CHASTE_CONST(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_K_p__g_K_p = CHASTE_CONST(0.0027599999999999999); // milliS_per_microF + const double var_i_Ks__g_Ks = (1 + CHASTE_CONST(0.59999999999999998) / (1 + CHASTE_CONST(6.4818210260626455e-7) * CHASTE_MATH::Pow((1 / var_chaste_interface__Ca_i__Ca_i), CHASTE_CONST(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 = CHASTE_CONST(0.40000000000000002); // dimensionless + const double var_i_NaCa__k_sat = CHASTE_CONST(0.27000000000000002); // dimensionless + const double var_i_NaCa__km_Ca_act = CHASTE_CONST(0.000125); // millimolar + const double var_i_NaCa__km_Ca_i = CHASTE_CONST(0.0035999999999999999); // millimolar + const double var_i_NaCa__km_Ca_o = CHASTE_CONST(1.3); // millimolar + const double var_i_NaCa__km_Na_i_1 = CHASTE_CONST(12.300000000000001); // millimolar + const double var_i_NaCa__km_Na_o = CHASTE_CONST(87.5); // millimolar + const double var_i_NaK__g_NaK = CHASTE_CONST(0.61875000000000002); // microA_per_microF + const double var_i_NaK__km_K_o = CHASTE_CONST(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_Na_L__g_Na_L = CHASTE_CONST(0.037374999999999999); // milliS_per_microF + const double var_i_to_2__p_Cl = CHASTE_CONST(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__km_to_2 = CHASTE_CONST(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 var_i_Ca_L_d_gate__d_infinity = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(0.59347181008902072) - CHASTE_CONST(0.14836795252225518) * var_chaste_interface__membrane__V)); // dimensionless + const double var_i_Ca_L_d_gate__tau_d = CHASTE_CONST(0.58999999999999997) + CHASTE_CONST(0.80000000000000004) * CHASTE_MATH::Exp(CHASTE_CONST(0.67599999999999993) + CHASTE_CONST(0.051999999999999998) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(1.7160000000000002) + CHASTE_CONST(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 var_i_Ca_L_f2_gate__f2_infinity = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(1.8) + CHASTE_CONST(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 + CHASTE_CONST(24.217200000000005) * CHASTE_MATH::Pow((-1 + CHASTE_CONST(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 var_i_Ca_L_f_gate__f_infinity = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(1.8) + CHASTE_CONST(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 + CHASTE_CONST(0.03125) * CHASTE_MATH::Pow((-1 + CHASTE_CONST(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__alpha_b = CHASTE_CONST(1.0680000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.54333333333333333) + CHASTE_CONST(0.033333333333333333) * var_chaste_interface__membrane__V); // per_millisecond + const double var_i_Ca_T_b_gate__b_infinity = 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(5.4098360655737707) - CHASTE_CONST(0.16393442622950821) * var_chaste_interface__membrane__V)); // dimensionless + const double var_i_Ca_T_b_gate__beta_b = CHASTE_CONST(1.0680000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(0.54333333333333333) - CHASTE_CONST(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__alpha_g = CHASTE_CONST(0.014999999999999999) * CHASTE_MATH::Exp(-CHASTE_CONST(0.86074429771908767) - CHASTE_CONST(0.012004801920768308) * var_chaste_interface__membrane__V); // per_millisecond + const double var_i_Ca_T_g_gate__beta_g = CHASTE_CONST(0.014999999999999999) * CHASTE_MATH::Exp(CHASTE_CONST(4.6558441558441563) + CHASTE_CONST(0.064935064935064929) * var_chaste_interface__membrane__V); // per_millisecond + const double var_i_Ca_T_g_gate__g_infinity = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(9.0909090909090917) + CHASTE_CONST(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 var_i_K_p__kp = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(1.2521739130434781) - CHASTE_CONST(0.16722408026755853) * var_chaste_interface__membrane__V)); // dimensionless + const double var_i_Kr__rr_infinity = 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.26470588235294124) + CHASTE_CONST(0.049019607843137261) * var_chaste_interface__membrane__V)); // dimensionless + const double var_i_Kr_xr_gate__tau_xr = 100 + 900 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(0.20000000000000001) * var_chaste_interface__membrane__V)); // millisecond + const double var_i_Kr_xr_gate__xr_infinity = 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.0069387755102040824) - CHASTE_CONST(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 var_i_Ks_xs1_gate__tau_xs1 = 1 / (CHASTE_CONST(7.6100000000000007e-5) * (CHASTE_CONST(44.600000000000001) + var_chaste_interface__membrane__V) / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(444.66200000000003) - CHASTE_CONST(9.9700000000000006) * var_chaste_interface__membrane__V)) + CHASTE_CONST(0.00036000000000000002) * (-CHASTE_CONST(0.55000000000000004) + var_chaste_interface__membrane__V) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.070400000000000004) + CHASTE_CONST(0.128) * var_chaste_interface__membrane__V))); // millisecond + const double var_i_Ks_xs1_gate__xs1_infinity = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(0.65693430656934315) - CHASTE_CONST(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 var_i_Ks_xs2_gate__tau_xs2 = 2 / (CHASTE_CONST(7.6100000000000007e-5) * (CHASTE_CONST(44.600000000000001) + var_chaste_interface__membrane__V) / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(444.66200000000003) - CHASTE_CONST(9.9700000000000006) * var_chaste_interface__membrane__V)) + CHASTE_CONST(0.00036000000000000002) * (-CHASTE_CONST(0.55000000000000004) + var_chaste_interface__membrane__V) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.070400000000000004) + CHASTE_CONST(0.128) * var_chaste_interface__membrane__V))); // millisecond + const double var_i_Ks_xs2_gate__xs2_infinity = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(0.65693430656934315) - CHASTE_CONST(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 var_i_Na_L_h_L_gate__h_L_infinity = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(11.311475409836067) + CHASTE_CONST(0.16393442622950821) * var_chaste_interface__membrane__V)); // dimensionless + const double var_i_Na_L_h_L_gate__tau_h_L = 175 + 125 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(4.166666666666667) - CHASTE_CONST(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__alpha_m_L = CHASTE_CONST(0.32000000000000001) * (CHASTE_CONST(47.130000000000003) + var_chaste_interface__membrane__V) / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(4.7130000000000001) - CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V)); // per_millisecond + const double var_i_Na_L_m_L_gate__beta_m_L = CHASTE_CONST(0.080000000000000002) * CHASTE_MATH::Exp(-CHASTE_CONST(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__alpha_h = ((var_chaste_interface__membrane__V < -40) ? (CHASTE_CONST(0.13500000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(11.764705882352942) + CHASTE_CONST(0.14705882352941177) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - CHASTE_CONST(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 * CHASTE_MATH::Exp(CHASTE_CONST(0.34999999999999998) * var_chaste_interface__membrane__V - CHASTE_CONST(0.34999999999999998) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time)) + CHASTE_CONST(3.5600000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.079000000000000001) * var_chaste_interface__membrane__V - CHASTE_CONST(0.079000000000000001) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time))) : (CHASTE_CONST(7.6923076923076916) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.96036036036036043) + CHASTE_CONST(0.0900900900900901) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - CHASTE_CONST(0.0900900900900901) * var_chaste_interface__membrane__V)))); // per_millisecond + const double var_i_Na_h_gate__h_infinity = CHASTE_CONST(0.01) * mp_membrane_fast_sodium_current_reduced_inactivation_modifier->Calc(mParameters[9], var_chaste_interface__environment__time) + (1 - CHASTE_CONST(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__alpha_j = ((var_chaste_interface__membrane__V < -40) ? ((CHASTE_CONST(37.780000000000001) + var_chaste_interface__membrane__V) * (-127140 * CHASTE_MATH::Exp(CHASTE_CONST(0.24440000000000001) * var_chaste_interface__membrane__V - CHASTE_CONST(0.24440000000000001) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time)) - CHASTE_CONST(3.4740000000000003e-5) * CHASTE_MATH::Exp(CHASTE_CONST(0.043909999999999998) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - CHASTE_CONST(0.043909999999999998) * var_chaste_interface__membrane__V)) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(24.640530000000002) + CHASTE_CONST(0.311) * var_chaste_interface__membrane__V - CHASTE_CONST(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) ? (CHASTE_CONST(0.1212) * CHASTE_MATH::Exp(CHASTE_CONST(0.01052) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - CHASTE_CONST(0.01052) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(5.5312920000000005) + CHASTE_CONST(0.13780000000000001) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - CHASTE_CONST(0.13780000000000001) * var_chaste_interface__membrane__V))) : (CHASTE_CONST(0.29999999999999999) * CHASTE_MATH::Exp(CHASTE_CONST(2.5349999999999999e-7) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - CHASTE_CONST(2.5349999999999999e-7) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(3.2000000000000002) + CHASTE_CONST(0.10000000000000001) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V)))); // per_millisecond + const double var_i_Na_j_gate__j_infinity = CHASTE_CONST(0.01) * mp_membrane_fast_sodium_current_reduced_inactivation_modifier->Calc(mParameters[9], var_chaste_interface__environment__time) + (1 - CHASTE_CONST(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__alpha_m = CHASTE_CONST(0.32000000000000001) * (CHASTE_CONST(47.130000000000003) + var_chaste_interface__membrane__V) / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(4.7130000000000001) - CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V)); // per_millisecond + const double var_i_Na_m_gate__beta_m = CHASTE_CONST(0.080000000000000002) * CHASTE_MATH::Exp(-CHASTE_CONST(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__alpha_a = 25 * CHASTE_MATH::Exp(-CHASTE_CONST(3.7999999999999998) + CHASTE_CONST(0.050000000000000003) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(3.7999999999999998) + CHASTE_CONST(0.050000000000000003) * var_chaste_interface__membrane__V)); // per_millisecond + const double var_i_to_1_a_gate__beta_a = 25 * CHASTE_MATH::Exp(-CHASTE_CONST(2.7000000000000002) - CHASTE_CONST(0.050000000000000003) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.7000000000000002) - CHASTE_CONST(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__alpha_i2 = CHASTE_CONST(0.0044200000000000003) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(1.7333333333333334) + CHASTE_CONST(0.066666666666666666) * var_chaste_interface__membrane__V)); // per_millisecond + const double var_i_to_1_i2_gate__beta_i2 = CHASTE_CONST(0.050000000000000003) * CHASTE_MATH::Exp(-CHASTE_CONST(0.66666666666666663) + CHASTE_CONST(0.066666666666666666) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.66666666666666663) + CHASTE_CONST(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 var_i_to_1_i2_gate__tau_i2 = CHASTE_CONST(21.5) + 30 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.5) + CHASTE_CONST(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__alpha_i = CHASTE_CONST(0.029999999999999999) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(1.6666666666666667) + CHASTE_CONST(0.066666666666666666) * var_chaste_interface__membrane__V)); // per_millisecond + const double var_i_to_1_i_gate__beta_i = CHASTE_CONST(0.10000000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(2.6666666666666665) + CHASTE_CONST(0.066666666666666666) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.6666666666666665) + CHASTE_CONST(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 var_i_to_1_i_gate__tau_i = 6 + 5 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(1.6499999999999999) + CHASTE_CONST(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_i_NaCa__dNaCa_1 = CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * var_i_NaCa__km_Ca_o + CHASTE_CONST(1.5) * CHASTE_MATH::Pow(var_i_NaCa__km_Na_o, 3) * var_chaste_interface__Ca_i__Ca_i + CHASTE_MATH::Pow(var_i_NaCa__km_Na_i_1, 3) * (1 + CHASTE_CONST(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_i_K1__g_K1 = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::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 = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::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 = CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mp_extracellular_calcium_concentration_modifier->Calc(mParameters[4], var_chaste_interface__environment__time) + CHASTE_CONST(1.5) * CHASTE_MATH::Pow(mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time), 3) * var_chaste_interface__Ca_i__Ca_i + CHASTE_MATH::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 = -CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * CHASTE_MATH::Exp(CHASTE_CONST(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_equilibrium_potentials__E_Cl = -var_model_parameters__R * var_model_parameters__T * CHASTE_MATH::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_equilibrium_potentials__E_K = var_model_parameters__R * var_model_parameters__T * CHASTE_MATH::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 / (CHASTE_CONST(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_equilibrium_potentials__E_Ks = var_model_parameters__R * var_model_parameters__T * CHASTE_MATH::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 * CHASTE_MATH::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 = CHASTE_MATH::Pow((-var_equilibrium_potentials__E_Cl + var_equilibrium_potentials__E_Na), 4) * var_CT_Na_Cl__CT_Na_Cl_max / (CHASTE_CONST(59494197.640692554) + CHASTE_MATH::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__alpha_xK1 = CHASTE_CONST(1.02) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.23849999999999999) * var_equilibrium_potentials__E_K)); // dimensionless + const double var_i_K1_xK1_gate__beta_xK1 = (CHASTE_CONST(0.49124000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.43983232) + CHASTE_CONST(0.080320000000000003) * var_chaste_interface__membrane__V - CHASTE_CONST(0.080320000000000003) * var_equilibrium_potentials__E_K) + CHASTE_MATH::Exp(-CHASTE_CONST(36.698642499999998) + CHASTE_CONST(0.061749999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.061749999999999999) * var_equilibrium_potentials__E_K)) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.4444678999999998) + CHASTE_CONST(0.51429999999999998) * var_equilibrium_potentials__E_K - CHASTE_CONST(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 = mp_i_K1__i_K1_modifier->Calc((CHASTE_CONST(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 = 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 = 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_Na__i_Na = mp_i_Na__i_Na_modifier->Calc(CHASTE_MATH::Pow(var_chaste_interface__i_Na_m_gate__m, 3) * (-var_equilibrium_potentials__E_Na + var_chaste_interface__membrane__V) * (CHASTE_CONST(0.20000000000000001) * var_chaste_interface__i_Na_j_gate__j + CHASTE_CONST(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((-CHASTE_CONST(1.5) * CHASTE_MATH::Pow(mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time), 3) * var_chaste_interface__Ca_i__Ca_i * CHASTE_MATH::Exp(-CHASTE_CONST(0.65000000000000002) * var_chaste_interface__membrane__V * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T)) + CHASTE_MATH::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) * CHASTE_MATH::Exp(CHASTE_CONST(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 * CHASTE_MATH::Exp(-CHASTE_CONST(0.65000000000000002) * var_chaste_interface__membrane__V * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T))) * (1 + CHASTE_CONST(0.44444444444444442) * CHASTE_MATH::Pow(var_i_NaCa__km_Ca_act, 2) / CHASTE_MATH::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 + CHASTE_CONST(0.1245) * CHASTE_MATH::Exp(-CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T)) + CHASTE_CONST(0.036499999999999998) * var_i_NaK__sigma * CHASTE_MATH::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 = var_i_NaK__f_NaK * var_i_NaK__g_NaK * mp_extracellular_potassium_concentration_modifier->Calc(mParameters[5], var_chaste_interface__environment__time) / ((1 + CHASTE_MATH::Pow(var_i_NaK__km_Na_i_2, 2) / CHASTE_MATH::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 = CHASTE_MATH::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) * (CHASTE_CONST(0.20000000000000001) * var_chaste_interface__i_to_1_i2_gate__i2 + CHASTE_CONST(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 = CHASTE_MATH::Pow(var_i_to_2__z_Cl, 2) * CHASTE_MATH::Pow(var_model_parameters__F, 2) * (-var_model_parameters__Cl_o * CHASTE_MATH::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 - CHASTE_MATH::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__Vol_cell = CHASTE_CONST(0.34539999999999998); // microlitre + const double var_model_parameters__Vol_jsr = CHASTE_CONST(0.0047999999999999996) * var_model_parameters__Vol_cell; // microlitre + const double var_model_parameters__Vol_myo = CHASTE_CONST(0.68000000000000005) * var_model_parameters__Vol_cell; // microlitre + const double var_model_parameters__Vol_nsr = CHASTE_CONST(0.055199999999999999) * var_model_parameters__Vol_cell; // microlitre + const double var_model_parameters__Vol_ss = CHASTE_CONST(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__gamma_Cao = CHASTE_CONST(0.34100000000000003); // dimensionless + const double var_model_parameters__length = CHASTE_CONST(0.01); // cm + const double var_model_parameters__radius = CHASTE_CONST(0.0011000000000000001); // cm + const double var_model_parameters__a_geo = CHASTE_CONST(6.2800000000000002) * CHASTE_MATH::Pow(var_model_parameters__radius, 2) + CHASTE_CONST(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 = 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 = 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_background_currents__i_Ca_b = CHASTE_MATH::Pow(var_model_parameters__F, 2) * CHASTE_MATH::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 * CHASTE_MATH::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 + CHASTE_MATH::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 = CHASTE_MATH::Pow(var_model_parameters__F, 2) * CHASTE_MATH::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 * CHASTE_MATH::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 + CHASTE_MATH::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 var_i_Ca_L_f_Ca2_gate__tau_f_Ca2 = mp_membrane_L_type_calcium_current_fCa2_gate_tau_modifier->Calc(125 + 300 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(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 var_i_Ca_L_f_Ca_gate__f_Ca_infinity = CHASTE_CONST(0.14999999999999999) + CHASTE_CONST(0.55000000000000004) / (1 + CHASTE_CONST(333.33333333333331) * var_chaste_interface__Ca_r__Ca_r) + CHASTE_CONST(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__vg = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(2.6000000000000001) + CHASTE_CONST(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__Ca_fac = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(3.3333333333333335) + CHASTE_CONST(66.666666666666671) * var_i_Ca_L__i_Ca_L)); // millimolar + const double var_q_rel_ri_gate__ri_infinity = 1 / (1 + CHASTE_MATH::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 = var_Ca_MK_act__Ca_MK_act * var_q_rel_ri_gate__tau_Ca_MK_max / (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 var_q_rel_ri_gate__tau_ri = 3 + (350 - var_q_rel_ri_gate__tau_Ca_MK) / (1 + CHASTE_MATH::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__ro_infinity_JSR = CHASTE_MATH::Pow(var_chaste_interface__Ca_JSR__Ca_JSR, CHASTE_CONST(1.8999999999999999)) / (CHASTE_MATH::Pow(var_chaste_interface__Ca_JSR__Ca_JSR, CHASTE_CONST(1.8999999999999999)) + CHASTE_CONST(1644.6531773416521) * CHASTE_MATH::Pow((var_chaste_interface__Ca_r__Ca_r / (CHASTE_CONST(0.0028) + var_chaste_interface__Ca_r__Ca_r)), CHASTE_CONST(1.8999999999999999))); // dimensionless + const double var_q_rel_ro_gate__ro_infinity = CHASTE_MATH::Pow(var_i_Ca_L__i_Ca_L, 2) * var_q_rel_ro_gate__ro_infinity_JSR / (1 + CHASTE_MATH::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 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 / CHASTE_MATH::Pow((var_chaste_interface__Ca_JSR__Ca_JSR + var_Ca_JSR__km_CSQN), 2)); // millimolar / millisecond + const double var_q_up__X_q_up = CHASTE_CONST(0.5); // dimensionless + const double var_q_up__dkm_plb_max = CHASTE_CONST(0.00017000000000000001); // millimolar const double var_q_up__dkm_plb = var_Ca_MK_act__Ca_MK_act * var_q_up__dkm_plb_max / (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_max = CHASTE_CONST(0.75); // dimensionless const double var_q_up__dq_up_Ca_MK = var_Ca_MK_act__Ca_MK_act * var_q_up__dq_up_Ca_MK_max / (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__km_up = CHASTE_CONST(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 + 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 + CHASTE_CONST(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) { @@ -621,10 +623,10 @@ } else { - const double var_i_Ca_T__g_Ca_T = 0.13; // milliS_per_microF + const double var_i_Ca_T__g_Ca_T = CHASTE_CONST(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_stim_converted = CHASTE_STIM(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_membrane__i_stim = var_membrane__i_stim_converted / CHASTE_CAP(); // 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 } @@ -665,7 +667,7 @@ { // 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)); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -713,65 +715,65 @@ // 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_0 = CHASTE_CONST(0.050000000000000003); // dimensionless + const double var_Ca_MK_act__km_Ca_MK = CHASTE_CONST(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 / (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_equilibrium_potentials__r_NaK = CHASTE_CONST(0.018329999999999999); // dimensionless + const double var_i_Ca_L__p_Ca = CHASTE_CONST(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(CHASTE_CONST(0.5) + 1 / (1 + CHASTE_CONST(333.33333333333331) * var_chaste_interface__Ca_r__Ca_r) + 10 * var_Ca_MK_act__Ca_MK_act / (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 + CHASTE_CONST(0.59999999999999998) / (1 + CHASTE_CONST(6.4818210260626455e-7) * CHASTE_MATH::Pow((1 / var_chaste_interface__Ca_i__Ca_i), CHASTE_CONST(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 = CHASTE_CONST(0.40000000000000002); // dimensionless + const double var_i_NaCa__k_sat = CHASTE_CONST(0.27000000000000002); // dimensionless + const double var_i_NaCa__km_Ca_act = CHASTE_CONST(0.000125); // millimolar + const double var_i_NaCa__km_Ca_i = CHASTE_CONST(0.0035999999999999999); // millimolar + const double var_i_NaCa__km_Ca_o = CHASTE_CONST(1.3); // millimolar + const double var_i_NaCa__km_Na_i_1 = CHASTE_CONST(12.300000000000001); // millimolar + const double var_i_NaCa__km_Na_o = CHASTE_CONST(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 + CHASTE_CONST(24.217200000000005) * CHASTE_MATH::Pow((-1 + CHASTE_CONST(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 + CHASTE_CONST(0.03125) * CHASTE_MATH::Pow((-1 + CHASTE_CONST(0.40000000000000002) * var_chaste_interface__membrane__V), 2), var_chaste_interface__environment__time); // millisecond + const double var_i_Kr__rr_infinity = 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.26470588235294124) + CHASTE_CONST(0.049019607843137261) * var_chaste_interface__membrane__V)); // dimensionless + const double var_i_Na_h_gate__alpha_h = ((var_chaste_interface__membrane__V < -40) ? (CHASTE_CONST(0.13500000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(11.764705882352942) + CHASTE_CONST(0.14705882352941177) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - CHASTE_CONST(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 * CHASTE_MATH::Exp(CHASTE_CONST(0.34999999999999998) * var_chaste_interface__membrane__V - CHASTE_CONST(0.34999999999999998) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time)) + CHASTE_CONST(3.5600000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.079000000000000001) * var_chaste_interface__membrane__V - CHASTE_CONST(0.079000000000000001) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time))) : (CHASTE_CONST(7.6923076923076916) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.96036036036036043) + CHASTE_CONST(0.0900900900900901) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - CHASTE_CONST(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__alpha_j = ((var_chaste_interface__membrane__V < -40) ? ((CHASTE_CONST(37.780000000000001) + var_chaste_interface__membrane__V) * (-127140 * CHASTE_MATH::Exp(CHASTE_CONST(0.24440000000000001) * var_chaste_interface__membrane__V - CHASTE_CONST(0.24440000000000001) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time)) - CHASTE_CONST(3.4740000000000003e-5) * CHASTE_MATH::Exp(CHASTE_CONST(0.043909999999999998) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - CHASTE_CONST(0.043909999999999998) * var_chaste_interface__membrane__V)) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(24.640530000000002) + CHASTE_CONST(0.311) * var_chaste_interface__membrane__V - CHASTE_CONST(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) ? (CHASTE_CONST(0.1212) * CHASTE_MATH::Exp(CHASTE_CONST(0.01052) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - CHASTE_CONST(0.01052) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(5.5312920000000005) + CHASTE_CONST(0.13780000000000001) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - CHASTE_CONST(0.13780000000000001) * var_chaste_interface__membrane__V))) : (CHASTE_CONST(0.29999999999999999) * CHASTE_MATH::Exp(CHASTE_CONST(2.5349999999999999e-7) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - CHASTE_CONST(2.5349999999999999e-7) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(3.2000000000000002) + CHASTE_CONST(0.10000000000000001) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - CHASTE_CONST(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_membrane__i_stim_converted = CHASTE_STIM(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_i_NaCa__dNaCa_1 = CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * var_i_NaCa__km_Ca_o + CHASTE_CONST(1.5) * CHASTE_MATH::Pow(var_i_NaCa__km_Na_o, 3) * var_chaste_interface__Ca_i__Ca_i + CHASTE_MATH::Pow(var_i_NaCa__km_Na_i_1, 3) * (1 + CHASTE_CONST(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_i_K1__g_K1 = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::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 = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::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 = CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mp_extracellular_calcium_concentration_modifier->Calc(mParameters[4], var_chaste_interface__environment__time) + CHASTE_CONST(1.5) * CHASTE_MATH::Pow(mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time), 3) * var_chaste_interface__Ca_i__Ca_i + CHASTE_MATH::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_equilibrium_potentials__E_K = var_model_parameters__R * var_model_parameters__T * CHASTE_MATH::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 * CHASTE_MATH::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 * CHASTE_MATH::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 = CHASTE_CONST(1.02) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.23849999999999999) * var_equilibrium_potentials__E_K)); // dimensionless + const double var_i_K1_xK1_gate__beta_xK1 = (CHASTE_CONST(0.49124000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.43983232) + CHASTE_CONST(0.080320000000000003) * var_chaste_interface__membrane__V - CHASTE_CONST(0.080320000000000003) * var_equilibrium_potentials__E_K) + CHASTE_MATH::Exp(-CHASTE_CONST(36.698642499999998) + CHASTE_CONST(0.061749999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.061749999999999999) * var_equilibrium_potentials__E_K)) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.4444678999999998) + CHASTE_CONST(0.51429999999999998) * var_equilibrium_potentials__E_K - CHASTE_CONST(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_K1__i_K1 = mp_i_K1__i_K1_modifier->Calc((CHASTE_CONST(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 = CHASTE_CAP() * 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_Kr__i_Kr_converted = CHASTE_CAP() * 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_i_Ks__i_Ks_converted = CHASTE_CAP() * var_i_Ks__i_Ks; // uA_per_cm2 + const double var_i_Na__i_Na = mp_i_Na__i_Na_modifier->Calc(CHASTE_MATH::Pow(var_chaste_interface__i_Na_m_gate__m, 3) * (-var_equilibrium_potentials__E_Na + var_chaste_interface__membrane__V) * (CHASTE_CONST(0.20000000000000001) * var_chaste_interface__i_Na_j_gate__j + CHASTE_CONST(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 = CHASTE_CAP() * var_i_Na__i_Na; // uA_per_cm2 + const double var_i_NaCa__i_NaCa = mp_i_NaCa__i_NaCa_modifier->Calc((-CHASTE_CONST(1.5) * CHASTE_MATH::Pow(mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time), 3) * var_chaste_interface__Ca_i__Ca_i * CHASTE_MATH::Exp(-CHASTE_CONST(0.65000000000000002) * var_chaste_interface__membrane__V * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T)) + CHASTE_MATH::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) * CHASTE_MATH::Exp(CHASTE_CONST(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 * CHASTE_MATH::Exp(-CHASTE_CONST(0.65000000000000002) * var_chaste_interface__membrane__V * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T))) * (1 + CHASTE_CONST(0.44444444444444442) * CHASTE_MATH::Pow(var_i_NaCa__km_Ca_act, 2) / CHASTE_MATH::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 = CHASTE_CAP() * 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) * (CHASTE_CONST(0.20000000000000001) * var_chaste_interface__i_to_1_i2_gate__i2 + CHASTE_CONST(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 = CHASTE_CAP() * 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__gamma_Cao = CHASTE_CONST(0.34100000000000003); // dimensionless const double var_model_parameters__z_Ca = 2; // dimensionless - const double var_i_Ca_L__i_Ca_L_max = 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_max = CHASTE_MATH::Pow(var_model_parameters__F, 2) * CHASTE_MATH::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 * CHASTE_MATH::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 + CHASTE_MATH::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_i_Ca_L__i_Ca_L_converted = CHASTE_CAP() * 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 + CHASTE_MATH::Exp(-CHASTE_CONST(4.375) - 25 * var_i_Ca_L__i_Ca_L)), var_chaste_interface__environment__time); // millisecond + const double var_q_rel__vg = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(2.6000000000000001) + CHASTE_CONST(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 diff --git a/chaste_codegen/data/tests/chaste_reference_models/Normal/non_dynamic_aslanidi_Purkinje_model_2009.hpp b/chaste_codegen/data/tests/chaste_reference_models/Normal/non_dynamic_aslanidi_Purkinje_model_2009.hpp index e1ee4ad73..df35ea4c3 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/Normal/non_dynamic_aslanidi_Purkinje_model_2009.hpp +++ b/chaste_codegen/data/tests/chaste_reference_models/Normal/non_dynamic_aslanidi_Purkinje_model_2009.hpp @@ -18,6 +18,9 @@ #include "AbstractCardiacCellWithModifiers.hpp" #include "AbstractModifier.hpp" #include "AbstractStimulusFunction.hpp" +#if USING_DEVICE_COMPILER +#include "StimulusEvaluatorCuda.hpp" +#endif #include "AbstractCardiacCell.hpp" class Cellaslanidi_Purkinje_model_2009FromCellML : public AbstractCardiacCellWithModifiers diff --git a/chaste_codegen/data/tests/chaste_reference_models/Normal/output_class.c b/chaste_codegen/data/tests/chaste_reference_models/Normal/output_class.c index 18c293165..3c61e82b3 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/Normal/output_class.c +++ b/chaste_codegen/data/tests/chaste_reference_models/Normal/output_class.c @@ -21,6 +21,8 @@ #include "HeartConfig.hpp" #include "IsNan.hpp" #include "MathsCustomFunctions.hpp" +#include "ChasteMathDeviceNamespaces.hpp" +#include "ChasteCpuMacros.hpp" #include "ModelFactory.hpp" @@ -35,7 +37,7 @@ bool Chaste_CG::registered = ModelFactory::Register("output_class", "Normal", (M 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_amplitude_converted = -CHASTE_CONST(0.0030000000000000001) * CHASTE_CAP() / 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 @@ -67,26 +69,26 @@ bool Chaste_CG::registered = ModelFactory::Register("output_class", "Normal", (M // 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[0] = CHASTE_CONST(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[2] = CHASTE_CONST(0.00050000000000000001); // (var_calcium_release__K_m_Ca_cyt) [millimolar] + this->mParameters[3] = CHASTE_CONST(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[9] = CHASTE_CONST(0.10000000000000001); // (var_L_type_Ca_channel__P_Ca_L) [nanoA_per_millimolar] + this->mParameters[10] = CHASTE_CONST(9.5000000000000005e-5); // (var_membrane__Cm) [microF] + this->mParameters[11] = CHASTE_CONST(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] + this->mParameters[14] = CHASTE_CONST(0.5); // (var_time_independent_potassium_current__g_K1) [microS] + this->mParameters[15] = CHASTE_CONST(0.0020999999999999999); // (var_rapid_delayed_rectifier_potassium_current__g_Kr1) [microS] + this->mParameters[16] = CHASTE_CONST(0.0012999999999999999); // (var_rapid_delayed_rectifier_potassium_current__g_Kr2) [microS] + this->mParameters[17] = CHASTE_CONST(0.0025999999999999999); // (var_slow_delayed_rectifier_potassium_current__g_Ks) [microS] + this->mParameters[18] = CHASTE_CONST(0.00050000000000000001); // (var_sodium_calcium_exchanger__k_NaCa) [nanoA] + this->mParameters[19] = CHASTE_CONST(0.0050000000000000001); // (var_transient_outward_current__g_to) [microS] } Chaste_CG::~Chaste_CG() @@ -140,7 +142,7 @@ bool Chaste_CG::registered = ModelFactory::Register("output_class", "Normal", (M // 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -174,52 +176,52 @@ bool Chaste_CG::registered = ModelFactory::Register("output_class", "Normal", (M // 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_L_type_Ca_channel__P_CaK = CHASTE_CONST(0.002); // dimensionless + const double var_L_type_Ca_channel__P_CaNa = CHASTE_CONST(0.01); // dimensionless + const double var_calcium_background_current__g_bca = CHASTE_CONST(0.00025000000000000001); // microS + const double var_membrane__F = CHASTE_CONST(96485.341499999995); // coulomb_per_mole + const double var_membrane__R = CHASTE_CONST(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_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 * CHASTE_MATH::Exp(100 * var_membrane__F / (var_membrane__R * var_membrane__T)) - mParameters[6] * CHASTE_MATH::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 - CHASTE_MATH::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 * CHASTE_MATH::Exp(100 * var_membrane__F / (var_membrane__R * var_membrane__T)) - mParameters[6] * CHASTE_MATH::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 - CHASTE_MATH::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 * CHASTE_MATH::Exp(50 * var_membrane__F / (var_membrane__R * var_membrane__T)) - mParameters[7] * CHASTE_MATH::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 - CHASTE_MATH::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 * CHASTE_MATH::Exp(50 * var_membrane__F / (var_membrane__R * var_membrane__T)) - mParameters[7] * CHASTE_MATH::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 - CHASTE_MATH::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 * CHASTE_MATH::Exp(50 * var_membrane__F / (var_membrane__R * var_membrane__T)) - mParameters[8] * CHASTE_MATH::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 - CHASTE_MATH::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 * CHASTE_MATH::Exp(50 * var_membrane__F / (var_membrane__R * var_membrane__T)) - mParameters[8] * CHASTE_MATH::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 - CHASTE_MATH::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 = CHASTE_CONST(0.0040000000000000001); // microS + const double var_reversal_potentials__E_Ca = CHASTE_CONST(0.5) * var_membrane__R * var_membrane__T * CHASTE_MATH::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 = (-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 = (-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((mParameters[8] + 0.12 * mParameters[7]) / (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_reversal_potentials__E_K = var_membrane__R * var_membrane__T * CHASTE_MATH::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 = (-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 + CHASTE_MATH::Exp(CHASTE_CONST(0.4017857142857143) + CHASTE_CONST(0.044642857142857144) * var_chaste_interface__membrane__V)); // nanoA + const double var_rapid_delayed_rectifier_potassium_current__i_Kr_converted = CHASTE_CONST(0.001) * CHASTE_CAP() * 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 * CHASTE_MATH::Log(mParameters[8] / var_chaste_interface__intracellular_sodium_concentration__Na_i) / var_membrane__F; // millivolt + const double var_persistent_sodium_current__i_p_Na = (-var_reversal_potentials__E_Na + var_chaste_interface__membrane__V) * var_persistent_sodium_current__g_pna / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(6.5) - CHASTE_CONST(0.125) * var_chaste_interface__membrane__V)); // nanoA + const double var_reversal_potentials__E_mh = var_membrane__R * var_membrane__T * CHASTE_MATH::Log((mParameters[8] + CHASTE_CONST(0.12) * mParameters[7]) / (var_chaste_interface__intracellular_sodium_concentration__Na_i + CHASTE_CONST(0.12) * var_chaste_interface__intracellular_potassium_concentration__K_i)) / var_membrane__F; // millivolt + const double var_fast_sodium_current__i_Na = CHASTE_MATH::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 = CHASTE_CONST(0.001) * CHASTE_CAP() * var_fast_sodium_current__i_Na / mParameters[10]; // uA_per_cm2 + const double var_reversal_potentials__P_kna = CHASTE_CONST(0.029999999999999999); // dimensionless + const double var_reversal_potentials__E_Ks = var_membrane__R * var_membrane__T * CHASTE_MATH::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 = CHASTE_MATH::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 = CHASTE_CONST(0.001) * CHASTE_CAP() * var_slow_delayed_rectifier_potassium_current__i_Ks / mParameters[10]; // uA_per_cm2 + const double var_sodium_background_current__g_bna = CHASTE_CONST(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__FRiNaCa = CHASTE_CONST(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__gamma = CHASTE_CONST(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_cyt = (1 - var_sodium_calcium_exchanger__FRiNaCa) * (CHASTE_MATH::Pow(var_chaste_interface__intracellular_sodium_concentration__Na_i, var_sodium_calcium_exchanger__n_NaCa) * mParameters[6] * CHASTE_MATH::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)) - CHASTE_MATH::Pow(mParameters[8], var_sodium_calcium_exchanger__n_NaCa) * var_chaste_interface__intracellular_calcium_concentration__Ca_i * CHASTE_MATH::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 + CHASTE_CONST(144.92753623188406) * var_chaste_interface__intracellular_calcium_concentration__Ca_i) * (1 + (CHASTE_MATH::Pow(mParameters[8], var_sodium_calcium_exchanger__n_NaCa) * var_chaste_interface__intracellular_calcium_concentration__Ca_i + CHASTE_MATH::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 = (CHASTE_MATH::Pow(var_chaste_interface__intracellular_sodium_concentration__Na_i, var_sodium_calcium_exchanger__n_NaCa) * mParameters[6] * CHASTE_MATH::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)) - CHASTE_MATH::Pow(mParameters[8], var_sodium_calcium_exchanger__n_NaCa) * var_chaste_interface__intracellular_calcium_concentration__Ca_ds * CHASTE_MATH::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 + CHASTE_CONST(144.92753623188406) * var_chaste_interface__intracellular_calcium_concentration__Ca_ds) * (1 + (CHASTE_MATH::Pow(mParameters[8], var_sodium_calcium_exchanger__n_NaCa) * var_chaste_interface__intracellular_calcium_concentration__Ca_ds + CHASTE_MATH::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_max = CHASTE_CONST(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_time_independent_potassium_current__i_K1 = (-var_reversal_potentials__E_K + var_chaste_interface__membrane__V) * mParameters[7] * mParameters[14] / ((1 + CHASTE_MATH::Exp(CHASTE_CONST(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 = CHASTE_CONST(0.001) * CHASTE_CAP() * 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 var_transient_outward_current__i_to_converted = CHASTE_CONST(0.001) * CHASTE_CAP() * 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] + CHASTE_CONST(0.001) * CHASTE_CAP() * var_L_type_Ca_channel__i_Ca_L_Ca_cyt + CHASTE_CONST(0.001) * CHASTE_CAP() * var_L_type_Ca_channel__i_Ca_L_Ca_ds + CHASTE_CONST(0.001) * CHASTE_CAP() * var_L_type_Ca_channel__i_Ca_L_K_cyt + CHASTE_CONST(0.001) * CHASTE_CAP() * var_L_type_Ca_channel__i_Ca_L_K_ds + CHASTE_CONST(0.001) * CHASTE_CAP() * var_L_type_Ca_channel__i_Ca_L_Na_cyt + CHASTE_CONST(0.001) * CHASTE_CAP() * var_L_type_Ca_channel__i_Ca_L_Na_ds + CHASTE_CONST(0.001) * CHASTE_CAP() * var_calcium_background_current__i_b_Ca + CHASTE_CONST(0.001) * CHASTE_CAP() * var_persistent_sodium_current__i_p_Na + CHASTE_CONST(0.001) * CHASTE_CAP() * var_sodium_background_current__i_b_Na + CHASTE_CONST(0.001) * CHASTE_CAP() * var_sodium_calcium_exchanger__i_NaCa_cyt + CHASTE_CONST(0.001) * CHASTE_CAP() * var_sodium_calcium_exchanger__i_NaCa_ds + CHASTE_CONST(0.001) * CHASTE_CAP() * 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)); @@ -230,7 +232,7 @@ bool Chaste_CG::registered = ModelFactory::Register("output_class", "Normal", (M { // Inputs: // Time units: millisecond - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -279,148 +281,148 @@ bool Chaste_CG::registered = ModelFactory::Register("output_class", "Normal", (M 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__Km_f2ds = CHASTE_CONST(0.001); // millimolar + const double var_L_type_Ca_channel__P_CaK = CHASTE_CONST(0.002); // dimensionless + const double var_L_type_Ca_channel__P_CaNa = CHASTE_CONST(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_L_type_Ca_channel_f_gate__delta_f = CHASTE_CONST(0.0001); // millivolt + const double var_L_type_Ca_channel_f_gate__speed_f = CHASTE_CONST(0.29999999999999999); // dimensionless + const double var_calcium_background_current__g_bca = CHASTE_CONST(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_fast_sodium_current_m_gate__delta_m = CHASTE_CONST(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 d_dt_chaste_interface_var_L_type_Ca_channel_f2ds_gate__f2ds = CHASTE_CONST(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 - var_chaste_interface__L_type_Ca_channel_f2_gate__f2 - 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 d_dt_chaste_interface_var_L_type_Ca_channel_f2_gate__f2 = CHASTE_CONST(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_release__ActRate = 500 * CHASTE_MATH::Pow(var_calcium_release__RegBindSite, 2); // per_second + const double var_calcium_release__InactRate = 60 + 500 * CHASTE_MATH::Pow(var_calcium_release__RegBindSite, 2); // per_second + const double var_calcium_release__i_rel = (CHASTE_MATH::Pow(var_chaste_interface__calcium_release__ActFrac, 2) * mParameters[1] / CHASTE_MATH::Pow((CHASTE_CONST(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__Calmod = CHASTE_CONST(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__Trop = CHASTE_CONST(0.050000000000000003); // millimolar + const double var_intracellular_calcium_concentration__V_ds_ratio = CHASTE_CONST(0.10000000000000001); // dimensionless + const double var_intracellular_calcium_concentration__V_e_ratio = CHASTE_CONST(0.40000000000000002); // dimensionless + const double var_intracellular_calcium_concentration__V_rel_ratio = CHASTE_CONST(0.10000000000000001); // dimensionless + const double var_intracellular_calcium_concentration__V_up_ratio = CHASTE_CONST(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 d_dt_chaste_interface_var_intracellular_calcium_concentration__Ca_rel = CHASTE_CONST(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 d_dt_chaste_interface_var_intracellular_calcium_concentration__Ca_Calmod = CHASTE_CONST(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 d_dt_chaste_interface_var_intracellular_calcium_concentration__Ca_Trop = CHASTE_CONST(0.001) * var_intracellular_calcium_concentration__Ca_Trop_orig_deriv; // millimolar / millisecond + const double var_intracellular_calcium_concentration__length = CHASTE_CONST(0.073999999999999996); // micrometre + const double var_intracellular_calcium_concentration__radius = CHASTE_CONST(0.012); // micrometre + const double var_intracellular_calcium_concentration__V_Cell = CHASTE_CONST(3.1415926540000001) * CHASTE_MATH::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__F = CHASTE_CONST(96485.341499999995); // coulomb_per_mole + const double var_membrane__R = CHASTE_CONST(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_Ca_cyt = 4 * (1 - var_L_type_Ca_channel__FrICa) * (-50 + var_chaste_interface__membrane__V) * (var_chaste_interface__intracellular_calcium_concentration__Ca_i * CHASTE_MATH::Exp(100 * var_membrane__F / (var_membrane__R * var_membrane__T)) - mParameters[6] * CHASTE_MATH::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 - CHASTE_MATH::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 * CHASTE_MATH::Exp(100 * var_membrane__F / (var_membrane__R * var_membrane__T)) - mParameters[6] * CHASTE_MATH::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 - CHASTE_MATH::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 * CHASTE_MATH::Exp(50 * var_membrane__F / (var_membrane__R * var_membrane__T)) - mParameters[7] * CHASTE_MATH::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 - CHASTE_MATH::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 * CHASTE_MATH::Exp(50 * var_membrane__F / (var_membrane__R * var_membrane__T)) - mParameters[7] * CHASTE_MATH::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 - CHASTE_MATH::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 * CHASTE_MATH::Exp(50 * var_membrane__F / (var_membrane__R * var_membrane__T)) - mParameters[8] * CHASTE_MATH::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 - CHASTE_MATH::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 * CHASTE_MATH::Exp(50 * var_membrane__F / (var_membrane__R * var_membrane__T)) - mParameters[8] * CHASTE_MATH::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 - CHASTE_MATH::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__alpha_d = ((CHASTE_MATH::Abs(var_L_type_Ca_channel_d_gate__E0_d) < CHASTE_CONST(0.0001)) ? (120) : (30 * var_L_type_Ca_channel_d_gate__E0_d / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(0.25) * var_L_type_Ca_channel_d_gate__E0_d)))); // per_second + const double var_L_type_Ca_channel_d_gate__beta_d = ((CHASTE_MATH::Abs(var_L_type_Ca_channel_d_gate__E0_d) < CHASTE_CONST(0.0001)) ? (120) : (12 * var_L_type_Ca_channel_d_gate__E0_d / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(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 d_dt_chaste_interface_var_L_type_Ca_channel_d_gate__d = CHASTE_CONST(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__alpha_f = ((var_L_type_Ca_channel_f_gate__delta_f > CHASTE_MATH::Abs(var_L_type_Ca_channel_f_gate__E0_f)) ? (25) : (CHASTE_CONST(6.25) * var_L_type_Ca_channel_f_gate__E0_f / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(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 + CHASTE_MATH::Exp(-CHASTE_CONST(8.5) - CHASTE_CONST(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 d_dt_chaste_interface_var_L_type_Ca_channel_f_gate__f = CHASTE_CONST(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 d_dt_chaste_interface_var_calcium_release__ActFrac = CHASTE_CONST(0.001) * var_calcium_release__ActFrac_orig_deriv; // 1 / millisecond const double var_calcium_release__ProdFrac_orig_deriv = -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 d_dt_chaste_interface_var_calcium_release__ProdFrac = CHASTE_CONST(0.001) * var_calcium_release__ProdFrac_orig_deriv; // 1 / millisecond + const double var_fast_sodium_current_h_gate__alpha_h = 20 * CHASTE_MATH::Exp(-CHASTE_CONST(9.375) + CHASTE_CONST(0.125) * mParameters[13] - CHASTE_CONST(0.125) * var_chaste_interface__membrane__V); // per_second + const double var_fast_sodium_current_h_gate__beta_h = 2000 / (1 + 320 * CHASTE_MATH::Exp(-CHASTE_CONST(7.5) + CHASTE_CONST(0.10000000000000001) * mParameters[13] - CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V)); // per_second + const double var_fast_sodium_current_h_gate__h_inf = CHASTE_CONST(0.01) * mParameters[12] + (1 - CHASTE_CONST(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 d_dt_chaste_interface_var_fast_sodium_current_h_gate__h = CHASTE_CONST(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__alpha_m = ((var_fast_sodium_current_m_gate__delta_m > CHASTE_MATH::Abs(var_fast_sodium_current_m_gate__E0_m)) ? (2000) : (200 * var_fast_sodium_current_m_gate__E0_m / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(0.10000000000000001) * var_fast_sodium_current_m_gate__E0_m)))); // per_second + const double var_fast_sodium_current_m_gate__beta_m = 8000 * CHASTE_MATH::Exp(-CHASTE_CONST(3.6960000000000002) - CHASTE_CONST(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 d_dt_chaste_interface_var_fast_sodium_current_m_gate__m = CHASTE_CONST(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 - CHASTE_CONST(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 = CHASTE_CONST(0.001) * var_intracellular_calcium_concentration__Ca_ds_orig_deriv; // millimolar / millisecond + const double var_persistent_sodium_current__g_pna = CHASTE_CONST(0.0040000000000000001); // microS + const double var_rapid_delayed_rectifier_potassium_current_xr1_gate__alpha_xr1 = 50 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(0.55555555555555558) - CHASTE_CONST(0.1111111111111111) * var_chaste_interface__membrane__V)); // per_second + const double var_rapid_delayed_rectifier_potassium_current_xr1_gate__beta_xr1 = CHASTE_CONST(0.050000000000000003) * CHASTE_MATH::Exp(CHASTE_CONST(1.3333333333333333) - CHASTE_CONST(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 d_dt_chaste_interface_var_rapid_delayed_rectifier_potassium_current_xr1_gate__xr1 = CHASTE_CONST(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 + CHASTE_MATH::Exp(CHASTE_CONST(0.55555555555555558) - CHASTE_CONST(0.1111111111111111) * var_chaste_interface__membrane__V)); // per_second + const double var_rapid_delayed_rectifier_potassium_current_xr2_gate__beta_xr2 = CHASTE_CONST(0.40000000000000002) * CHASTE_MATH::Exp(-CHASTE_MATH::Pow((1 + CHASTE_CONST(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 d_dt_chaste_interface_var_rapid_delayed_rectifier_potassium_current_xr2_gate__xr2 = CHASTE_CONST(0.001) * var_rapid_delayed_rectifier_potassium_current_xr2_gate__xr2_orig_deriv; // 1 / millisecond + const double var_reversal_potentials__E_Ca = CHASTE_CONST(0.5) * var_membrane__R * var_membrane__T * CHASTE_MATH::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 = (-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 = (-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((mParameters[8] + 0.12 * mParameters[7]) / (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_reversal_potentials__E_K = var_membrane__R * var_membrane__T * CHASTE_MATH::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 = (-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 + CHASTE_MATH::Exp(CHASTE_CONST(0.4017857142857143) + CHASTE_CONST(0.044642857142857144) * var_chaste_interface__membrane__V)); // nanoA + const double var_reversal_potentials__E_Na = var_membrane__R * var_membrane__T * CHASTE_MATH::Log(mParameters[8] / var_chaste_interface__intracellular_sodium_concentration__Na_i) / var_membrane__F; // millivolt + const double var_persistent_sodium_current__i_p_Na = (-var_reversal_potentials__E_Na + var_chaste_interface__membrane__V) * var_persistent_sodium_current__g_pna / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(6.5) - CHASTE_CONST(0.125) * var_chaste_interface__membrane__V)); // nanoA + const double var_reversal_potentials__E_mh = var_membrane__R * var_membrane__T * CHASTE_MATH::Log((mParameters[8] + CHASTE_CONST(0.12) * mParameters[7]) / (var_chaste_interface__intracellular_sodium_concentration__Na_i + CHASTE_CONST(0.12) * var_chaste_interface__intracellular_potassium_concentration__K_i)) / var_membrane__F; // millivolt + const double var_fast_sodium_current__i_Na = CHASTE_MATH::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 = CHASTE_CONST(0.029999999999999999); // dimensionless + const double var_reversal_potentials__E_Ks = var_membrane__R * var_membrane__T * CHASTE_MATH::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 = CHASTE_CONST(0.00029999999999999997); // millimolar + const double var_sarcoplasmic_reticulum_calcium_pump__K_srca = CHASTE_CONST(0.5); // millimolar + const double var_sarcoplasmic_reticulum_calcium_pump__K_xcs = CHASTE_CONST(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__alpha_up = CHASTE_CONST(0.40000000000000002); // millimolar_per_second + const double var_sarcoplasmic_reticulum_calcium_pump__beta_up = CHASTE_CONST(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 = 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 d_dt_chaste_interface_var_intracellular_calcium_concentration__Ca_up = CHASTE_CONST(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 + CHASTE_MATH::Exp(CHASTE_CONST(4.4444444444444446) - CHASTE_CONST(0.1111111111111111) * var_chaste_interface__membrane__V)); // per_second + const double var_slow_delayed_rectifier_potassium_current_xs_gate__beta_xs = CHASTE_MATH::Exp(-CHASTE_CONST(0.022222222222222223) * var_chaste_interface__membrane__V); // per_second + const double var_slow_delayed_rectifier_potassium_current__i_Ks = CHASTE_MATH::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 d_dt_chaste_interface_var_slow_delayed_rectifier_potassium_current_xs_gate__xs = CHASTE_CONST(0.001) * var_slow_delayed_rectifier_potassium_current_xs_gate__xs_orig_deriv; // 1 / millisecond + const double var_sodium_background_current__g_bna = CHASTE_CONST(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__FRiNaCa = CHASTE_CONST(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__gamma = CHASTE_CONST(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_calcium_exchanger__i_NaCa_cyt = (1 - var_sodium_calcium_exchanger__FRiNaCa) * (CHASTE_MATH::Pow(var_chaste_interface__intracellular_sodium_concentration__Na_i, var_sodium_calcium_exchanger__n_NaCa) * mParameters[6] * CHASTE_MATH::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)) - CHASTE_MATH::Pow(mParameters[8], var_sodium_calcium_exchanger__n_NaCa) * var_chaste_interface__intracellular_calcium_concentration__Ca_i * CHASTE_MATH::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 + CHASTE_CONST(144.92753623188406) * var_chaste_interface__intracellular_calcium_concentration__Ca_i) * (1 + (CHASTE_MATH::Pow(mParameters[8], var_sodium_calcium_exchanger__n_NaCa) * var_chaste_interface__intracellular_calcium_concentration__Ca_i + CHASTE_MATH::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 = (CHASTE_MATH::Pow(var_chaste_interface__intracellular_sodium_concentration__Na_i, var_sodium_calcium_exchanger__n_NaCa) * mParameters[6] * CHASTE_MATH::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)) - CHASTE_MATH::Pow(mParameters[8], var_sodium_calcium_exchanger__n_NaCa) * var_chaste_interface__intracellular_calcium_concentration__Ca_ds * CHASTE_MATH::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 + CHASTE_CONST(144.92753623188406) * var_chaste_interface__intracellular_calcium_concentration__Ca_ds) * (1 + (CHASTE_MATH::Pow(mParameters[8], var_sodium_calcium_exchanger__n_NaCa) * var_chaste_interface__intracellular_calcium_concentration__Ca_ds + CHASTE_MATH::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 - CHASTE_CONST(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 = CHASTE_CONST(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_max = CHASTE_CONST(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 = -(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 d_dt_chaste_interface_var_intracellular_sodium_concentration__Na_i = CHASTE_CONST(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_time_independent_potassium_current__i_K1 = (-var_reversal_potentials__E_K + var_chaste_interface__membrane__V) * mParameters[7] * mParameters[14] / ((1 + CHASTE_MATH::Exp(CHASTE_CONST(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_r_gate__r_orig_deriv = 333 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.80000000000000004) - CHASTE_CONST(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 = CHASTE_CONST(0.001) * var_transient_outward_current_r_gate__r_orig_deriv; // 1 / millisecond + const double var_transient_outward_current_s_gate__alpha_s = CHASTE_CONST(0.033000000000000002) * CHASTE_MATH::Exp(-CHASTE_CONST(0.058823529411764705) * var_chaste_interface__membrane__V); // per_second + const double var_transient_outward_current_s_gate__beta_s = 33 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(1.25) - CHASTE_CONST(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 = -(-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 d_dt_chaste_interface_var_intracellular_potassium_concentration__K_i = CHASTE_CONST(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 + const double d_dt_chaste_interface_var_transient_outward_current_s_gate__s = CHASTE_CONST(0.001) * var_transient_outward_current_s_gate__s_orig_deriv; // 1 / millisecond if (mSetVoltageDerivativeToZero) { @@ -428,10 +430,10 @@ bool Chaste_CG::registered = ModelFactory::Register("output_class", "Normal", (M } 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__i_Stim_converted = CHASTE_STIM(var_chaste_interface__environment__time_converted); // uA_per_cm2 + const double var_membrane__i_Stim = 1000 * mParameters[10] * var_membrane__i_Stim_converted / CHASTE_CAP(); // nanoA const double var_membrane__V_orig_deriv = -(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 + d_dt_chaste_interface_var_membrane__V = CHASTE_CONST(0.001) * var_membrane__V_orig_deriv; // millivolt / millisecond } rDY[0] = d_dt_chaste_interface_var_membrane__V; @@ -462,7 +464,7 @@ bool Chaste_CG::registered = ModelFactory::Register("output_class", "Normal", (M { // Inputs: // Time units: millisecond - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -501,53 +503,53 @@ bool Chaste_CG::registered = ModelFactory::Register("output_class", "Normal", (M // 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_L_type_Ca_channel__P_CaK = CHASTE_CONST(0.002); // dimensionless + const double var_L_type_Ca_channel__P_CaNa = CHASTE_CONST(0.01); // dimensionless + const double var_L_type_Ca_channel_f_gate__delta_f = CHASTE_CONST(0.0001); // millivolt + const double var_calcium_release__i_rel = (CHASTE_MATH::Pow(var_chaste_interface__calcium_release__ActFrac, 2) * mParameters[1] / CHASTE_MATH::Pow((CHASTE_CONST(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 = CHASTE_CONST(96485.341499999995); // coulomb_per_mole + const double var_membrane__R = CHASTE_CONST(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_Ca_cyt = 4 * (1 - var_L_type_Ca_channel__FrICa) * (-50 + var_chaste_interface__membrane__V) * (var_chaste_interface__intracellular_calcium_concentration__Ca_i * CHASTE_MATH::Exp(100 * var_membrane__F / (var_membrane__R * var_membrane__T)) - mParameters[6] * CHASTE_MATH::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 - CHASTE_MATH::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 * CHASTE_MATH::Exp(100 * var_membrane__F / (var_membrane__R * var_membrane__T)) - mParameters[6] * CHASTE_MATH::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 - CHASTE_MATH::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 * CHASTE_MATH::Exp(50 * var_membrane__F / (var_membrane__R * var_membrane__T)) - mParameters[7] * CHASTE_MATH::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 - CHASTE_MATH::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 * CHASTE_MATH::Exp(50 * var_membrane__F / (var_membrane__R * var_membrane__T)) - mParameters[7] * CHASTE_MATH::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 - CHASTE_MATH::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 * CHASTE_MATH::Exp(50 * var_membrane__F / (var_membrane__R * var_membrane__T)) - mParameters[8] * CHASTE_MATH::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 - CHASTE_MATH::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 * CHASTE_MATH::Exp(50 * var_membrane__F / (var_membrane__R * var_membrane__T)) - mParameters[8] * CHASTE_MATH::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 - CHASTE_MATH::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__i_Ca_L_converted = CHASTE_CONST(0.001) * CHASTE_CAP() * 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__alpha_f = ((var_L_type_Ca_channel_f_gate__delta_f > CHASTE_MATH::Abs(var_L_type_Ca_channel_f_gate__E0_f)) ? (25) : (CHASTE_CONST(6.25) * var_L_type_Ca_channel_f_gate__E0_f / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(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 + CHASTE_MATH::Exp(-CHASTE_CONST(8.5) - CHASTE_CONST(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__alpha_h = 20 * CHASTE_MATH::Exp(-CHASTE_CONST(9.375) + CHASTE_CONST(0.125) * mParameters[13] - CHASTE_CONST(0.125) * var_chaste_interface__membrane__V); // per_second + const double var_fast_sodium_current_h_gate__beta_h = 2000 / (1 + 320 * CHASTE_MATH::Exp(-CHASTE_CONST(7.5) + CHASTE_CONST(0.10000000000000001) * mParameters[13] - CHASTE_CONST(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 = (-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((mParameters[8] + 0.12 * mParameters[7]) / (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_membrane__i_Stim_converted = CHASTE_STIM(var_chaste_interface__environment__time_converted); // uA_per_cm2 + const double var_reversal_potentials__E_K = var_membrane__R * var_membrane__T * CHASTE_MATH::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 = (-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 + CHASTE_MATH::Exp(CHASTE_CONST(0.4017857142857143) + CHASTE_CONST(0.044642857142857144) * var_chaste_interface__membrane__V)); // nanoA + const double var_rapid_delayed_rectifier_potassium_current__i_Kr_converted = CHASTE_CONST(0.001) * CHASTE_CAP() * 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 * CHASTE_MATH::Log((mParameters[8] + CHASTE_CONST(0.12) * mParameters[7]) / (var_chaste_interface__intracellular_sodium_concentration__Na_i + CHASTE_CONST(0.12) * var_chaste_interface__intracellular_potassium_concentration__K_i)) / var_membrane__F; // millivolt + const double var_fast_sodium_current__i_Na = CHASTE_MATH::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 = CHASTE_CONST(0.001) * CHASTE_CAP() * var_fast_sodium_current__i_Na / mParameters[10]; // uA_per_cm2 + const double var_reversal_potentials__P_kna = CHASTE_CONST(0.029999999999999999); // dimensionless + const double var_reversal_potentials__E_Ks = var_membrane__R * var_membrane__T * CHASTE_MATH::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 = CHASTE_MATH::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 = CHASTE_CONST(0.001) * CHASTE_CAP() * var_slow_delayed_rectifier_potassium_current__i_Ks / mParameters[10]; // uA_per_cm2 + const double var_sodium_calcium_exchanger__FRiNaCa = CHASTE_CONST(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__gamma = CHASTE_CONST(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_cyt = (1 - var_sodium_calcium_exchanger__FRiNaCa) * (CHASTE_MATH::Pow(var_chaste_interface__intracellular_sodium_concentration__Na_i, var_sodium_calcium_exchanger__n_NaCa) * mParameters[6] * CHASTE_MATH::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)) - CHASTE_MATH::Pow(mParameters[8], var_sodium_calcium_exchanger__n_NaCa) * var_chaste_interface__intracellular_calcium_concentration__Ca_i * CHASTE_MATH::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 + CHASTE_CONST(144.92753623188406) * var_chaste_interface__intracellular_calcium_concentration__Ca_i) * (1 + (CHASTE_MATH::Pow(mParameters[8], var_sodium_calcium_exchanger__n_NaCa) * var_chaste_interface__intracellular_calcium_concentration__Ca_i + CHASTE_MATH::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 = (CHASTE_MATH::Pow(var_chaste_interface__intracellular_sodium_concentration__Na_i, var_sodium_calcium_exchanger__n_NaCa) * mParameters[6] * CHASTE_MATH::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)) - CHASTE_MATH::Pow(mParameters[8], var_sodium_calcium_exchanger__n_NaCa) * var_chaste_interface__intracellular_calcium_concentration__Ca_ds * CHASTE_MATH::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 + CHASTE_CONST(144.92753623188406) * var_chaste_interface__intracellular_calcium_concentration__Ca_ds) * (1 + (CHASTE_MATH::Pow(mParameters[8], var_sodium_calcium_exchanger__n_NaCa) * var_chaste_interface__intracellular_calcium_concentration__Ca_ds + CHASTE_MATH::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_sodium_calcium_exchanger__i_NaCa_converted = CHASTE_CONST(0.001) * CHASTE_CAP() * 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_time_independent_potassium_current__i_K1 = (-var_reversal_potentials__E_K + var_chaste_interface__membrane__V) * mParameters[7] * mParameters[14] / ((1 + CHASTE_MATH::Exp(CHASTE_CONST(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 = CHASTE_CONST(0.001) * CHASTE_CAP() * 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_transient_outward_current__i_to_converted = CHASTE_CONST(0.001) * CHASTE_CAP() * var_transient_outward_current__i_to / mParameters[10]; // uA_per_cm2 std::vector dqs(12); dqs[0] = var_calcium_release__i_rel; diff --git a/chaste_codegen/data/tests/chaste_reference_models/Normal/output_class.h b/chaste_codegen/data/tests/chaste_reference_models/Normal/output_class.h index ddfabca97..cee48e00d 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/Normal/output_class.h +++ b/chaste_codegen/data/tests/chaste_reference_models/Normal/output_class.h @@ -17,6 +17,9 @@ #include #include "AbstractDynamicallyLoadableEntity.hpp" #include "AbstractStimulusFunction.hpp" +#if USING_DEVICE_COMPILER +#include "StimulusEvaluatorCuda.hpp" +#endif #include "AbstractCardiacCell.hpp" class Chaste_CG : public AbstractCardiacCell, public AbstractDynamicallyLoadableEntity diff --git a/chaste_codegen/data/tests/chaste_reference_models/Normal/test_V_not_state_derived_quant.cpp b/chaste_codegen/data/tests/chaste_reference_models/Normal/test_V_not_state_derived_quant.cpp index bef3b7f29..fe5a4f53f 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/Normal/test_V_not_state_derived_quant.cpp +++ b/chaste_codegen/data/tests/chaste_reference_models/Normal/test_V_not_state_derived_quant.cpp @@ -21,6 +21,8 @@ #include "HeartConfig.hpp" #include "IsNan.hpp" #include "MathsCustomFunctions.hpp" +#include "ChasteMathDeviceNamespaces.hpp" +#include "ChasteCpuMacros.hpp" @@ -102,7 +104,7 @@ // Mathematics const double var_membrane__V1_orig_deriv = 25; // volt / second - const double d_dt_chaste_interface_var_membrane__V1 = 0.001 * var_membrane__V1_orig_deriv; // volt / millisecond + const double d_dt_chaste_interface_var_membrane__V1 = CHASTE_CONST(0.001) * var_membrane__V1_orig_deriv; // volt / millisecond if (mSetVoltageDerivativeToZero) { @@ -121,7 +123,7 @@ // Time units: millisecond // Mathematics - const double var_membrane__time = 0.001 * var_chaste_interface__membrane__time_converted; // second + const double var_membrane__time = CHASTE_CONST(0.001) * var_chaste_interface__membrane__time_converted; // second const double var_membrane__V_converted = 2000 * var_membrane__time; // millivolt std::vector dqs(2); diff --git a/chaste_codegen/data/tests/chaste_reference_models/Normal/test_V_not_state_derived_quant.hpp b/chaste_codegen/data/tests/chaste_reference_models/Normal/test_V_not_state_derived_quant.hpp index 02b23f2f9..064be890b 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/Normal/test_V_not_state_derived_quant.hpp +++ b/chaste_codegen/data/tests/chaste_reference_models/Normal/test_V_not_state_derived_quant.hpp @@ -16,6 +16,9 @@ #include "ChasteSerialization.hpp" #include #include "AbstractStimulusFunction.hpp" +#if USING_DEVICE_COMPILER +#include "StimulusEvaluatorCuda.hpp" +#endif #include "AbstractCardiacCell.hpp" class Celltest_V_not_state_derived_quantFromCellML : public AbstractCardiacCell diff --git a/chaste_codegen/data/tests/chaste_reference_models/Normal/test_V_not_state_mparam.cpp b/chaste_codegen/data/tests/chaste_reference_models/Normal/test_V_not_state_mparam.cpp index 53e8c534f..85a8f2f2a 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/Normal/test_V_not_state_mparam.cpp +++ b/chaste_codegen/data/tests/chaste_reference_models/Normal/test_V_not_state_mparam.cpp @@ -21,6 +21,8 @@ #include "HeartConfig.hpp" #include "IsNan.hpp" #include "MathsCustomFunctions.hpp" +#include "ChasteMathDeviceNamespaces.hpp" +#include "ChasteCpuMacros.hpp" @@ -102,7 +104,7 @@ // Mathematics const double var_membrane__V1_orig_deriv = 25; // volt / second - const double d_dt_chaste_interface_var_membrane__V1 = 0.001 * var_membrane__V1_orig_deriv; // volt / millisecond + const double d_dt_chaste_interface_var_membrane__V1 = CHASTE_CONST(0.001) * var_membrane__V1_orig_deriv; // volt / millisecond if (mSetVoltageDerivativeToZero) { diff --git a/chaste_codegen/data/tests/chaste_reference_models/Normal/test_V_not_state_mparam.hpp b/chaste_codegen/data/tests/chaste_reference_models/Normal/test_V_not_state_mparam.hpp index cf084a0d9..660be00e1 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/Normal/test_V_not_state_mparam.hpp +++ b/chaste_codegen/data/tests/chaste_reference_models/Normal/test_V_not_state_mparam.hpp @@ -16,6 +16,9 @@ #include "ChasteSerialization.hpp" #include #include "AbstractStimulusFunction.hpp" +#if USING_DEVICE_COMPILER +#include "StimulusEvaluatorCuda.hpp" +#endif #include "AbstractCardiacCell.hpp" class Celltest_V_not_state_mparamFromCellML : public AbstractCardiacCell diff --git a/chaste_codegen/data/tests/chaste_reference_models/Opt/aslanidi_Purkinje_model_2009Opt.cpp b/chaste_codegen/data/tests/chaste_reference_models/Opt/aslanidi_Purkinje_model_2009Opt.cpp new file mode 100644 index 000000000..f5dcdcf79 --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/Opt/aslanidi_Purkinje_model_2009Opt.cpp @@ -0,0 +1,1430 @@ +//! @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 "ChasteMathDeviceNamespaces.hpp" +#include "ChasteCpuMacros.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 * CHASTE_CAP(); // 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] = CHASTE_CONST(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] = CHASTE_CONST(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] = CHASTE_CONST(1.8); // (var_model_parameters__Ca_o) [millimolar] + this->mParameters[5] = CHASTE_CONST(5.4000000000000004); // (var_model_parameters__K_o) [millimolar] + this->mParameters[6] = 140; // (var_model_parameters__Na_o) [millimolar] + this->mParameters[7] = CHASTE_CONST(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] = CHASTE_CONST(0.25); // (var_i_K1__g_K1_max) [milliS_per_microF] + this->mParameters[12] = CHASTE_CONST(0.040008488000000002); // (var_i_Kr__g_Kr_max) [milliS_per_microF] + this->mParameters[13] = CHASTE_CONST(0.052581329000000003); // (var_i_Ks__g_Ks_max) [milliS_per_microF] + this->mParameters[14] = CHASTE_CONST(4.5); // (var_i_NaCa__i_NaCa_max) [microA_per_microF] + this->mParameters[15] = CHASTE_CONST(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 ? CHASTE_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 = CHASTE_CONST(26.712338705498265) * CHASTE_MATH::Log(mParameters[5] / var_chaste_interface__intracellular_ion_concentrations__K_i); // millivolt + const double var_equilibrium_potentials__E_Na = CHASTE_CONST(26.712338705498265) * CHASTE_MATH::Log(mParameters[6] / var_chaste_interface__intracellular_ion_concentrations__Na_i); // millivolt + const double var_membrane__i_tot = CHASTE_CONST(0.0077250000000000001) * var_chaste_interface__membrane__V + CHASTE_CONST(0.0060102762087371094) * CHASTE_MATH::Log(100 / var_chaste_interface__intracellular_ion_concentrations__Cl_i) - CHASTE_CONST(0.0025000000000000001) * var_equilibrium_potentials__E_Na - CHASTE_CONST(0.0050000000000000001) * var_equilibrium_potentials__E_K + (CHASTE_CONST(0.0040000000000000001) + CHASTE_CONST(0.4389381125701739) * CHASTE_MATH::Sqrt(mParameters[5]) * mParameters[11] / ((1 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.23849999999999999) * var_equilibrium_potentials__E_K)) * (CHASTE_CONST(1.02) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.23849999999999999) * var_equilibrium_potentials__E_K)) + (CHASTE_CONST(0.49124000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.43983232) + CHASTE_CONST(0.080320000000000003) * var_chaste_interface__membrane__V - CHASTE_CONST(0.080320000000000003) * var_equilibrium_potentials__E_K) + CHASTE_MATH::Exp(-CHASTE_CONST(36.698642499999998) + CHASTE_CONST(0.061749999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.061749999999999999) * var_equilibrium_potentials__E_K)) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.4444678999999998) + CHASTE_CONST(0.51429999999999998) * var_equilibrium_potentials__E_K - CHASTE_CONST(0.51429999999999998) * var_chaste_interface__membrane__V))))) * (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) + CHASTE_CONST(0.0027599999999999999) * (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) / (_lt_0_row[0]) + CHASTE_CONST(0.057500000000000002) * var_chaste_interface__Ca_i__Ca_i / (CHASTE_CONST(0.00050000000000000001) + var_chaste_interface__Ca_i__Ca_i) + CHASTE_CONST(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 + CHASTE_CONST(0.037374999999999999) * CHASTE_MATH::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 + CHASTE_CONST(0.0028824983370007683) * (-CHASTE_CONST(0.34100000000000003) * mParameters[4] + var_chaste_interface__Ca_i__Ca_i * _lt_0_row[1]) * var_chaste_interface__membrane__V / (_lt_0_row[2]) + (-CHASTE_CONST(1.5) * CHASTE_MATH::Pow(mParameters[6], 3) * var_chaste_interface__Ca_i__Ca_i * _lt_0_row[3] + CHASTE_CONST(0.40000000000000002) * CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[14] * mParameters[4] * _lt_0_row[4]) / ((_lt_0_row[5]) * (1 + CHASTE_CONST(6.9444444444444451e-9) / CHASTE_MATH::Pow(var_chaste_interface__Ca_i__Ca_i, 2)) * (CHASTE_CONST(1004882.8125) * var_chaste_interface__Ca_i__Ca_i + CHASTE_CONST(1.3) * CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) + CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[4] + CHASTE_CONST(1.5) * CHASTE_MATH::Pow(mParameters[6], 3) * var_chaste_interface__Ca_i__Ca_i + CHASTE_CONST(0.0035999999999999999) * CHASTE_MATH::Pow(mParameters[6], 3) * (1 + CHASTE_CONST(0.081300813008130079) * var_chaste_interface__intracellular_ion_concentrations__Na_i) + CHASTE_CONST(1860.8670000000004) * (1 + CHASTE_CONST(416.66666666666669) * var_chaste_interface__Ca_i__Ca_i) * mParameters[4])) + CHASTE_MATH::Pow(var_chaste_interface__i_Na_m_gate__m, 3) * (-var_equilibrium_potentials__E_Na + var_chaste_interface__membrane__V) * (CHASTE_CONST(0.20000000000000001) * var_chaste_interface__i_Na_j_gate__j + CHASTE_CONST(0.80000000000000004) * var_chaste_interface__i_Na_h_gate__h) * mParameters[8] + (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) * (CHASTE_CONST(0.20000000000000001) * var_chaste_interface__i_to_1_i2_gate__i2 + CHASTE_CONST(0.80000000000000004) * var_chaste_interface__i_to_1_i_gate__i) * mParameters[15] * var_chaste_interface__i_to_1_a_gate__a + CHASTE_CONST(0.61875000000000002) * mParameters[5] / ((1 + 100 / CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 2)) * (CHASTE_CONST(1.5) + mParameters[5]) * (1 + _lt_0_row[7] + CHASTE_CONST(0.036499999999999998) * (-CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * CHASTE_MATH::Exp(CHASTE_CONST(0.01485884101040119) * mParameters[6])) * _lt_0_row[6])) + CHASTE_CONST(0.028896009762002683) * (_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 / (_lt_0_row[9]) + (1 + CHASTE_CONST(0.59999999999999998) / (1 + CHASTE_CONST(6.4818210260626455e-7) * CHASTE_MATH::Pow((1 / var_chaste_interface__Ca_i__Ca_i), CHASTE_CONST(1.3999999999999999)))) * (-CHASTE_CONST(26.712338705498265) * CHASTE_MATH::Log((CHASTE_CONST(0.018329999999999999) * mParameters[6] + mParameters[5]) / (CHASTE_CONST(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 + CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::Sqrt(mParameters[5]) * (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) * mParameters[12] * var_chaste_interface__i_Kr_xr_gate__xr / (_lt_0_row[10]) + CHASTE_CONST(3.510865186083326) * (-15 + var_chaste_interface__membrane__V) * (-CHASTE_CONST(0.34100000000000003) * mParameters[4] + 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 / (_lt_0_row[12]); // microA_per_microF + const double var_chaste_interface__i_ionic = CHASTE_CAP() * 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 ? CHASTE_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 = CHASTE_CONST(0.050000000000000003) * (1 - var_chaste_interface__Ca_MK_act__Ca_MK_trap) / (1 + CHASTE_CONST(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 = -CHASTE_CONST(0.00068000000000000005) * var_chaste_interface__Ca_MK_act__Ca_MK_trap + CHASTE_CONST(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 = CHASTE_CONST(0.057500000000000002) * var_chaste_interface__Ca_i__Ca_i / (CHASTE_CONST(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 + CHASTE_CONST(0.1502) / var_chaste_interface__Ca_r__Ca_r) - var_chaste_interface__i_to_2_a_gate__a; // 1 / millisecond + const double d_dt_chaste_interface_var_i_Ca_L_d_gate__d = (-var_chaste_interface__i_Ca_L_d_gate__d + _lt_0_row[13]) / (_lt_0_row[14]); // 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 + CHASTE_CONST(24.217200000000005) * CHASTE_MATH::Pow((-1 + CHASTE_CONST(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 + CHASTE_CONST(0.03125) * CHASTE_MATH::Pow((-1 + CHASTE_CONST(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 = (-var_chaste_interface__i_Kr_xr_gate__xr + _lt_0_row[20]) / (_lt_0_row[21]); // 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 = (-var_chaste_interface__i_Na_L_h_L_gate__h_L + _lt_0_row[25]) / (_lt_0_row[26]); // 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)) * (var_i_Na_L_m_L_gate__alpha_m_L + 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) ? (CHASTE_CONST(0.13500000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(11.764705882352942) + CHASTE_CONST(0.14705882352941177) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - CHASTE_CONST(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 * CHASTE_MATH::Exp(CHASTE_CONST(0.34999999999999998) * var_chaste_interface__membrane__V - CHASTE_CONST(0.34999999999999998) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time)) + CHASTE_CONST(3.5600000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.079000000000000001) * var_chaste_interface__membrane__V - CHASTE_CONST(0.079000000000000001) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time))) : (CHASTE_CONST(7.6923076923076916) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.96036036036036043) + CHASTE_CONST(0.0900900900900901) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - CHASTE_CONST(0.0900900900900901) * var_chaste_interface__membrane__V)))); // per_millisecond + const double d_dt_chaste_interface_var_i_Na_h_gate__h = (var_i_Na_h_gate__alpha_h + var_i_Na_h_gate__beta_h) * (-var_chaste_interface__i_Na_h_gate__h + CHASTE_CONST(0.01) * mp_membrane_fast_sodium_current_reduced_inactivation_modifier->Calc(mParameters[9], var_chaste_interface__environment__time) + (1 - CHASTE_CONST(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) ? ((CHASTE_CONST(37.780000000000001) + var_chaste_interface__membrane__V) * (-127140 * CHASTE_MATH::Exp(CHASTE_CONST(0.24440000000000001) * var_chaste_interface__membrane__V - CHASTE_CONST(0.24440000000000001) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time)) - CHASTE_CONST(3.4740000000000003e-5) * CHASTE_MATH::Exp(CHASTE_CONST(0.043909999999999998) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - CHASTE_CONST(0.043909999999999998) * var_chaste_interface__membrane__V)) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(24.640530000000002) + CHASTE_CONST(0.311) * var_chaste_interface__membrane__V - CHASTE_CONST(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) ? (CHASTE_CONST(0.1212) * CHASTE_MATH::Exp(CHASTE_CONST(0.01052) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - CHASTE_CONST(0.01052) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(5.5312920000000005) + CHASTE_CONST(0.13780000000000001) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - CHASTE_CONST(0.13780000000000001) * var_chaste_interface__membrane__V))) : (CHASTE_CONST(0.29999999999999999) * CHASTE_MATH::Exp(CHASTE_CONST(2.5349999999999999e-7) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - CHASTE_CONST(2.5349999999999999e-7) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(3.2000000000000002) + CHASTE_CONST(0.10000000000000001) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V)))); // per_millisecond + const double d_dt_chaste_interface_var_i_Na_j_gate__j = (var_i_Na_j_gate__alpha_j + var_i_Na_j_gate__beta_j) * (-var_chaste_interface__i_Na_j_gate__j + CHASTE_CONST(0.01) * mp_membrane_fast_sodium_current_reduced_inactivation_modifier->Calc(mParameters[9], var_chaste_interface__environment__time) + (1 - CHASTE_CONST(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)) * (var_i_Na_m_gate__alpha_m + 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)) * (var_i_to_1_a_gate__alpha_a + var_i_to_1_a_gate__beta_a); // 1 / millisecond + const double d_dt_chaste_interface_var_i_to_1_i2_gate__i2 = (-var_chaste_interface__i_to_1_i2_gate__i2 + _lt_0_row[31]) / (_lt_0_row[32]); // 1 / millisecond + const double d_dt_chaste_interface_var_i_to_1_i_gate__i = (-var_chaste_interface__i_to_1_i_gate__i + _lt_0_row[33]) / (_lt_0_row[34]); // 1 / millisecond + const double var_equilibrium_potentials__E_Cl = -CHASTE_CONST(26.712338705498265) * CHASTE_MATH::Log(100 / var_chaste_interface__intracellular_ion_concentrations__Cl_i); // millivolt + const double var_background_currents__i_Cl_b = CHASTE_CONST(0.00022499999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.00022499999999999999) * var_equilibrium_potentials__E_Cl; // microA_per_microF + const double var_equilibrium_potentials__E_K = CHASTE_CONST(26.712338705498265) * CHASTE_MATH::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 = CHASTE_CONST(7.0755999999999996e-6) * (-var_equilibrium_potentials__E_Cl + var_equilibrium_potentials__E_K) / (CHASTE_CONST(87.825100000000006) - var_equilibrium_potentials__E_Cl + var_equilibrium_potentials__E_K); // millimolar_per_millisecond + const double var_background_currents__i_K_b = CHASTE_CONST(0.0050000000000000001) * var_chaste_interface__membrane__V - CHASTE_CONST(0.0050000000000000001) * var_equilibrium_potentials__E_K; // microA_per_microF + const double var_equilibrium_potentials__E_Na = CHASTE_CONST(26.712338705498265) * CHASTE_MATH::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 = CHASTE_CONST(9.8442999999999999e-6) * CHASTE_MATH::Pow((-var_equilibrium_potentials__E_Cl + var_equilibrium_potentials__E_Na), 4) / (CHASTE_CONST(59494197.640692554) + CHASTE_MATH::Pow((-var_equilibrium_potentials__E_Cl + var_equilibrium_potentials__E_Na), 4)); // millimolar_per_millisecond + const double var_background_currents__i_Na_b = CHASTE_CONST(0.0025000000000000001) * var_chaste_interface__membrane__V - CHASTE_CONST(0.0025000000000000001) * var_equilibrium_potentials__E_Na; // microA_per_microF + const double var_i_K1__i_K1 = mp_i_K1__i_K1_modifier->Calc((CHASTE_CONST(0.0040000000000000001) + CHASTE_CONST(0.4389381125701739) * CHASTE_MATH::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 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.23849999999999999) * var_equilibrium_potentials__E_K)) * (CHASTE_CONST(1.02) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.23849999999999999) * var_equilibrium_potentials__E_K)) + (CHASTE_CONST(0.49124000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.43983232) + CHASTE_CONST(0.080320000000000003) * var_chaste_interface__membrane__V - CHASTE_CONST(0.080320000000000003) * var_equilibrium_potentials__E_K) + CHASTE_MATH::Exp(-CHASTE_CONST(36.698642499999998) + CHASTE_CONST(0.061749999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.061749999999999999) * var_equilibrium_potentials__E_K)) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.4444678999999998) + CHASTE_CONST(0.51429999999999998) * var_equilibrium_potentials__E_K - CHASTE_CONST(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 = CHASTE_CONST(0.0027599999999999999) * (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) / (_lt_0_row[0]); // microA_per_microF + const double var_i_Kr__i_Kr = mp_i_Kr__i_Kr_modifier->Calc(CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::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 / (_lt_0_row[10]), var_chaste_interface__environment__time); // microA_per_microF + const double var_i_Ks__i_Ks = mp_i_Ks__i_Ks_modifier->Calc((1 + CHASTE_CONST(0.59999999999999998) / (1 + CHASTE_CONST(6.4818210260626455e-7) * CHASTE_MATH::Pow((1 / var_chaste_interface__Ca_i__Ca_i), CHASTE_CONST(1.3999999999999999)))) * (-CHASTE_CONST(26.712338705498265) * CHASTE_MATH::Log((CHASTE_CONST(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)) / (CHASTE_CONST(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(CHASTE_MATH::Pow(var_chaste_interface__i_Na_m_gate__m, 3) * (-var_equilibrium_potentials__E_Na + var_chaste_interface__membrane__V) * (CHASTE_CONST(0.20000000000000001) * var_chaste_interface__i_Na_j_gate__j + CHASTE_CONST(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((-CHASTE_CONST(1.5) * CHASTE_MATH::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] + CHASTE_CONST(0.40000000000000002) * CHASTE_MATH::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]) / ((_lt_0_row[5]) * (1 + CHASTE_CONST(6.9444444444444451e-9) / CHASTE_MATH::Pow(var_chaste_interface__Ca_i__Ca_i, 2)) * (CHASTE_CONST(1004882.8125) * var_chaste_interface__Ca_i__Ca_i + CHASTE_CONST(1.3) * CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) + CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mp_extracellular_calcium_concentration_modifier->Calc(mParameters[4], var_chaste_interface__environment__time) + CHASTE_CONST(1.5) * CHASTE_MATH::Pow(mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time), 3) * var_chaste_interface__Ca_i__Ca_i + CHASTE_CONST(0.0035999999999999999) * CHASTE_MATH::Pow(mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time), 3) * (1 + CHASTE_CONST(0.081300813008130079) * var_chaste_interface__intracellular_ion_concentrations__Na_i) + CHASTE_CONST(1860.8670000000004) * (1 + CHASTE_CONST(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 = CHASTE_CONST(0.61875000000000002) * mp_extracellular_potassium_concentration_modifier->Calc(mParameters[5], var_chaste_interface__environment__time) / ((1 + 100 / CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 2)) * (CHASTE_CONST(1.5) + mp_extracellular_potassium_concentration_modifier->Calc(mParameters[5], var_chaste_interface__environment__time)) * (1 + _lt_0_row[7] + CHASTE_CONST(0.036499999999999998) * (-CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * CHASTE_MATH::Exp(CHASTE_CONST(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 = CHASTE_CONST(0.037374999999999999) * CHASTE_MATH::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) * (CHASTE_CONST(0.20000000000000001) * var_chaste_interface__i_to_1_i2_gate__i2 + CHASTE_CONST(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 = CHASTE_CONST(0.028896009762002683) * (_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 / (_lt_0_row[9]); // microA_per_microF + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Cl_i = (-CHASTE_CONST(6.767281717060562e-9) * var_background_currents__i_Cl_b - CHASTE_CONST(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 = (CHASTE_CONST(1.3534563434121124e-8) * var_i_NaK__i_NaK - CHASTE_CONST(6.767281717060562e-9) * var_background_currents__i_K_b - CHASTE_CONST(6.767281717060562e-9) * var_i_K1__i_K1 - CHASTE_CONST(6.767281717060562e-9) * var_i_K_p__i_K_p - CHASTE_CONST(6.767281717060562e-9) * var_i_Kr__i_Kr - CHASTE_CONST(6.767281717060562e-9) * var_i_Ks__i_Ks - CHASTE_CONST(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 = (-CHASTE_CONST(2.0301845151181685e-8) * var_i_NaCa__i_NaCa - CHASTE_CONST(2.0301845151181685e-8) * var_i_NaK__i_NaK - CHASTE_CONST(6.767281717060562e-9) * var_background_currents__i_Na_b - CHASTE_CONST(6.767281717060562e-9) * var_i_Na__i_Na - CHASTE_CONST(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 = CHASTE_CONST(0.0028824983370007683) * (-CHASTE_CONST(0.34100000000000003) * mp_extracellular_calcium_concentration_modifier->Calc(mParameters[4], var_chaste_interface__environment__time) + var_chaste_interface__Ca_i__Ca_i * _lt_0_row[1]) * var_chaste_interface__membrane__V / (_lt_0_row[2]); // microA_per_microF + const double var_i_Ca_L__i_Ca_L_max = CHASTE_CONST(3.510865186083326) * (-15 + var_chaste_interface__membrane__V) * (-CHASTE_CONST(0.34100000000000003) * mp_extracellular_calcium_concentration_modifier->Calc(mParameters[4], var_chaste_interface__environment__time) + var_chaste_interface__Ca_r__Ca_r * _lt_0_row[11]) / (_lt_0_row[12]); // 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 + CHASTE_MATH::Exp(-CHASTE_CONST(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 = (CHASTE_CONST(0.14999999999999999) - var_chaste_interface__i_Ca_L_f_Ca_gate__f_Ca + CHASTE_CONST(0.55000000000000004) / (1 + CHASTE_CONST(333.33333333333331) * var_chaste_interface__Ca_r__Ca_r) + CHASTE_CONST(0.29999999999999999) / (1 - 20 * var_i_Ca_L__i_Ca_L)) / (CHASTE_CONST(0.5) + 1 / (1 + CHASTE_CONST(333.33333333333331) * var_chaste_interface__Ca_r__Ca_r) + 10 * var_Ca_MK_act__Ca_MK_act / (CHASTE_CONST(0.14999999999999999) + var_Ca_MK_act__Ca_MK_act)); // 1 / millisecond + const double var_q_leak__q_leak = CHASTE_CONST(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 + CHASTE_MATH::Exp(CHASTE_CONST(3.3333333333333335) + CHASTE_CONST(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 + CHASTE_MATH::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 / (CHASTE_CONST(0.14999999999999999) + var_Ca_MK_act__Ca_MK_act)) / (1 + CHASTE_MATH::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 / (CHASTE_CONST(0.14999999999999999) + var_Ca_MK_act__Ca_MK_act)); // 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) * 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 + CHASTE_MATH::Exp(CHASTE_CONST(2.6000000000000001) + CHASTE_CONST(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 = (-var_Ca_r__q_diff + CHASTE_CONST(0.23999999999999996) * var_q_rel__q_rel - CHASTE_CONST(1.1504378919002956e-7) * var_i_Ca_L__i_Ca_L) / (1 + CHASTE_CONST(2.2480000000000002) * var_chaste_interface__Ca_r__Ca_r / CHASTE_MATH::Pow((CHASTE_CONST(0.0086999999999999994) + var_chaste_interface__Ca_r__Ca_r), 2) + CHASTE_CONST(0.094) * var_chaste_interface__Ca_r__Ca_r / CHASTE_MATH::Pow((CHASTE_CONST(0.00087000000000000001) + var_chaste_interface__Ca_r__Ca_r), 2)); // millimolar / millisecond + const double d_dt_chaste_interface_var_q_rel_ro_gate__ro = -CHASTE_CONST(0.33333333333333331) * var_chaste_interface__q_rel_ro_gate__ro + CHASTE_CONST(0.33333333333333331) * CHASTE_MATH::Pow(var_chaste_interface__Ca_JSR__Ca_JSR, CHASTE_CONST(1.8999999999999999)) * CHASTE_MATH::Pow(var_i_Ca_L__i_Ca_L, 2) / ((1 + CHASTE_MATH::Pow(var_i_Ca_L__i_Ca_L, 2)) * (CHASTE_MATH::Pow(var_chaste_interface__Ca_JSR__Ca_JSR, CHASTE_CONST(1.8999999999999999)) + CHASTE_CONST(1644.6531773416521) * CHASTE_MATH::Pow((var_chaste_interface__Ca_r__Ca_r / (CHASTE_CONST(0.0028) + var_chaste_interface__Ca_r__Ca_r)), CHASTE_CONST(1.8999999999999999)))); // 1 / millisecond + const double var_q_tr__q_tr = CHASTE_CONST(0.0083333333333333332) * var_chaste_interface__Ca_NSR__Ca_NSR - CHASTE_CONST(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 / CHASTE_MATH::Pow((CHASTE_CONST(0.80000000000000004) + var_chaste_interface__Ca_JSR__Ca_JSR), 2)); // millimolar / millisecond + const double var_q_up__q_up = CHASTE_CONST(0.5) * (1 + CHASTE_CONST(0.75) * var_Ca_MK_act__Ca_MK_act / (CHASTE_CONST(0.14999999999999999) + 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) / (CHASTE_CONST(0.00092000000000000003) - CHASTE_CONST(0.00017000000000000001) * var_Ca_MK_act__Ca_MK_act / (CHASTE_CONST(0.14999999999999999) + 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 - CHASTE_CONST(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 = -(CHASTE_CONST(3.383640858530281e-9) * var_background_currents__i_Ca_b + CHASTE_CONST(3.383640858530281e-9) * var_i_Ca_p__i_Ca_p + CHASTE_CONST(0.081176470588235281) * var_q_up__q_up - CHASTE_CONST(0.029411764705882353) * var_Ca_r__q_diff - CHASTE_CONST(6.767281717060562e-9) * var_i_NaCa__i_NaCa - CHASTE_CONST(0.081176470588235281) * var_q_leak__q_leak) / (1 + CHASTE_CONST(0.14000000000000001) * var_chaste_interface__Ca_i__Ca_i / CHASTE_MATH::Pow((CHASTE_CONST(0.00050000000000000001) + var_chaste_interface__Ca_i__Ca_i), 2) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__Ca_i__Ca_i / CHASTE_MATH::Pow((CHASTE_CONST(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 - CHASTE_STIM(var_chaste_interface__environment__time) / CHASTE_CAP() - CHASTE_CONST(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 ? CHASTE_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 = CHASTE_CONST(0.050000000000000003); // dimensionless + const double var_Ca_MK_act__km_Ca_MK = CHASTE_CONST(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 = CHASTE_CONST(0.018329999999999999); // dimensionless + const double var_i_Ca_L__p_Ca = CHASTE_CONST(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(CHASTE_CONST(0.5) + 1 / (1 + CHASTE_CONST(333.33333333333331) * var_chaste_interface__Ca_r__Ca_r) + 10 * var_Ca_MK_act__Ca_MK_act / (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 + CHASTE_CONST(0.59999999999999998) / (1 + CHASTE_CONST(6.4818210260626455e-7) * CHASTE_MATH::Pow((1 / var_chaste_interface__Ca_i__Ca_i), CHASTE_CONST(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 = CHASTE_CONST(0.40000000000000002); // dimensionless + const double var_i_NaCa__k_sat = CHASTE_CONST(0.27000000000000002); // dimensionless + const double var_i_NaCa__km_Ca_act = CHASTE_CONST(0.000125); // millimolar + const double var_i_NaCa__km_Ca_i = CHASTE_CONST(0.0035999999999999999); // millimolar + const double var_i_NaCa__km_Ca_o = CHASTE_CONST(1.3); // millimolar + const double var_i_NaCa__km_Na_i_1 = CHASTE_CONST(12.300000000000001); // millimolar + const double var_i_NaCa__km_Na_o = CHASTE_CONST(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 + CHASTE_CONST(24.217200000000005) * CHASTE_MATH::Pow((-1 + CHASTE_CONST(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 + CHASTE_CONST(0.03125) * CHASTE_MATH::Pow((-1 + CHASTE_CONST(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) ? (CHASTE_CONST(0.13500000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(11.764705882352942) + CHASTE_CONST(0.14705882352941177) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - CHASTE_CONST(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 * CHASTE_MATH::Exp(CHASTE_CONST(0.34999999999999998) * var_chaste_interface__membrane__V - CHASTE_CONST(0.34999999999999998) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time)) + CHASTE_CONST(3.5600000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.079000000000000001) * var_chaste_interface__membrane__V - CHASTE_CONST(0.079000000000000001) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time))) : (CHASTE_CONST(7.6923076923076916) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.96036036036036043) + CHASTE_CONST(0.0900900900900901) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - CHASTE_CONST(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) ? ((CHASTE_CONST(37.780000000000001) + var_chaste_interface__membrane__V) * (-127140 * CHASTE_MATH::Exp(CHASTE_CONST(0.24440000000000001) * var_chaste_interface__membrane__V - CHASTE_CONST(0.24440000000000001) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time)) - CHASTE_CONST(3.4740000000000003e-5) * CHASTE_MATH::Exp(CHASTE_CONST(0.043909999999999998) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - CHASTE_CONST(0.043909999999999998) * var_chaste_interface__membrane__V)) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(24.640530000000002) + CHASTE_CONST(0.311) * var_chaste_interface__membrane__V - CHASTE_CONST(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) ? (CHASTE_CONST(0.1212) * CHASTE_MATH::Exp(CHASTE_CONST(0.01052) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - CHASTE_CONST(0.01052) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(5.5312920000000005) + CHASTE_CONST(0.13780000000000001) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - CHASTE_CONST(0.13780000000000001) * var_chaste_interface__membrane__V))) : (CHASTE_CONST(0.29999999999999999) * CHASTE_MATH::Exp(CHASTE_CONST(2.5349999999999999e-7) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - CHASTE_CONST(2.5349999999999999e-7) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(3.2000000000000002) + CHASTE_CONST(0.10000000000000001) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - CHASTE_CONST(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 = CHASTE_STIM(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_i_NaCa__dNaCa_1 = CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * var_i_NaCa__km_Ca_o + CHASTE_CONST(1.5) * CHASTE_MATH::Pow(var_i_NaCa__km_Na_o, 3) * var_chaste_interface__Ca_i__Ca_i + CHASTE_MATH::Pow(var_i_NaCa__km_Na_i_1, 3) * (1 + CHASTE_CONST(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 = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::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 = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::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 = CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mp_extracellular_calcium_concentration_modifier->Calc(mParameters[4], var_chaste_interface__environment__time) + CHASTE_CONST(1.5) * CHASTE_MATH::Pow(mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time), 3) * var_chaste_interface__Ca_i__Ca_i + CHASTE_MATH::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 * CHASTE_MATH::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 * CHASTE_MATH::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 * CHASTE_MATH::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 = CHASTE_CONST(1.02) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.23849999999999999) * var_equilibrium_potentials__E_K)); // dimensionless + const double var_i_K1_xK1_gate__beta_xK1 = (CHASTE_CONST(0.49124000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.43983232) + CHASTE_CONST(0.080320000000000003) * var_chaste_interface__membrane__V - CHASTE_CONST(0.080320000000000003) * var_equilibrium_potentials__E_K) + CHASTE_MATH::Exp(-CHASTE_CONST(36.698642499999998) + CHASTE_CONST(0.061749999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.061749999999999999) * var_equilibrium_potentials__E_K)) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.4444678999999998) + CHASTE_CONST(0.51429999999999998) * var_equilibrium_potentials__E_K - CHASTE_CONST(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((CHASTE_CONST(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 = CHASTE_CAP() * 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 = CHASTE_CAP() * 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 = CHASTE_CAP() * var_i_Ks__i_Ks; // uA_per_cm2 + const double var_i_Na__i_Na = mp_i_Na__i_Na_modifier->Calc(CHASTE_MATH::Pow(var_chaste_interface__i_Na_m_gate__m, 3) * (-var_equilibrium_potentials__E_Na + var_chaste_interface__membrane__V) * (CHASTE_CONST(0.20000000000000001) * var_chaste_interface__i_Na_j_gate__j + CHASTE_CONST(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 = CHASTE_CAP() * var_i_Na__i_Na; // uA_per_cm2 + const double var_i_NaCa__i_NaCa = mp_i_NaCa__i_NaCa_modifier->Calc((-CHASTE_CONST(1.5) * CHASTE_MATH::Pow(mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time), 3) * var_chaste_interface__Ca_i__Ca_i * CHASTE_MATH::Exp(-CHASTE_CONST(0.65000000000000002) * var_chaste_interface__membrane__V * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T)) + CHASTE_MATH::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) * CHASTE_MATH::Exp(CHASTE_CONST(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 * CHASTE_MATH::Exp(-CHASTE_CONST(0.65000000000000002) * var_chaste_interface__membrane__V * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T))) * (1 + CHASTE_CONST(0.44444444444444442) * CHASTE_MATH::Pow(var_i_NaCa__km_Ca_act, 2) / CHASTE_MATH::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 = CHASTE_CAP() * 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) * (CHASTE_CONST(0.20000000000000001) * var_chaste_interface__i_to_1_i2_gate__i2 + CHASTE_CONST(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 = CHASTE_CAP() * 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 = CHASTE_CONST(0.34100000000000003); // dimensionless + const double var_model_parameters__z_Ca = 2; // dimensionless + const double var_i_Ca_L__i_Ca_L_max = CHASTE_MATH::Pow(var_model_parameters__F, 2) * CHASTE_MATH::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 * CHASTE_MATH::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 + CHASTE_MATH::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 = CHASTE_CAP() * 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 + CHASTE_MATH::Exp(-CHASTE_CONST(4.375) - 25 * var_i_Ca_L__i_Ca_L)), var_chaste_interface__environment__time); // millisecond + const double var_q_rel__vg = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(2.6000000000000001) + CHASTE_CONST(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/aslanidi_Purkinje_model_2009Opt.hpp b/chaste_codegen/data/tests/chaste_reference_models/Opt/aslanidi_Purkinje_model_2009Opt.hpp new file mode 100644 index 000000000..23fc01778 --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/Opt/aslanidi_Purkinje_model_2009Opt.hpp @@ -0,0 +1,137 @@ +#ifndef CELLASLANIDI_PURKINJE_MODEL_2009FROMCELLMLOPT_HPP_ +#define CELLASLANIDI_PURKINJE_MODEL_2009FROMCELLMLOPT_HPP_ + +//! @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 "ChasteSerialization.hpp" +#include +#include "AbstractCardiacCellWithModifiers.hpp" +#include "AbstractModifier.hpp" +#include "AbstractStimulusFunction.hpp" +#if USING_DEVICE_COMPILER +#include "StimulusEvaluatorCuda.hpp" +#endif +#include "AbstractCardiacCell.hpp" + +class Cellaslanidi_Purkinje_model_2009FromCellMLOpt : public AbstractCardiacCellWithModifiers +{ + friend class boost::serialization::access; + template + void serialize(Archive & archive, const unsigned int version) + { + archive & boost::serialization::base_object >(*this); + + // Despite this class having modifier member variables, they are all added to the + // abstract class by the constructor, and archived via that, instead of here. + } + + // + // Settable parameters and readable variables + // + boost::shared_ptr mp_JSR_calcium_concentration_modifier; + boost::shared_ptr mp_SR_leak_current_max_modifier; + boost::shared_ptr mp_SR_release_current_modifier; + boost::shared_ptr mp_SR_release_current_max_modifier; + boost::shared_ptr mp_SR_uptake_current_max_modifier; + boost::shared_ptr mp_concentration_clamp_onoff_modifier; + boost::shared_ptr mp_cytosolic_calcium_concentration_modifier; + boost::shared_ptr mp_cytosolic_potassium_concentration_modifier; + boost::shared_ptr mp_cytosolic_sodium_concentration_modifier; + boost::shared_ptr mp_dyadic_space_calcium_concentration_modifier; + boost::shared_ptr mp_extracellular_calcium_concentration_modifier; + boost::shared_ptr mp_extracellular_potassium_concentration_modifier; + boost::shared_ptr mp_extracellular_sodium_concentration_modifier; + boost::shared_ptr mp_i_Ca_L__i_Ca_L_modifier; + boost::shared_ptr mp_membrane_L_type_calcium_current_conductance_modifier; + boost::shared_ptr mp_membrane_L_type_calcium_current_d_gate_modifier; + boost::shared_ptr mp_membrane_L_type_calcium_current_f2_gate_modifier; + boost::shared_ptr mp_membrane_L_type_calcium_current_f2_gate_tau_modifier; + boost::shared_ptr mp_membrane_L_type_calcium_current_fCa2_gate_modifier; + boost::shared_ptr mp_membrane_L_type_calcium_current_fCa2_gate_tau_modifier; + boost::shared_ptr mp_membrane_L_type_calcium_current_fCa_gate_modifier; + boost::shared_ptr mp_membrane_L_type_calcium_current_fCa_gate_tau_modifier; + boost::shared_ptr mp_membrane_L_type_calcium_current_f_gate_modifier; + boost::shared_ptr mp_membrane_L_type_calcium_current_f_gate_tau_modifier; + boost::shared_ptr mp_i_Na__i_Na_modifier; + boost::shared_ptr mp_membrane_fast_sodium_current_conductance_modifier; + boost::shared_ptr mp_membrane_fast_sodium_current_h_gate_modifier; + boost::shared_ptr mp_membrane_fast_sodium_current_h_gate_tau_modifier; + boost::shared_ptr mp_membrane_fast_sodium_current_j_gate_modifier; + boost::shared_ptr mp_membrane_fast_sodium_current_j_gate_tau_modifier; + boost::shared_ptr mp_membrane_fast_sodium_current_m_gate_modifier; + boost::shared_ptr mp_membrane_fast_sodium_current_reduced_inactivation_modifier; + boost::shared_ptr mp_membrane_fast_sodium_current_shift_inactivation_modifier; + boost::shared_ptr mp_i_K1__i_K1_modifier; + boost::shared_ptr mp_membrane_inward_rectifier_potassium_current_conductance_modifier; + boost::shared_ptr mp_i_Kr__i_Kr_modifier; + boost::shared_ptr mp_membrane_rapid_delayed_rectifier_potassium_current_conductance_modifier; + boost::shared_ptr mp_i_Ks__i_Ks_modifier; + boost::shared_ptr mp_membrane_slow_delayed_rectifier_potassium_current_conductance_modifier; + boost::shared_ptr mp_i_NaCa__i_NaCa_modifier; + boost::shared_ptr mp_membrane_sodium_calcium_exchanger_current_conductance_modifier; + boost::shared_ptr mp_i_to_1__i_to_1_modifier; + boost::shared_ptr mp_membrane_transient_outward_current_conductance_modifier; + boost::shared_ptr mp_membrane_voltage_modifier; + + +private: +const bool is_concentration[30] = {false, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, false, true, false, false, true, true, false, false}; +const bool is_probability[30] = {false, false, true, true, true, false, false, true, true, true, true, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false}; +public: + + boost::shared_ptr UseCellMLDefaultStimulus(); + double GetIntracellularCalciumConcentration(); + Cellaslanidi_Purkinje_model_2009FromCellMLOpt(boost::shared_ptr pSolver, boost::shared_ptr pIntracellularStimulus); + ~Cellaslanidi_Purkinje_model_2009FromCellMLOpt(); + void VerifyStateVariables(); + AbstractLookupTableCollection* GetLookupTableCollection(); + double GetIIonic(const std::vector* pStateVariables=NULL); + void EvaluateYDerivatives(double var_chaste_interface__environment__time, const std::vector& rY, std::vector& rDY); + + std::vector ComputeDerivedQuantities(double var_chaste_interface__environment__time, const std::vector & rY); +}; + +// Needs to be included last +#include "SerializationExportWrapper.hpp" +CHASTE_CLASS_EXPORT(Cellaslanidi_Purkinje_model_2009FromCellMLOpt) + +namespace boost +{ + namespace serialization + { + template + inline void save_construct_data( + Archive & ar, const Cellaslanidi_Purkinje_model_2009FromCellMLOpt * t, const unsigned int fileVersion) + { + const boost::shared_ptr p_solver = t->GetSolver(); + const boost::shared_ptr p_stimulus = t->GetStimulusFunction(); + ar << p_solver; + ar << p_stimulus; + } + + template + inline void load_construct_data( + Archive & ar, Cellaslanidi_Purkinje_model_2009FromCellMLOpt * t, const unsigned int fileVersion) + { + boost::shared_ptr p_solver; + boost::shared_ptr p_stimulus; + ar >> p_solver; + ar >> p_stimulus; + ::new(t)Cellaslanidi_Purkinje_model_2009FromCellMLOpt(p_solver, p_stimulus); + } + + } + +} + +#endif // CELLASLANIDI_PURKINJE_MODEL_2009FROMCELLMLOPT_HPP_ \ No newline at end of file diff --git a/chaste_codegen/data/tests/chaste_reference_models/Opt/beeler_reuter_model_1977_lookup_tables.cpp b/chaste_codegen/data/tests/chaste_reference_models/Opt/beeler_reuter_model_1977_lookup_tables.cpp index f3598e116..25dc824b1 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/Opt/beeler_reuter_model_1977_lookup_tables.cpp +++ b/chaste_codegen/data/tests/chaste_reference_models/Opt/beeler_reuter_model_1977_lookup_tables.cpp @@ -21,6 +21,8 @@ #include "HeartConfig.hpp" #include "IsNan.hpp" #include "MathsCustomFunctions.hpp" +#include "ChasteMathDeviceNamespaces.hpp" +#include "ChasteCpuMacros.hpp" @@ -199,7 +201,7 @@ class Cellbeeler_reuter_model_1977FromCellMLOpt_LookupTables : public AbstractLo for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return exp(1.4000000000000001 + 0.040000000000000001 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(CHASTE_CONST(1.4000000000000001) + CHASTE_CONST(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); @@ -210,7 +212,7 @@ class Cellbeeler_reuter_model_1977FromCellMLOpt_LookupTables : public AbstractLo for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return -1 + exp(3.0800000000000001 + 0.040000000000000001 * var_chaste_interface__membrane__V); + return -1 + CHASTE_MATH::Exp(CHASTE_CONST(3.0800000000000001) + CHASTE_CONST(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); @@ -221,7 +223,7 @@ class Cellbeeler_reuter_model_1977FromCellMLOpt_LookupTables : public AbstractLo 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)) + (((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)))); + return 4 * (-1 + CHASTE_MATH::Exp(CHASTE_CONST(3.3999999999999999) + CHASTE_CONST(0.040000000000000001) * var_chaste_interface__membrane__V)) / (CHASTE_MATH::Exp(CHASTE_CONST(2.1200000000000001) + CHASTE_CONST(0.040000000000000001) * var_chaste_interface__membrane__V) + CHASTE_MATH::Exp(CHASTE_CONST(4.2400000000000002) + CHASTE_CONST(0.080000000000000002) * var_chaste_interface__membrane__V)) + (((CHASTE_CONST(0.92000000000000004) + CHASTE_CONST(0.040000000000000001) * var_chaste_interface__membrane__V >= -CHASTE_CONST(9.9999999999999995e-8)) && (CHASTE_CONST(0.92000000000000004) + CHASTE_CONST(0.040000000000000001) * var_chaste_interface__membrane__V <= CHASTE_CONST(9.9999999999999995e-8))) ? (CHASTE_CONST(7.3000000000000007) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V) : (-5 * (CHASTE_CONST(0.92000000000000004) + CHASTE_CONST(0.040000000000000001) * var_chaste_interface__membrane__V) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.92000000000000004) - CHASTE_CONST(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); @@ -232,7 +234,7 @@ class Cellbeeler_reuter_model_1977FromCellMLOpt_LookupTables : public AbstractLo 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); + return 1 + CHASTE_MATH::Exp(CHASTE_CONST(0.35997120230381568) - CHASTE_CONST(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); @@ -243,7 +245,7 @@ class Cellbeeler_reuter_model_1977FromCellMLOpt_LookupTables : public AbstractLo 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); + return CHASTE_MATH::Exp(CHASTE_CONST(0.050000000000000003) - CHASTE_CONST(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); @@ -254,7 +256,7 @@ class Cellbeeler_reuter_model_1977FromCellMLOpt_LookupTables : public AbstractLo 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); + return 1 + CHASTE_MATH::Exp(CHASTE_CONST(2.2000000000000002) + CHASTE_CONST(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); @@ -265,7 +267,7 @@ class Cellbeeler_reuter_model_1977FromCellMLOpt_LookupTables : public AbstractLo 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); + return CHASTE_MATH::Exp(-CHASTE_CONST(0.74576271186440679) - CHASTE_CONST(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); @@ -276,7 +278,7 @@ class Cellbeeler_reuter_model_1977FromCellMLOpt_LookupTables : public AbstractLo 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); + return 1 + CHASTE_MATH::Exp(CHASTE_CONST(4.197901049475262) + CHASTE_CONST(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); @@ -287,7 +289,7 @@ class Cellbeeler_reuter_model_1977FromCellMLOpt_LookupTables : public AbstractLo 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); + return CHASTE_MATH::Exp(-CHASTE_CONST(0.224) - CHASTE_CONST(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); @@ -298,7 +300,7 @@ class Cellbeeler_reuter_model_1977FromCellMLOpt_LookupTables : public AbstractLo 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); + return 1 + CHASTE_MATH::Exp(-6 - CHASTE_CONST(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); @@ -309,7 +311,7 @@ class Cellbeeler_reuter_model_1977FromCellMLOpt_LookupTables : public AbstractLo 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); + return CHASTE_MATH::Exp(-CHASTE_CONST(0.59999999999999998) - CHASTE_CONST(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); @@ -320,7 +322,7 @@ class Cellbeeler_reuter_model_1977FromCellMLOpt_LookupTables : public AbstractLo 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)))); + return (((CHASTE_CONST(4.7000000000000002) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V >= -CHASTE_CONST(9.9999999999999995e-8)) && (CHASTE_CONST(4.7000000000000002) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V <= CHASTE_CONST(9.9999999999999995e-8))) ? (CHASTE_CONST(33.5) + CHASTE_CONST(0.5) * var_chaste_interface__membrane__V) : (-10 * (CHASTE_CONST(4.7000000000000002) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(4.7000000000000002) - CHASTE_CONST(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); @@ -342,7 +344,7 @@ class Cellbeeler_reuter_model_1977FromCellMLOpt_LookupTables : public AbstractLo for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return exp(-4.032 - 0.056000000000000001 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(-CHASTE_CONST(4.032) - CHASTE_CONST(0.056000000000000001) * 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); @@ -353,7 +355,7 @@ class Cellbeeler_reuter_model_1977FromCellMLOpt_LookupTables : public AbstractLo for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 1 + exp(2.8571428571428572 + 0.057142857142857141 * var_chaste_interface__membrane__V); + return 1 + CHASTE_MATH::Exp(CHASTE_CONST(2.8571428571428572) + CHASTE_CONST(0.057142857142857141) * 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); @@ -364,7 +366,7 @@ class Cellbeeler_reuter_model_1977FromCellMLOpt_LookupTables : public AbstractLo for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return exp(4.1322314049586781 + 0.082644628099173556 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(CHASTE_CONST(4.1322314049586781) + CHASTE_CONST(0.082644628099173556) * 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); @@ -375,7 +377,7 @@ class Cellbeeler_reuter_model_1977FromCellMLOpt_LookupTables : public AbstractLo for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 1 + exp(-0.80000000000000004 - 0.040000000000000001 * var_chaste_interface__membrane__V); + return 1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.80000000000000004) - CHASTE_CONST(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); @@ -386,7 +388,7 @@ class Cellbeeler_reuter_model_1977FromCellMLOpt_LookupTables : public AbstractLo for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return exp(-1.1997600479904018 - 0.059988002399520089 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(-CHASTE_CONST(1.1997600479904018) - CHASTE_CONST(0.059988002399520089) * 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); @@ -411,7 +413,7 @@ class Cellbeeler_reuter_model_1977FromCellMLOpt_LookupTables : public AbstractLo for (unsigned i=0 ; i<_table_size_1; i++) { auto f = [](double var_chaste_interface__slow_inward_current__Cai) { - return 13.028700000000001 * log(var_chaste_interface__slow_inward_current__Cai); + return CHASTE_CONST(13.028700000000001) * CHASTE_MATH::Log(var_chaste_interface__slow_inward_current__Cai); }; const double var_chaste_interface__slow_inward_current__Cai = mTableMins[1] + i*mTableSteps[1]; double val = f(var_chaste_interface__slow_inward_current__Cai); @@ -451,7 +453,7 @@ std::shared_ptr Cellbeel 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__IstimAmplitude_converted = CHASTE_CONST(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 @@ -483,13 +485,13 @@ std::shared_ptr Cellbeel // 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[0] = CHASTE_CONST(0.00089999999999999998); // (var_slow_inward_current__g_s) [mS_per_mm2] + this->mParameters[1] = CHASTE_CONST(0.01); // (var_membrane__C) [uF_per_mm2] + this->mParameters[2] = CHASTE_CONST(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[5] = CHASTE_CONST(0.0035000000000000001); // (var_time_independent_outward_current__G_K1) [uA_per_mm2] + this->mParameters[6] = CHASTE_CONST(0.0080000000000000002); // (var_time_dependent_outward_current__G_Kr) [uA_per_mm2] this->mParameters[7] = 50; // (var_sodium_current__E_Na) [mV] } @@ -541,7 +543,7 @@ std::shared_ptr Cellbeel // 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -574,10 +576,10 @@ std::shared_ptr Cellbeel // 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_slow_inward_current__i_s_converted = CHASTE_CONST(100.00000000000001) * (-CHASTE_CONST(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 = CHASTE_CONST(100.00000000000001) * (CHASTE_CONST(3.0000000000000001e-5) + CHASTE_MATH::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 = CHASTE_CONST(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 = CHASTE_CONST(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; @@ -589,7 +591,7 @@ std::shared_ptr Cellbeel { // Inputs: // Time units: millisecond - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -624,18 +626,18 @@ std::shared_ptr Cellbeel // 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_slow_inward_current_d_gate__d = CHASTE_CONST(0.095000000000000001) * (1 - var_chaste_interface__slow_inward_current_d_gate__d) * _lt_0_row[4] / (_lt_0_row[3]) - CHASTE_CONST(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 = CHASTE_CONST(0.012) * (1 - var_chaste_interface__slow_inward_current_f_gate__f) * _lt_0_row[8] / (_lt_0_row[7]) - CHASTE_CONST(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 = (-CHASTE_CONST(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 = CHASTE_CONST(7.0000000000000007e-6) - CHASTE_CONST(0.070000000000000007) * var_chaste_interface__slow_inward_current__Cai - CHASTE_CONST(0.01) * var_slow_inward_current__i_s; // concentration_units / ms + const double var_sodium_current_h_gate__alpha_h = CHASTE_CONST(0.126) * CHASTE_MATH::Exp(-CHASTE_CONST(19.25) + CHASTE_CONST(0.25) * mParameters[4] - CHASTE_CONST(0.25) * var_chaste_interface__membrane__V); // per_ms + const double var_sodium_current_h_gate__beta_h = CHASTE_CONST(1.7) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(1.845) + CHASTE_CONST(0.082000000000000003) * mParameters[4] - CHASTE_CONST(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 + CHASTE_CONST(0.01) * mParameters[3] + (1 - CHASTE_CONST(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 = CHASTE_CONST(0.055) * CHASTE_MATH::Exp(-CHASTE_CONST(19.5) + CHASTE_CONST(0.25) * mParameters[4] - CHASTE_CONST(0.25) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(15.600000000000001) + CHASTE_CONST(0.20000000000000001) * mParameters[4] - CHASTE_CONST(0.20000000000000001) * var_chaste_interface__membrane__V)); // per_ms + const double var_sodium_current_j_gate__beta_j = CHASTE_CONST(0.29999999999999999) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(3.2000000000000002) + CHASTE_CONST(0.10000000000000001) * mParameters[4] - CHASTE_CONST(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 + CHASTE_CONST(0.01) * mParameters[3] + (1 - CHASTE_CONST(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 + const double d_dt_chaste_interface_var_time_dependent_outward_current_x1_gate__x1 = CHASTE_CONST(0.00050000000000000001) * (1 - var_chaste_interface__time_dependent_outward_current_x1_gate__x1) * _lt_0_row[14] / (_lt_0_row[13]) - CHASTE_CONST(0.0012999999999999999) * var_chaste_interface__time_dependent_outward_current_x1_gate__x1 * _lt_0_row[16] / (_lt_0_row[15]); // 1 / ms if (mSetVoltageDerivativeToZero) { @@ -643,7 +645,7 @@ std::shared_ptr Cellbeel } 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 + d_dt_chaste_interface_var_membrane__V = (-var_slow_inward_current__i_s - CHASTE_CONST(0.0099999999999999985) * CHASTE_STIM(var_chaste_interface__environment__time) - (CHASTE_CONST(3.0000000000000001e-5) + CHASTE_MATH::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; @@ -660,7 +662,7 @@ std::shared_ptr Cellbeel { // Inputs: // Time units: millisecond - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -687,28 +689,28 @@ std::shared_ptr Cellbeel // 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__E_s = CHASTE_CONST(7.6990712032745758) - CHASTE_CONST(13.028700000000001) * CHASTE_MATH::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_slow_inward_current__i_s_converted = CHASTE_CONST(100.00000000000001) * var_slow_inward_current__i_s; // uA_per_cm2 + const double var_sodium_current__g_Nac = CHASTE_CONST(3.0000000000000001e-5); // mS_per_mm2 + const double var_sodium_current_h_gate__alpha_h = CHASTE_CONST(0.126) * CHASTE_MATH::Exp(-CHASTE_CONST(19.25) + CHASTE_CONST(0.25) * mParameters[4] - CHASTE_CONST(0.25) * var_chaste_interface__membrane__V); // per_ms + const double var_sodium_current_h_gate__beta_h = CHASTE_CONST(1.7) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(1.845) + CHASTE_CONST(0.082000000000000003) * mParameters[4] - CHASTE_CONST(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__alpha_j = CHASTE_CONST(0.055) * CHASTE_MATH::Exp(-CHASTE_CONST(19.5) + CHASTE_CONST(0.25) * mParameters[4] - CHASTE_CONST(0.25) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(15.600000000000001) + CHASTE_CONST(0.20000000000000001) * mParameters[4] - CHASTE_CONST(0.20000000000000001) * var_chaste_interface__membrane__V)); // per_ms + const double var_sodium_current_j_gate__beta_j = CHASTE_CONST(0.29999999999999999) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(3.2000000000000002) + CHASTE_CONST(0.10000000000000001) * mParameters[4] - CHASTE_CONST(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_sodium_current__i_Na = (-mParameters[7] + var_chaste_interface__membrane__V) * (CHASTE_MATH::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 = CHASTE_CONST(100.00000000000001) * var_sodium_current__i_Na; // uA_per_cm2 + const double var_stimulus_protocol__Istim_converted = -CHASTE_STIM(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_dependent_outward_current__i_x1_converted = CHASTE_CONST(100.00000000000001) * var_time_dependent_outward_current__i_x1; // uA_per_cm2 + const double var_time_independent_outward_current__B = -CHASTE_CONST(0.040000000000000001); // per_mV + const double var_time_independent_outward_current__A = -CHASTE_CONST(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 + const double var_time_independent_outward_current__temp_current = (((var_time_independent_outward_current__U >= -CHASTE_CONST(9.9999999999999995e-8)) && (var_time_independent_outward_current__U <= CHASTE_CONST(9.9999999999999995e-8))) ? ((1 - CHASTE_CONST(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 + CHASTE_MATH::Exp(var_time_independent_outward_current__U)))); // dimensionless + const double var_time_independent_outward_current__i_K1 = (4 * (-1 + CHASTE_MATH::Exp(CHASTE_CONST(3.3999999999999999) + CHASTE_CONST(0.040000000000000001) * var_chaste_interface__membrane__V)) / (CHASTE_MATH::Exp(CHASTE_CONST(2.1200000000000001) + CHASTE_CONST(0.040000000000000001) * var_chaste_interface__membrane__V) + CHASTE_MATH::Exp(CHASTE_CONST(4.2400000000000002) + CHASTE_CONST(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 = CHASTE_CONST(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; diff --git a/chaste_codegen/data/tests/chaste_reference_models/Opt/beeler_reuter_model_1977_lookup_tables.hpp b/chaste_codegen/data/tests/chaste_reference_models/Opt/beeler_reuter_model_1977_lookup_tables.hpp index 0dd28675c..bfe18de81 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/Opt/beeler_reuter_model_1977_lookup_tables.hpp +++ b/chaste_codegen/data/tests/chaste_reference_models/Opt/beeler_reuter_model_1977_lookup_tables.hpp @@ -16,6 +16,9 @@ #include "ChasteSerialization.hpp" #include #include "AbstractStimulusFunction.hpp" +#if USING_DEVICE_COMPILER +#include "StimulusEvaluatorCuda.hpp" +#endif #include "AbstractCardiacCell.hpp" class Cellbeeler_reuter_model_1977FromCellMLOpt : public AbstractCardiacCell diff --git a/chaste_codegen/data/tests/chaste_reference_models/Opt/dynamic_aslanidi_Purkinje_model_2009.cpp b/chaste_codegen/data/tests/chaste_reference_models/Opt/dynamic_aslanidi_Purkinje_model_2009.cpp index 5c3fceb92..0e72fcc7d 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/Opt/dynamic_aslanidi_Purkinje_model_2009.cpp +++ b/chaste_codegen/data/tests/chaste_reference_models/Opt/dynamic_aslanidi_Purkinje_model_2009.cpp @@ -21,6 +21,8 @@ #include "HeartConfig.hpp" #include "IsNan.hpp" #include "MathsCustomFunctions.hpp" +#include "ChasteMathDeviceNamespaces.hpp" +#include "ChasteCpuMacros.hpp" #include "ModelFactory.hpp" @@ -149,7 +151,7 @@ class Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables : public Abs for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 1 + exp(1.2521739130434781 - 0.16722408026755853 * var_chaste_interface__membrane__V); + return 1 + CHASTE_MATH::Exp(CHASTE_CONST(1.2521739130434781) - CHASTE_CONST(0.16722408026755853) * 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); @@ -160,7 +162,7 @@ class Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables : public Abs for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return exp(0.074871767015605231 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(CHASTE_CONST(0.074871767015605231) * 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); @@ -171,7 +173,7 @@ class Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables : public Abs for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return -1 + exp(0.074871767015605231 * var_chaste_interface__membrane__V); + return -1 + CHASTE_MATH::Exp(CHASTE_CONST(0.074871767015605231) * 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); @@ -182,7 +184,7 @@ class Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables : public Abs for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return exp(-0.024333324280071702 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(-CHASTE_CONST(0.024333324280071702) * 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); @@ -193,7 +195,7 @@ class Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables : public Abs for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return exp(0.013102559227730915 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(CHASTE_CONST(0.013102559227730915) * 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); @@ -204,7 +206,7 @@ class Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables : public Abs for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 1 + 0.27000000000000002 * exp(-0.024333324280071702 * var_chaste_interface__membrane__V); + return 1 + CHASTE_CONST(0.27000000000000002) * CHASTE_MATH::Exp(-CHASTE_CONST(0.024333324280071702) * 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); @@ -215,7 +217,7 @@ class Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables : public Abs for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return exp(-0.037435883507802616 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(-CHASTE_CONST(0.037435883507802616) * 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); @@ -226,7 +228,7 @@ class Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables : public Abs for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 0.1245 * exp(-0.003743588350780262 * var_chaste_interface__membrane__V); + return CHASTE_CONST(0.1245) * CHASTE_MATH::Exp(-CHASTE_CONST(0.003743588350780262) * 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); @@ -237,7 +239,7 @@ class Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables : public Abs for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return -100 * exp(0.037435883507802616 * var_chaste_interface__membrane__V); + return -100 * CHASTE_MATH::Exp(CHASTE_CONST(0.037435883507802616) * 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); @@ -248,7 +250,7 @@ class Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables : public Abs for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 1 - exp(0.037435883507802616 * var_chaste_interface__membrane__V); + return 1 - CHASTE_MATH::Exp(CHASTE_CONST(0.037435883507802616) * 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); @@ -259,7 +261,7 @@ class Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables : public Abs for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 1 + exp(-0.26470588235294124 + 0.049019607843137261 * var_chaste_interface__membrane__V); + return 1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.26470588235294124) + CHASTE_CONST(0.049019607843137261) * 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); @@ -270,7 +272,7 @@ class Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables : public Abs for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return exp(-1.1230765052340785 + 0.074871767015605231 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(-CHASTE_CONST(1.1230765052340785) + CHASTE_CONST(0.074871767015605231) * 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); @@ -281,7 +283,7 @@ class Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables : public Abs for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return -1 + exp(-1.1230765052340785 + 0.074871767015605231 * var_chaste_interface__membrane__V); + return -1 + CHASTE_MATH::Exp(-CHASTE_CONST(1.1230765052340785) + CHASTE_CONST(0.074871767015605231) * 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); @@ -292,7 +294,7 @@ class Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables : public Abs for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 1 / (1 + exp(0.59347181008902072 - 0.14836795252225518 * var_chaste_interface__membrane__V)); + return 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(0.59347181008902072) - CHASTE_CONST(0.14836795252225518) * 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); @@ -303,7 +305,7 @@ class Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables : public Abs for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 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)); + return CHASTE_CONST(0.58999999999999997) + CHASTE_CONST(0.80000000000000004) * CHASTE_MATH::Exp(CHASTE_CONST(0.67599999999999993) + CHASTE_CONST(0.051999999999999998) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(1.7160000000000002) + CHASTE_CONST(0.13200000000000001) * 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); @@ -314,7 +316,7 @@ class Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables : public Abs for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 1 / (1 + exp(1.8 + 0.10000000000000001 * var_chaste_interface__membrane__V)); + return 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(1.8) + CHASTE_CONST(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); @@ -325,7 +327,7 @@ class Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables : public Abs for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 1 / (1 + exp(-5.4098360655737707 - 0.16393442622950821 * var_chaste_interface__membrane__V)); + return 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(5.4098360655737707) - CHASTE_CONST(0.16393442622950821) * 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); @@ -336,7 +338,7 @@ class Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables : public Abs for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 1.0680000000000001 * exp(0.54333333333333333 + 0.033333333333333333 * var_chaste_interface__membrane__V) + 1.0680000000000001 * exp(-0.54333333333333333 - 0.033333333333333333 * var_chaste_interface__membrane__V); + return CHASTE_CONST(1.0680000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.54333333333333333) + CHASTE_CONST(0.033333333333333333) * var_chaste_interface__membrane__V) + CHASTE_CONST(1.0680000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(0.54333333333333333) - CHASTE_CONST(0.033333333333333333) * 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); @@ -347,7 +349,7 @@ class Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables : public Abs for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 1 / (1 + exp(9.0909090909090917 + 0.15151515151515152 * var_chaste_interface__membrane__V)); + return 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(9.0909090909090917) + CHASTE_CONST(0.15151515151515152) * 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); @@ -358,7 +360,7 @@ class Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables : public Abs for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 0.014999999999999999 * exp(4.6558441558441563 + 0.064935064935064929 * var_chaste_interface__membrane__V) + 0.014999999999999999 * exp(-0.86074429771908767 - 0.012004801920768308 * var_chaste_interface__membrane__V); + return CHASTE_CONST(0.014999999999999999) * CHASTE_MATH::Exp(CHASTE_CONST(4.6558441558441563) + CHASTE_CONST(0.064935064935064929) * var_chaste_interface__membrane__V) + CHASTE_CONST(0.014999999999999999) * CHASTE_MATH::Exp(-CHASTE_CONST(0.86074429771908767) - CHASTE_CONST(0.012004801920768308) * 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); @@ -369,7 +371,7 @@ class Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables : public Abs for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 1 / (1 + exp(-0.0069387755102040824 - 0.081632653061224483 * var_chaste_interface__membrane__V)); + return 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.0069387755102040824) - CHASTE_CONST(0.081632653061224483) * 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 +382,7 @@ class Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables : public Abs for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 100 + 900 / (1 + exp(0.20000000000000001 * var_chaste_interface__membrane__V)); + return 100 + 900 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(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); @@ -391,7 +393,7 @@ class Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables : public Abs for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 1 / (1 + exp(0.65693430656934315 - 0.072992700729927015 * var_chaste_interface__membrane__V)); + return 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(0.65693430656934315) - CHASTE_CONST(0.072992700729927015) * 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); @@ -402,7 +404,7 @@ class Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables : public Abs for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 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)); + return CHASTE_CONST(7.6100000000000007e-5) * (CHASTE_CONST(44.600000000000001) + var_chaste_interface__membrane__V) / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(444.66200000000003) - CHASTE_CONST(9.9700000000000006) * var_chaste_interface__membrane__V)) + CHASTE_CONST(0.00036000000000000002) * (-CHASTE_CONST(0.55000000000000004) + var_chaste_interface__membrane__V) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.070400000000000004) + CHASTE_CONST(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); @@ -413,7 +415,7 @@ class Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables : public Abs for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 3.8050000000000003e-5 * (44.600000000000001 + var_chaste_interface__membrane__V) / (1 - exp(-444.66200000000003 - 9.9700000000000006 * var_chaste_interface__membrane__V)) + 0.00018000000000000001 * (-0.55000000000000004 + var_chaste_interface__membrane__V) / (-1 + exp(-0.070400000000000004 + 0.128 * var_chaste_interface__membrane__V)); + return CHASTE_CONST(3.8050000000000003e-5) * (CHASTE_CONST(44.600000000000001) + var_chaste_interface__membrane__V) / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(444.66200000000003) - CHASTE_CONST(9.9700000000000006) * var_chaste_interface__membrane__V)) + CHASTE_CONST(0.00018000000000000001) * (-CHASTE_CONST(0.55000000000000004) + var_chaste_interface__membrane__V) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.070400000000000004) + CHASTE_CONST(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); @@ -424,7 +426,7 @@ class Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables : public Abs for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 1 / (1 + exp(11.311475409836067 + 0.16393442622950821 * var_chaste_interface__membrane__V)); + return 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(11.311475409836067) + CHASTE_CONST(0.16393442622950821) * 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); @@ -435,7 +437,7 @@ class Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables : public Abs for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 175 + 125 / (1 + exp(-4.166666666666667 - 0.16666666666666666 * var_chaste_interface__membrane__V)); + return 175 + 125 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(4.166666666666667) - CHASTE_CONST(0.16666666666666666) * 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); @@ -446,7 +448,7 @@ class Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables : public Abs for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 0.32000000000000001 * (47.130000000000003 + var_chaste_interface__membrane__V) / (1 - exp(-4.7130000000000001 - 0.10000000000000001 * var_chaste_interface__membrane__V)); + return CHASTE_CONST(0.32000000000000001) * (CHASTE_CONST(47.130000000000003) + var_chaste_interface__membrane__V) / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(4.7130000000000001) - CHASTE_CONST(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); @@ -457,7 +459,7 @@ class Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables : public Abs for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 0.080000000000000002 * exp(-0.090909090909090912 * var_chaste_interface__membrane__V); + return CHASTE_CONST(0.080000000000000002) * CHASTE_MATH::Exp(-CHASTE_CONST(0.090909090909090912) * 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); @@ -468,7 +470,7 @@ class Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables : public Abs for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 25 * exp(-3.7999999999999998 + 0.050000000000000003 * var_chaste_interface__membrane__V) / (1 + exp(-3.7999999999999998 + 0.050000000000000003 * var_chaste_interface__membrane__V)); + return 25 * CHASTE_MATH::Exp(-CHASTE_CONST(3.7999999999999998) + CHASTE_CONST(0.050000000000000003) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(3.7999999999999998) + CHASTE_CONST(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); @@ -479,7 +481,7 @@ class Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables : public Abs for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 25 * exp(-2.7000000000000002 - 0.050000000000000003 * var_chaste_interface__membrane__V) / (1 + exp(-2.7000000000000002 - 0.050000000000000003 * var_chaste_interface__membrane__V)); + return 25 * CHASTE_MATH::Exp(-CHASTE_CONST(2.7000000000000002) - CHASTE_CONST(0.050000000000000003) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.7000000000000002) - CHASTE_CONST(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); @@ -490,7 +492,7 @@ class Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables : public Abs for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 0.0044200000000000003 / ((1 + exp(1.7333333333333334 + 0.066666666666666666 * var_chaste_interface__membrane__V)) * (0.0044200000000000003 / (1 + exp(1.7333333333333334 + 0.066666666666666666 * var_chaste_interface__membrane__V)) + 0.050000000000000003 * exp(-0.66666666666666663 + 0.066666666666666666 * var_chaste_interface__membrane__V) / (1 + exp(-0.66666666666666663 + 0.066666666666666666 * var_chaste_interface__membrane__V)))); + return CHASTE_CONST(0.0044200000000000003) / ((1 + CHASTE_MATH::Exp(CHASTE_CONST(1.7333333333333334) + CHASTE_CONST(0.066666666666666666) * var_chaste_interface__membrane__V)) * (CHASTE_CONST(0.0044200000000000003) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(1.7333333333333334) + CHASTE_CONST(0.066666666666666666) * var_chaste_interface__membrane__V)) + CHASTE_CONST(0.050000000000000003) * CHASTE_MATH::Exp(-CHASTE_CONST(0.66666666666666663) + CHASTE_CONST(0.066666666666666666) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.66666666666666663) + CHASTE_CONST(0.066666666666666666) * 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); @@ -501,7 +503,7 @@ class Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables : public Abs for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 21.5 + 30 / (1 + exp(-2.5 + 0.10000000000000001 * var_chaste_interface__membrane__V)); + return CHASTE_CONST(21.5) + 30 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.5) + CHASTE_CONST(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); @@ -512,7 +514,7 @@ class Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables : public Abs for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 0.029999999999999999 / ((1 + exp(1.6666666666666667 + 0.066666666666666666 * var_chaste_interface__membrane__V)) * (0.029999999999999999 / (1 + exp(1.6666666666666667 + 0.066666666666666666 * var_chaste_interface__membrane__V)) + 0.10000000000000001 * exp(-2.6666666666666665 + 0.066666666666666666 * var_chaste_interface__membrane__V) / (1 + exp(-2.6666666666666665 + 0.066666666666666666 * var_chaste_interface__membrane__V)))); + return CHASTE_CONST(0.029999999999999999) / ((1 + CHASTE_MATH::Exp(CHASTE_CONST(1.6666666666666667) + CHASTE_CONST(0.066666666666666666) * var_chaste_interface__membrane__V)) * (CHASTE_CONST(0.029999999999999999) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(1.6666666666666667) + CHASTE_CONST(0.066666666666666666) * var_chaste_interface__membrane__V)) + CHASTE_CONST(0.10000000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(2.6666666666666665) + CHASTE_CONST(0.066666666666666666) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.6666666666666665) + CHASTE_CONST(0.066666666666666666) * 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); @@ -523,7 +525,7 @@ class Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables : public Abs for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 6 + 5 / (1 + exp(-1.6499999999999999 + 0.10000000000000001 * var_chaste_interface__membrane__V)); + return 6 + 5 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(1.6499999999999999) + CHASTE_CONST(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); @@ -556,7 +558,7 @@ std::shared_ptr D 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_amplitude_converted = -80 * CHASTE_CAP(); // 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 @@ -677,22 +679,22 @@ std::shared_ptr D 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[0] = CHASTE_CONST(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[2] = CHASTE_CONST(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[4] = CHASTE_CONST(1.8); // (var_model_parameters__Ca_o) [millimolar] + this->mParameters[5] = CHASTE_CONST(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[7] = CHASTE_CONST(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] + this->mParameters[11] = CHASTE_CONST(0.25); // (var_i_K1__g_K1_max) [milliS_per_microF] + this->mParameters[12] = CHASTE_CONST(0.040008488000000002); // (var_i_Kr__g_Kr_max) [milliS_per_microF] + this->mParameters[13] = CHASTE_CONST(0.052581329000000003); // (var_i_Ks__g_Ks_max) [milliS_per_microF] + this->mParameters[14] = CHASTE_CONST(4.5); // (var_i_NaCa__i_NaCa_max) [microA_per_microF] + this->mParameters[15] = CHASTE_CONST(0.14135944); // (var_i_to_1__g_to_1) [milliS_per_microF] } Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt::~Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt() @@ -743,7 +745,7 @@ std::shared_ptr D // 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -802,10 +804,10 @@ std::shared_ptr D // 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 * (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) / (_lt_0_row[0]) + 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 * (-0.34100000000000003 * mParameters[4] + var_chaste_interface__Ca_i__Ca_i * _lt_0_row[1]) * var_chaste_interface__membrane__V / (_lt_0_row[2]) + (-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]) / ((_lt_0_row[5]) * (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[8] + var_chaste_interface__intracellular_ion_concentrations__Cl_i) * var_chaste_interface__i_to_2_a_gate__a * var_chaste_interface__membrane__V / (_lt_0_row[9]) + (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 * sqrt(mParameters[5]) * (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) * mParameters[12] * var_chaste_interface__i_Kr_xr_gate__xr / (_lt_0_row[10]) + 3.510865186083326 * (-15 + var_chaste_interface__membrane__V) * (-0.34100000000000003 * mParameters[4] + 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 / (_lt_0_row[12]); // microA_per_microF - const double var_chaste_interface__i_ionic = HeartConfig::Instance()->GetCapacitance() * var_membrane__i_tot; // uA_per_cm2 + const double var_equilibrium_potentials__E_K = CHASTE_CONST(26.712338705498265) * CHASTE_MATH::Log(mParameters[5] / var_chaste_interface__intracellular_ion_concentrations__K_i); // millivolt + const double var_equilibrium_potentials__E_Na = CHASTE_CONST(26.712338705498265) * CHASTE_MATH::Log(mParameters[6] / var_chaste_interface__intracellular_ion_concentrations__Na_i); // millivolt + const double var_membrane__i_tot = CHASTE_CONST(0.0077250000000000001) * var_chaste_interface__membrane__V + CHASTE_CONST(0.0060102762087371094) * CHASTE_MATH::Log(100 / var_chaste_interface__intracellular_ion_concentrations__Cl_i) - CHASTE_CONST(0.0025000000000000001) * var_equilibrium_potentials__E_Na - CHASTE_CONST(0.0050000000000000001) * var_equilibrium_potentials__E_K + (CHASTE_CONST(0.0040000000000000001) + CHASTE_CONST(0.4389381125701739) * CHASTE_MATH::Sqrt(mParameters[5]) * mParameters[11] / ((1 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.23849999999999999) * var_equilibrium_potentials__E_K)) * (CHASTE_CONST(1.02) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.23849999999999999) * var_equilibrium_potentials__E_K)) + (CHASTE_CONST(0.49124000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.43983232) + CHASTE_CONST(0.080320000000000003) * var_chaste_interface__membrane__V - CHASTE_CONST(0.080320000000000003) * var_equilibrium_potentials__E_K) + CHASTE_MATH::Exp(-CHASTE_CONST(36.698642499999998) + CHASTE_CONST(0.061749999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.061749999999999999) * var_equilibrium_potentials__E_K)) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.4444678999999998) + CHASTE_CONST(0.51429999999999998) * var_equilibrium_potentials__E_K - CHASTE_CONST(0.51429999999999998) * var_chaste_interface__membrane__V))))) * (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) + CHASTE_CONST(0.0027599999999999999) * (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) / (_lt_0_row[0]) + CHASTE_CONST(0.057500000000000002) * var_chaste_interface__Ca_i__Ca_i / (CHASTE_CONST(0.00050000000000000001) + var_chaste_interface__Ca_i__Ca_i) + CHASTE_CONST(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 + CHASTE_CONST(0.037374999999999999) * CHASTE_MATH::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 + CHASTE_CONST(0.0028824983370007683) * (-CHASTE_CONST(0.34100000000000003) * mParameters[4] + var_chaste_interface__Ca_i__Ca_i * _lt_0_row[1]) * var_chaste_interface__membrane__V / (_lt_0_row[2]) + (-CHASTE_CONST(1.5) * CHASTE_MATH::Pow(mParameters[6], 3) * var_chaste_interface__Ca_i__Ca_i * _lt_0_row[3] + CHASTE_CONST(0.40000000000000002) * CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[14] * mParameters[4] * _lt_0_row[4]) / ((_lt_0_row[5]) * (1 + CHASTE_CONST(6.9444444444444451e-9) / CHASTE_MATH::Pow(var_chaste_interface__Ca_i__Ca_i, 2)) * (CHASTE_CONST(1004882.8125) * var_chaste_interface__Ca_i__Ca_i + CHASTE_CONST(1.3) * CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) + CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[4] + CHASTE_CONST(1.5) * CHASTE_MATH::Pow(mParameters[6], 3) * var_chaste_interface__Ca_i__Ca_i + CHASTE_CONST(0.0035999999999999999) * CHASTE_MATH::Pow(mParameters[6], 3) * (1 + CHASTE_CONST(0.081300813008130079) * var_chaste_interface__intracellular_ion_concentrations__Na_i) + CHASTE_CONST(1860.8670000000004) * (1 + CHASTE_CONST(416.66666666666669) * var_chaste_interface__Ca_i__Ca_i) * mParameters[4])) + CHASTE_MATH::Pow(var_chaste_interface__i_Na_m_gate__m, 3) * (-var_equilibrium_potentials__E_Na + var_chaste_interface__membrane__V) * (CHASTE_CONST(0.20000000000000001) * var_chaste_interface__i_Na_j_gate__j + CHASTE_CONST(0.80000000000000004) * var_chaste_interface__i_Na_h_gate__h) * mParameters[8] + (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) * (CHASTE_CONST(0.20000000000000001) * var_chaste_interface__i_to_1_i2_gate__i2 + CHASTE_CONST(0.80000000000000004) * var_chaste_interface__i_to_1_i_gate__i) * mParameters[15] * var_chaste_interface__i_to_1_a_gate__a + CHASTE_CONST(0.61875000000000002) * mParameters[5] / ((1 + 100 / CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 2)) * (CHASTE_CONST(1.5) + mParameters[5]) * (1 + _lt_0_row[7] + CHASTE_CONST(0.036499999999999998) * (-CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * CHASTE_MATH::Exp(CHASTE_CONST(0.01485884101040119) * mParameters[6])) * _lt_0_row[6])) + CHASTE_CONST(0.028896009762002683) * (_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 / (_lt_0_row[9]) + (1 + CHASTE_CONST(0.59999999999999998) / (1 + CHASTE_CONST(6.4818210260626455e-7) * CHASTE_MATH::Pow((1 / var_chaste_interface__Ca_i__Ca_i), CHASTE_CONST(1.3999999999999999)))) * (-CHASTE_CONST(26.712338705498265) * CHASTE_MATH::Log((CHASTE_CONST(0.018329999999999999) * mParameters[6] + mParameters[5]) / (CHASTE_CONST(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 + CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::Sqrt(mParameters[5]) * (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) * mParameters[12] * var_chaste_interface__i_Kr_xr_gate__xr / (_lt_0_row[10]) + CHASTE_CONST(3.510865186083326) * (-15 + var_chaste_interface__membrane__V) * (-CHASTE_CONST(0.34100000000000003) * mParameters[4] + 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 / (_lt_0_row[12]); // microA_per_microF + const double var_chaste_interface__i_ionic = CHASTE_CAP() * var_membrane__i_tot; // uA_per_cm2 const double i_ionic = var_chaste_interface__i_ionic; EXCEPT_IF_NOT(!std::isnan(i_ionic)); @@ -816,7 +818,7 @@ std::shared_ptr D { // 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)); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -887,15 +889,15 @@ std::shared_ptr D // 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_bound = CHASTE_CONST(0.050000000000000003) * (1 - var_chaste_interface__Ca_MK_act__Ca_MK_trap) / (1 + CHASTE_CONST(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) - var_chaste_interface__i_to_2_a_gate__a; // 1 / millisecond + const double d_dt_chaste_interface_var_Ca_MK_act__Ca_MK_trap = -CHASTE_CONST(0.00068000000000000005) * var_chaste_interface__Ca_MK_act__Ca_MK_trap + CHASTE_CONST(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 = CHASTE_CONST(0.057500000000000002) * var_chaste_interface__Ca_i__Ca_i / (CHASTE_CONST(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 + CHASTE_CONST(0.1502) / var_chaste_interface__Ca_r__Ca_r) - var_chaste_interface__i_to_2_a_gate__a; // 1 / millisecond const double d_dt_chaste_interface_var_i_Ca_L_d_gate__d = (-var_chaste_interface__i_Ca_L_d_gate__d + _lt_0_row[13]) / (_lt_0_row[14]); // 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_L_f2_gate__f2 = (-var_chaste_interface__i_Ca_L_f2_gate__f2 + _lt_0_row[15]) / (38 + CHASTE_CONST(24.217200000000005) * CHASTE_MATH::Pow((-1 + CHASTE_CONST(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 + CHASTE_CONST(0.03125) * CHASTE_MATH::Pow((-1 + CHASTE_CONST(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 = (-var_chaste_interface__i_Kr_xr_gate__xr + _lt_0_row[20]) / (_lt_0_row[21]); // 1 / millisecond @@ -905,12 +907,12 @@ std::shared_ptr D 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)) * (var_i_Na_L_m_L_gate__alpha_m_L + 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 = (var_i_Na_h_gate__alpha_h + 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 = (var_i_Na_j_gate__alpha_j + 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_h_gate__alpha_h = ((var_chaste_interface__membrane__V < -40) ? (CHASTE_CONST(0.13500000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(11.764705882352942) + CHASTE_CONST(0.14705882352941177) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - CHASTE_CONST(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 * CHASTE_MATH::Exp(CHASTE_CONST(0.34999999999999998) * var_chaste_interface__membrane__V - CHASTE_CONST(0.34999999999999998) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time)) + CHASTE_CONST(3.5600000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.079000000000000001) * var_chaste_interface__membrane__V - CHASTE_CONST(0.079000000000000001) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time))) : (CHASTE_CONST(7.6923076923076916) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.96036036036036043) + CHASTE_CONST(0.0900900900900901) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - CHASTE_CONST(0.0900900900900901) * var_chaste_interface__membrane__V)))); // per_millisecond + const double d_dt_chaste_interface_var_i_Na_h_gate__h = (var_i_Na_h_gate__alpha_h + var_i_Na_h_gate__beta_h) * (-var_chaste_interface__i_Na_h_gate__h + CHASTE_CONST(0.01) * mp_membrane_fast_sodium_current_reduced_inactivation_modifier->Calc(mParameters[9], var_chaste_interface__environment__time) + (1 - CHASTE_CONST(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) ? ((CHASTE_CONST(37.780000000000001) + var_chaste_interface__membrane__V) * (-127140 * CHASTE_MATH::Exp(CHASTE_CONST(0.24440000000000001) * var_chaste_interface__membrane__V - CHASTE_CONST(0.24440000000000001) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time)) - CHASTE_CONST(3.4740000000000003e-5) * CHASTE_MATH::Exp(CHASTE_CONST(0.043909999999999998) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - CHASTE_CONST(0.043909999999999998) * var_chaste_interface__membrane__V)) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(24.640530000000002) + CHASTE_CONST(0.311) * var_chaste_interface__membrane__V - CHASTE_CONST(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) ? (CHASTE_CONST(0.1212) * CHASTE_MATH::Exp(CHASTE_CONST(0.01052) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - CHASTE_CONST(0.01052) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(5.5312920000000005) + CHASTE_CONST(0.13780000000000001) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - CHASTE_CONST(0.13780000000000001) * var_chaste_interface__membrane__V))) : (CHASTE_CONST(0.29999999999999999) * CHASTE_MATH::Exp(CHASTE_CONST(2.5349999999999999e-7) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - CHASTE_CONST(2.5349999999999999e-7) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(3.2000000000000002) + CHASTE_CONST(0.10000000000000001) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V)))); // per_millisecond + const double d_dt_chaste_interface_var_i_Na_j_gate__j = (var_i_Na_j_gate__alpha_j + var_i_Na_j_gate__beta_j) * (-var_chaste_interface__i_Na_j_gate__j + CHASTE_CONST(0.01) * mp_membrane_fast_sodium_current_reduced_inactivation_modifier->Calc(mParameters[9], var_chaste_interface__environment__time) + (1 - CHASTE_CONST(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)) * (var_i_Na_m_gate__alpha_m + var_i_Na_m_gate__beta_m); // 1 / millisecond @@ -919,43 +921,43 @@ std::shared_ptr D 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)) * (var_i_to_1_a_gate__alpha_a + var_i_to_1_a_gate__beta_a); // 1 / millisecond const double d_dt_chaste_interface_var_i_to_1_i2_gate__i2 = (-var_chaste_interface__i_to_1_i2_gate__i2 + _lt_0_row[31]) / (_lt_0_row[32]); // 1 / millisecond const double d_dt_chaste_interface_var_i_to_1_i_gate__i = (-var_chaste_interface__i_to_1_i_gate__i + _lt_0_row[33]) / (_lt_0_row[34]); // 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 * (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) / (_lt_0_row[0]); // microA_per_microF - const double var_i_Kr__i_Kr = mp_i_Kr__i_Kr_modifier->Calc(0.43033148291193518 * 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 / (_lt_0_row[10]), 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((-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]) / ((_lt_0_row[5]) * (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[8] + var_chaste_interface__intracellular_ion_concentrations__Cl_i) * var_chaste_interface__i_to_2_a_gate__a * var_chaste_interface__membrane__V / (_lt_0_row[9]); // 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 * (-0.34100000000000003 * mp_extracellular_calcium_concentration_modifier->Calc(mParameters[4], var_chaste_interface__environment__time) + var_chaste_interface__Ca_i__Ca_i * _lt_0_row[1]) * var_chaste_interface__membrane__V / (_lt_0_row[2]); // microA_per_microF - const double var_i_Ca_L__i_Ca_L_max = 3.510865186083326 * (-15 + var_chaste_interface__membrane__V) * (-0.34100000000000003 * mp_extracellular_calcium_concentration_modifier->Calc(mParameters[4], var_chaste_interface__environment__time) + var_chaste_interface__Ca_r__Ca_r * _lt_0_row[11]) / (_lt_0_row[12]); // microA_per_microF + const double var_equilibrium_potentials__E_Cl = -CHASTE_CONST(26.712338705498265) * CHASTE_MATH::Log(100 / var_chaste_interface__intracellular_ion_concentrations__Cl_i); // millivolt + const double var_background_currents__i_Cl_b = CHASTE_CONST(0.00022499999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.00022499999999999999) * var_equilibrium_potentials__E_Cl; // microA_per_microF + const double var_equilibrium_potentials__E_K = CHASTE_CONST(26.712338705498265) * CHASTE_MATH::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 = CHASTE_CONST(7.0755999999999996e-6) * (-var_equilibrium_potentials__E_Cl + var_equilibrium_potentials__E_K) / (CHASTE_CONST(87.825100000000006) - var_equilibrium_potentials__E_Cl + var_equilibrium_potentials__E_K); // millimolar_per_millisecond + const double var_background_currents__i_K_b = CHASTE_CONST(0.0050000000000000001) * var_chaste_interface__membrane__V - CHASTE_CONST(0.0050000000000000001) * var_equilibrium_potentials__E_K; // microA_per_microF + const double var_equilibrium_potentials__E_Na = CHASTE_CONST(26.712338705498265) * CHASTE_MATH::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 = CHASTE_CONST(9.8442999999999999e-6) * CHASTE_MATH::Pow((-var_equilibrium_potentials__E_Cl + var_equilibrium_potentials__E_Na), 4) / (CHASTE_CONST(59494197.640692554) + CHASTE_MATH::Pow((-var_equilibrium_potentials__E_Cl + var_equilibrium_potentials__E_Na), 4)); // millimolar_per_millisecond + const double var_background_currents__i_Na_b = CHASTE_CONST(0.0025000000000000001) * var_chaste_interface__membrane__V - CHASTE_CONST(0.0025000000000000001) * var_equilibrium_potentials__E_Na; // microA_per_microF + const double var_i_K1__i_K1 = mp_i_K1__i_K1_modifier->Calc((CHASTE_CONST(0.0040000000000000001) + CHASTE_CONST(0.4389381125701739) * CHASTE_MATH::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 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.23849999999999999) * var_equilibrium_potentials__E_K)) * (CHASTE_CONST(1.02) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.23849999999999999) * var_equilibrium_potentials__E_K)) + (CHASTE_CONST(0.49124000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.43983232) + CHASTE_CONST(0.080320000000000003) * var_chaste_interface__membrane__V - CHASTE_CONST(0.080320000000000003) * var_equilibrium_potentials__E_K) + CHASTE_MATH::Exp(-CHASTE_CONST(36.698642499999998) + CHASTE_CONST(0.061749999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.061749999999999999) * var_equilibrium_potentials__E_K)) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.4444678999999998) + CHASTE_CONST(0.51429999999999998) * var_equilibrium_potentials__E_K - CHASTE_CONST(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 = CHASTE_CONST(0.0027599999999999999) * (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) / (_lt_0_row[0]); // microA_per_microF + const double var_i_Kr__i_Kr = mp_i_Kr__i_Kr_modifier->Calc(CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::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 / (_lt_0_row[10]), var_chaste_interface__environment__time); // microA_per_microF + const double var_i_Ks__i_Ks = mp_i_Ks__i_Ks_modifier->Calc((1 + CHASTE_CONST(0.59999999999999998) / (1 + CHASTE_CONST(6.4818210260626455e-7) * CHASTE_MATH::Pow((1 / var_chaste_interface__Ca_i__Ca_i), CHASTE_CONST(1.3999999999999999)))) * (-CHASTE_CONST(26.712338705498265) * CHASTE_MATH::Log((CHASTE_CONST(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)) / (CHASTE_CONST(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(CHASTE_MATH::Pow(var_chaste_interface__i_Na_m_gate__m, 3) * (-var_equilibrium_potentials__E_Na + var_chaste_interface__membrane__V) * (CHASTE_CONST(0.20000000000000001) * var_chaste_interface__i_Na_j_gate__j + CHASTE_CONST(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((-CHASTE_CONST(1.5) * CHASTE_MATH::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] + CHASTE_CONST(0.40000000000000002) * CHASTE_MATH::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]) / ((_lt_0_row[5]) * (1 + CHASTE_CONST(6.9444444444444451e-9) / CHASTE_MATH::Pow(var_chaste_interface__Ca_i__Ca_i, 2)) * (CHASTE_CONST(1004882.8125) * var_chaste_interface__Ca_i__Ca_i + CHASTE_CONST(1.3) * CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) + CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mp_extracellular_calcium_concentration_modifier->Calc(mParameters[4], var_chaste_interface__environment__time) + CHASTE_CONST(1.5) * CHASTE_MATH::Pow(mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time), 3) * var_chaste_interface__Ca_i__Ca_i + CHASTE_CONST(0.0035999999999999999) * CHASTE_MATH::Pow(mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time), 3) * (1 + CHASTE_CONST(0.081300813008130079) * var_chaste_interface__intracellular_ion_concentrations__Na_i) + CHASTE_CONST(1860.8670000000004) * (1 + CHASTE_CONST(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 = CHASTE_CONST(0.61875000000000002) * mp_extracellular_potassium_concentration_modifier->Calc(mParameters[5], var_chaste_interface__environment__time) / ((1 + 100 / CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 2)) * (CHASTE_CONST(1.5) + mp_extracellular_potassium_concentration_modifier->Calc(mParameters[5], var_chaste_interface__environment__time)) * (1 + _lt_0_row[7] + CHASTE_CONST(0.036499999999999998) * (-CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * CHASTE_MATH::Exp(CHASTE_CONST(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 = CHASTE_CONST(0.037374999999999999) * CHASTE_MATH::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) * (CHASTE_CONST(0.20000000000000001) * var_chaste_interface__i_to_1_i2_gate__i2 + CHASTE_CONST(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 = CHASTE_CONST(0.028896009762002683) * (_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 / (_lt_0_row[9]); // microA_per_microF + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Cl_i = (-CHASTE_CONST(6.767281717060562e-9) * var_background_currents__i_Cl_b - CHASTE_CONST(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 = (CHASTE_CONST(1.3534563434121124e-8) * var_i_NaK__i_NaK - CHASTE_CONST(6.767281717060562e-9) * var_background_currents__i_K_b - CHASTE_CONST(6.767281717060562e-9) * var_i_K1__i_K1 - CHASTE_CONST(6.767281717060562e-9) * var_i_K_p__i_K_p - CHASTE_CONST(6.767281717060562e-9) * var_i_Kr__i_Kr - CHASTE_CONST(6.767281717060562e-9) * var_i_Ks__i_Ks - CHASTE_CONST(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 = (-CHASTE_CONST(2.0301845151181685e-8) * var_i_NaCa__i_NaCa - CHASTE_CONST(2.0301845151181685e-8) * var_i_NaK__i_NaK - CHASTE_CONST(6.767281717060562e-9) * var_background_currents__i_Na_b - CHASTE_CONST(6.767281717060562e-9) * var_i_Na__i_Na - CHASTE_CONST(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 = CHASTE_CONST(0.0028824983370007683) * (-CHASTE_CONST(0.34100000000000003) * mp_extracellular_calcium_concentration_modifier->Calc(mParameters[4], var_chaste_interface__environment__time) + var_chaste_interface__Ca_i__Ca_i * _lt_0_row[1]) * var_chaste_interface__membrane__V / (_lt_0_row[2]); // microA_per_microF + const double var_i_Ca_L__i_Ca_L_max = CHASTE_CONST(3.510865186083326) * (-15 + var_chaste_interface__membrane__V) * (-CHASTE_CONST(0.34100000000000003) * mp_extracellular_calcium_concentration_modifier->Calc(mParameters[4], var_chaste_interface__environment__time) + var_chaste_interface__Ca_r__Ca_r * _lt_0_row[11]) / (_lt_0_row[12]); // 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 + 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 + 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 + var_Ca_MK_act__Ca_MK_act)); // 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) * 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 = (-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 + 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 + 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 = -(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 + 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 + CHASTE_MATH::Exp(-CHASTE_CONST(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 = (CHASTE_CONST(0.14999999999999999) - var_chaste_interface__i_Ca_L_f_Ca_gate__f_Ca + CHASTE_CONST(0.55000000000000004) / (1 + CHASTE_CONST(333.33333333333331) * var_chaste_interface__Ca_r__Ca_r) + CHASTE_CONST(0.29999999999999999) / (1 - 20 * var_i_Ca_L__i_Ca_L)) / (CHASTE_CONST(0.5) + 1 / (1 + CHASTE_CONST(333.33333333333331) * var_chaste_interface__Ca_r__Ca_r) + 10 * var_Ca_MK_act__Ca_MK_act / (CHASTE_CONST(0.14999999999999999) + var_Ca_MK_act__Ca_MK_act)); // 1 / millisecond + const double var_q_leak__q_leak = CHASTE_CONST(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 + CHASTE_MATH::Exp(CHASTE_CONST(3.3333333333333335) + CHASTE_CONST(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 + CHASTE_MATH::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 / (CHASTE_CONST(0.14999999999999999) + var_Ca_MK_act__Ca_MK_act)) / (1 + CHASTE_MATH::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 / (CHASTE_CONST(0.14999999999999999) + var_Ca_MK_act__Ca_MK_act)); // 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) * 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 + CHASTE_MATH::Exp(CHASTE_CONST(2.6000000000000001) + CHASTE_CONST(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 = (-var_Ca_r__q_diff + CHASTE_CONST(0.23999999999999996) * var_q_rel__q_rel - CHASTE_CONST(1.1504378919002956e-7) * var_i_Ca_L__i_Ca_L) / (1 + CHASTE_CONST(2.2480000000000002) * var_chaste_interface__Ca_r__Ca_r / CHASTE_MATH::Pow((CHASTE_CONST(0.0086999999999999994) + var_chaste_interface__Ca_r__Ca_r), 2) + CHASTE_CONST(0.094) * var_chaste_interface__Ca_r__Ca_r / CHASTE_MATH::Pow((CHASTE_CONST(0.00087000000000000001) + var_chaste_interface__Ca_r__Ca_r), 2)); // millimolar / millisecond + const double d_dt_chaste_interface_var_q_rel_ro_gate__ro = -CHASTE_CONST(0.33333333333333331) * var_chaste_interface__q_rel_ro_gate__ro + CHASTE_CONST(0.33333333333333331) * CHASTE_MATH::Pow(var_chaste_interface__Ca_JSR__Ca_JSR, CHASTE_CONST(1.8999999999999999)) * CHASTE_MATH::Pow(var_i_Ca_L__i_Ca_L, 2) / ((1 + CHASTE_MATH::Pow(var_i_Ca_L__i_Ca_L, 2)) * (CHASTE_MATH::Pow(var_chaste_interface__Ca_JSR__Ca_JSR, CHASTE_CONST(1.8999999999999999)) + CHASTE_CONST(1644.6531773416521) * CHASTE_MATH::Pow((var_chaste_interface__Ca_r__Ca_r / (CHASTE_CONST(0.0028) + var_chaste_interface__Ca_r__Ca_r)), CHASTE_CONST(1.8999999999999999)))); // 1 / millisecond + const double var_q_tr__q_tr = CHASTE_CONST(0.0083333333333333332) * var_chaste_interface__Ca_NSR__Ca_NSR - CHASTE_CONST(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 / CHASTE_MATH::Pow((CHASTE_CONST(0.80000000000000004) + var_chaste_interface__Ca_JSR__Ca_JSR), 2)); // millimolar / millisecond + const double var_q_up__q_up = CHASTE_CONST(0.5) * (1 + CHASTE_CONST(0.75) * var_Ca_MK_act__Ca_MK_act / (CHASTE_CONST(0.14999999999999999) + 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) / (CHASTE_CONST(0.00092000000000000003) - CHASTE_CONST(0.00017000000000000001) * var_Ca_MK_act__Ca_MK_act / (CHASTE_CONST(0.14999999999999999) + 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 - CHASTE_CONST(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 = -(CHASTE_CONST(3.383640858530281e-9) * var_background_currents__i_Ca_b + CHASTE_CONST(3.383640858530281e-9) * var_i_Ca_p__i_Ca_p + CHASTE_CONST(0.081176470588235281) * var_q_up__q_up - CHASTE_CONST(0.029411764705882353) * var_Ca_r__q_diff - CHASTE_CONST(6.767281717060562e-9) * var_i_NaCa__i_NaCa - CHASTE_CONST(0.081176470588235281) * var_q_leak__q_leak) / (1 + CHASTE_CONST(0.14000000000000001) * var_chaste_interface__Ca_i__Ca_i / CHASTE_MATH::Pow((CHASTE_CONST(0.00050000000000000001) + var_chaste_interface__Ca_i__Ca_i), 2) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__Ca_i__Ca_i / CHASTE_MATH::Pow((CHASTE_CONST(0.0023800000000000002) + var_chaste_interface__Ca_i__Ca_i), 2)); // millimolar / millisecond if (mSetVoltageDerivativeToZero) { @@ -963,7 +965,7 @@ std::shared_ptr D } 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 + 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 - CHASTE_STIM(var_chaste_interface__environment__time) / CHASTE_CAP() - CHASTE_CONST(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; @@ -1002,7 +1004,7 @@ std::shared_ptr D { // 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)); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -1058,65 +1060,65 @@ std::shared_ptr D 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_0 = CHASTE_CONST(0.050000000000000003); // dimensionless + const double var_Ca_MK_act__km_Ca_MK = CHASTE_CONST(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 / (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_equilibrium_potentials__r_NaK = CHASTE_CONST(0.018329999999999999); // dimensionless + const double var_i_Ca_L__p_Ca = CHASTE_CONST(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(CHASTE_CONST(0.5) + 1 / (1 + CHASTE_CONST(333.33333333333331) * var_chaste_interface__Ca_r__Ca_r) + 10 * var_Ca_MK_act__Ca_MK_act / (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 + CHASTE_CONST(0.59999999999999998) / (1 + CHASTE_CONST(6.4818210260626455e-7) * CHASTE_MATH::Pow((1 / var_chaste_interface__Ca_i__Ca_i), CHASTE_CONST(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 = CHASTE_CONST(0.40000000000000002); // dimensionless + const double var_i_NaCa__k_sat = CHASTE_CONST(0.27000000000000002); // dimensionless + const double var_i_NaCa__km_Ca_act = CHASTE_CONST(0.000125); // millimolar + const double var_i_NaCa__km_Ca_i = CHASTE_CONST(0.0035999999999999999); // millimolar + const double var_i_NaCa__km_Ca_o = CHASTE_CONST(1.3); // millimolar + const double var_i_NaCa__km_Na_i_1 = CHASTE_CONST(12.300000000000001); // millimolar + const double var_i_NaCa__km_Na_o = CHASTE_CONST(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 + CHASTE_CONST(24.217200000000005) * CHASTE_MATH::Pow((-1 + CHASTE_CONST(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 + CHASTE_CONST(0.03125) * CHASTE_MATH::Pow((-1 + CHASTE_CONST(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__alpha_h = ((var_chaste_interface__membrane__V < -40) ? (CHASTE_CONST(0.13500000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(11.764705882352942) + CHASTE_CONST(0.14705882352941177) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - CHASTE_CONST(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 * CHASTE_MATH::Exp(CHASTE_CONST(0.34999999999999998) * var_chaste_interface__membrane__V - CHASTE_CONST(0.34999999999999998) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time)) + CHASTE_CONST(3.5600000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.079000000000000001) * var_chaste_interface__membrane__V - CHASTE_CONST(0.079000000000000001) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time))) : (CHASTE_CONST(7.6923076923076916) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.96036036036036043) + CHASTE_CONST(0.0900900900900901) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - CHASTE_CONST(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__alpha_j = ((var_chaste_interface__membrane__V < -40) ? ((CHASTE_CONST(37.780000000000001) + var_chaste_interface__membrane__V) * (-127140 * CHASTE_MATH::Exp(CHASTE_CONST(0.24440000000000001) * var_chaste_interface__membrane__V - CHASTE_CONST(0.24440000000000001) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time)) - CHASTE_CONST(3.4740000000000003e-5) * CHASTE_MATH::Exp(CHASTE_CONST(0.043909999999999998) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - CHASTE_CONST(0.043909999999999998) * var_chaste_interface__membrane__V)) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(24.640530000000002) + CHASTE_CONST(0.311) * var_chaste_interface__membrane__V - CHASTE_CONST(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) ? (CHASTE_CONST(0.1212) * CHASTE_MATH::Exp(CHASTE_CONST(0.01052) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - CHASTE_CONST(0.01052) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(5.5312920000000005) + CHASTE_CONST(0.13780000000000001) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - CHASTE_CONST(0.13780000000000001) * var_chaste_interface__membrane__V))) : (CHASTE_CONST(0.29999999999999999) * CHASTE_MATH::Exp(CHASTE_CONST(2.5349999999999999e-7) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - CHASTE_CONST(2.5349999999999999e-7) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(3.2000000000000002) + CHASTE_CONST(0.10000000000000001) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - CHASTE_CONST(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_membrane__i_stim_converted = CHASTE_STIM(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_i_NaCa__dNaCa_1 = CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * var_i_NaCa__km_Ca_o + CHASTE_CONST(1.5) * CHASTE_MATH::Pow(var_i_NaCa__km_Na_o, 3) * var_chaste_interface__Ca_i__Ca_i + CHASTE_MATH::Pow(var_i_NaCa__km_Na_i_1, 3) * (1 + CHASTE_CONST(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_i_K1__g_K1 = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::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 = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::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 = CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mp_extracellular_calcium_concentration_modifier->Calc(mParameters[4], var_chaste_interface__environment__time) + CHASTE_CONST(1.5) * CHASTE_MATH::Pow(mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time), 3) * var_chaste_interface__Ca_i__Ca_i + CHASTE_MATH::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_equilibrium_potentials__E_K = var_model_parameters__R * var_model_parameters__T * CHASTE_MATH::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 * CHASTE_MATH::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 * CHASTE_MATH::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 = CHASTE_CONST(1.02) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.23849999999999999) * var_equilibrium_potentials__E_K)); // dimensionless + const double var_i_K1_xK1_gate__beta_xK1 = (CHASTE_CONST(0.49124000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.43983232) + CHASTE_CONST(0.080320000000000003) * var_chaste_interface__membrane__V - CHASTE_CONST(0.080320000000000003) * var_equilibrium_potentials__E_K) + CHASTE_MATH::Exp(-CHASTE_CONST(36.698642499999998) + CHASTE_CONST(0.061749999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.061749999999999999) * var_equilibrium_potentials__E_K)) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.4444678999999998) + CHASTE_CONST(0.51429999999999998) * var_equilibrium_potentials__E_K - CHASTE_CONST(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_K1__i_K1 = mp_i_K1__i_K1_modifier->Calc((CHASTE_CONST(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 = CHASTE_CAP() * 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_Kr__i_Kr_converted = CHASTE_CAP() * 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_i_Ks__i_Ks_converted = CHASTE_CAP() * var_i_Ks__i_Ks; // uA_per_cm2 + const double var_i_Na__i_Na = mp_i_Na__i_Na_modifier->Calc(CHASTE_MATH::Pow(var_chaste_interface__i_Na_m_gate__m, 3) * (-var_equilibrium_potentials__E_Na + var_chaste_interface__membrane__V) * (CHASTE_CONST(0.20000000000000001) * var_chaste_interface__i_Na_j_gate__j + CHASTE_CONST(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 = CHASTE_CAP() * var_i_Na__i_Na; // uA_per_cm2 + const double var_i_NaCa__i_NaCa = mp_i_NaCa__i_NaCa_modifier->Calc((-CHASTE_CONST(1.5) * CHASTE_MATH::Pow(mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time), 3) * var_chaste_interface__Ca_i__Ca_i * CHASTE_MATH::Exp(-CHASTE_CONST(0.65000000000000002) * var_chaste_interface__membrane__V * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T)) + CHASTE_MATH::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) * CHASTE_MATH::Exp(CHASTE_CONST(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 * CHASTE_MATH::Exp(-CHASTE_CONST(0.65000000000000002) * var_chaste_interface__membrane__V * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T))) * (1 + CHASTE_CONST(0.44444444444444442) * CHASTE_MATH::Pow(var_i_NaCa__km_Ca_act, 2) / CHASTE_MATH::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 = CHASTE_CAP() * 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) * (CHASTE_CONST(0.20000000000000001) * var_chaste_interface__i_to_1_i2_gate__i2 + CHASTE_CONST(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 = CHASTE_CAP() * 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__gamma_Cao = CHASTE_CONST(0.34100000000000003); // dimensionless const double var_model_parameters__z_Ca = 2; // dimensionless - const double var_i_Ca_L__i_Ca_L_max = 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_max = CHASTE_MATH::Pow(var_model_parameters__F, 2) * CHASTE_MATH::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 * CHASTE_MATH::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 + CHASTE_MATH::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_i_Ca_L__i_Ca_L_converted = CHASTE_CAP() * 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 + CHASTE_MATH::Exp(-CHASTE_CONST(4.375) - 25 * var_i_Ca_L__i_Ca_L)), var_chaste_interface__environment__time); // millisecond + const double var_q_rel__vg = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(2.6000000000000001) + CHASTE_CONST(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 diff --git a/chaste_codegen/data/tests/chaste_reference_models/Opt/dynamic_aslanidi_Purkinje_model_2009.hpp b/chaste_codegen/data/tests/chaste_reference_models/Opt/dynamic_aslanidi_Purkinje_model_2009.hpp index 4bfdf1ff9..fcae39e1c 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/Opt/dynamic_aslanidi_Purkinje_model_2009.hpp +++ b/chaste_codegen/data/tests/chaste_reference_models/Opt/dynamic_aslanidi_Purkinje_model_2009.hpp @@ -19,6 +19,9 @@ #include "AbstractModifier.hpp" #include "AbstractDynamicallyLoadableEntity.hpp" #include "AbstractStimulusFunction.hpp" +#if USING_DEVICE_COMPILER +#include "StimulusEvaluatorCuda.hpp" +#endif #include "AbstractCardiacCell.hpp" class Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt : public AbstractCardiacCellWithModifiers, public AbstractDynamicallyLoadableEntity diff --git a/chaste_codegen/data/tests/chaste_reference_models/Opt/dynamic_aslanidi_Purkinje_model_2009Opt.cpp b/chaste_codegen/data/tests/chaste_reference_models/Opt/dynamic_aslanidi_Purkinje_model_2009Opt.cpp new file mode 100644 index 000000000..0e72fcc7d --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/Opt/dynamic_aslanidi_Purkinje_model_2009Opt.cpp @@ -0,0 +1,1445 @@ +//! @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 "ChasteMathDeviceNamespaces.hpp" +#include "ChasteCpuMacros.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 * CHASTE_CAP(); // 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] = CHASTE_CONST(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] = CHASTE_CONST(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] = CHASTE_CONST(1.8); // (var_model_parameters__Ca_o) [millimolar] + this->mParameters[5] = CHASTE_CONST(5.4000000000000004); // (var_model_parameters__K_o) [millimolar] + this->mParameters[6] = 140; // (var_model_parameters__Na_o) [millimolar] + this->mParameters[7] = CHASTE_CONST(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] = CHASTE_CONST(0.25); // (var_i_K1__g_K1_max) [milliS_per_microF] + this->mParameters[12] = CHASTE_CONST(0.040008488000000002); // (var_i_Kr__g_Kr_max) [milliS_per_microF] + this->mParameters[13] = CHASTE_CONST(0.052581329000000003); // (var_i_Ks__g_Ks_max) [milliS_per_microF] + this->mParameters[14] = CHASTE_CONST(4.5); // (var_i_NaCa__i_NaCa_max) [microA_per_microF] + this->mParameters[15] = CHASTE_CONST(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 ? CHASTE_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 = CHASTE_CONST(26.712338705498265) * CHASTE_MATH::Log(mParameters[5] / var_chaste_interface__intracellular_ion_concentrations__K_i); // millivolt + const double var_equilibrium_potentials__E_Na = CHASTE_CONST(26.712338705498265) * CHASTE_MATH::Log(mParameters[6] / var_chaste_interface__intracellular_ion_concentrations__Na_i); // millivolt + const double var_membrane__i_tot = CHASTE_CONST(0.0077250000000000001) * var_chaste_interface__membrane__V + CHASTE_CONST(0.0060102762087371094) * CHASTE_MATH::Log(100 / var_chaste_interface__intracellular_ion_concentrations__Cl_i) - CHASTE_CONST(0.0025000000000000001) * var_equilibrium_potentials__E_Na - CHASTE_CONST(0.0050000000000000001) * var_equilibrium_potentials__E_K + (CHASTE_CONST(0.0040000000000000001) + CHASTE_CONST(0.4389381125701739) * CHASTE_MATH::Sqrt(mParameters[5]) * mParameters[11] / ((1 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.23849999999999999) * var_equilibrium_potentials__E_K)) * (CHASTE_CONST(1.02) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.23849999999999999) * var_equilibrium_potentials__E_K)) + (CHASTE_CONST(0.49124000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.43983232) + CHASTE_CONST(0.080320000000000003) * var_chaste_interface__membrane__V - CHASTE_CONST(0.080320000000000003) * var_equilibrium_potentials__E_K) + CHASTE_MATH::Exp(-CHASTE_CONST(36.698642499999998) + CHASTE_CONST(0.061749999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.061749999999999999) * var_equilibrium_potentials__E_K)) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.4444678999999998) + CHASTE_CONST(0.51429999999999998) * var_equilibrium_potentials__E_K - CHASTE_CONST(0.51429999999999998) * var_chaste_interface__membrane__V))))) * (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) + CHASTE_CONST(0.0027599999999999999) * (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) / (_lt_0_row[0]) + CHASTE_CONST(0.057500000000000002) * var_chaste_interface__Ca_i__Ca_i / (CHASTE_CONST(0.00050000000000000001) + var_chaste_interface__Ca_i__Ca_i) + CHASTE_CONST(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 + CHASTE_CONST(0.037374999999999999) * CHASTE_MATH::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 + CHASTE_CONST(0.0028824983370007683) * (-CHASTE_CONST(0.34100000000000003) * mParameters[4] + var_chaste_interface__Ca_i__Ca_i * _lt_0_row[1]) * var_chaste_interface__membrane__V / (_lt_0_row[2]) + (-CHASTE_CONST(1.5) * CHASTE_MATH::Pow(mParameters[6], 3) * var_chaste_interface__Ca_i__Ca_i * _lt_0_row[3] + CHASTE_CONST(0.40000000000000002) * CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[14] * mParameters[4] * _lt_0_row[4]) / ((_lt_0_row[5]) * (1 + CHASTE_CONST(6.9444444444444451e-9) / CHASTE_MATH::Pow(var_chaste_interface__Ca_i__Ca_i, 2)) * (CHASTE_CONST(1004882.8125) * var_chaste_interface__Ca_i__Ca_i + CHASTE_CONST(1.3) * CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) + CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[4] + CHASTE_CONST(1.5) * CHASTE_MATH::Pow(mParameters[6], 3) * var_chaste_interface__Ca_i__Ca_i + CHASTE_CONST(0.0035999999999999999) * CHASTE_MATH::Pow(mParameters[6], 3) * (1 + CHASTE_CONST(0.081300813008130079) * var_chaste_interface__intracellular_ion_concentrations__Na_i) + CHASTE_CONST(1860.8670000000004) * (1 + CHASTE_CONST(416.66666666666669) * var_chaste_interface__Ca_i__Ca_i) * mParameters[4])) + CHASTE_MATH::Pow(var_chaste_interface__i_Na_m_gate__m, 3) * (-var_equilibrium_potentials__E_Na + var_chaste_interface__membrane__V) * (CHASTE_CONST(0.20000000000000001) * var_chaste_interface__i_Na_j_gate__j + CHASTE_CONST(0.80000000000000004) * var_chaste_interface__i_Na_h_gate__h) * mParameters[8] + (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) * (CHASTE_CONST(0.20000000000000001) * var_chaste_interface__i_to_1_i2_gate__i2 + CHASTE_CONST(0.80000000000000004) * var_chaste_interface__i_to_1_i_gate__i) * mParameters[15] * var_chaste_interface__i_to_1_a_gate__a + CHASTE_CONST(0.61875000000000002) * mParameters[5] / ((1 + 100 / CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 2)) * (CHASTE_CONST(1.5) + mParameters[5]) * (1 + _lt_0_row[7] + CHASTE_CONST(0.036499999999999998) * (-CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * CHASTE_MATH::Exp(CHASTE_CONST(0.01485884101040119) * mParameters[6])) * _lt_0_row[6])) + CHASTE_CONST(0.028896009762002683) * (_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 / (_lt_0_row[9]) + (1 + CHASTE_CONST(0.59999999999999998) / (1 + CHASTE_CONST(6.4818210260626455e-7) * CHASTE_MATH::Pow((1 / var_chaste_interface__Ca_i__Ca_i), CHASTE_CONST(1.3999999999999999)))) * (-CHASTE_CONST(26.712338705498265) * CHASTE_MATH::Log((CHASTE_CONST(0.018329999999999999) * mParameters[6] + mParameters[5]) / (CHASTE_CONST(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 + CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::Sqrt(mParameters[5]) * (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) * mParameters[12] * var_chaste_interface__i_Kr_xr_gate__xr / (_lt_0_row[10]) + CHASTE_CONST(3.510865186083326) * (-15 + var_chaste_interface__membrane__V) * (-CHASTE_CONST(0.34100000000000003) * mParameters[4] + 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 / (_lt_0_row[12]); // microA_per_microF + const double var_chaste_interface__i_ionic = CHASTE_CAP() * 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 ? CHASTE_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 = CHASTE_CONST(0.050000000000000003) * (1 - var_chaste_interface__Ca_MK_act__Ca_MK_trap) / (1 + CHASTE_CONST(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 = -CHASTE_CONST(0.00068000000000000005) * var_chaste_interface__Ca_MK_act__Ca_MK_trap + CHASTE_CONST(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 = CHASTE_CONST(0.057500000000000002) * var_chaste_interface__Ca_i__Ca_i / (CHASTE_CONST(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 + CHASTE_CONST(0.1502) / var_chaste_interface__Ca_r__Ca_r) - var_chaste_interface__i_to_2_a_gate__a; // 1 / millisecond + const double d_dt_chaste_interface_var_i_Ca_L_d_gate__d = (-var_chaste_interface__i_Ca_L_d_gate__d + _lt_0_row[13]) / (_lt_0_row[14]); // 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 + CHASTE_CONST(24.217200000000005) * CHASTE_MATH::Pow((-1 + CHASTE_CONST(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 + CHASTE_CONST(0.03125) * CHASTE_MATH::Pow((-1 + CHASTE_CONST(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 = (-var_chaste_interface__i_Kr_xr_gate__xr + _lt_0_row[20]) / (_lt_0_row[21]); // 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 = (-var_chaste_interface__i_Na_L_h_L_gate__h_L + _lt_0_row[25]) / (_lt_0_row[26]); // 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)) * (var_i_Na_L_m_L_gate__alpha_m_L + 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) ? (CHASTE_CONST(0.13500000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(11.764705882352942) + CHASTE_CONST(0.14705882352941177) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - CHASTE_CONST(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 * CHASTE_MATH::Exp(CHASTE_CONST(0.34999999999999998) * var_chaste_interface__membrane__V - CHASTE_CONST(0.34999999999999998) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time)) + CHASTE_CONST(3.5600000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.079000000000000001) * var_chaste_interface__membrane__V - CHASTE_CONST(0.079000000000000001) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time))) : (CHASTE_CONST(7.6923076923076916) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.96036036036036043) + CHASTE_CONST(0.0900900900900901) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - CHASTE_CONST(0.0900900900900901) * var_chaste_interface__membrane__V)))); // per_millisecond + const double d_dt_chaste_interface_var_i_Na_h_gate__h = (var_i_Na_h_gate__alpha_h + var_i_Na_h_gate__beta_h) * (-var_chaste_interface__i_Na_h_gate__h + CHASTE_CONST(0.01) * mp_membrane_fast_sodium_current_reduced_inactivation_modifier->Calc(mParameters[9], var_chaste_interface__environment__time) + (1 - CHASTE_CONST(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) ? ((CHASTE_CONST(37.780000000000001) + var_chaste_interface__membrane__V) * (-127140 * CHASTE_MATH::Exp(CHASTE_CONST(0.24440000000000001) * var_chaste_interface__membrane__V - CHASTE_CONST(0.24440000000000001) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time)) - CHASTE_CONST(3.4740000000000003e-5) * CHASTE_MATH::Exp(CHASTE_CONST(0.043909999999999998) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - CHASTE_CONST(0.043909999999999998) * var_chaste_interface__membrane__V)) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(24.640530000000002) + CHASTE_CONST(0.311) * var_chaste_interface__membrane__V - CHASTE_CONST(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) ? (CHASTE_CONST(0.1212) * CHASTE_MATH::Exp(CHASTE_CONST(0.01052) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - CHASTE_CONST(0.01052) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(5.5312920000000005) + CHASTE_CONST(0.13780000000000001) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - CHASTE_CONST(0.13780000000000001) * var_chaste_interface__membrane__V))) : (CHASTE_CONST(0.29999999999999999) * CHASTE_MATH::Exp(CHASTE_CONST(2.5349999999999999e-7) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - CHASTE_CONST(2.5349999999999999e-7) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(3.2000000000000002) + CHASTE_CONST(0.10000000000000001) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V)))); // per_millisecond + const double d_dt_chaste_interface_var_i_Na_j_gate__j = (var_i_Na_j_gate__alpha_j + var_i_Na_j_gate__beta_j) * (-var_chaste_interface__i_Na_j_gate__j + CHASTE_CONST(0.01) * mp_membrane_fast_sodium_current_reduced_inactivation_modifier->Calc(mParameters[9], var_chaste_interface__environment__time) + (1 - CHASTE_CONST(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)) * (var_i_Na_m_gate__alpha_m + 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)) * (var_i_to_1_a_gate__alpha_a + var_i_to_1_a_gate__beta_a); // 1 / millisecond + const double d_dt_chaste_interface_var_i_to_1_i2_gate__i2 = (-var_chaste_interface__i_to_1_i2_gate__i2 + _lt_0_row[31]) / (_lt_0_row[32]); // 1 / millisecond + const double d_dt_chaste_interface_var_i_to_1_i_gate__i = (-var_chaste_interface__i_to_1_i_gate__i + _lt_0_row[33]) / (_lt_0_row[34]); // 1 / millisecond + const double var_equilibrium_potentials__E_Cl = -CHASTE_CONST(26.712338705498265) * CHASTE_MATH::Log(100 / var_chaste_interface__intracellular_ion_concentrations__Cl_i); // millivolt + const double var_background_currents__i_Cl_b = CHASTE_CONST(0.00022499999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.00022499999999999999) * var_equilibrium_potentials__E_Cl; // microA_per_microF + const double var_equilibrium_potentials__E_K = CHASTE_CONST(26.712338705498265) * CHASTE_MATH::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 = CHASTE_CONST(7.0755999999999996e-6) * (-var_equilibrium_potentials__E_Cl + var_equilibrium_potentials__E_K) / (CHASTE_CONST(87.825100000000006) - var_equilibrium_potentials__E_Cl + var_equilibrium_potentials__E_K); // millimolar_per_millisecond + const double var_background_currents__i_K_b = CHASTE_CONST(0.0050000000000000001) * var_chaste_interface__membrane__V - CHASTE_CONST(0.0050000000000000001) * var_equilibrium_potentials__E_K; // microA_per_microF + const double var_equilibrium_potentials__E_Na = CHASTE_CONST(26.712338705498265) * CHASTE_MATH::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 = CHASTE_CONST(9.8442999999999999e-6) * CHASTE_MATH::Pow((-var_equilibrium_potentials__E_Cl + var_equilibrium_potentials__E_Na), 4) / (CHASTE_CONST(59494197.640692554) + CHASTE_MATH::Pow((-var_equilibrium_potentials__E_Cl + var_equilibrium_potentials__E_Na), 4)); // millimolar_per_millisecond + const double var_background_currents__i_Na_b = CHASTE_CONST(0.0025000000000000001) * var_chaste_interface__membrane__V - CHASTE_CONST(0.0025000000000000001) * var_equilibrium_potentials__E_Na; // microA_per_microF + const double var_i_K1__i_K1 = mp_i_K1__i_K1_modifier->Calc((CHASTE_CONST(0.0040000000000000001) + CHASTE_CONST(0.4389381125701739) * CHASTE_MATH::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 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.23849999999999999) * var_equilibrium_potentials__E_K)) * (CHASTE_CONST(1.02) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.23849999999999999) * var_equilibrium_potentials__E_K)) + (CHASTE_CONST(0.49124000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.43983232) + CHASTE_CONST(0.080320000000000003) * var_chaste_interface__membrane__V - CHASTE_CONST(0.080320000000000003) * var_equilibrium_potentials__E_K) + CHASTE_MATH::Exp(-CHASTE_CONST(36.698642499999998) + CHASTE_CONST(0.061749999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.061749999999999999) * var_equilibrium_potentials__E_K)) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.4444678999999998) + CHASTE_CONST(0.51429999999999998) * var_equilibrium_potentials__E_K - CHASTE_CONST(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 = CHASTE_CONST(0.0027599999999999999) * (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) / (_lt_0_row[0]); // microA_per_microF + const double var_i_Kr__i_Kr = mp_i_Kr__i_Kr_modifier->Calc(CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::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 / (_lt_0_row[10]), var_chaste_interface__environment__time); // microA_per_microF + const double var_i_Ks__i_Ks = mp_i_Ks__i_Ks_modifier->Calc((1 + CHASTE_CONST(0.59999999999999998) / (1 + CHASTE_CONST(6.4818210260626455e-7) * CHASTE_MATH::Pow((1 / var_chaste_interface__Ca_i__Ca_i), CHASTE_CONST(1.3999999999999999)))) * (-CHASTE_CONST(26.712338705498265) * CHASTE_MATH::Log((CHASTE_CONST(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)) / (CHASTE_CONST(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(CHASTE_MATH::Pow(var_chaste_interface__i_Na_m_gate__m, 3) * (-var_equilibrium_potentials__E_Na + var_chaste_interface__membrane__V) * (CHASTE_CONST(0.20000000000000001) * var_chaste_interface__i_Na_j_gate__j + CHASTE_CONST(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((-CHASTE_CONST(1.5) * CHASTE_MATH::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] + CHASTE_CONST(0.40000000000000002) * CHASTE_MATH::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]) / ((_lt_0_row[5]) * (1 + CHASTE_CONST(6.9444444444444451e-9) / CHASTE_MATH::Pow(var_chaste_interface__Ca_i__Ca_i, 2)) * (CHASTE_CONST(1004882.8125) * var_chaste_interface__Ca_i__Ca_i + CHASTE_CONST(1.3) * CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) + CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mp_extracellular_calcium_concentration_modifier->Calc(mParameters[4], var_chaste_interface__environment__time) + CHASTE_CONST(1.5) * CHASTE_MATH::Pow(mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time), 3) * var_chaste_interface__Ca_i__Ca_i + CHASTE_CONST(0.0035999999999999999) * CHASTE_MATH::Pow(mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time), 3) * (1 + CHASTE_CONST(0.081300813008130079) * var_chaste_interface__intracellular_ion_concentrations__Na_i) + CHASTE_CONST(1860.8670000000004) * (1 + CHASTE_CONST(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 = CHASTE_CONST(0.61875000000000002) * mp_extracellular_potassium_concentration_modifier->Calc(mParameters[5], var_chaste_interface__environment__time) / ((1 + 100 / CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 2)) * (CHASTE_CONST(1.5) + mp_extracellular_potassium_concentration_modifier->Calc(mParameters[5], var_chaste_interface__environment__time)) * (1 + _lt_0_row[7] + CHASTE_CONST(0.036499999999999998) * (-CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * CHASTE_MATH::Exp(CHASTE_CONST(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 = CHASTE_CONST(0.037374999999999999) * CHASTE_MATH::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) * (CHASTE_CONST(0.20000000000000001) * var_chaste_interface__i_to_1_i2_gate__i2 + CHASTE_CONST(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 = CHASTE_CONST(0.028896009762002683) * (_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 / (_lt_0_row[9]); // microA_per_microF + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Cl_i = (-CHASTE_CONST(6.767281717060562e-9) * var_background_currents__i_Cl_b - CHASTE_CONST(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 = (CHASTE_CONST(1.3534563434121124e-8) * var_i_NaK__i_NaK - CHASTE_CONST(6.767281717060562e-9) * var_background_currents__i_K_b - CHASTE_CONST(6.767281717060562e-9) * var_i_K1__i_K1 - CHASTE_CONST(6.767281717060562e-9) * var_i_K_p__i_K_p - CHASTE_CONST(6.767281717060562e-9) * var_i_Kr__i_Kr - CHASTE_CONST(6.767281717060562e-9) * var_i_Ks__i_Ks - CHASTE_CONST(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 = (-CHASTE_CONST(2.0301845151181685e-8) * var_i_NaCa__i_NaCa - CHASTE_CONST(2.0301845151181685e-8) * var_i_NaK__i_NaK - CHASTE_CONST(6.767281717060562e-9) * var_background_currents__i_Na_b - CHASTE_CONST(6.767281717060562e-9) * var_i_Na__i_Na - CHASTE_CONST(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 = CHASTE_CONST(0.0028824983370007683) * (-CHASTE_CONST(0.34100000000000003) * mp_extracellular_calcium_concentration_modifier->Calc(mParameters[4], var_chaste_interface__environment__time) + var_chaste_interface__Ca_i__Ca_i * _lt_0_row[1]) * var_chaste_interface__membrane__V / (_lt_0_row[2]); // microA_per_microF + const double var_i_Ca_L__i_Ca_L_max = CHASTE_CONST(3.510865186083326) * (-15 + var_chaste_interface__membrane__V) * (-CHASTE_CONST(0.34100000000000003) * mp_extracellular_calcium_concentration_modifier->Calc(mParameters[4], var_chaste_interface__environment__time) + var_chaste_interface__Ca_r__Ca_r * _lt_0_row[11]) / (_lt_0_row[12]); // 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 + CHASTE_MATH::Exp(-CHASTE_CONST(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 = (CHASTE_CONST(0.14999999999999999) - var_chaste_interface__i_Ca_L_f_Ca_gate__f_Ca + CHASTE_CONST(0.55000000000000004) / (1 + CHASTE_CONST(333.33333333333331) * var_chaste_interface__Ca_r__Ca_r) + CHASTE_CONST(0.29999999999999999) / (1 - 20 * var_i_Ca_L__i_Ca_L)) / (CHASTE_CONST(0.5) + 1 / (1 + CHASTE_CONST(333.33333333333331) * var_chaste_interface__Ca_r__Ca_r) + 10 * var_Ca_MK_act__Ca_MK_act / (CHASTE_CONST(0.14999999999999999) + var_Ca_MK_act__Ca_MK_act)); // 1 / millisecond + const double var_q_leak__q_leak = CHASTE_CONST(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 + CHASTE_MATH::Exp(CHASTE_CONST(3.3333333333333335) + CHASTE_CONST(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 + CHASTE_MATH::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 / (CHASTE_CONST(0.14999999999999999) + var_Ca_MK_act__Ca_MK_act)) / (1 + CHASTE_MATH::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 / (CHASTE_CONST(0.14999999999999999) + var_Ca_MK_act__Ca_MK_act)); // 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) * 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 + CHASTE_MATH::Exp(CHASTE_CONST(2.6000000000000001) + CHASTE_CONST(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 = (-var_Ca_r__q_diff + CHASTE_CONST(0.23999999999999996) * var_q_rel__q_rel - CHASTE_CONST(1.1504378919002956e-7) * var_i_Ca_L__i_Ca_L) / (1 + CHASTE_CONST(2.2480000000000002) * var_chaste_interface__Ca_r__Ca_r / CHASTE_MATH::Pow((CHASTE_CONST(0.0086999999999999994) + var_chaste_interface__Ca_r__Ca_r), 2) + CHASTE_CONST(0.094) * var_chaste_interface__Ca_r__Ca_r / CHASTE_MATH::Pow((CHASTE_CONST(0.00087000000000000001) + var_chaste_interface__Ca_r__Ca_r), 2)); // millimolar / millisecond + const double d_dt_chaste_interface_var_q_rel_ro_gate__ro = -CHASTE_CONST(0.33333333333333331) * var_chaste_interface__q_rel_ro_gate__ro + CHASTE_CONST(0.33333333333333331) * CHASTE_MATH::Pow(var_chaste_interface__Ca_JSR__Ca_JSR, CHASTE_CONST(1.8999999999999999)) * CHASTE_MATH::Pow(var_i_Ca_L__i_Ca_L, 2) / ((1 + CHASTE_MATH::Pow(var_i_Ca_L__i_Ca_L, 2)) * (CHASTE_MATH::Pow(var_chaste_interface__Ca_JSR__Ca_JSR, CHASTE_CONST(1.8999999999999999)) + CHASTE_CONST(1644.6531773416521) * CHASTE_MATH::Pow((var_chaste_interface__Ca_r__Ca_r / (CHASTE_CONST(0.0028) + var_chaste_interface__Ca_r__Ca_r)), CHASTE_CONST(1.8999999999999999)))); // 1 / millisecond + const double var_q_tr__q_tr = CHASTE_CONST(0.0083333333333333332) * var_chaste_interface__Ca_NSR__Ca_NSR - CHASTE_CONST(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 / CHASTE_MATH::Pow((CHASTE_CONST(0.80000000000000004) + var_chaste_interface__Ca_JSR__Ca_JSR), 2)); // millimolar / millisecond + const double var_q_up__q_up = CHASTE_CONST(0.5) * (1 + CHASTE_CONST(0.75) * var_Ca_MK_act__Ca_MK_act / (CHASTE_CONST(0.14999999999999999) + 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) / (CHASTE_CONST(0.00092000000000000003) - CHASTE_CONST(0.00017000000000000001) * var_Ca_MK_act__Ca_MK_act / (CHASTE_CONST(0.14999999999999999) + 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 - CHASTE_CONST(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 = -(CHASTE_CONST(3.383640858530281e-9) * var_background_currents__i_Ca_b + CHASTE_CONST(3.383640858530281e-9) * var_i_Ca_p__i_Ca_p + CHASTE_CONST(0.081176470588235281) * var_q_up__q_up - CHASTE_CONST(0.029411764705882353) * var_Ca_r__q_diff - CHASTE_CONST(6.767281717060562e-9) * var_i_NaCa__i_NaCa - CHASTE_CONST(0.081176470588235281) * var_q_leak__q_leak) / (1 + CHASTE_CONST(0.14000000000000001) * var_chaste_interface__Ca_i__Ca_i / CHASTE_MATH::Pow((CHASTE_CONST(0.00050000000000000001) + var_chaste_interface__Ca_i__Ca_i), 2) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__Ca_i__Ca_i / CHASTE_MATH::Pow((CHASTE_CONST(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 - CHASTE_STIM(var_chaste_interface__environment__time) / CHASTE_CAP() - CHASTE_CONST(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 ? CHASTE_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 = CHASTE_CONST(0.050000000000000003); // dimensionless + const double var_Ca_MK_act__km_Ca_MK = CHASTE_CONST(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 = CHASTE_CONST(0.018329999999999999); // dimensionless + const double var_i_Ca_L__p_Ca = CHASTE_CONST(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(CHASTE_CONST(0.5) + 1 / (1 + CHASTE_CONST(333.33333333333331) * var_chaste_interface__Ca_r__Ca_r) + 10 * var_Ca_MK_act__Ca_MK_act / (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 + CHASTE_CONST(0.59999999999999998) / (1 + CHASTE_CONST(6.4818210260626455e-7) * CHASTE_MATH::Pow((1 / var_chaste_interface__Ca_i__Ca_i), CHASTE_CONST(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 = CHASTE_CONST(0.40000000000000002); // dimensionless + const double var_i_NaCa__k_sat = CHASTE_CONST(0.27000000000000002); // dimensionless + const double var_i_NaCa__km_Ca_act = CHASTE_CONST(0.000125); // millimolar + const double var_i_NaCa__km_Ca_i = CHASTE_CONST(0.0035999999999999999); // millimolar + const double var_i_NaCa__km_Ca_o = CHASTE_CONST(1.3); // millimolar + const double var_i_NaCa__km_Na_i_1 = CHASTE_CONST(12.300000000000001); // millimolar + const double var_i_NaCa__km_Na_o = CHASTE_CONST(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 + CHASTE_CONST(24.217200000000005) * CHASTE_MATH::Pow((-1 + CHASTE_CONST(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 + CHASTE_CONST(0.03125) * CHASTE_MATH::Pow((-1 + CHASTE_CONST(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) ? (CHASTE_CONST(0.13500000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(11.764705882352942) + CHASTE_CONST(0.14705882352941177) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - CHASTE_CONST(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 * CHASTE_MATH::Exp(CHASTE_CONST(0.34999999999999998) * var_chaste_interface__membrane__V - CHASTE_CONST(0.34999999999999998) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time)) + CHASTE_CONST(3.5600000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.079000000000000001) * var_chaste_interface__membrane__V - CHASTE_CONST(0.079000000000000001) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time))) : (CHASTE_CONST(7.6923076923076916) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.96036036036036043) + CHASTE_CONST(0.0900900900900901) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - CHASTE_CONST(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) ? ((CHASTE_CONST(37.780000000000001) + var_chaste_interface__membrane__V) * (-127140 * CHASTE_MATH::Exp(CHASTE_CONST(0.24440000000000001) * var_chaste_interface__membrane__V - CHASTE_CONST(0.24440000000000001) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time)) - CHASTE_CONST(3.4740000000000003e-5) * CHASTE_MATH::Exp(CHASTE_CONST(0.043909999999999998) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - CHASTE_CONST(0.043909999999999998) * var_chaste_interface__membrane__V)) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(24.640530000000002) + CHASTE_CONST(0.311) * var_chaste_interface__membrane__V - CHASTE_CONST(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) ? (CHASTE_CONST(0.1212) * CHASTE_MATH::Exp(CHASTE_CONST(0.01052) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - CHASTE_CONST(0.01052) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(5.5312920000000005) + CHASTE_CONST(0.13780000000000001) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - CHASTE_CONST(0.13780000000000001) * var_chaste_interface__membrane__V))) : (CHASTE_CONST(0.29999999999999999) * CHASTE_MATH::Exp(CHASTE_CONST(2.5349999999999999e-7) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - CHASTE_CONST(2.5349999999999999e-7) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(3.2000000000000002) + CHASTE_CONST(0.10000000000000001) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - CHASTE_CONST(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 = CHASTE_STIM(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_i_NaCa__dNaCa_1 = CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * var_i_NaCa__km_Ca_o + CHASTE_CONST(1.5) * CHASTE_MATH::Pow(var_i_NaCa__km_Na_o, 3) * var_chaste_interface__Ca_i__Ca_i + CHASTE_MATH::Pow(var_i_NaCa__km_Na_i_1, 3) * (1 + CHASTE_CONST(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 = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::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 = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::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 = CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mp_extracellular_calcium_concentration_modifier->Calc(mParameters[4], var_chaste_interface__environment__time) + CHASTE_CONST(1.5) * CHASTE_MATH::Pow(mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time), 3) * var_chaste_interface__Ca_i__Ca_i + CHASTE_MATH::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 * CHASTE_MATH::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 * CHASTE_MATH::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 * CHASTE_MATH::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 = CHASTE_CONST(1.02) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.23849999999999999) * var_equilibrium_potentials__E_K)); // dimensionless + const double var_i_K1_xK1_gate__beta_xK1 = (CHASTE_CONST(0.49124000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.43983232) + CHASTE_CONST(0.080320000000000003) * var_chaste_interface__membrane__V - CHASTE_CONST(0.080320000000000003) * var_equilibrium_potentials__E_K) + CHASTE_MATH::Exp(-CHASTE_CONST(36.698642499999998) + CHASTE_CONST(0.061749999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.061749999999999999) * var_equilibrium_potentials__E_K)) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.4444678999999998) + CHASTE_CONST(0.51429999999999998) * var_equilibrium_potentials__E_K - CHASTE_CONST(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((CHASTE_CONST(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 = CHASTE_CAP() * 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 = CHASTE_CAP() * 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 = CHASTE_CAP() * var_i_Ks__i_Ks; // uA_per_cm2 + const double var_i_Na__i_Na = mp_i_Na__i_Na_modifier->Calc(CHASTE_MATH::Pow(var_chaste_interface__i_Na_m_gate__m, 3) * (-var_equilibrium_potentials__E_Na + var_chaste_interface__membrane__V) * (CHASTE_CONST(0.20000000000000001) * var_chaste_interface__i_Na_j_gate__j + CHASTE_CONST(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 = CHASTE_CAP() * var_i_Na__i_Na; // uA_per_cm2 + const double var_i_NaCa__i_NaCa = mp_i_NaCa__i_NaCa_modifier->Calc((-CHASTE_CONST(1.5) * CHASTE_MATH::Pow(mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time), 3) * var_chaste_interface__Ca_i__Ca_i * CHASTE_MATH::Exp(-CHASTE_CONST(0.65000000000000002) * var_chaste_interface__membrane__V * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T)) + CHASTE_MATH::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) * CHASTE_MATH::Exp(CHASTE_CONST(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 * CHASTE_MATH::Exp(-CHASTE_CONST(0.65000000000000002) * var_chaste_interface__membrane__V * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T))) * (1 + CHASTE_CONST(0.44444444444444442) * CHASTE_MATH::Pow(var_i_NaCa__km_Ca_act, 2) / CHASTE_MATH::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 = CHASTE_CAP() * 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) * (CHASTE_CONST(0.20000000000000001) * var_chaste_interface__i_to_1_i2_gate__i2 + CHASTE_CONST(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 = CHASTE_CAP() * 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 = CHASTE_CONST(0.34100000000000003); // dimensionless + const double var_model_parameters__z_Ca = 2; // dimensionless + const double var_i_Ca_L__i_Ca_L_max = CHASTE_MATH::Pow(var_model_parameters__F, 2) * CHASTE_MATH::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 * CHASTE_MATH::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 + CHASTE_MATH::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 = CHASTE_CAP() * 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 + CHASTE_MATH::Exp(-CHASTE_CONST(4.375) - 25 * var_i_Ca_L__i_Ca_L)), var_chaste_interface__environment__time); // millisecond + const double var_q_rel__vg = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(2.6000000000000001) + CHASTE_CONST(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_2009Opt.hpp b/chaste_codegen/data/tests/chaste_reference_models/Opt/dynamic_aslanidi_Purkinje_model_2009Opt.hpp new file mode 100644 index 000000000..fcae39e1c --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/Opt/dynamic_aslanidi_Purkinje_model_2009Opt.hpp @@ -0,0 +1,140 @@ +#ifndef DYNAMICASLANIDI_PURKINJE_MODEL_2009FROMCELLMLOPT_HPP_ +#define DYNAMICASLANIDI_PURKINJE_MODEL_2009FROMCELLMLOPT_HPP_ + +//! @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 "ChasteSerialization.hpp" +#include +#include "AbstractCardiacCellWithModifiers.hpp" +#include "AbstractModifier.hpp" +#include "AbstractDynamicallyLoadableEntity.hpp" +#include "AbstractStimulusFunction.hpp" +#if USING_DEVICE_COMPILER +#include "StimulusEvaluatorCuda.hpp" +#endif +#include "AbstractCardiacCell.hpp" + +class Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt : public AbstractCardiacCellWithModifiers, public AbstractDynamicallyLoadableEntity +{ + friend class boost::serialization::access; + template + void serialize(Archive & archive, const unsigned int version) + { + archive & boost::serialization::base_object >(*this); + archive & boost::serialization::base_object(*this); + // Despite this class having modifier member variables, they are all added to the + // abstract class by the constructor, and archived via that, instead of here. + } + + // + // Settable parameters and readable variables + // + boost::shared_ptr mp_JSR_calcium_concentration_modifier; + boost::shared_ptr mp_SR_leak_current_max_modifier; + boost::shared_ptr mp_SR_release_current_modifier; + boost::shared_ptr mp_SR_release_current_max_modifier; + boost::shared_ptr mp_SR_uptake_current_max_modifier; + boost::shared_ptr mp_concentration_clamp_onoff_modifier; + boost::shared_ptr mp_cytosolic_calcium_concentration_modifier; + boost::shared_ptr mp_cytosolic_potassium_concentration_modifier; + boost::shared_ptr mp_cytosolic_sodium_concentration_modifier; + boost::shared_ptr mp_dyadic_space_calcium_concentration_modifier; + boost::shared_ptr mp_extracellular_calcium_concentration_modifier; + boost::shared_ptr mp_extracellular_potassium_concentration_modifier; + boost::shared_ptr mp_extracellular_sodium_concentration_modifier; + boost::shared_ptr mp_i_Ca_L__i_Ca_L_modifier; + boost::shared_ptr mp_membrane_L_type_calcium_current_conductance_modifier; + boost::shared_ptr mp_membrane_L_type_calcium_current_d_gate_modifier; + boost::shared_ptr mp_membrane_L_type_calcium_current_f2_gate_modifier; + boost::shared_ptr mp_membrane_L_type_calcium_current_f2_gate_tau_modifier; + boost::shared_ptr mp_membrane_L_type_calcium_current_fCa2_gate_modifier; + boost::shared_ptr mp_membrane_L_type_calcium_current_fCa2_gate_tau_modifier; + boost::shared_ptr mp_membrane_L_type_calcium_current_fCa_gate_modifier; + boost::shared_ptr mp_membrane_L_type_calcium_current_fCa_gate_tau_modifier; + boost::shared_ptr mp_membrane_L_type_calcium_current_f_gate_modifier; + boost::shared_ptr mp_membrane_L_type_calcium_current_f_gate_tau_modifier; + boost::shared_ptr mp_i_Na__i_Na_modifier; + boost::shared_ptr mp_membrane_fast_sodium_current_conductance_modifier; + boost::shared_ptr mp_membrane_fast_sodium_current_h_gate_modifier; + boost::shared_ptr mp_membrane_fast_sodium_current_h_gate_tau_modifier; + boost::shared_ptr mp_membrane_fast_sodium_current_j_gate_modifier; + boost::shared_ptr mp_membrane_fast_sodium_current_j_gate_tau_modifier; + boost::shared_ptr mp_membrane_fast_sodium_current_m_gate_modifier; + boost::shared_ptr mp_membrane_fast_sodium_current_reduced_inactivation_modifier; + boost::shared_ptr mp_membrane_fast_sodium_current_shift_inactivation_modifier; + boost::shared_ptr mp_i_K1__i_K1_modifier; + boost::shared_ptr mp_membrane_inward_rectifier_potassium_current_conductance_modifier; + boost::shared_ptr mp_i_Kr__i_Kr_modifier; + boost::shared_ptr mp_membrane_rapid_delayed_rectifier_potassium_current_conductance_modifier; + boost::shared_ptr mp_i_Ks__i_Ks_modifier; + boost::shared_ptr mp_membrane_slow_delayed_rectifier_potassium_current_conductance_modifier; + boost::shared_ptr mp_i_NaCa__i_NaCa_modifier; + boost::shared_ptr mp_membrane_sodium_calcium_exchanger_current_conductance_modifier; + boost::shared_ptr mp_i_to_1__i_to_1_modifier; + boost::shared_ptr mp_membrane_transient_outward_current_conductance_modifier; + boost::shared_ptr mp_membrane_voltage_modifier; + +private: + static AbstractCardiacCellWithModifiers* CreateMethod(boost::shared_ptr p_solver, boost::shared_ptr p_stimulus); + static bool registered; +private: +const bool is_concentration[30] = {false, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, false, true, false, false, true, true, false, false}; +const bool is_probability[30] = {false, false, true, true, true, false, false, true, true, true, true, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false}; +public: + + boost::shared_ptr UseCellMLDefaultStimulus(); + double GetIntracellularCalciumConcentration(); + Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt(boost::shared_ptr pSolver, boost::shared_ptr pIntracellularStimulus); + ~Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt(); + void VerifyStateVariables(); + AbstractLookupTableCollection* GetLookupTableCollection(); + double GetIIonic(const std::vector* pStateVariables=NULL); + void EvaluateYDerivatives(double var_chaste_interface__environment__time, const std::vector& rY, std::vector& rDY); + + std::vector ComputeDerivedQuantities(double var_chaste_interface__environment__time, const std::vector & rY); +}; + +// Needs to be included last +#include "SerializationExportWrapper.hpp" +CHASTE_CLASS_EXPORT(Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt) + +namespace boost +{ + namespace serialization + { + template + inline void save_construct_data( + Archive & ar, const Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt * t, const unsigned int fileVersion) + { + const boost::shared_ptr p_solver = t->GetSolver(); + const boost::shared_ptr p_stimulus = t->GetStimulusFunction(); + ar << p_solver; + ar << p_stimulus; + } + + template + inline void load_construct_data( + Archive & ar, Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt * t, const unsigned int fileVersion) + { + boost::shared_ptr p_solver; + boost::shared_ptr p_stimulus; + ar >> p_solver; + ar >> p_stimulus; + ::new(t)Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt(p_solver, p_stimulus); + } + + } + +} + +#endif // DYNAMICASLANIDI_PURKINJE_MODEL_2009FROMCELLMLOPT_HPP_ \ No newline at end of file diff --git a/chaste_codegen/data/tests/chaste_reference_models/Opt/hodgkin_huxley_squid_axon_model_1952_modified.cpp b/chaste_codegen/data/tests/chaste_reference_models/Opt/hodgkin_huxley_squid_axon_model_1952_modified.cpp index dfc0e14ce..aa0512119 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/Opt/hodgkin_huxley_squid_axon_model_1952_modified.cpp +++ b/chaste_codegen/data/tests/chaste_reference_models/Opt/hodgkin_huxley_squid_axon_model_1952_modified.cpp @@ -21,6 +21,8 @@ #include "HeartConfig.hpp" #include "IsNan.hpp" #include "MathsCustomFunctions.hpp" +#include "ChasteMathDeviceNamespaces.hpp" +#include "ChasteCpuMacros.hpp" @@ -143,7 +145,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 (((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)))); + return (((CHASTE_CONST(6.5) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V >= -CHASTE_CONST(9.9999999999999995e-8)) && (CHASTE_CONST(6.5) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V <= CHASTE_CONST(9.9999999999999995e-8))) ? (CHASTE_CONST(0.42499999999999999) + CHASTE_CONST(0.0050000000000000001) * var_chaste_interface__membrane__V) : (-CHASTE_CONST(0.099999999999999992) * (CHASTE_CONST(6.5) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(6.5) - CHASTE_CONST(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); @@ -165,7 +167,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 exp(0.9375 + 0.012500000000000001 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(CHASTE_CONST(0.9375) + CHASTE_CONST(0.012500000000000001) * 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); @@ -176,7 +178,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 exp(-3.75 - 0.050000000000000003 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(-CHASTE_CONST(3.75) - CHASTE_CONST(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); @@ -187,7 +189,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 + CHASTE_MATH::Exp(-CHASTE_CONST(4.5) - CHASTE_CONST(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 +200,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 (((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)))); + return (((5 + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V >= -CHASTE_CONST(9.9999999999999995e-8)) && (5 + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V <= CHASTE_CONST(9.9999999999999995e-8))) ? (CHASTE_CONST(3.5) + CHASTE_CONST(0.050000000000000003) * var_chaste_interface__membrane__V) : (-(5 + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V) / (-1 + CHASTE_MATH::Exp(-5 - CHASTE_CONST(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); @@ -220,7 +222,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 exp(-4.166666666666667 - 0.055555555555555552 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(-CHASTE_CONST(4.166666666666667) - CHASTE_CONST(0.055555555555555552) * 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); @@ -254,7 +256,7 @@ std::shared_ptr p_cellml_stim(new RegularStimulus( @@ -284,7 +286,7 @@ std::shared_ptrmParameters[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[2] = CHASTE_CONST(0.29999999999999999); // (var_leakage_current__g_L) [milliS_per_cm2] this->mParameters[3] = 36; // (var_potassium_channel__g_K) [milliS_per_cm2] } @@ -336,7 +338,7 @@ std::shared_ptr& rY = *pStateVariables; - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -346,9 +348,9 @@ std::shared_ptrmFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -379,8 +381,8 @@ std::shared_ptrmFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -414,13 +416,13 @@ std::shared_ptr dqs(5); dqs[0] = var_sodium_channel__i_Na; diff --git a/chaste_codegen/data/tests/chaste_reference_models/Opt/hodgkin_huxley_squid_axon_model_1952_modified.hpp b/chaste_codegen/data/tests/chaste_reference_models/Opt/hodgkin_huxley_squid_axon_model_1952_modified.hpp index 8f9a681f0..492e54280 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/Opt/hodgkin_huxley_squid_axon_model_1952_modified.hpp +++ b/chaste_codegen/data/tests/chaste_reference_models/Opt/hodgkin_huxley_squid_axon_model_1952_modified.hpp @@ -16,6 +16,9 @@ #include "ChasteSerialization.hpp" #include #include "AbstractStimulusFunction.hpp" +#if USING_DEVICE_COMPILER +#include "StimulusEvaluatorCuda.hpp" +#endif #include "AbstractCardiacCell.hpp" class Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLOpt : public AbstractCardiacCell diff --git a/chaste_codegen/data/tests/chaste_reference_models/Opt/non_dynamic_aslanidi_Purkinje_model_2009.cpp b/chaste_codegen/data/tests/chaste_reference_models/Opt/non_dynamic_aslanidi_Purkinje_model_2009.cpp index 697a88b18..f5dcdcf79 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/Opt/non_dynamic_aslanidi_Purkinje_model_2009.cpp +++ b/chaste_codegen/data/tests/chaste_reference_models/Opt/non_dynamic_aslanidi_Purkinje_model_2009.cpp @@ -21,6 +21,8 @@ #include "HeartConfig.hpp" #include "IsNan.hpp" #include "MathsCustomFunctions.hpp" +#include "ChasteMathDeviceNamespaces.hpp" +#include "ChasteCpuMacros.hpp" @@ -143,7 +145,7 @@ class Cellaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables : public Abstra for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 1 + exp(1.2521739130434781 - 0.16722408026755853 * var_chaste_interface__membrane__V); + return 1 + CHASTE_MATH::Exp(CHASTE_CONST(1.2521739130434781) - CHASTE_CONST(0.16722408026755853) * 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); @@ -154,7 +156,7 @@ class Cellaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables : public Abstra for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return exp(0.074871767015605231 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(CHASTE_CONST(0.074871767015605231) * 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); @@ -165,7 +167,7 @@ class Cellaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables : public Abstra for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return -1 + exp(0.074871767015605231 * var_chaste_interface__membrane__V); + return -1 + CHASTE_MATH::Exp(CHASTE_CONST(0.074871767015605231) * 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); @@ -176,7 +178,7 @@ class Cellaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables : public Abstra for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return exp(-0.024333324280071702 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(-CHASTE_CONST(0.024333324280071702) * 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 +189,7 @@ class Cellaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables : public Abstra for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return exp(0.013102559227730915 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(CHASTE_CONST(0.013102559227730915) * 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 +200,7 @@ class Cellaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables : public Abstra for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 1 + 0.27000000000000002 * exp(-0.024333324280071702 * var_chaste_interface__membrane__V); + return 1 + CHASTE_CONST(0.27000000000000002) * CHASTE_MATH::Exp(-CHASTE_CONST(0.024333324280071702) * 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); @@ -209,7 +211,7 @@ class Cellaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables : public Abstra for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return exp(-0.037435883507802616 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(-CHASTE_CONST(0.037435883507802616) * 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); @@ -220,7 +222,7 @@ class Cellaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables : public Abstra for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 0.1245 * exp(-0.003743588350780262 * var_chaste_interface__membrane__V); + return CHASTE_CONST(0.1245) * CHASTE_MATH::Exp(-CHASTE_CONST(0.003743588350780262) * 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); @@ -231,7 +233,7 @@ class Cellaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables : public Abstra for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return -100 * exp(0.037435883507802616 * var_chaste_interface__membrane__V); + return -100 * CHASTE_MATH::Exp(CHASTE_CONST(0.037435883507802616) * 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); @@ -242,7 +244,7 @@ class Cellaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables : public Abstra for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 1 - exp(0.037435883507802616 * var_chaste_interface__membrane__V); + return 1 - CHASTE_MATH::Exp(CHASTE_CONST(0.037435883507802616) * 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); @@ -253,7 +255,7 @@ class Cellaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables : public Abstra for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 1 + exp(-0.26470588235294124 + 0.049019607843137261 * var_chaste_interface__membrane__V); + return 1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.26470588235294124) + CHASTE_CONST(0.049019607843137261) * 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 +266,7 @@ class Cellaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables : public Abstra for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return exp(-1.1230765052340785 + 0.074871767015605231 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(-CHASTE_CONST(1.1230765052340785) + CHASTE_CONST(0.074871767015605231) * 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); @@ -275,7 +277,7 @@ class Cellaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables : public Abstra for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return -1 + exp(-1.1230765052340785 + 0.074871767015605231 * var_chaste_interface__membrane__V); + return -1 + CHASTE_MATH::Exp(-CHASTE_CONST(1.1230765052340785) + CHASTE_CONST(0.074871767015605231) * 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); @@ -286,7 +288,7 @@ class Cellaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables : public Abstra for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 1 / (1 + exp(0.59347181008902072 - 0.14836795252225518 * var_chaste_interface__membrane__V)); + return 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(0.59347181008902072) - CHASTE_CONST(0.14836795252225518) * 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); @@ -297,7 +299,7 @@ class Cellaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables : public Abstra for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 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)); + return CHASTE_CONST(0.58999999999999997) + CHASTE_CONST(0.80000000000000004) * CHASTE_MATH::Exp(CHASTE_CONST(0.67599999999999993) + CHASTE_CONST(0.051999999999999998) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(1.7160000000000002) + CHASTE_CONST(0.13200000000000001) * 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); @@ -308,7 +310,7 @@ class Cellaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables : public Abstra for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 1 / (1 + exp(1.8 + 0.10000000000000001 * var_chaste_interface__membrane__V)); + return 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(1.8) + CHASTE_CONST(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); @@ -319,7 +321,7 @@ class Cellaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables : public Abstra for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 1 / (1 + exp(-5.4098360655737707 - 0.16393442622950821 * var_chaste_interface__membrane__V)); + return 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(5.4098360655737707) - CHASTE_CONST(0.16393442622950821) * 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); @@ -330,7 +332,7 @@ class Cellaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables : public Abstra for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 1.0680000000000001 * exp(0.54333333333333333 + 0.033333333333333333 * var_chaste_interface__membrane__V) + 1.0680000000000001 * exp(-0.54333333333333333 - 0.033333333333333333 * var_chaste_interface__membrane__V); + return CHASTE_CONST(1.0680000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.54333333333333333) + CHASTE_CONST(0.033333333333333333) * var_chaste_interface__membrane__V) + CHASTE_CONST(1.0680000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(0.54333333333333333) - CHASTE_CONST(0.033333333333333333) * 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); @@ -341,7 +343,7 @@ class Cellaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables : public Abstra for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 1 / (1 + exp(9.0909090909090917 + 0.15151515151515152 * var_chaste_interface__membrane__V)); + return 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(9.0909090909090917) + CHASTE_CONST(0.15151515151515152) * 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); @@ -352,7 +354,7 @@ class Cellaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables : public Abstra for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 0.014999999999999999 * exp(4.6558441558441563 + 0.064935064935064929 * var_chaste_interface__membrane__V) + 0.014999999999999999 * exp(-0.86074429771908767 - 0.012004801920768308 * var_chaste_interface__membrane__V); + return CHASTE_CONST(0.014999999999999999) * CHASTE_MATH::Exp(CHASTE_CONST(4.6558441558441563) + CHASTE_CONST(0.064935064935064929) * var_chaste_interface__membrane__V) + CHASTE_CONST(0.014999999999999999) * CHASTE_MATH::Exp(-CHASTE_CONST(0.86074429771908767) - CHASTE_CONST(0.012004801920768308) * 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); @@ -363,7 +365,7 @@ class Cellaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables : public Abstra for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 1 / (1 + exp(-0.0069387755102040824 - 0.081632653061224483 * var_chaste_interface__membrane__V)); + return 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.0069387755102040824) - CHASTE_CONST(0.081632653061224483) * 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); @@ -374,7 +376,7 @@ class Cellaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables : public Abstra for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 100 + 900 / (1 + exp(0.20000000000000001 * var_chaste_interface__membrane__V)); + return 100 + 900 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(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); @@ -385,7 +387,7 @@ class Cellaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables : public Abstra for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 1 / (1 + exp(0.65693430656934315 - 0.072992700729927015 * var_chaste_interface__membrane__V)); + return 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(0.65693430656934315) - CHASTE_CONST(0.072992700729927015) * 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); @@ -396,7 +398,7 @@ class Cellaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables : public Abstra for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 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)); + return CHASTE_CONST(7.6100000000000007e-5) * (CHASTE_CONST(44.600000000000001) + var_chaste_interface__membrane__V) / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(444.66200000000003) - CHASTE_CONST(9.9700000000000006) * var_chaste_interface__membrane__V)) + CHASTE_CONST(0.00036000000000000002) * (-CHASTE_CONST(0.55000000000000004) + var_chaste_interface__membrane__V) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.070400000000000004) + CHASTE_CONST(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); @@ -407,7 +409,7 @@ class Cellaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables : public Abstra for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 3.8050000000000003e-5 * (44.600000000000001 + var_chaste_interface__membrane__V) / (1 - exp(-444.66200000000003 - 9.9700000000000006 * var_chaste_interface__membrane__V)) + 0.00018000000000000001 * (-0.55000000000000004 + var_chaste_interface__membrane__V) / (-1 + exp(-0.070400000000000004 + 0.128 * var_chaste_interface__membrane__V)); + return CHASTE_CONST(3.8050000000000003e-5) * (CHASTE_CONST(44.600000000000001) + var_chaste_interface__membrane__V) / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(444.66200000000003) - CHASTE_CONST(9.9700000000000006) * var_chaste_interface__membrane__V)) + CHASTE_CONST(0.00018000000000000001) * (-CHASTE_CONST(0.55000000000000004) + var_chaste_interface__membrane__V) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.070400000000000004) + CHASTE_CONST(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); @@ -418,7 +420,7 @@ class Cellaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables : public Abstra for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 1 / (1 + exp(11.311475409836067 + 0.16393442622950821 * var_chaste_interface__membrane__V)); + return 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(11.311475409836067) + CHASTE_CONST(0.16393442622950821) * 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); @@ -429,7 +431,7 @@ class Cellaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables : public Abstra for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 175 + 125 / (1 + exp(-4.166666666666667 - 0.16666666666666666 * var_chaste_interface__membrane__V)); + return 175 + 125 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(4.166666666666667) - CHASTE_CONST(0.16666666666666666) * 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,7 +442,7 @@ class Cellaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables : public Abstra for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 0.32000000000000001 * (47.130000000000003 + var_chaste_interface__membrane__V) / (1 - exp(-4.7130000000000001 - 0.10000000000000001 * var_chaste_interface__membrane__V)); + return CHASTE_CONST(0.32000000000000001) * (CHASTE_CONST(47.130000000000003) + var_chaste_interface__membrane__V) / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(4.7130000000000001) - CHASTE_CONST(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); @@ -451,7 +453,7 @@ class Cellaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables : public Abstra for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 0.080000000000000002 * exp(-0.090909090909090912 * var_chaste_interface__membrane__V); + return CHASTE_CONST(0.080000000000000002) * CHASTE_MATH::Exp(-CHASTE_CONST(0.090909090909090912) * 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); @@ -462,7 +464,7 @@ class Cellaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables : public Abstra for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 25 * exp(-3.7999999999999998 + 0.050000000000000003 * var_chaste_interface__membrane__V) / (1 + exp(-3.7999999999999998 + 0.050000000000000003 * var_chaste_interface__membrane__V)); + return 25 * CHASTE_MATH::Exp(-CHASTE_CONST(3.7999999999999998) + CHASTE_CONST(0.050000000000000003) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(3.7999999999999998) + CHASTE_CONST(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); @@ -473,7 +475,7 @@ class Cellaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables : public Abstra for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 25 * exp(-2.7000000000000002 - 0.050000000000000003 * var_chaste_interface__membrane__V) / (1 + exp(-2.7000000000000002 - 0.050000000000000003 * var_chaste_interface__membrane__V)); + return 25 * CHASTE_MATH::Exp(-CHASTE_CONST(2.7000000000000002) - CHASTE_CONST(0.050000000000000003) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.7000000000000002) - CHASTE_CONST(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); @@ -484,7 +486,7 @@ class Cellaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables : public Abstra for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 0.0044200000000000003 / ((1 + exp(1.7333333333333334 + 0.066666666666666666 * var_chaste_interface__membrane__V)) * (0.0044200000000000003 / (1 + exp(1.7333333333333334 + 0.066666666666666666 * var_chaste_interface__membrane__V)) + 0.050000000000000003 * exp(-0.66666666666666663 + 0.066666666666666666 * var_chaste_interface__membrane__V) / (1 + exp(-0.66666666666666663 + 0.066666666666666666 * var_chaste_interface__membrane__V)))); + return CHASTE_CONST(0.0044200000000000003) / ((1 + CHASTE_MATH::Exp(CHASTE_CONST(1.7333333333333334) + CHASTE_CONST(0.066666666666666666) * var_chaste_interface__membrane__V)) * (CHASTE_CONST(0.0044200000000000003) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(1.7333333333333334) + CHASTE_CONST(0.066666666666666666) * var_chaste_interface__membrane__V)) + CHASTE_CONST(0.050000000000000003) * CHASTE_MATH::Exp(-CHASTE_CONST(0.66666666666666663) + CHASTE_CONST(0.066666666666666666) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.66666666666666663) + CHASTE_CONST(0.066666666666666666) * 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); @@ -495,7 +497,7 @@ class Cellaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables : public Abstra for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 21.5 + 30 / (1 + exp(-2.5 + 0.10000000000000001 * var_chaste_interface__membrane__V)); + return CHASTE_CONST(21.5) + 30 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.5) + CHASTE_CONST(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); @@ -506,7 +508,7 @@ class Cellaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables : public Abstra for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 0.029999999999999999 / ((1 + exp(1.6666666666666667 + 0.066666666666666666 * var_chaste_interface__membrane__V)) * (0.029999999999999999 / (1 + exp(1.6666666666666667 + 0.066666666666666666 * var_chaste_interface__membrane__V)) + 0.10000000000000001 * exp(-2.6666666666666665 + 0.066666666666666666 * var_chaste_interface__membrane__V) / (1 + exp(-2.6666666666666665 + 0.066666666666666666 * var_chaste_interface__membrane__V)))); + return CHASTE_CONST(0.029999999999999999) / ((1 + CHASTE_MATH::Exp(CHASTE_CONST(1.6666666666666667) + CHASTE_CONST(0.066666666666666666) * var_chaste_interface__membrane__V)) * (CHASTE_CONST(0.029999999999999999) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(1.6666666666666667) + CHASTE_CONST(0.066666666666666666) * var_chaste_interface__membrane__V)) + CHASTE_CONST(0.10000000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(2.6666666666666665) + CHASTE_CONST(0.066666666666666666) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.6666666666666665) + CHASTE_CONST(0.066666666666666666) * 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); @@ -517,7 +519,7 @@ class Cellaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables : public Abstra for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 6 + 5 / (1 + exp(-1.6499999999999999 + 0.10000000000000001 * var_chaste_interface__membrane__V)); + return 6 + 5 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(1.6499999999999999) + CHASTE_CONST(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); @@ -550,7 +552,7 @@ std::shared_ptr Cell 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_amplitude_converted = -80 * CHASTE_CAP(); // 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 @@ -671,22 +673,22 @@ std::shared_ptr Cell 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[0] = CHASTE_CONST(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[2] = CHASTE_CONST(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[4] = CHASTE_CONST(1.8); // (var_model_parameters__Ca_o) [millimolar] + this->mParameters[5] = CHASTE_CONST(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[7] = CHASTE_CONST(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] + this->mParameters[11] = CHASTE_CONST(0.25); // (var_i_K1__g_K1_max) [milliS_per_microF] + this->mParameters[12] = CHASTE_CONST(0.040008488000000002); // (var_i_Kr__g_Kr_max) [milliS_per_microF] + this->mParameters[13] = CHASTE_CONST(0.052581329000000003); // (var_i_Ks__g_Ks_max) [milliS_per_microF] + this->mParameters[14] = CHASTE_CONST(4.5); // (var_i_NaCa__i_NaCa_max) [microA_per_microF] + this->mParameters[15] = CHASTE_CONST(0.14135944); // (var_i_to_1__g_to_1) [milliS_per_microF] } Cellaslanidi_Purkinje_model_2009FromCellMLOpt::~Cellaslanidi_Purkinje_model_2009FromCellMLOpt() @@ -737,7 +739,7 @@ std::shared_ptr Cell // 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -796,10 +798,10 @@ std::shared_ptr Cell // 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 * (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) / (_lt_0_row[0]) + 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 * (-0.34100000000000003 * mParameters[4] + var_chaste_interface__Ca_i__Ca_i * _lt_0_row[1]) * var_chaste_interface__membrane__V / (_lt_0_row[2]) + (-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]) / ((_lt_0_row[5]) * (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[8] + var_chaste_interface__intracellular_ion_concentrations__Cl_i) * var_chaste_interface__i_to_2_a_gate__a * var_chaste_interface__membrane__V / (_lt_0_row[9]) + (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 * sqrt(mParameters[5]) * (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) * mParameters[12] * var_chaste_interface__i_Kr_xr_gate__xr / (_lt_0_row[10]) + 3.510865186083326 * (-15 + var_chaste_interface__membrane__V) * (-0.34100000000000003 * mParameters[4] + 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 / (_lt_0_row[12]); // microA_per_microF - const double var_chaste_interface__i_ionic = HeartConfig::Instance()->GetCapacitance() * var_membrane__i_tot; // uA_per_cm2 + const double var_equilibrium_potentials__E_K = CHASTE_CONST(26.712338705498265) * CHASTE_MATH::Log(mParameters[5] / var_chaste_interface__intracellular_ion_concentrations__K_i); // millivolt + const double var_equilibrium_potentials__E_Na = CHASTE_CONST(26.712338705498265) * CHASTE_MATH::Log(mParameters[6] / var_chaste_interface__intracellular_ion_concentrations__Na_i); // millivolt + const double var_membrane__i_tot = CHASTE_CONST(0.0077250000000000001) * var_chaste_interface__membrane__V + CHASTE_CONST(0.0060102762087371094) * CHASTE_MATH::Log(100 / var_chaste_interface__intracellular_ion_concentrations__Cl_i) - CHASTE_CONST(0.0025000000000000001) * var_equilibrium_potentials__E_Na - CHASTE_CONST(0.0050000000000000001) * var_equilibrium_potentials__E_K + (CHASTE_CONST(0.0040000000000000001) + CHASTE_CONST(0.4389381125701739) * CHASTE_MATH::Sqrt(mParameters[5]) * mParameters[11] / ((1 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.23849999999999999) * var_equilibrium_potentials__E_K)) * (CHASTE_CONST(1.02) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.23849999999999999) * var_equilibrium_potentials__E_K)) + (CHASTE_CONST(0.49124000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.43983232) + CHASTE_CONST(0.080320000000000003) * var_chaste_interface__membrane__V - CHASTE_CONST(0.080320000000000003) * var_equilibrium_potentials__E_K) + CHASTE_MATH::Exp(-CHASTE_CONST(36.698642499999998) + CHASTE_CONST(0.061749999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.061749999999999999) * var_equilibrium_potentials__E_K)) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.4444678999999998) + CHASTE_CONST(0.51429999999999998) * var_equilibrium_potentials__E_K - CHASTE_CONST(0.51429999999999998) * var_chaste_interface__membrane__V))))) * (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) + CHASTE_CONST(0.0027599999999999999) * (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) / (_lt_0_row[0]) + CHASTE_CONST(0.057500000000000002) * var_chaste_interface__Ca_i__Ca_i / (CHASTE_CONST(0.00050000000000000001) + var_chaste_interface__Ca_i__Ca_i) + CHASTE_CONST(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 + CHASTE_CONST(0.037374999999999999) * CHASTE_MATH::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 + CHASTE_CONST(0.0028824983370007683) * (-CHASTE_CONST(0.34100000000000003) * mParameters[4] + var_chaste_interface__Ca_i__Ca_i * _lt_0_row[1]) * var_chaste_interface__membrane__V / (_lt_0_row[2]) + (-CHASTE_CONST(1.5) * CHASTE_MATH::Pow(mParameters[6], 3) * var_chaste_interface__Ca_i__Ca_i * _lt_0_row[3] + CHASTE_CONST(0.40000000000000002) * CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[14] * mParameters[4] * _lt_0_row[4]) / ((_lt_0_row[5]) * (1 + CHASTE_CONST(6.9444444444444451e-9) / CHASTE_MATH::Pow(var_chaste_interface__Ca_i__Ca_i, 2)) * (CHASTE_CONST(1004882.8125) * var_chaste_interface__Ca_i__Ca_i + CHASTE_CONST(1.3) * CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) + CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[4] + CHASTE_CONST(1.5) * CHASTE_MATH::Pow(mParameters[6], 3) * var_chaste_interface__Ca_i__Ca_i + CHASTE_CONST(0.0035999999999999999) * CHASTE_MATH::Pow(mParameters[6], 3) * (1 + CHASTE_CONST(0.081300813008130079) * var_chaste_interface__intracellular_ion_concentrations__Na_i) + CHASTE_CONST(1860.8670000000004) * (1 + CHASTE_CONST(416.66666666666669) * var_chaste_interface__Ca_i__Ca_i) * mParameters[4])) + CHASTE_MATH::Pow(var_chaste_interface__i_Na_m_gate__m, 3) * (-var_equilibrium_potentials__E_Na + var_chaste_interface__membrane__V) * (CHASTE_CONST(0.20000000000000001) * var_chaste_interface__i_Na_j_gate__j + CHASTE_CONST(0.80000000000000004) * var_chaste_interface__i_Na_h_gate__h) * mParameters[8] + (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) * (CHASTE_CONST(0.20000000000000001) * var_chaste_interface__i_to_1_i2_gate__i2 + CHASTE_CONST(0.80000000000000004) * var_chaste_interface__i_to_1_i_gate__i) * mParameters[15] * var_chaste_interface__i_to_1_a_gate__a + CHASTE_CONST(0.61875000000000002) * mParameters[5] / ((1 + 100 / CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 2)) * (CHASTE_CONST(1.5) + mParameters[5]) * (1 + _lt_0_row[7] + CHASTE_CONST(0.036499999999999998) * (-CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * CHASTE_MATH::Exp(CHASTE_CONST(0.01485884101040119) * mParameters[6])) * _lt_0_row[6])) + CHASTE_CONST(0.028896009762002683) * (_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 / (_lt_0_row[9]) + (1 + CHASTE_CONST(0.59999999999999998) / (1 + CHASTE_CONST(6.4818210260626455e-7) * CHASTE_MATH::Pow((1 / var_chaste_interface__Ca_i__Ca_i), CHASTE_CONST(1.3999999999999999)))) * (-CHASTE_CONST(26.712338705498265) * CHASTE_MATH::Log((CHASTE_CONST(0.018329999999999999) * mParameters[6] + mParameters[5]) / (CHASTE_CONST(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 + CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::Sqrt(mParameters[5]) * (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) * mParameters[12] * var_chaste_interface__i_Kr_xr_gate__xr / (_lt_0_row[10]) + CHASTE_CONST(3.510865186083326) * (-15 + var_chaste_interface__membrane__V) * (-CHASTE_CONST(0.34100000000000003) * mParameters[4] + 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 / (_lt_0_row[12]); // microA_per_microF + const double var_chaste_interface__i_ionic = CHASTE_CAP() * var_membrane__i_tot; // uA_per_cm2 const double i_ionic = var_chaste_interface__i_ionic; EXCEPT_IF_NOT(!std::isnan(i_ionic)); @@ -810,7 +812,7 @@ std::shared_ptr Cell { // 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)); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -881,15 +883,15 @@ std::shared_ptr Cell // 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_bound = CHASTE_CONST(0.050000000000000003) * (1 - var_chaste_interface__Ca_MK_act__Ca_MK_trap) / (1 + CHASTE_CONST(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) - var_chaste_interface__i_to_2_a_gate__a; // 1 / millisecond + const double d_dt_chaste_interface_var_Ca_MK_act__Ca_MK_trap = -CHASTE_CONST(0.00068000000000000005) * var_chaste_interface__Ca_MK_act__Ca_MK_trap + CHASTE_CONST(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 = CHASTE_CONST(0.057500000000000002) * var_chaste_interface__Ca_i__Ca_i / (CHASTE_CONST(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 + CHASTE_CONST(0.1502) / var_chaste_interface__Ca_r__Ca_r) - var_chaste_interface__i_to_2_a_gate__a; // 1 / millisecond const double d_dt_chaste_interface_var_i_Ca_L_d_gate__d = (-var_chaste_interface__i_Ca_L_d_gate__d + _lt_0_row[13]) / (_lt_0_row[14]); // 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_L_f2_gate__f2 = (-var_chaste_interface__i_Ca_L_f2_gate__f2 + _lt_0_row[15]) / (38 + CHASTE_CONST(24.217200000000005) * CHASTE_MATH::Pow((-1 + CHASTE_CONST(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 + CHASTE_CONST(0.03125) * CHASTE_MATH::Pow((-1 + CHASTE_CONST(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 = (-var_chaste_interface__i_Kr_xr_gate__xr + _lt_0_row[20]) / (_lt_0_row[21]); // 1 / millisecond @@ -899,12 +901,12 @@ std::shared_ptr Cell 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)) * (var_i_Na_L_m_L_gate__alpha_m_L + 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 = (var_i_Na_h_gate__alpha_h + 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 = (var_i_Na_j_gate__alpha_j + 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_h_gate__alpha_h = ((var_chaste_interface__membrane__V < -40) ? (CHASTE_CONST(0.13500000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(11.764705882352942) + CHASTE_CONST(0.14705882352941177) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - CHASTE_CONST(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 * CHASTE_MATH::Exp(CHASTE_CONST(0.34999999999999998) * var_chaste_interface__membrane__V - CHASTE_CONST(0.34999999999999998) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time)) + CHASTE_CONST(3.5600000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.079000000000000001) * var_chaste_interface__membrane__V - CHASTE_CONST(0.079000000000000001) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time))) : (CHASTE_CONST(7.6923076923076916) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.96036036036036043) + CHASTE_CONST(0.0900900900900901) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - CHASTE_CONST(0.0900900900900901) * var_chaste_interface__membrane__V)))); // per_millisecond + const double d_dt_chaste_interface_var_i_Na_h_gate__h = (var_i_Na_h_gate__alpha_h + var_i_Na_h_gate__beta_h) * (-var_chaste_interface__i_Na_h_gate__h + CHASTE_CONST(0.01) * mp_membrane_fast_sodium_current_reduced_inactivation_modifier->Calc(mParameters[9], var_chaste_interface__environment__time) + (1 - CHASTE_CONST(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) ? ((CHASTE_CONST(37.780000000000001) + var_chaste_interface__membrane__V) * (-127140 * CHASTE_MATH::Exp(CHASTE_CONST(0.24440000000000001) * var_chaste_interface__membrane__V - CHASTE_CONST(0.24440000000000001) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time)) - CHASTE_CONST(3.4740000000000003e-5) * CHASTE_MATH::Exp(CHASTE_CONST(0.043909999999999998) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - CHASTE_CONST(0.043909999999999998) * var_chaste_interface__membrane__V)) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(24.640530000000002) + CHASTE_CONST(0.311) * var_chaste_interface__membrane__V - CHASTE_CONST(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) ? (CHASTE_CONST(0.1212) * CHASTE_MATH::Exp(CHASTE_CONST(0.01052) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - CHASTE_CONST(0.01052) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(5.5312920000000005) + CHASTE_CONST(0.13780000000000001) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - CHASTE_CONST(0.13780000000000001) * var_chaste_interface__membrane__V))) : (CHASTE_CONST(0.29999999999999999) * CHASTE_MATH::Exp(CHASTE_CONST(2.5349999999999999e-7) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - CHASTE_CONST(2.5349999999999999e-7) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(3.2000000000000002) + CHASTE_CONST(0.10000000000000001) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V)))); // per_millisecond + const double d_dt_chaste_interface_var_i_Na_j_gate__j = (var_i_Na_j_gate__alpha_j + var_i_Na_j_gate__beta_j) * (-var_chaste_interface__i_Na_j_gate__j + CHASTE_CONST(0.01) * mp_membrane_fast_sodium_current_reduced_inactivation_modifier->Calc(mParameters[9], var_chaste_interface__environment__time) + (1 - CHASTE_CONST(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)) * (var_i_Na_m_gate__alpha_m + var_i_Na_m_gate__beta_m); // 1 / millisecond @@ -913,43 +915,43 @@ std::shared_ptr Cell 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)) * (var_i_to_1_a_gate__alpha_a + var_i_to_1_a_gate__beta_a); // 1 / millisecond const double d_dt_chaste_interface_var_i_to_1_i2_gate__i2 = (-var_chaste_interface__i_to_1_i2_gate__i2 + _lt_0_row[31]) / (_lt_0_row[32]); // 1 / millisecond const double d_dt_chaste_interface_var_i_to_1_i_gate__i = (-var_chaste_interface__i_to_1_i_gate__i + _lt_0_row[33]) / (_lt_0_row[34]); // 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 * (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) / (_lt_0_row[0]); // microA_per_microF - const double var_i_Kr__i_Kr = mp_i_Kr__i_Kr_modifier->Calc(0.43033148291193518 * 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 / (_lt_0_row[10]), 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((-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]) / ((_lt_0_row[5]) * (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[8] + var_chaste_interface__intracellular_ion_concentrations__Cl_i) * var_chaste_interface__i_to_2_a_gate__a * var_chaste_interface__membrane__V / (_lt_0_row[9]); // 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 * (-0.34100000000000003 * mp_extracellular_calcium_concentration_modifier->Calc(mParameters[4], var_chaste_interface__environment__time) + var_chaste_interface__Ca_i__Ca_i * _lt_0_row[1]) * var_chaste_interface__membrane__V / (_lt_0_row[2]); // microA_per_microF - const double var_i_Ca_L__i_Ca_L_max = 3.510865186083326 * (-15 + var_chaste_interface__membrane__V) * (-0.34100000000000003 * mp_extracellular_calcium_concentration_modifier->Calc(mParameters[4], var_chaste_interface__environment__time) + var_chaste_interface__Ca_r__Ca_r * _lt_0_row[11]) / (_lt_0_row[12]); // microA_per_microF + const double var_equilibrium_potentials__E_Cl = -CHASTE_CONST(26.712338705498265) * CHASTE_MATH::Log(100 / var_chaste_interface__intracellular_ion_concentrations__Cl_i); // millivolt + const double var_background_currents__i_Cl_b = CHASTE_CONST(0.00022499999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.00022499999999999999) * var_equilibrium_potentials__E_Cl; // microA_per_microF + const double var_equilibrium_potentials__E_K = CHASTE_CONST(26.712338705498265) * CHASTE_MATH::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 = CHASTE_CONST(7.0755999999999996e-6) * (-var_equilibrium_potentials__E_Cl + var_equilibrium_potentials__E_K) / (CHASTE_CONST(87.825100000000006) - var_equilibrium_potentials__E_Cl + var_equilibrium_potentials__E_K); // millimolar_per_millisecond + const double var_background_currents__i_K_b = CHASTE_CONST(0.0050000000000000001) * var_chaste_interface__membrane__V - CHASTE_CONST(0.0050000000000000001) * var_equilibrium_potentials__E_K; // microA_per_microF + const double var_equilibrium_potentials__E_Na = CHASTE_CONST(26.712338705498265) * CHASTE_MATH::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 = CHASTE_CONST(9.8442999999999999e-6) * CHASTE_MATH::Pow((-var_equilibrium_potentials__E_Cl + var_equilibrium_potentials__E_Na), 4) / (CHASTE_CONST(59494197.640692554) + CHASTE_MATH::Pow((-var_equilibrium_potentials__E_Cl + var_equilibrium_potentials__E_Na), 4)); // millimolar_per_millisecond + const double var_background_currents__i_Na_b = CHASTE_CONST(0.0025000000000000001) * var_chaste_interface__membrane__V - CHASTE_CONST(0.0025000000000000001) * var_equilibrium_potentials__E_Na; // microA_per_microF + const double var_i_K1__i_K1 = mp_i_K1__i_K1_modifier->Calc((CHASTE_CONST(0.0040000000000000001) + CHASTE_CONST(0.4389381125701739) * CHASTE_MATH::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 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.23849999999999999) * var_equilibrium_potentials__E_K)) * (CHASTE_CONST(1.02) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.23849999999999999) * var_equilibrium_potentials__E_K)) + (CHASTE_CONST(0.49124000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.43983232) + CHASTE_CONST(0.080320000000000003) * var_chaste_interface__membrane__V - CHASTE_CONST(0.080320000000000003) * var_equilibrium_potentials__E_K) + CHASTE_MATH::Exp(-CHASTE_CONST(36.698642499999998) + CHASTE_CONST(0.061749999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.061749999999999999) * var_equilibrium_potentials__E_K)) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.4444678999999998) + CHASTE_CONST(0.51429999999999998) * var_equilibrium_potentials__E_K - CHASTE_CONST(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 = CHASTE_CONST(0.0027599999999999999) * (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) / (_lt_0_row[0]); // microA_per_microF + const double var_i_Kr__i_Kr = mp_i_Kr__i_Kr_modifier->Calc(CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::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 / (_lt_0_row[10]), var_chaste_interface__environment__time); // microA_per_microF + const double var_i_Ks__i_Ks = mp_i_Ks__i_Ks_modifier->Calc((1 + CHASTE_CONST(0.59999999999999998) / (1 + CHASTE_CONST(6.4818210260626455e-7) * CHASTE_MATH::Pow((1 / var_chaste_interface__Ca_i__Ca_i), CHASTE_CONST(1.3999999999999999)))) * (-CHASTE_CONST(26.712338705498265) * CHASTE_MATH::Log((CHASTE_CONST(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)) / (CHASTE_CONST(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(CHASTE_MATH::Pow(var_chaste_interface__i_Na_m_gate__m, 3) * (-var_equilibrium_potentials__E_Na + var_chaste_interface__membrane__V) * (CHASTE_CONST(0.20000000000000001) * var_chaste_interface__i_Na_j_gate__j + CHASTE_CONST(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((-CHASTE_CONST(1.5) * CHASTE_MATH::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] + CHASTE_CONST(0.40000000000000002) * CHASTE_MATH::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]) / ((_lt_0_row[5]) * (1 + CHASTE_CONST(6.9444444444444451e-9) / CHASTE_MATH::Pow(var_chaste_interface__Ca_i__Ca_i, 2)) * (CHASTE_CONST(1004882.8125) * var_chaste_interface__Ca_i__Ca_i + CHASTE_CONST(1.3) * CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) + CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mp_extracellular_calcium_concentration_modifier->Calc(mParameters[4], var_chaste_interface__environment__time) + CHASTE_CONST(1.5) * CHASTE_MATH::Pow(mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time), 3) * var_chaste_interface__Ca_i__Ca_i + CHASTE_CONST(0.0035999999999999999) * CHASTE_MATH::Pow(mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time), 3) * (1 + CHASTE_CONST(0.081300813008130079) * var_chaste_interface__intracellular_ion_concentrations__Na_i) + CHASTE_CONST(1860.8670000000004) * (1 + CHASTE_CONST(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 = CHASTE_CONST(0.61875000000000002) * mp_extracellular_potassium_concentration_modifier->Calc(mParameters[5], var_chaste_interface__environment__time) / ((1 + 100 / CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 2)) * (CHASTE_CONST(1.5) + mp_extracellular_potassium_concentration_modifier->Calc(mParameters[5], var_chaste_interface__environment__time)) * (1 + _lt_0_row[7] + CHASTE_CONST(0.036499999999999998) * (-CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * CHASTE_MATH::Exp(CHASTE_CONST(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 = CHASTE_CONST(0.037374999999999999) * CHASTE_MATH::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) * (CHASTE_CONST(0.20000000000000001) * var_chaste_interface__i_to_1_i2_gate__i2 + CHASTE_CONST(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 = CHASTE_CONST(0.028896009762002683) * (_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 / (_lt_0_row[9]); // microA_per_microF + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Cl_i = (-CHASTE_CONST(6.767281717060562e-9) * var_background_currents__i_Cl_b - CHASTE_CONST(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 = (CHASTE_CONST(1.3534563434121124e-8) * var_i_NaK__i_NaK - CHASTE_CONST(6.767281717060562e-9) * var_background_currents__i_K_b - CHASTE_CONST(6.767281717060562e-9) * var_i_K1__i_K1 - CHASTE_CONST(6.767281717060562e-9) * var_i_K_p__i_K_p - CHASTE_CONST(6.767281717060562e-9) * var_i_Kr__i_Kr - CHASTE_CONST(6.767281717060562e-9) * var_i_Ks__i_Ks - CHASTE_CONST(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 = (-CHASTE_CONST(2.0301845151181685e-8) * var_i_NaCa__i_NaCa - CHASTE_CONST(2.0301845151181685e-8) * var_i_NaK__i_NaK - CHASTE_CONST(6.767281717060562e-9) * var_background_currents__i_Na_b - CHASTE_CONST(6.767281717060562e-9) * var_i_Na__i_Na - CHASTE_CONST(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 = CHASTE_CONST(0.0028824983370007683) * (-CHASTE_CONST(0.34100000000000003) * mp_extracellular_calcium_concentration_modifier->Calc(mParameters[4], var_chaste_interface__environment__time) + var_chaste_interface__Ca_i__Ca_i * _lt_0_row[1]) * var_chaste_interface__membrane__V / (_lt_0_row[2]); // microA_per_microF + const double var_i_Ca_L__i_Ca_L_max = CHASTE_CONST(3.510865186083326) * (-15 + var_chaste_interface__membrane__V) * (-CHASTE_CONST(0.34100000000000003) * mp_extracellular_calcium_concentration_modifier->Calc(mParameters[4], var_chaste_interface__environment__time) + var_chaste_interface__Ca_r__Ca_r * _lt_0_row[11]) / (_lt_0_row[12]); // 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 + 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 + 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 + var_Ca_MK_act__Ca_MK_act)); // 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) * 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 = (-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 + 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 + 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 = -(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 + 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 + CHASTE_MATH::Exp(-CHASTE_CONST(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 = (CHASTE_CONST(0.14999999999999999) - var_chaste_interface__i_Ca_L_f_Ca_gate__f_Ca + CHASTE_CONST(0.55000000000000004) / (1 + CHASTE_CONST(333.33333333333331) * var_chaste_interface__Ca_r__Ca_r) + CHASTE_CONST(0.29999999999999999) / (1 - 20 * var_i_Ca_L__i_Ca_L)) / (CHASTE_CONST(0.5) + 1 / (1 + CHASTE_CONST(333.33333333333331) * var_chaste_interface__Ca_r__Ca_r) + 10 * var_Ca_MK_act__Ca_MK_act / (CHASTE_CONST(0.14999999999999999) + var_Ca_MK_act__Ca_MK_act)); // 1 / millisecond + const double var_q_leak__q_leak = CHASTE_CONST(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 + CHASTE_MATH::Exp(CHASTE_CONST(3.3333333333333335) + CHASTE_CONST(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 + CHASTE_MATH::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 / (CHASTE_CONST(0.14999999999999999) + var_Ca_MK_act__Ca_MK_act)) / (1 + CHASTE_MATH::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 / (CHASTE_CONST(0.14999999999999999) + var_Ca_MK_act__Ca_MK_act)); // 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) * 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 + CHASTE_MATH::Exp(CHASTE_CONST(2.6000000000000001) + CHASTE_CONST(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 = (-var_Ca_r__q_diff + CHASTE_CONST(0.23999999999999996) * var_q_rel__q_rel - CHASTE_CONST(1.1504378919002956e-7) * var_i_Ca_L__i_Ca_L) / (1 + CHASTE_CONST(2.2480000000000002) * var_chaste_interface__Ca_r__Ca_r / CHASTE_MATH::Pow((CHASTE_CONST(0.0086999999999999994) + var_chaste_interface__Ca_r__Ca_r), 2) + CHASTE_CONST(0.094) * var_chaste_interface__Ca_r__Ca_r / CHASTE_MATH::Pow((CHASTE_CONST(0.00087000000000000001) + var_chaste_interface__Ca_r__Ca_r), 2)); // millimolar / millisecond + const double d_dt_chaste_interface_var_q_rel_ro_gate__ro = -CHASTE_CONST(0.33333333333333331) * var_chaste_interface__q_rel_ro_gate__ro + CHASTE_CONST(0.33333333333333331) * CHASTE_MATH::Pow(var_chaste_interface__Ca_JSR__Ca_JSR, CHASTE_CONST(1.8999999999999999)) * CHASTE_MATH::Pow(var_i_Ca_L__i_Ca_L, 2) / ((1 + CHASTE_MATH::Pow(var_i_Ca_L__i_Ca_L, 2)) * (CHASTE_MATH::Pow(var_chaste_interface__Ca_JSR__Ca_JSR, CHASTE_CONST(1.8999999999999999)) + CHASTE_CONST(1644.6531773416521) * CHASTE_MATH::Pow((var_chaste_interface__Ca_r__Ca_r / (CHASTE_CONST(0.0028) + var_chaste_interface__Ca_r__Ca_r)), CHASTE_CONST(1.8999999999999999)))); // 1 / millisecond + const double var_q_tr__q_tr = CHASTE_CONST(0.0083333333333333332) * var_chaste_interface__Ca_NSR__Ca_NSR - CHASTE_CONST(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 / CHASTE_MATH::Pow((CHASTE_CONST(0.80000000000000004) + var_chaste_interface__Ca_JSR__Ca_JSR), 2)); // millimolar / millisecond + const double var_q_up__q_up = CHASTE_CONST(0.5) * (1 + CHASTE_CONST(0.75) * var_Ca_MK_act__Ca_MK_act / (CHASTE_CONST(0.14999999999999999) + 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) / (CHASTE_CONST(0.00092000000000000003) - CHASTE_CONST(0.00017000000000000001) * var_Ca_MK_act__Ca_MK_act / (CHASTE_CONST(0.14999999999999999) + 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 - CHASTE_CONST(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 = -(CHASTE_CONST(3.383640858530281e-9) * var_background_currents__i_Ca_b + CHASTE_CONST(3.383640858530281e-9) * var_i_Ca_p__i_Ca_p + CHASTE_CONST(0.081176470588235281) * var_q_up__q_up - CHASTE_CONST(0.029411764705882353) * var_Ca_r__q_diff - CHASTE_CONST(6.767281717060562e-9) * var_i_NaCa__i_NaCa - CHASTE_CONST(0.081176470588235281) * var_q_leak__q_leak) / (1 + CHASTE_CONST(0.14000000000000001) * var_chaste_interface__Ca_i__Ca_i / CHASTE_MATH::Pow((CHASTE_CONST(0.00050000000000000001) + var_chaste_interface__Ca_i__Ca_i), 2) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__Ca_i__Ca_i / CHASTE_MATH::Pow((CHASTE_CONST(0.0023800000000000002) + var_chaste_interface__Ca_i__Ca_i), 2)); // millimolar / millisecond if (mSetVoltageDerivativeToZero) { @@ -957,7 +959,7 @@ std::shared_ptr Cell } 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 + 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 - CHASTE_STIM(var_chaste_interface__environment__time) / CHASTE_CAP() - CHASTE_CONST(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; @@ -996,7 +998,7 @@ std::shared_ptr Cell { // 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)); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -1052,65 +1054,65 @@ std::shared_ptr Cell 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_0 = CHASTE_CONST(0.050000000000000003); // dimensionless + const double var_Ca_MK_act__km_Ca_MK = CHASTE_CONST(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 / (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_equilibrium_potentials__r_NaK = CHASTE_CONST(0.018329999999999999); // dimensionless + const double var_i_Ca_L__p_Ca = CHASTE_CONST(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(CHASTE_CONST(0.5) + 1 / (1 + CHASTE_CONST(333.33333333333331) * var_chaste_interface__Ca_r__Ca_r) + 10 * var_Ca_MK_act__Ca_MK_act / (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 + CHASTE_CONST(0.59999999999999998) / (1 + CHASTE_CONST(6.4818210260626455e-7) * CHASTE_MATH::Pow((1 / var_chaste_interface__Ca_i__Ca_i), CHASTE_CONST(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 = CHASTE_CONST(0.40000000000000002); // dimensionless + const double var_i_NaCa__k_sat = CHASTE_CONST(0.27000000000000002); // dimensionless + const double var_i_NaCa__km_Ca_act = CHASTE_CONST(0.000125); // millimolar + const double var_i_NaCa__km_Ca_i = CHASTE_CONST(0.0035999999999999999); // millimolar + const double var_i_NaCa__km_Ca_o = CHASTE_CONST(1.3); // millimolar + const double var_i_NaCa__km_Na_i_1 = CHASTE_CONST(12.300000000000001); // millimolar + const double var_i_NaCa__km_Na_o = CHASTE_CONST(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 + CHASTE_CONST(24.217200000000005) * CHASTE_MATH::Pow((-1 + CHASTE_CONST(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 + CHASTE_CONST(0.03125) * CHASTE_MATH::Pow((-1 + CHASTE_CONST(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__alpha_h = ((var_chaste_interface__membrane__V < -40) ? (CHASTE_CONST(0.13500000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(11.764705882352942) + CHASTE_CONST(0.14705882352941177) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - CHASTE_CONST(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 * CHASTE_MATH::Exp(CHASTE_CONST(0.34999999999999998) * var_chaste_interface__membrane__V - CHASTE_CONST(0.34999999999999998) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time)) + CHASTE_CONST(3.5600000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.079000000000000001) * var_chaste_interface__membrane__V - CHASTE_CONST(0.079000000000000001) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time))) : (CHASTE_CONST(7.6923076923076916) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.96036036036036043) + CHASTE_CONST(0.0900900900900901) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - CHASTE_CONST(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__alpha_j = ((var_chaste_interface__membrane__V < -40) ? ((CHASTE_CONST(37.780000000000001) + var_chaste_interface__membrane__V) * (-127140 * CHASTE_MATH::Exp(CHASTE_CONST(0.24440000000000001) * var_chaste_interface__membrane__V - CHASTE_CONST(0.24440000000000001) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time)) - CHASTE_CONST(3.4740000000000003e-5) * CHASTE_MATH::Exp(CHASTE_CONST(0.043909999999999998) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - CHASTE_CONST(0.043909999999999998) * var_chaste_interface__membrane__V)) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(24.640530000000002) + CHASTE_CONST(0.311) * var_chaste_interface__membrane__V - CHASTE_CONST(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) ? (CHASTE_CONST(0.1212) * CHASTE_MATH::Exp(CHASTE_CONST(0.01052) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - CHASTE_CONST(0.01052) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(5.5312920000000005) + CHASTE_CONST(0.13780000000000001) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - CHASTE_CONST(0.13780000000000001) * var_chaste_interface__membrane__V))) : (CHASTE_CONST(0.29999999999999999) * CHASTE_MATH::Exp(CHASTE_CONST(2.5349999999999999e-7) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - CHASTE_CONST(2.5349999999999999e-7) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(3.2000000000000002) + CHASTE_CONST(0.10000000000000001) * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - CHASTE_CONST(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_membrane__i_stim_converted = CHASTE_STIM(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_i_NaCa__dNaCa_1 = CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * var_i_NaCa__km_Ca_o + CHASTE_CONST(1.5) * CHASTE_MATH::Pow(var_i_NaCa__km_Na_o, 3) * var_chaste_interface__Ca_i__Ca_i + CHASTE_MATH::Pow(var_i_NaCa__km_Na_i_1, 3) * (1 + CHASTE_CONST(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_i_K1__g_K1 = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::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 = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::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 = CHASTE_MATH::Pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mp_extracellular_calcium_concentration_modifier->Calc(mParameters[4], var_chaste_interface__environment__time) + CHASTE_CONST(1.5) * CHASTE_MATH::Pow(mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time), 3) * var_chaste_interface__Ca_i__Ca_i + CHASTE_MATH::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_equilibrium_potentials__E_K = var_model_parameters__R * var_model_parameters__T * CHASTE_MATH::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 * CHASTE_MATH::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 * CHASTE_MATH::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 = CHASTE_CONST(1.02) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.23849999999999999) * var_equilibrium_potentials__E_K)); // dimensionless + const double var_i_K1_xK1_gate__beta_xK1 = (CHASTE_CONST(0.49124000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.43983232) + CHASTE_CONST(0.080320000000000003) * var_chaste_interface__membrane__V - CHASTE_CONST(0.080320000000000003) * var_equilibrium_potentials__E_K) + CHASTE_MATH::Exp(-CHASTE_CONST(36.698642499999998) + CHASTE_CONST(0.061749999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.061749999999999999) * var_equilibrium_potentials__E_K)) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.4444678999999998) + CHASTE_CONST(0.51429999999999998) * var_equilibrium_potentials__E_K - CHASTE_CONST(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_K1__i_K1 = mp_i_K1__i_K1_modifier->Calc((CHASTE_CONST(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 = CHASTE_CAP() * 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_Kr__i_Kr_converted = CHASTE_CAP() * 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_i_Ks__i_Ks_converted = CHASTE_CAP() * var_i_Ks__i_Ks; // uA_per_cm2 + const double var_i_Na__i_Na = mp_i_Na__i_Na_modifier->Calc(CHASTE_MATH::Pow(var_chaste_interface__i_Na_m_gate__m, 3) * (-var_equilibrium_potentials__E_Na + var_chaste_interface__membrane__V) * (CHASTE_CONST(0.20000000000000001) * var_chaste_interface__i_Na_j_gate__j + CHASTE_CONST(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 = CHASTE_CAP() * var_i_Na__i_Na; // uA_per_cm2 + const double var_i_NaCa__i_NaCa = mp_i_NaCa__i_NaCa_modifier->Calc((-CHASTE_CONST(1.5) * CHASTE_MATH::Pow(mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time), 3) * var_chaste_interface__Ca_i__Ca_i * CHASTE_MATH::Exp(-CHASTE_CONST(0.65000000000000002) * var_chaste_interface__membrane__V * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T)) + CHASTE_MATH::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) * CHASTE_MATH::Exp(CHASTE_CONST(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 * CHASTE_MATH::Exp(-CHASTE_CONST(0.65000000000000002) * var_chaste_interface__membrane__V * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T))) * (1 + CHASTE_CONST(0.44444444444444442) * CHASTE_MATH::Pow(var_i_NaCa__km_Ca_act, 2) / CHASTE_MATH::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 = CHASTE_CAP() * 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) * (CHASTE_CONST(0.20000000000000001) * var_chaste_interface__i_to_1_i2_gate__i2 + CHASTE_CONST(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 = CHASTE_CAP() * 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__gamma_Cao = CHASTE_CONST(0.34100000000000003); // dimensionless const double var_model_parameters__z_Ca = 2; // dimensionless - const double var_i_Ca_L__i_Ca_L_max = 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_max = CHASTE_MATH::Pow(var_model_parameters__F, 2) * CHASTE_MATH::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 * CHASTE_MATH::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 + CHASTE_MATH::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_i_Ca_L__i_Ca_L_converted = CHASTE_CAP() * 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 + CHASTE_MATH::Exp(-CHASTE_CONST(4.375) - 25 * var_i_Ca_L__i_Ca_L)), var_chaste_interface__environment__time); // millisecond + const double var_q_rel__vg = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(2.6000000000000001) + CHASTE_CONST(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 diff --git a/chaste_codegen/data/tests/chaste_reference_models/Opt/non_dynamic_aslanidi_Purkinje_model_2009.hpp b/chaste_codegen/data/tests/chaste_reference_models/Opt/non_dynamic_aslanidi_Purkinje_model_2009.hpp index 7c38bf4df..23fc01778 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/Opt/non_dynamic_aslanidi_Purkinje_model_2009.hpp +++ b/chaste_codegen/data/tests/chaste_reference_models/Opt/non_dynamic_aslanidi_Purkinje_model_2009.hpp @@ -18,6 +18,9 @@ #include "AbstractCardiacCellWithModifiers.hpp" #include "AbstractModifier.hpp" #include "AbstractStimulusFunction.hpp" +#if USING_DEVICE_COMPILER +#include "StimulusEvaluatorCuda.hpp" +#endif #include "AbstractCardiacCell.hpp" class Cellaslanidi_Purkinje_model_2009FromCellMLOpt : public AbstractCardiacCellWithModifiers diff --git a/chaste_codegen/data/tests/chaste_reference_models/Opt/test_luo_rudy_1991_with_range_cap_dimensionless.cpp b/chaste_codegen/data/tests/chaste_reference_models/Opt/test_luo_rudy_1991_with_range_cap_dimensionless.cpp index b4bf7b0ce..d3eaa9ec9 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/Opt/test_luo_rudy_1991_with_range_cap_dimensionless.cpp +++ b/chaste_codegen/data/tests/chaste_reference_models/Opt/test_luo_rudy_1991_with_range_cap_dimensionless.cpp @@ -21,6 +21,8 @@ #include "HeartConfig.hpp" #include "IsNan.hpp" #include "MathsCustomFunctions.hpp" +#include "ChasteMathDeviceNamespaces.hpp" +#include "ChasteCpuMacros.hpp" @@ -143,7 +145,7 @@ class Celltest_luo_rudy_1991_with_range_cap_dimensionlessFromCellMLOpt_LookupTab for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return (((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))); + return (((var_chaste_interface__membrane__V > -100) && (CHASTE_CONST(3.0800000000000001) + CHASTE_CONST(0.040000000000000001) * var_chaste_interface__membrane__V >= -CHASTE_CONST(9.9999999999999995e-8)) && (CHASTE_CONST(3.0800000000000001) + CHASTE_CONST(0.040000000000000001) * var_chaste_interface__membrane__V <= CHASTE_CONST(9.9999999999999995e-8))) ? ((CHASTE_CONST(0.28823920000000003) + CHASTE_CONST(0.0022696000000000001) * var_chaste_interface__membrane__V) / CHASTE_MATH::Exp(CHASTE_CONST(1.4000000000000001) + CHASTE_CONST(0.040000000000000001) * var_chaste_interface__membrane__V)) : ((var_chaste_interface__membrane__V > -100) ? (CHASTE_CONST(0.11348000000000001) * (-1 + CHASTE_MATH::Exp(CHASTE_CONST(3.0800000000000001) + CHASTE_CONST(0.040000000000000001) * var_chaste_interface__membrane__V)) / ((CHASTE_CONST(3.0800000000000001) + CHASTE_CONST(0.040000000000000001) * var_chaste_interface__membrane__V) * CHASTE_MATH::Exp(CHASTE_CONST(1.4000000000000001) + CHASTE_CONST(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); @@ -165,7 +167,7 @@ class Celltest_luo_rudy_1991_with_range_cap_dimensionlessFromCellMLOpt_LookupTab for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 1 + exp(1.2521739130434781 - 0.16722408026755853 * var_chaste_interface__membrane__V); + return 1 + CHASTE_MATH::Exp(CHASTE_CONST(1.2521739130434781) - CHASTE_CONST(0.16722408026755853) * 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); @@ -176,7 +178,7 @@ class Celltest_luo_rudy_1991_with_range_cap_dimensionlessFromCellMLOpt_LookupTab for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return (((4.7130000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V >= -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)))); + return (((CHASTE_CONST(4.7130000000000001) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V >= -CHASTE_CONST(9.9999999999999995e-8)) && (CHASTE_CONST(4.7130000000000001) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V <= CHASTE_CONST(9.9999999999999995e-8))) ? (CHASTE_CONST(10.7408) + CHASTE_CONST(0.16) * var_chaste_interface__membrane__V) : (-CHASTE_CONST(3.1999999999999997) * (CHASTE_CONST(4.7130000000000001) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(4.7130000000000001) - CHASTE_CONST(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 +200,7 @@ class Celltest_luo_rudy_1991_with_range_cap_dimensionlessFromCellMLOpt_LookupTab for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return exp(-0.090909090909090912 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(-CHASTE_CONST(0.090909090909090912) * 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); @@ -209,7 +211,7 @@ class Celltest_luo_rudy_1991_with_range_cap_dimensionlessFromCellMLOpt_LookupTab for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 1 + exp(0.35999999999999999 - 0.071999999999999995 * var_chaste_interface__membrane__V); + return 1 + CHASTE_MATH::Exp(CHASTE_CONST(0.35999999999999999) - CHASTE_CONST(0.071999999999999995) * 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); @@ -220,7 +222,7 @@ class Celltest_luo_rudy_1991_with_range_cap_dimensionlessFromCellMLOpt_LookupTab 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); + return CHASTE_MATH::Exp(CHASTE_CONST(0.050000000000000003) - CHASTE_CONST(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); @@ -231,7 +233,7 @@ class Celltest_luo_rudy_1991_with_range_cap_dimensionlessFromCellMLOpt_LookupTab 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); + return 1 + CHASTE_MATH::Exp(CHASTE_CONST(2.2000000000000002) + CHASTE_CONST(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); @@ -242,7 +244,7 @@ class Celltest_luo_rudy_1991_with_range_cap_dimensionlessFromCellMLOpt_LookupTab for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return exp(-0.748 - 0.017000000000000001 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(-CHASTE_CONST(0.748) - CHASTE_CONST(0.017000000000000001) * 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); @@ -253,7 +255,7 @@ class Celltest_luo_rudy_1991_with_range_cap_dimensionlessFromCellMLOpt_LookupTab for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 1 + exp(4.2000000000000002 + 0.14999999999999999 * var_chaste_interface__membrane__V); + return 1 + CHASTE_MATH::Exp(CHASTE_CONST(4.2000000000000002) + CHASTE_CONST(0.14999999999999999) * 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 +266,7 @@ class Celltest_luo_rudy_1991_with_range_cap_dimensionlessFromCellMLOpt_LookupTab 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); + return CHASTE_MATH::Exp(-CHASTE_CONST(0.224) - CHASTE_CONST(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); @@ -275,7 +277,7 @@ class Celltest_luo_rudy_1991_with_range_cap_dimensionlessFromCellMLOpt_LookupTab 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); + return 1 + CHASTE_MATH::Exp(-6 - CHASTE_CONST(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); @@ -286,7 +288,7 @@ class Celltest_luo_rudy_1991_with_range_cap_dimensionlessFromCellMLOpt_LookupTab 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); + return CHASTE_MATH::Exp(-CHASTE_CONST(0.59999999999999998) - CHASTE_CONST(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); @@ -297,7 +299,7 @@ class Celltest_luo_rudy_1991_with_range_cap_dimensionlessFromCellMLOpt_LookupTab for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 1 + exp(2.8500000000000001 + 0.057000000000000002 * var_chaste_interface__membrane__V); + return 1 + CHASTE_MATH::Exp(CHASTE_CONST(2.8500000000000001) + CHASTE_CONST(0.057000000000000002) * 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); @@ -308,7 +310,7 @@ class Celltest_luo_rudy_1991_with_range_cap_dimensionlessFromCellMLOpt_LookupTab for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return exp(4.1500000000000004 + 0.083000000000000004 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(CHASTE_CONST(4.1500000000000004) + CHASTE_CONST(0.083000000000000004) * 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); @@ -319,7 +321,7 @@ class Celltest_luo_rudy_1991_with_range_cap_dimensionlessFromCellMLOpt_LookupTab for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 1 + exp(-0.80000000000000004 - 0.040000000000000001 * var_chaste_interface__membrane__V); + return 1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.80000000000000004) - CHASTE_CONST(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); @@ -330,7 +332,7 @@ class Celltest_luo_rudy_1991_with_range_cap_dimensionlessFromCellMLOpt_LookupTab for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return exp(-1.2 - 0.059999999999999998 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(-CHASTE_CONST(1.2) - CHASTE_CONST(0.059999999999999998) * 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); @@ -363,9 +365,9 @@ std::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_amplitude = -CHASTE_CONST(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_end = CHASTE_CONST(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( @@ -398,17 +400,17 @@ std::shared_ptrmParameters[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[2] = CHASTE_CONST(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[4] = CHASTE_CONST(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[6] = CHASTE_CONST(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] + this->mParameters[10] = CHASTE_CONST(0.60470000000000002); // (var_time_independent_potassium_current__g_K1_max) [milliS_per_cm2] + this->mParameters[11] = CHASTE_CONST(0.039210000000000002); // (var_background_current__g_b) [milliS_per_cm2] + this->mParameters[12] = CHASTE_CONST(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() @@ -466,7 +468,7 @@ std::shared_ptr& rY = *pStateVariables; - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -491,13 +493,13 @@ std::shared_ptrIndexTable0(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_background_current__i_b = (CHASTE_CONST(59.869999999999997) + var_chaste_interface__membrane__V) * mParameters[11]; // microA_per_cm2 + const double var_fast_sodium_current__i_Na = CHASTE_MATH::Pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-CHASTE_CONST(26.712449447891164) * CHASTE_MATH::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 = (-CHASTE_CONST(7.7000000000000002) + CHASTE_CONST(13.028700000000001) * CHASTE_MATH::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 = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::Sqrt(mParameters[2]) * (-CHASTE_CONST(26.712449447891164) * CHASTE_MATH::Log((CHASTE_CONST(0.018329999999999999) * mParameters[3] + mParameters[2]) / (CHASTE_CONST(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 = CHASTE_CONST(26.712449447891164) * CHASTE_MATH::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_time_independent_potassium_current__i_K1 = CHASTE_CONST(0.4389381125701739) * CHASTE_MATH::Sqrt(mParameters[2]) * (-var_time_independent_potassium_current__E_K1 + var_chaste_interface__membrane__V) * mParameters[10] / ((1 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.23849999999999999) * var_time_independent_potassium_current__E_K1)) * (CHASTE_CONST(1.02) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.23849999999999999) * var_time_independent_potassium_current__E_K1)) + (CHASTE_MATH::Exp(-CHASTE_CONST(36.698642499999998) + CHASTE_CONST(0.061749999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.061749999999999999) * var_time_independent_potassium_current__E_K1) + CHASTE_CONST(0.49124000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.43983232) + CHASTE_CONST(0.080320000000000003) * var_chaste_interface__membrane__V - CHASTE_CONST(0.080320000000000003) * var_time_independent_potassium_current__E_K1)) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.4444678999999998) + CHASTE_CONST(0.51429999999999998) * var_time_independent_potassium_current__E_K1 - CHASTE_CONST(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; @@ -509,7 +511,7 @@ std::shared_ptrmFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -536,18 +538,18 @@ std::shared_ptrmFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -599,42 +601,42 @@ std::shared_ptrIndexTable0(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_background_current__E_b = -CHASTE_CONST(59.869999999999997); // millivolt + const double var_membrane__F = CHASTE_CONST(96484.600000000006); // coulomb_per_mole + const double var_membrane__I_stim = CHASTE_STIM(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_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * CHASTE_MATH::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__i_Na = CHASTE_MATH::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) ? (CHASTE_CONST(0.13500000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(11.764705882352942) + CHASTE_CONST(0.14705882352941177) * mParameters[9] - CHASTE_CONST(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 * CHASTE_MATH::Exp(CHASTE_CONST(0.34999999999999998) * var_chaste_interface__membrane__V - CHASTE_CONST(0.34999999999999998) * mParameters[9]) + CHASTE_CONST(3.5600000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.079000000000000001) * var_chaste_interface__membrane__V - CHASTE_CONST(0.079000000000000001) * mParameters[9])) : (CHASTE_CONST(7.6923076923076916) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.96036036036036043) + CHASTE_CONST(0.0900900900900901) * mParameters[9] - CHASTE_CONST(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__alpha_j = ((var_chaste_interface__membrane__V < -40) ? ((CHASTE_CONST(37.780000000000001) + var_chaste_interface__membrane__V) * (-127140 * CHASTE_MATH::Exp(CHASTE_CONST(0.24440000000000001) * var_chaste_interface__membrane__V - CHASTE_CONST(0.24440000000000001) * mParameters[9]) - CHASTE_CONST(3.4740000000000003e-5) * CHASTE_MATH::Exp(CHASTE_CONST(0.043909999999999998) * mParameters[9] - CHASTE_CONST(0.043909999999999998) * var_chaste_interface__membrane__V)) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(24.640530000000002) + CHASTE_CONST(0.311) * var_chaste_interface__membrane__V - CHASTE_CONST(0.311) * mParameters[9]))) : (0)); // per_millisecond + const double var_fast_sodium_current_j_gate__beta_j = ((var_chaste_interface__membrane__V < -40) ? (CHASTE_CONST(0.1212) * CHASTE_MATH::Exp(CHASTE_CONST(0.01052) * mParameters[9] - CHASTE_CONST(0.01052) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(5.5312920000000005) + CHASTE_CONST(0.13780000000000001) * mParameters[9] - CHASTE_CONST(0.13780000000000001) * var_chaste_interface__membrane__V))) : (CHASTE_CONST(0.29999999999999999) * CHASTE_MATH::Exp(CHASTE_CONST(2.5349999999999999e-7) * mParameters[9] - CHASTE_CONST(2.5349999999999999e-7) * var_chaste_interface__membrane__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(3.2000000000000002) + CHASTE_CONST(0.10000000000000001) * mParameters[9] - CHASTE_CONST(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__E_si = CHASTE_CONST(7.7000000000000002) - CHASTE_CONST(13.028700000000001) * CHASTE_MATH::Log(var_chaste_interface__intracellular_calcium_concentration__Cai); // millivolt + const double var_slow_inward_current_f_gate__alpha_f = CHASTE_CONST(0.012) * _lt_0_row[9] / (_lt_0_row[8]); // per_millisecond + const double var_slow_inward_current_f_gate__beta_f = CHASTE_CONST(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__PR_NaK = CHASTE_CONST(0.018329999999999999); // dimensionless + const double var_time_dependent_potassium_current__E_K = var_membrane__R * var_membrane__T * CHASTE_MATH::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 = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::Sqrt(mParameters[2]) * mParameters[6]; // milliS_per_cm2 + const double var_time_dependent_potassium_current_Xi_gate__B = CHASTE_CONST(0.040000000000000001); // per_millivolt + const double var_time_dependent_potassium_current_Xi_gate__A = CHASTE_CONST(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_Xi_gate__temp_Xi = (((var_time_dependent_potassium_current_Xi_gate__U >= -CHASTE_CONST(9.9999999999999995e-8)) && (var_time_dependent_potassium_current_Xi_gate__U <= CHASTE_CONST(9.9999999999999995e-8))) ? ((1 + CHASTE_CONST(0.5) * var_time_dependent_potassium_current_Xi_gate__U) * var_time_dependent_potassium_current_Xi_gate__A) : ((-1 + CHASTE_MATH::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 / CHASTE_MATH::Exp(CHASTE_CONST(1.4000000000000001) + CHASTE_CONST(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_time_independent_potassium_current__E_K1 = var_membrane__R * var_membrane__T * CHASTE_MATH::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__g_K1 = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::Sqrt(mParameters[2]) * mParameters[10]; // milliS_per_cm2 + const double var_time_independent_potassium_current_K1_gate__alpha_K1 = CHASTE_CONST(1.02) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.23849999999999999) * var_time_independent_potassium_current__E_K1)); // per_millisecond + const double var_time_independent_potassium_current_K1_gate__beta_K1 = (CHASTE_MATH::Exp(-CHASTE_CONST(36.698642499999998) + CHASTE_CONST(0.061749999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.061749999999999999) * var_time_independent_potassium_current__E_K1) + CHASTE_CONST(0.49124000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.43983232) + CHASTE_CONST(0.080320000000000003) * var_chaste_interface__membrane__V - CHASTE_CONST(0.080320000000000003) * var_time_independent_potassium_current__E_K1)) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.4444678999999998) + CHASTE_CONST(0.51429999999999998) * var_time_independent_potassium_current__E_K1 - CHASTE_CONST(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 diff --git a/chaste_codegen/data/tests/chaste_reference_models/Opt/test_luo_rudy_1991_with_range_cap_dimensionless.hpp b/chaste_codegen/data/tests/chaste_reference_models/Opt/test_luo_rudy_1991_with_range_cap_dimensionless.hpp index fd71687b4..ccd57be2b 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/Opt/test_luo_rudy_1991_with_range_cap_dimensionless.hpp +++ b/chaste_codegen/data/tests/chaste_reference_models/Opt/test_luo_rudy_1991_with_range_cap_dimensionless.hpp @@ -16,6 +16,9 @@ #include "ChasteSerialization.hpp" #include #include "AbstractStimulusFunction.hpp" +#if USING_DEVICE_COMPILER +#include "StimulusEvaluatorCuda.hpp" +#endif #include "AbstractCardiacCell.hpp" class Celltest_luo_rudy_1991_with_range_cap_dimensionlessFromCellMLOpt : public AbstractCardiacCell diff --git a/chaste_codegen/data/tests/chaste_reference_models/RL/dynamic_livshitz_rudy_2007.cpp b/chaste_codegen/data/tests/chaste_reference_models/RL/dynamic_livshitz_rudy_2007.cpp index e2f8136fa..50fc447ab 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/RL/dynamic_livshitz_rudy_2007.cpp +++ b/chaste_codegen/data/tests/chaste_reference_models/RL/dynamic_livshitz_rudy_2007.cpp @@ -21,6 +21,8 @@ #include "HeartConfig.hpp" #include "IsNan.hpp" #include "MathsCustomFunctions.hpp" +#include "ChasteMathDeviceNamespaces.hpp" +#include "ChasteCpuMacros.hpp" @@ -29,7 +31,7 @@ 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_amplitude_converted = -15 * CHASTE_CAP(); // 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 @@ -58,19 +60,19 @@ 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[1] = CHASTE_CONST(0.125); // (var_Irel__kappa) [mM_per_mV_ms] + this->mParameters[2] = CHASTE_CONST(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[4] = CHASTE_CONST(1.8); // (var_Environment__Ca_o) [mM] + this->mParameters[5] = CHASTE_CONST(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[7] = CHASTE_CONST(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] + this->mParameters[11] = CHASTE_CONST(0.02614); // (var_IKr__gkrmax) [mS_per_uF] + this->mParameters[12] = CHASTE_CONST(0.433); // (var_IKs__GKsmax) [mS_per_uF] + this->mParameters[13] = CHASTE_CONST(0.00025000000000000001); // (var_INaCa__c1) [uA_per_uF] } Dynamiclivshitz_rudy_2007FromCellMLRushLarsen::~Dynamiclivshitz_rudy_2007FromCellMLRushLarsen() @@ -117,7 +119,7 @@ // 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]); + double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: mV; Initial value: -89.4356034692784 double var_chaste_interface__INa__H = rY[1]; // Units: dimensionless; Initial value: 0.994401369032678 @@ -146,76 +148,76 @@ 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__cmdnbar = CHASTE_CONST(0.050000000000000003); // mM + const double var_Ca__kmcmdn = CHASTE_CONST(0.0023800000000000002); // mM + const double var_Ca__kmtrpn = CHASTE_CONST(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__trpnbar = CHASTE_CONST(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_Ca__Ca_i = -CHASTE_CONST(0.33333333333333331) * var_Ca__bmyo + CHASTE_CONST(1.1547005383792515) * CHASTE_MATH::Sqrt(-var_Ca__cmyo + CHASTE_CONST(0.33333333333333331) * CHASTE_MATH::Pow(var_Ca__bmyo, 2)) * CHASTE_MATH::Cos(CHASTE_CONST(0.33333333333333331) * CHASTE_MATH::Acos(CHASTE_CONST(0.096225044864937631) * CHASTE_MATH::Pow((-var_Ca__cmyo + CHASTE_CONST(0.33333333333333331) * CHASTE_MATH::Pow(var_Ca__bmyo, 2)), (-CHASTE_CONST(1.5))) * (-2 * CHASTE_MATH::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__gacao = CHASTE_CONST(0.34100000000000003); // dimensionless + const double var_ICaL__gaki = CHASTE_CONST(0.75); // dimensionless + const double var_ICaL__gako = CHASTE_CONST(0.75); // dimensionless + const double var_ICaL__ganai = CHASTE_CONST(0.75); // dimensionless + const double var_ICaL__ganao = CHASTE_CONST(0.75); // dimensionless + const double var_ICaL__kmca = CHASTE_CONST(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_ICaL__pk = CHASTE_CONST(1.9299999999999999e-7); // L_per_F_ms + const double var_ICaL__pna = CHASTE_CONST(6.75e-7); // L_per_F_ms + const double var_ICaT__gcat = CHASTE_CONST(0.050000000000000003); // mS_per_uF + const double var_ICab__gcab = CHASTE_CONST(0.003016); // mS_per_uF + const double var_IK1__GK1max = CHASTE_CONST(0.75); // mS_per_uF + const double var_IK1__GK1_ = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::Sqrt(mParameters[5]) * var_IK1__GK1max; // mS_per_uF + const double var_IKp__GKpmax = CHASTE_CONST(0.0055199999999999997); // mS_per_uF + const double var_IKr__gkr = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::Sqrt(mParameters[5]) * mParameters[11]; // mS_per_uF + const double var_IKs__gks = (1 + CHASTE_CONST(0.59999999999999998) / (1 + CHASTE_CONST(6.4818210260626455e-7) * CHASTE_MATH::Pow((1 / var_Ca__Ca_i), CHASTE_CONST(1.3999999999999999)))) * mParameters[12]; // mS_per_uF + const double var_INaCa__c2 = CHASTE_CONST(0.0001); // dimensionless + const double var_INaCa__gammas = CHASTE_CONST(0.14999999999999999); // dimensionless + const double var_INaK__ibarnak = CHASTE_CONST(2.25); // uA_per_uF + const double var_INaK__kmko = CHASTE_CONST(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_INaK__sigma = -CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * CHASTE_MATH::Exp(CHASTE_CONST(0.01485884101040119) * mParameters[6]); // dimensionless + const double var_INab__GNab = CHASTE_CONST(0.0040000000000000001); // mS_per_uF + const double var_IpCa__ibarpca = CHASTE_CONST(1.1499999999999999); // uA_per_uF + const double var_IpCa__kmpca = CHASTE_CONST(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__ibarca = 4 * (-mParameters[4] * var_ICaL__gacao + var_Ca__Ca_i * var_ICaL__gacai * CHASTE_MATH::Exp(2 * var_Environment__FonRT * var_chaste_interface__cell__V)) * var_Environment__F * var_Environment__FonRT * mParameters[7] * var_chaste_interface__cell__V / (-1 + CHASTE_MATH::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 * CHASTE_MATH::Exp(var_Environment__FonRT * var_chaste_interface__cell__V)) * var_Environment__F * var_Environment__FonRT * var_ICaL__pk * var_chaste_interface__cell__V / (-1 + CHASTE_MATH::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 * CHASTE_MATH::Exp(var_Environment__FonRT * var_chaste_interface__cell__V)) * var_Environment__F * var_Environment__FonRT * var_ICaL__pna * var_chaste_interface__cell__V / (-1 + CHASTE_MATH::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_ICab__icab = (-CHASTE_CONST(0.5) * CHASTE_MATH::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 + CHASTE_MATH::Exp(CHASTE_CONST(0.4017857142857143) + CHASTE_CONST(0.044642857142857144) * var_chaste_interface__cell__V)); // dimensionless + const double var_INaCa__inaca = (-CHASTE_MATH::Pow(mParameters[6], 3) * var_Ca__Ca_i + CHASTE_MATH::Pow(var_chaste_interface__Na__Na_i, 3) * mParameters[4] * CHASTE_MATH::Exp(var_Environment__FonRT * var_chaste_interface__cell__V)) * mParameters[13] * CHASTE_MATH::Exp((-1 + var_INaCa__gammas) * var_Environment__FonRT * var_chaste_interface__cell__V) / (1 + (CHASTE_MATH::Pow(mParameters[6], 3) * var_Ca__Ca_i + CHASTE_MATH::Pow(var_chaste_interface__Na__Na_i, 3) * mParameters[4] * CHASTE_MATH::Exp(var_Environment__FonRT * var_chaste_interface__cell__V)) * var_INaCa__c2 * CHASTE_MATH::Exp((-1 + var_INaCa__gammas) * var_Environment__FonRT * var_chaste_interface__cell__V)); // uA_per_uF + const double var_INaK__fnak = 1 / (1 + CHASTE_CONST(0.1245) * CHASTE_MATH::Exp(-CHASTE_CONST(0.10000000000000001) * var_Environment__FonRT * var_chaste_interface__cell__V) + CHASTE_CONST(0.036499999999999998) * var_INaK__sigma * CHASTE_MATH::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 + CHASTE_MATH::Pow(var_INaK__kmnai, 2) / CHASTE_MATH::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_reversal_potentials__ECa = CHASTE_CONST(0.5) * CHASTE_MATH::Log(mParameters[4] / var_Ca__Ca_i) / var_Environment__FonRT; // mV + const double var_ICaT__icat = CHASTE_MATH::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 = (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_reversal_potentials__EK = CHASTE_MATH::Log(mParameters[5] / var_chaste_interface__K__K_i) / var_Environment__FonRT; // mV + const double var_IK1__ak1 = CHASTE_CONST(1.02) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__cell__V - CHASTE_CONST(0.23849999999999999) * var_reversal_potentials__EK)); // per_ms + const double var_IK1__bk1 = (CHASTE_MATH::Exp(-CHASTE_CONST(36.698642499999998) + CHASTE_CONST(0.061749999999999999) * var_chaste_interface__cell__V - CHASTE_CONST(0.061749999999999999) * var_reversal_potentials__EK) + CHASTE_CONST(0.49124000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.43983232) + CHASTE_CONST(0.080320000000000003) * var_chaste_interface__cell__V - CHASTE_CONST(0.080320000000000003) * var_reversal_potentials__EK)) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.4444678999999998) + CHASTE_CONST(0.51429999999999998) * var_reversal_potentials__EK - CHASTE_CONST(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_IKp__ikp = (-var_reversal_potentials__EK + var_chaste_interface__cell__V) * var_IKp__GKpmax / (1 + CHASTE_MATH::Exp(CHASTE_CONST(1.2521739130434781) - CHASTE_CONST(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_reversal_potentials__ENa = CHASTE_MATH::Log(mParameters[6] / var_chaste_interface__Na__Na_i) / var_Environment__FonRT; // mV + const double var_INa__ina = CHASTE_MATH::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_reversal_potentials__prnak = CHASTE_CONST(0.018329999999999999); // dimensionless + const double var_reversal_potentials__EKs = CHASTE_MATH::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 var_chaste_interface__i_ionic = (var_cell__caiont + var_cell__kiont + var_cell__naiont) * CHASTE_CAP(); // uA_per_cm2 const double i_ionic = var_chaste_interface__i_ionic; EXCEPT_IF_NOT(!std::isnan(i_ionic)); @@ -225,7 +227,7 @@ 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]); + double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: mV; Initial value: -89.4356034692784 double var_chaste_interface__INa__H = rY[1]; // Units: dimensionless; Initial value: 0.994401369032678 @@ -263,132 +265,132 @@ // 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__cmdnbar = CHASTE_CONST(0.050000000000000003); // mM + const double var_Ca__kmcmdn = CHASTE_CONST(0.0023800000000000002); // mM + const double var_Ca__kmtrpn = CHASTE_CONST(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__trpnbar = CHASTE_CONST(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_Ca__Ca_i = -CHASTE_CONST(0.33333333333333331) * var_Ca__bmyo + CHASTE_CONST(1.1547005383792515) * CHASTE_MATH::Sqrt(-var_Ca__cmyo + CHASTE_CONST(0.33333333333333331) * CHASTE_MATH::Pow(var_Ca__bmyo, 2)) * CHASTE_MATH::Cos(CHASTE_CONST(0.33333333333333331) * CHASTE_MATH::Acos(CHASTE_CONST(0.096225044864937631) * CHASTE_MATH::Pow((-var_Ca__cmyo + CHASTE_CONST(0.33333333333333331) * CHASTE_MATH::Pow(var_Ca__bmyo, 2)), (-CHASTE_CONST(1.5))) * (-2 * CHASTE_MATH::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__gacao = CHASTE_CONST(0.34100000000000003); // dimensionless + const double var_ICaL__gaki = CHASTE_CONST(0.75); // dimensionless + const double var_ICaL__gako = CHASTE_CONST(0.75); // dimensionless + const double var_ICaL__ganai = CHASTE_CONST(0.75); // dimensionless + const double var_ICaL__ganao = CHASTE_CONST(0.75); // dimensionless + const double var_ICaL__kmca = CHASTE_CONST(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_ICaL__pk = CHASTE_CONST(1.9299999999999999e-7); // L_per_F_ms + const double var_ICaL__pna = CHASTE_CONST(6.75e-7); // L_per_F_ms + const double var_ICaT__gcat = CHASTE_CONST(0.050000000000000003); // mS_per_uF + const double var_ICab__gcab = CHASTE_CONST(0.003016); // mS_per_uF + const double var_IK1__GK1max = CHASTE_CONST(0.75); // mS_per_uF + const double var_IK1__GK1_ = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::Sqrt(mParameters[5]) * var_IK1__GK1max; // mS_per_uF + const double var_IKp__GKpmax = CHASTE_CONST(0.0055199999999999997); // mS_per_uF + const double var_IKr__gkr = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::Sqrt(mParameters[5]) * mParameters[11]; // mS_per_uF + const double var_IKs__gks = (1 + CHASTE_CONST(0.59999999999999998) / (1 + CHASTE_CONST(6.4818210260626455e-7) * CHASTE_MATH::Pow((1 / var_Ca__Ca_i), CHASTE_CONST(1.3999999999999999)))) * mParameters[12]; // mS_per_uF + const double var_INaCa__c2 = CHASTE_CONST(0.0001); // dimensionless + const double var_INaCa__gammas = CHASTE_CONST(0.14999999999999999); // dimensionless + const double var_INaK__ibarnak = CHASTE_CONST(2.25); // uA_per_uF + const double var_INaK__kmko = CHASTE_CONST(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_INaK__sigma = -CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * CHASTE_MATH::Exp(CHASTE_CONST(0.01485884101040119) * mParameters[6]); // dimensionless + const double var_INab__GNab = CHASTE_CONST(0.0040000000000000001); // mS_per_uF + const double var_IpCa__ibarpca = CHASTE_CONST(1.1499999999999999); // uA_per_uF + const double var_IpCa__kmpca = CHASTE_CONST(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__kmcsqn = CHASTE_CONST(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 = sqrt(0.25 * pow(var_Irel__bbb, 2) + var_Irel__c) - 0.5 * var_Irel__bbb; // mM + const double var_Irel__Ca_JSR_free = CHASTE_MATH::Sqrt(CHASTE_CONST(0.25) * CHASTE_MATH::Pow(var_Irel__bbb, 2) + var_Irel__c) - CHASTE_CONST(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__tau = CHASTE_CONST(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_Irel__tau_Rel = var_Irel__tau / (1 + CHASTE_CONST(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__kmup = CHASTE_CONST(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__dss0 = 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(1.6025641025641024) - CHASTE_CONST(0.16025641025641024) * var_chaste_interface__cell__V)); // dimensionless + const double var_ICaL__dss1 = 1 / (1 + CHASTE_MATH::Exp(-2500 - CHASTE_CONST(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__fss = 1 / (1 + CHASTE_MATH::Exp(4 + CHASTE_CONST(0.125) * var_chaste_interface__cell__V)) + CHASTE_CONST(0.59999999999999998) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(2.5) - CHASTE_CONST(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 * CHASTE_MATH::Exp(2 * var_Environment__FonRT * var_chaste_interface__cell__V)) * var_Environment__F * var_Environment__FonRT * mParameters[7] * var_chaste_interface__cell__V / (-1 + CHASTE_MATH::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 * CHASTE_MATH::Exp(var_Environment__FonRT * var_chaste_interface__cell__V)) * var_Environment__F * var_Environment__FonRT * var_ICaL__pk * var_chaste_interface__cell__V / (-1 + CHASTE_MATH::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 * CHASTE_MATH::Exp(var_Environment__FonRT * var_chaste_interface__cell__V)) * var_Environment__F * var_Environment__FonRT * var_ICaL__pna * var_chaste_interface__cell__V / (-1 + CHASTE_MATH::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 + (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 = (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_ICaL__taud = CHASTE_CONST(28.571428571428569) * (1 - CHASTE_MATH::Exp(-CHASTE_CONST(1.6025641025641024) - CHASTE_CONST(0.16025641025641024) * var_chaste_interface__cell__V)) * var_ICaL__dss0 / (10 + var_chaste_interface__cell__V); // ms + const double var_ICaL__tauf = 1 / (CHASTE_CONST(0.02) + CHASTE_CONST(0.019699999999999999) * CHASTE_MATH::Exp(-CHASTE_CONST(0.113569) * CHASTE_MATH::Pow((1 + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__cell__V), 2))); // ms + const double var_ICaT__aa = 1 - 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(416.66666666666669) * var_chaste_interface__cell__V)); // dimensionless + const double var_ICaT__bss = 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(1.2962962962962963) - CHASTE_CONST(0.092592592592592587) * var_chaste_interface__cell__V)); // dimensionless + const double var_ICaT__gss = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(10.714285714285715) + CHASTE_CONST(0.17857142857142858) * var_chaste_interface__cell__V)); // dimensionless + const double var_ICaT__taub = CHASTE_CONST(3.7000000000000002) + CHASTE_CONST(6.0999999999999996) / (1 + CHASTE_MATH::Exp(CHASTE_CONST(5.5555555555555554) + CHASTE_CONST(0.22222222222222221) * var_chaste_interface__cell__V)); // ms + const double var_ICaT__taug = 12 - 12 * var_ICaT__aa + (12 - CHASTE_CONST(0.875) * var_chaste_interface__cell__V) * var_ICaT__aa; // ms + const double var_ICab__icab = (-CHASTE_CONST(0.5) * CHASTE_MATH::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 + CHASTE_MATH::Exp(CHASTE_CONST(0.4017857142857143) + CHASTE_CONST(0.044642857142857144) * var_chaste_interface__cell__V)); // dimensionless + const double var_IKr__tauxr = 1 / (CHASTE_CONST(0.00060999999999999997) * (CHASTE_CONST(38.899999999999999) + var_chaste_interface__cell__V) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(5.6404999999999994) + CHASTE_CONST(0.14499999999999999) * var_chaste_interface__cell__V)) + CHASTE_CONST(0.0013799999999999999) * (CHASTE_CONST(14.199999999999999) + var_chaste_interface__cell__V) / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(1.7465999999999999) - CHASTE_CONST(0.123) * var_chaste_interface__cell__V))); // ms + const double var_IKr__xrss = 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.3729411764705883) - CHASTE_CONST(0.23529411764705882) * var_chaste_interface__cell__V)); // dimensionless + const double var_IKs__tauxs = 1 / (CHASTE_CONST(0.00013100000000000001) * (30 + var_chaste_interface__cell__V) / (-1 + CHASTE_MATH::Exp(CHASTE_CONST(2.0609999999999999) + CHASTE_CONST(0.068699999999999997) * var_chaste_interface__cell__V)) + CHASTE_CONST(7.1899999999999999e-5) * (30 + var_chaste_interface__cell__V) / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(4.4399999999999995) - CHASTE_CONST(0.14799999999999999) * var_chaste_interface__cell__V))); // ms + const double var_IKs__xss = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(0.089820359281437126) - CHASTE_CONST(0.059880239520958084) * var_chaste_interface__cell__V)); // dimensionless + const double var_INa__a = 1 - 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(1666.6666666666667) - CHASTE_CONST(41.666666666666664) * var_chaste_interface__cell__V)); // per_ms + const double var_INa__aH = CHASTE_CONST(0.13500000000000001) * var_INa__a * CHASTE_MATH::Exp(-CHASTE_CONST(11.764705882352942) + CHASTE_CONST(0.14705882352941177) * mParameters[10] - CHASTE_CONST(0.14705882352941177) * var_chaste_interface__cell__V); // per_ms + const double var_INa__aj = (CHASTE_CONST(37.780000000000001) + var_chaste_interface__cell__V) * (-127140 * CHASTE_MATH::Exp(CHASTE_CONST(0.24440000000000001) * var_chaste_interface__cell__V - CHASTE_CONST(0.24440000000000001) * mParameters[10]) - CHASTE_CONST(3.4740000000000003e-5) * CHASTE_MATH::Exp(CHASTE_CONST(0.043909999999999998) * mParameters[10] - CHASTE_CONST(0.043909999999999998) * var_chaste_interface__cell__V)) * var_INa__a / (1 + CHASTE_MATH::Exp(CHASTE_CONST(24.640530000000002) + CHASTE_CONST(0.311) * var_chaste_interface__cell__V)); // per_ms + const double var_INa__am = CHASTE_CONST(0.32000000000000001) * (CHASTE_CONST(47.130000000000003) + var_chaste_interface__cell__V) / (1 - CHASTE_MATH::Exp(-CHASTE_CONST(4.7130000000000001) - CHASTE_CONST(0.10000000000000001) * var_chaste_interface__cell__V)); // per_ms + const double var_INa__bH = (CHASTE_CONST(3.5600000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.079000000000000001) * var_chaste_interface__cell__V - CHASTE_CONST(0.079000000000000001) * mParameters[10]) + 310000 * CHASTE_MATH::Exp(CHASTE_CONST(0.34999999999999998) * var_chaste_interface__cell__V - CHASTE_CONST(0.34999999999999998) * mParameters[10])) * var_INa__a + CHASTE_CONST(7.6923076923076916) * (1 - var_INa__a) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.96036036036036043) - CHASTE_CONST(0.0900900900900901) * var_chaste_interface__cell__V)); // per_ms + const double var_INa__H_inf = CHASTE_CONST(0.01) * mParameters[9] + (1 - CHASTE_CONST(0.01) * mParameters[9]) * var_INa__aH / (var_INa__aH + var_INa__bH); // dimensionless + const double var_INa__bj = CHASTE_CONST(0.1212) * var_INa__a * CHASTE_MATH::Exp(CHASTE_CONST(0.01052) * mParameters[10] - CHASTE_CONST(0.01052) * var_chaste_interface__cell__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(5.5312920000000005) - CHASTE_CONST(0.13780000000000001) * var_chaste_interface__cell__V)) + CHASTE_CONST(0.29999999999999999) * (1 - var_INa__a) * CHASTE_MATH::Exp(CHASTE_CONST(2.5349999999999999e-7) * mParameters[10] - CHASTE_CONST(2.5349999999999999e-7) * var_chaste_interface__cell__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(3.2000000000000002) - CHASTE_CONST(0.10000000000000001) * var_chaste_interface__cell__V)); // per_ms + const double var_INa__bm = CHASTE_CONST(0.080000000000000002) * CHASTE_MATH::Exp(-CHASTE_CONST(0.090909090909090912) * var_chaste_interface__cell__V); // per_ms + const double var_INa__j_inf = CHASTE_CONST(0.01) * mParameters[9] + (1 - CHASTE_CONST(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 var_INaCa__inaca = (-CHASTE_MATH::Pow(mParameters[6], 3) * var_Ca__Ca_i + CHASTE_MATH::Pow(var_chaste_interface__Na__Na_i, 3) * mParameters[4] * CHASTE_MATH::Exp(var_Environment__FonRT * var_chaste_interface__cell__V)) * mParameters[13] * CHASTE_MATH::Exp((-1 + var_INaCa__gammas) * var_Environment__FonRT * var_chaste_interface__cell__V) / (1 + (CHASTE_MATH::Pow(mParameters[6], 3) * var_Ca__Ca_i + CHASTE_MATH::Pow(var_chaste_interface__Na__Na_i, 3) * mParameters[4] * CHASTE_MATH::Exp(var_Environment__FonRT * var_chaste_interface__cell__V)) * var_INaCa__c2 * CHASTE_MATH::Exp((-1 + var_INaCa__gammas) * var_Environment__FonRT * var_chaste_interface__cell__V)); // uA_per_uF + const double var_INaK__fnak = 1 / (1 + CHASTE_CONST(0.1245) * CHASTE_MATH::Exp(-CHASTE_CONST(0.10000000000000001) * var_Environment__FonRT * var_chaste_interface__cell__V) + CHASTE_CONST(0.036499999999999998) * var_INaK__sigma * CHASTE_MATH::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 + CHASTE_MATH::Pow(var_INaK__kmnai, 2) / CHASTE_MATH::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 + CHASTE_MATH::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__i_Stim_converted = CHASTE_STIM(var_chaste_interface__Environment__time); // uA_per_cm2 + const double var_cell__i_Stim = var_cell__i_Stim_converted / CHASTE_CAP(); // uA_per_uF + const double var_cell__l = CHASTE_CONST(0.01); // cm + const double var_cell__ra = CHASTE_CONST(0.0011000000000000001); // cm + const double var_cell__ageo = 2 * CHASTE_CONST(CHASTE_MATH::Pi) * CHASTE_MATH::Pow(var_cell__ra, 2) + 2 * CHASTE_CONST(CHASTE_MATH::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 var_cell__vcell = 1000 * CHASTE_CONST(CHASTE_MATH::Pi) * CHASTE_MATH::Pow(var_cell__ra, 2) * var_cell__l; // uL + const double var_cell__vjsr = CHASTE_CONST(0.0047999999999999996) * var_cell__vcell; // uL + const double var_cell__vmyo = CHASTE_CONST(0.68000000000000005) * var_cell__vcell; // uL + const double var_cell__vnsr = CHASTE_CONST(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_reversal_potentials__ECa = CHASTE_CONST(0.5) * CHASTE_MATH::Log(mParameters[4] / var_Ca__Ca_i) / var_Environment__FonRT; // mV + const double var_ICaT__icat = CHASTE_MATH::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 = (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 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 - CHASTE_CONST(0.5) * var_cell__AF * var_cell__caiont / var_cell__vmyo; // mM / ms + const double var_reversal_potentials__EK = CHASTE_MATH::Log(mParameters[5] / var_chaste_interface__K__K_i) / var_Environment__FonRT; // mV + const double var_IK1__ak1 = CHASTE_CONST(1.02) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__cell__V - CHASTE_CONST(0.23849999999999999) * var_reversal_potentials__EK)); // per_ms + const double var_IK1__bk1 = (CHASTE_MATH::Exp(-CHASTE_CONST(36.698642499999998) + CHASTE_CONST(0.061749999999999999) * var_chaste_interface__cell__V - CHASTE_CONST(0.061749999999999999) * var_reversal_potentials__EK) + CHASTE_CONST(0.49124000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.43983232) + CHASTE_CONST(0.080320000000000003) * var_chaste_interface__cell__V - CHASTE_CONST(0.080320000000000003) * var_reversal_potentials__EK)) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.4444678999999998) + CHASTE_CONST(0.51429999999999998) * var_reversal_potentials__EK - CHASTE_CONST(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_IKp__ikp = (-var_reversal_potentials__EK + var_chaste_interface__cell__V) * var_IKp__GKpmax / (1 + CHASTE_MATH::Exp(CHASTE_CONST(1.2521739130434781) - CHASTE_CONST(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_reversal_potentials__ENa = CHASTE_MATH::Log(mParameters[6] / var_chaste_interface__Na__Na_i) / var_Environment__FonRT; // mV + const double var_INa__ina = CHASTE_MATH::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_reversal_potentials__prnak = CHASTE_CONST(0.018329999999999999); // dimensionless + const double var_reversal_potentials__EKs = CHASTE_MATH::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 @@ -462,7 +464,7 @@ { // Inputs: // Time units: millisecond - double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? CHASTE_THIS(mFixedVoltage) : rY[0]); // Units: mV; Initial value: -89.4356034692784 double var_chaste_interface__INa__H = rY[1]; // Units: dimensionless; Initial value: 0.994401369032678 @@ -488,58 +490,58 @@ // 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__cmdnbar = CHASTE_CONST(0.050000000000000003); // mM + const double var_Ca__kmcmdn = CHASTE_CONST(0.0023800000000000002); // mM + const double var_Ca__kmtrpn = CHASTE_CONST(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__trpnbar = CHASTE_CONST(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_Ca__Ca_i = -CHASTE_CONST(0.33333333333333331) * var_Ca__bmyo + CHASTE_CONST(1.1547005383792515) * CHASTE_MATH::Sqrt(-var_Ca__cmyo + CHASTE_CONST(0.33333333333333331) * CHASTE_MATH::Pow(var_Ca__bmyo, 2)) * CHASTE_MATH::Cos(CHASTE_CONST(0.33333333333333331) * CHASTE_MATH::Acos(CHASTE_CONST(0.096225044864937631) * CHASTE_MATH::Pow((-var_Ca__cmyo + CHASTE_CONST(0.33333333333333331) * CHASTE_MATH::Pow(var_Ca__bmyo, 2)), (-CHASTE_CONST(1.5))) * (-2 * CHASTE_MATH::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__gacao = CHASTE_CONST(0.34100000000000003); // dimensionless + const double var_ICaL__kmca = CHASTE_CONST(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_IK1__GK1max = CHASTE_CONST(0.75); // mS_per_uF + const double var_IK1__GK1_ = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::Sqrt(mParameters[5]) * var_IK1__GK1max; // mS_per_uF + const double var_IKr__gkr = CHASTE_CONST(0.43033148291193518) * CHASTE_MATH::Sqrt(mParameters[5]) * mParameters[11]; // mS_per_uF + const double var_IKs__gks = (1 + CHASTE_CONST(0.59999999999999998) / (1 + CHASTE_CONST(6.4818210260626455e-7) * CHASTE_MATH::Pow((1 / var_Ca__Ca_i), CHASTE_CONST(1.3999999999999999)))) * mParameters[12]; // mS_per_uF + const double var_INaCa__c2 = CHASTE_CONST(0.0001); // dimensionless + const double var_INaCa__gammas = CHASTE_CONST(0.14999999999999999); // dimensionless + const double var_ICaL__ibarca = 4 * (-mParameters[4] * var_ICaL__gacao + var_Ca__Ca_i * var_ICaL__gacai * CHASTE_MATH::Exp(2 * var_Environment__FonRT * var_chaste_interface__cell__V)) * var_Environment__F * var_Environment__FonRT * mParameters[7] * var_chaste_interface__cell__V / (-1 + CHASTE_MATH::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 = (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_ICaL__ilca_converted = CHASTE_CAP() * var_ICaL__ilca; // uA_per_cm2 + const double var_ICaL__tauf = 1 / (CHASTE_CONST(0.02) + CHASTE_CONST(0.019699999999999999) * CHASTE_MATH::Exp(-CHASTE_CONST(0.113569) * CHASTE_MATH::Pow((1 + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__cell__V), 2))); // ms + const double var_IKr__r = 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(0.4017857142857143) + CHASTE_CONST(0.044642857142857144) * var_chaste_interface__cell__V)); // dimensionless + const double var_INa__a = 1 - 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(1666.6666666666667) - CHASTE_CONST(41.666666666666664) * var_chaste_interface__cell__V)); // per_ms + const double var_INa__aH = CHASTE_CONST(0.13500000000000001) * var_INa__a * CHASTE_MATH::Exp(-CHASTE_CONST(11.764705882352942) + CHASTE_CONST(0.14705882352941177) * mParameters[10] - CHASTE_CONST(0.14705882352941177) * var_chaste_interface__cell__V); // per_ms + const double var_INa__aj = (CHASTE_CONST(37.780000000000001) + var_chaste_interface__cell__V) * (-127140 * CHASTE_MATH::Exp(CHASTE_CONST(0.24440000000000001) * var_chaste_interface__cell__V - CHASTE_CONST(0.24440000000000001) * mParameters[10]) - CHASTE_CONST(3.4740000000000003e-5) * CHASTE_MATH::Exp(CHASTE_CONST(0.043909999999999998) * mParameters[10] - CHASTE_CONST(0.043909999999999998) * var_chaste_interface__cell__V)) * var_INa__a / (1 + CHASTE_MATH::Exp(CHASTE_CONST(24.640530000000002) + CHASTE_CONST(0.311) * var_chaste_interface__cell__V)); // per_ms + const double var_INa__bH = (CHASTE_CONST(3.5600000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.079000000000000001) * var_chaste_interface__cell__V - CHASTE_CONST(0.079000000000000001) * mParameters[10]) + 310000 * CHASTE_MATH::Exp(CHASTE_CONST(0.34999999999999998) * var_chaste_interface__cell__V - CHASTE_CONST(0.34999999999999998) * mParameters[10])) * var_INa__a + CHASTE_CONST(7.6923076923076916) * (1 - var_INa__a) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(0.96036036036036043) - CHASTE_CONST(0.0900900900900901) * var_chaste_interface__cell__V)); // per_ms + const double var_INa__bj = CHASTE_CONST(0.1212) * var_INa__a * CHASTE_MATH::Exp(CHASTE_CONST(0.01052) * mParameters[10] - CHASTE_CONST(0.01052) * var_chaste_interface__cell__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(5.5312920000000005) - CHASTE_CONST(0.13780000000000001) * var_chaste_interface__cell__V)) + CHASTE_CONST(0.29999999999999999) * (1 - var_INa__a) * CHASTE_MATH::Exp(CHASTE_CONST(2.5349999999999999e-7) * mParameters[10] - CHASTE_CONST(2.5349999999999999e-7) * var_chaste_interface__cell__V) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(3.2000000000000002) - CHASTE_CONST(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 = (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_INaCa__inaca = (-CHASTE_MATH::Pow(mParameters[6], 3) * var_Ca__Ca_i + CHASTE_MATH::Pow(var_chaste_interface__Na__Na_i, 3) * mParameters[4] * CHASTE_MATH::Exp(var_Environment__FonRT * var_chaste_interface__cell__V)) * mParameters[13] * CHASTE_MATH::Exp((-1 + var_INaCa__gammas) * var_Environment__FonRT * var_chaste_interface__cell__V) / (1 + (CHASTE_MATH::Pow(mParameters[6], 3) * var_Ca__Ca_i + CHASTE_MATH::Pow(var_chaste_interface__Na__Na_i, 3) * mParameters[4] * CHASTE_MATH::Exp(var_Environment__FonRT * var_chaste_interface__cell__V)) * var_INaCa__c2 * CHASTE_MATH::Exp((-1 + var_INaCa__gammas) * var_Environment__FonRT * var_chaste_interface__cell__V)); // uA_per_uF + const double var_INaCa__inaca_converted = CHASTE_CAP() * var_INaCa__inaca; // uA_per_cm2 + const double var_cell__i_Stim_converted = CHASTE_STIM(var_chaste_interface__Environment__time); // uA_per_cm2 + const double var_reversal_potentials__EK = CHASTE_MATH::Log(mParameters[5] / var_chaste_interface__K__K_i) / var_Environment__FonRT; // mV + const double var_IK1__ak1 = CHASTE_CONST(1.02) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(14.1227775) + CHASTE_CONST(0.23849999999999999) * var_chaste_interface__cell__V - CHASTE_CONST(0.23849999999999999) * var_reversal_potentials__EK)); // per_ms + const double var_IK1__bk1 = (CHASTE_MATH::Exp(-CHASTE_CONST(36.698642499999998) + CHASTE_CONST(0.061749999999999999) * var_chaste_interface__cell__V - CHASTE_CONST(0.061749999999999999) * var_reversal_potentials__EK) + CHASTE_CONST(0.49124000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.43983232) + CHASTE_CONST(0.080320000000000003) * var_chaste_interface__cell__V - CHASTE_CONST(0.080320000000000003) * var_reversal_potentials__EK)) / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.4444678999999998) + CHASTE_CONST(0.51429999999999998) * var_reversal_potentials__EK - CHASTE_CONST(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_IK1__IK1_converted = CHASTE_CAP() * 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_IKr__ikr_converted = CHASTE_CAP() * var_IKr__ikr; // uA_per_cm2 + const double var_reversal_potentials__ENa = CHASTE_MATH::Log(mParameters[6] / var_chaste_interface__Na__Na_i) / var_Environment__FonRT; // mV + const double var_INa__ina = CHASTE_MATH::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 = CHASTE_CAP() * var_INa__ina; // uA_per_cm2 + const double var_reversal_potentials__prnak = CHASTE_CONST(0.018329999999999999); // dimensionless + const double var_reversal_potentials__EKs = CHASTE_MATH::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 + const double var_IKs__iks_converted = CHASTE_CAP() * var_IKs__iks; // uA_per_cm2 std::vector dqs(16); dqs[0] = var_Ca__Ca_i; diff --git a/chaste_codegen/data/tests/chaste_reference_models/RL/dynamic_livshitz_rudy_2007.hpp b/chaste_codegen/data/tests/chaste_reference_models/RL/dynamic_livshitz_rudy_2007.hpp index 9b9971f27..227d6b3a2 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/RL/dynamic_livshitz_rudy_2007.hpp +++ b/chaste_codegen/data/tests/chaste_reference_models/RL/dynamic_livshitz_rudy_2007.hpp @@ -17,6 +17,9 @@ #include #include "AbstractDynamicallyLoadableEntity.hpp" #include "AbstractStimulusFunction.hpp" +#if USING_DEVICE_COMPILER +#include "StimulusEvaluatorCuda.hpp" +#endif #include "AbstractRushLarsenCardiacCell.hpp" class Dynamiclivshitz_rudy_2007FromCellMLRushLarsen : public AbstractRushLarsenCardiacCell, public AbstractDynamicallyLoadableEntity diff --git a/chaste_codegen/data/tests/chaste_reference_models/RL/hodgkin_huxley_squid_axon_model_1952_modified.cpp b/chaste_codegen/data/tests/chaste_reference_models/RL/hodgkin_huxley_squid_axon_model_1952_modified.cpp index 063bcd9eb..f48decd5c 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/RL/hodgkin_huxley_squid_axon_model_1952_modified.cpp +++ b/chaste_codegen/data/tests/chaste_reference_models/RL/hodgkin_huxley_squid_axon_model_1952_modified.cpp @@ -21,6 +21,8 @@ #include "HeartConfig.hpp" #include "IsNan.hpp" #include "MathsCustomFunctions.hpp" +#include "ChasteMathDeviceNamespaces.hpp" +#include "ChasteCpuMacros.hpp" @@ -30,7 +32,7 @@ { // 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_duration = CHASTE_CONST(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( @@ -59,7 +61,7 @@ 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[2] = CHASTE_CONST(0.29999999999999999); // (var_leakage_current__g_L) [milliS_per_cm2] this->mParameters[3] = 36; // (var_potassium_channel__g_K) [milliS_per_cm2] } @@ -107,7 +109,7 @@ // 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -117,12 +119,12 @@ // 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__E_L = CHASTE_CONST(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_potassium_channel__i_K = CHASTE_MATH::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_sodium_channel__i_Na = CHASTE_MATH::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; @@ -133,7 +135,7 @@ 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]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -144,20 +146,20 @@ // 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__B = -CHASTE_CONST(0.10000000000000001); // per_millivolt + const double var_potassium_channel_n_gate__A = -CHASTE_CONST(0.01) / var_potassium_channel_n_gate__B; // per_millisecond + const double var_potassium_channel_n_gate__beta_n = CHASTE_CONST(0.125) * CHASTE_MATH::Exp(CHASTE_CONST(0.9375) + CHASTE_CONST(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_potassium_channel_n_gate__alpha_n = (((var_potassium_channel_n_gate__U >= -CHASTE_CONST(9.9999999999999995e-8)) && (var_potassium_channel_n_gate__U <= CHASTE_CONST(9.9999999999999995e-8))) ? ((1 - CHASTE_CONST(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 + CHASTE_MATH::Exp(var_potassium_channel_n_gate__U)))); // per_millisecond + const double var_sodium_channel_h_gate__alpha_h = CHASTE_CONST(0.070000000000000007) * CHASTE_MATH::Exp(-CHASTE_CONST(3.75) - CHASTE_CONST(0.050000000000000003) * var_chaste_interface__membrane__V); // per_millisecond + const double var_sodium_channel_h_gate__beta_h = 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(4.5) - CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V)); // per_millisecond + const double var_sodium_channel_m_gate__B = -CHASTE_CONST(0.10000000000000001); // per_millivolt + const double var_sodium_channel_m_gate__A = -CHASTE_CONST(0.10000000000000001) / var_sodium_channel_m_gate__B; // per_millisecond + const double var_sodium_channel_m_gate__beta_m = 4 * CHASTE_MATH::Exp(-CHASTE_CONST(4.166666666666667) - CHASTE_CONST(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 var_sodium_channel_m_gate__alpha_m = (((var_sodium_channel_m_gate__U >= -CHASTE_CONST(9.9999999999999995e-8)) && (var_sodium_channel_m_gate__U <= CHASTE_CONST(9.9999999999999995e-8))) ? ((1 - CHASTE_CONST(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 + CHASTE_MATH::Exp(var_sodium_channel_m_gate__U)))); // per_millisecond if (mSetVoltageDerivativeToZero) { @@ -166,13 +168,13 @@ 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__E_L = CHASTE_CONST(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_membrane__i_Stim = CHASTE_STIM(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_potassium_channel__i_K = CHASTE_MATH::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_sodium_channel__i_Na = CHASTE_MATH::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 } @@ -209,7 +211,7 @@ { // Inputs: // Time units: millisecond - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -220,13 +222,13 @@ // 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__E_L = CHASTE_CONST(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_membrane__i_Stim = CHASTE_STIM(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_potassium_channel__i_K = CHASTE_MATH::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_sodium_channel__i_Na = CHASTE_MATH::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; diff --git a/chaste_codegen/data/tests/chaste_reference_models/RL/hodgkin_huxley_squid_axon_model_1952_modified.hpp b/chaste_codegen/data/tests/chaste_reference_models/RL/hodgkin_huxley_squid_axon_model_1952_modified.hpp index 93d2b4a7d..29ef54664 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/RL/hodgkin_huxley_squid_axon_model_1952_modified.hpp +++ b/chaste_codegen/data/tests/chaste_reference_models/RL/hodgkin_huxley_squid_axon_model_1952_modified.hpp @@ -16,6 +16,9 @@ #include "ChasteSerialization.hpp" #include #include "AbstractStimulusFunction.hpp" +#if USING_DEVICE_COMPILER +#include "StimulusEvaluatorCuda.hpp" +#endif #include "AbstractRushLarsenCardiacCell.hpp" class Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLRushLarsen : public AbstractRushLarsenCardiacCell diff --git a/chaste_codegen/data/tests/chaste_reference_models/RLopt/dynamic_bondarenko_szigeti_bett_kim_rasmusson_2004_apical.cpp b/chaste_codegen/data/tests/chaste_reference_models/RLopt/dynamic_bondarenko_szigeti_bett_kim_rasmusson_2004_apical.cpp index 2f0b9d76f..4da72058b 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/RLopt/dynamic_bondarenko_szigeti_bett_kim_rasmusson_2004_apical.cpp +++ b/chaste_codegen/data/tests/chaste_reference_models/RLopt/dynamic_bondarenko_szigeti_bett_kim_rasmusson_2004_apical.cpp @@ -21,6 +21,8 @@ #include "HeartConfig.hpp" #include "IsNan.hpp" #include "MathsCustomFunctions.hpp" +#include "ChasteMathDeviceNamespaces.hpp" +#include "ChasteCpuMacros.hpp" #include "ModelFactory.hpp" @@ -149,7 +151,7 @@ class Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLars for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 1 + exp(5.9871794871794881 - 0.12820512820512822 * var_chaste_interface__membrane__V); + return 1 + CHASTE_MATH::Exp(CHASTE_CONST(5.9871794871794881) - CHASTE_CONST(0.12820512820512822) * 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); @@ -160,7 +162,7 @@ class Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLars for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return exp(0.013632298072467722 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(CHASTE_CONST(0.013632298072467722) * 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); @@ -171,7 +173,7 @@ class Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLars for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return exp(-0.025317124991725771 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(-CHASTE_CONST(0.025317124991725771) * 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); @@ -182,7 +184,7 @@ class Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLars for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 1 + 0.10000000000000001 * exp(-0.025317124991725771 * var_chaste_interface__membrane__V); + return 1 + CHASTE_CONST(0.10000000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(0.025317124991725771) * 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); @@ -193,7 +195,7 @@ class Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLars for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return exp(-0.038949423064193495 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(-CHASTE_CONST(0.038949423064193495) * 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); @@ -204,7 +206,7 @@ class Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLars for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 0.1245 * exp(-0.0038949423064193493 * var_chaste_interface__membrane__V); + return CHASTE_CONST(0.1245) * CHASTE_MATH::Exp(-CHASTE_CONST(0.0038949423064193493) * 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); @@ -215,7 +217,7 @@ class Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLars for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 13 - 13 * exp(-2.1025 * pow((1 + 0.068965517241379309 * var_chaste_interface__membrane__V), 2)); + return 13 - 13 * CHASTE_MATH::Exp(-CHASTE_CONST(2.1025) * CHASTE_MATH::Pow((1 + CHASTE_CONST(0.068965517241379309) * var_chaste_interface__membrane__V), 2)); }; const double var_chaste_interface__membrane__V = mTableMins[0] + i*mTableSteps[0]; double val = f(var_chaste_interface__membrane__V); @@ -226,7 +228,7 @@ class Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLars for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 0.40000000000000002 * (1 + 0.69999999999999996 * exp(-160 * pow((1 + 0.025000000000000001 * var_chaste_interface__membrane__V), 2)) - 0.75 * exp(-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)); + return CHASTE_CONST(0.40000000000000002) * (1 + CHASTE_CONST(0.69999999999999996) * CHASTE_MATH::Exp(-160 * CHASTE_MATH::Pow((1 + CHASTE_CONST(0.025000000000000001) * var_chaste_interface__membrane__V), 2)) - CHASTE_CONST(0.75) * CHASTE_MATH::Exp(-CHASTE_MATH::Pow((1 + CHASTE_CONST(0.050000000000000003) * var_chaste_interface__membrane__V), 2))) * CHASTE_MATH::Exp(CHASTE_CONST(1.2) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V) / (1 + CHASTE_CONST(0.12) * CHASTE_MATH::Exp(CHASTE_CONST(1.2) + CHASTE_CONST(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); @@ -237,7 +239,7 @@ class Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLars for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 0.050000000000000003 * exp(-0.92307692307692313 - 0.076923076923076927 * var_chaste_interface__membrane__V); + return CHASTE_CONST(0.050000000000000003) * CHASTE_MATH::Exp(-CHASTE_CONST(0.92307692307692313) - CHASTE_CONST(0.076923076923076927) * 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); @@ -248,7 +250,7 @@ class Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLars for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return exp(-0.038580246913580245 * pow((-1 + 0.20000000000000001 * var_chaste_interface__membrane__V), 2)); + return CHASTE_MATH::Exp(-CHASTE_CONST(0.038580246913580245) * CHASTE_MATH::Pow((-1 + CHASTE_CONST(0.20000000000000001) * var_chaste_interface__membrane__V), 2)); }; const double var_chaste_interface__membrane__V = mTableMins[0] + i*mTableSteps[0]; double val = f(var_chaste_interface__membrane__V); @@ -259,7 +261,7 @@ class Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLars for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 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)); + return CHASTE_CONST(3.802) / (CHASTE_CONST(0.20000000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(0.016666666666666666) - CHASTE_CONST(0.0066666666666666671) * var_chaste_interface__membrane__V) + CHASTE_CONST(0.1027) * CHASTE_MATH::Exp(-CHASTE_CONST(0.14705882352941177) - CHASTE_CONST(0.058823529411764705) * 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); @@ -270,7 +272,7 @@ class Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLars for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 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)); + return CHASTE_CONST(3.802) / (CHASTE_CONST(0.1027) * CHASTE_MATH::Exp(-CHASTE_CONST(0.16666666666666666) - CHASTE_CONST(0.066666666666666666) * var_chaste_interface__membrane__V) + CHASTE_CONST(0.23000000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(0.016666666666666666) - CHASTE_CONST(0.0066666666666666671) * 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); @@ -281,7 +283,7 @@ class Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLars for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 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)); + return CHASTE_CONST(3.802) / (CHASTE_CONST(0.25) * CHASTE_MATH::Exp(-CHASTE_CONST(0.016666666666666666) - CHASTE_CONST(0.0066666666666666671) * var_chaste_interface__membrane__V) + CHASTE_CONST(0.1027) * CHASTE_MATH::Exp(-CHASTE_CONST(0.20833333333333334) - CHASTE_CONST(0.083333333333333329) * 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); @@ -292,7 +294,7 @@ class Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLars for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 6.9999999999999997e-7 * exp(-0.90909090909090906 - 0.12987012987012986 * var_chaste_interface__membrane__V); + return CHASTE_CONST(6.9999999999999997e-7) * CHASTE_MATH::Exp(-CHASTE_CONST(0.90909090909090906) - CHASTE_CONST(0.12987012987012986) * 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); @@ -303,7 +305,7 @@ class Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLars for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 0.19170000000000001 * exp(-0.12315270935960591 - 0.04926108374384236 * var_chaste_interface__membrane__V); + return CHASTE_CONST(0.19170000000000001) * CHASTE_MATH::Exp(-CHASTE_CONST(0.12315270935960591) - CHASTE_CONST(0.04926108374384236) * 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); @@ -314,7 +316,7 @@ class Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLars for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 0.20000000000000001 * exp(0.12315270935960591 - 0.04926108374384236 * var_chaste_interface__membrane__V); + return CHASTE_CONST(0.20000000000000001) * CHASTE_MATH::Exp(CHASTE_CONST(0.12315270935960591) - CHASTE_CONST(0.04926108374384236) * 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); @@ -325,7 +327,7 @@ class Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLars for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 0.22 * exp(0.36945812807881773 - 0.04926108374384236 * var_chaste_interface__membrane__V); + return CHASTE_CONST(0.22) * CHASTE_MATH::Exp(CHASTE_CONST(0.36945812807881773) - CHASTE_CONST(0.04926108374384236) * 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); @@ -336,7 +338,7 @@ class Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLars for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return exp(1.0731000000000002 + 0.035770000000000003 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(CHASTE_CONST(1.0731000000000002) + CHASTE_CONST(0.035770000000000003) * 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); @@ -347,7 +349,7 @@ class Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLars for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return exp(-1.8711 - 0.062370000000000002 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(-CHASTE_CONST(1.8711) - CHASTE_CONST(0.062370000000000002) * 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); @@ -358,7 +360,7 @@ class Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLars for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 1 + 0.0067083000000000004 * exp(-4.7857142857142856 - 0.14285714285714285 * var_chaste_interface__membrane__V); + return 1 + CHASTE_CONST(0.0067083000000000004) * CHASTE_MATH::Exp(-CHASTE_CONST(4.7857142857142856) - CHASTE_CONST(0.14285714285714285) * 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); @@ -369,7 +371,7 @@ class Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLars for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return exp(-1.9285714285714286 - 0.14285714285714285 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(-CHASTE_CONST(1.9285714285714286) - CHASTE_CONST(0.14285714285714285) * 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 +382,7 @@ class Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLars for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 1 + 0.051334999999999999 * exp(4.7857142857142856 + 0.14285714285714285 * var_chaste_interface__membrane__V); + return 1 + CHASTE_CONST(0.051334999999999999) * CHASTE_MATH::Exp(CHASTE_CONST(4.7857142857142856) + CHASTE_CONST(0.14285714285714285) * 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); @@ -391,7 +393,7 @@ class Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLars for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return exp(4.7857142857142856 + 0.14285714285714285 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(CHASTE_CONST(4.7857142857142856) + CHASTE_CONST(0.14285714285714285) * 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); @@ -402,7 +404,7 @@ class Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLars for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 0.013733 * exp(0.038198000000000003 * var_chaste_interface__membrane__V); + return CHASTE_CONST(0.013733) * CHASTE_MATH::Exp(CHASTE_CONST(0.038198000000000003) * 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); @@ -413,7 +415,7 @@ class Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLars for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 0.090820999999999999 * exp(0.11695499999999999 + 0.023390999999999999 * var_chaste_interface__membrane__V); + return CHASTE_CONST(0.090820999999999999) * CHASTE_MATH::Exp(CHASTE_CONST(0.11695499999999999) + CHASTE_CONST(0.023390999999999999) * 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); @@ -424,7 +426,7 @@ class Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLars for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 6.8899999999999994e-5 * exp(-0.041779999999999998 * var_chaste_interface__membrane__V); + return CHASTE_CONST(6.8899999999999994e-5) * CHASTE_MATH::Exp(-CHASTE_CONST(0.041779999999999998) * 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); @@ -435,7 +437,7 @@ class Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLars for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 0.0064970000000000002 * exp(-0.16339999999999999 - 0.032680000000000001 * var_chaste_interface__membrane__V); + return CHASTE_CONST(0.0064970000000000002) * CHASTE_MATH::Exp(-CHASTE_CONST(0.16339999999999999) - CHASTE_CONST(0.032680000000000001) * 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); @@ -446,7 +448,7 @@ class Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLars for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return exp(0.01176 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(CHASTE_CONST(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); @@ -457,7 +459,7 @@ class Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLars for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return exp(-0.063100000000000003 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(-CHASTE_CONST(0.063100000000000003) * 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); @@ -468,7 +470,7 @@ class Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLars for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return exp(-1.0069999999999999 - 0.037999999999999999 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(-CHASTE_CONST(1.0069999999999999) - CHASTE_CONST(0.037999999999999999) * 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); @@ -479,7 +481,7 @@ class Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLars for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 1 - exp(-3.3919999999999999 - 0.128 * var_chaste_interface__membrane__V); + return 1 - CHASTE_MATH::Exp(-CHASTE_CONST(3.3919999999999999) - CHASTE_CONST(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); @@ -490,7 +492,7 @@ class Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLars for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 1 / (1 + exp(-2.9220779220779218 - 0.12987012987012986 * var_chaste_interface__membrane__V)); + return 1 / (1 + CHASTE_MATH::Exp(-CHASTE_CONST(2.9220779220779218) - CHASTE_CONST(0.12987012987012986) * 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); @@ -501,7 +503,7 @@ class Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLars for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 13.17 + 39.299999999999997 * exp(-0.086199999999999999 * var_chaste_interface__membrane__V); + return CHASTE_CONST(13.17) + CHASTE_CONST(39.299999999999997) * CHASTE_MATH::Exp(-CHASTE_CONST(0.086199999999999999) * 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); @@ -512,7 +514,7 @@ class Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLars for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 1 / (1 + exp(7.9298245614035094 + 0.17543859649122806 * var_chaste_interface__membrane__V)); + return 1 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(7.9298245614035094) + CHASTE_CONST(0.17543859649122806) * 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); @@ -523,7 +525,7 @@ class Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLars for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 2.0579999999999998 + 0.49299999999999999 * exp(-0.062899999999999998 * var_chaste_interface__membrane__V); + return CHASTE_CONST(2.0579999999999998) + CHASTE_CONST(0.49299999999999999) * CHASTE_MATH::Exp(-CHASTE_CONST(0.062899999999999998) * 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); @@ -534,7 +536,7 @@ class Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLars for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 270 + 1050 / (1 + exp(7.9298245614035094 + 0.17543859649122806 * var_chaste_interface__membrane__V)); + return 270 + 1050 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(7.9298245614035094) + CHASTE_CONST(0.17543859649122806) * 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); @@ -545,7 +547,7 @@ class Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLars for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 1200 - 170 / (1 + exp(7.9298245614035094 + 0.17543859649122806 * var_chaste_interface__membrane__V)); + return 1200 - 170 / (1 + CHASTE_MATH::Exp(CHASTE_CONST(7.9298245614035094) + CHASTE_CONST(0.17543859649122806) * 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); @@ -578,9 +580,9 @@ std::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_amplitude_converted = -80 * CHASTE_CAP(); // uA_per_cm2 + const double var_chaste_interface__membrane__stim_duration = CHASTE_CONST(0.5); // millisecond + const double var_chaste_interface__membrane__stim_period = CHASTE_CONST(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), @@ -609,23 +611,23 @@ std::shared_ptrmHasDefaultStimulusFromCellML = 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[0] = CHASTE_CONST(1.7399999999999999e-5); // (var_calcium_fluxes__v2) [per_millisecond] + this->mParameters[1] = CHASTE_CONST(4.5); // (var_calcium_fluxes__v1) [per_millisecond] + this->mParameters[2] = CHASTE_CONST(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[7] = CHASTE_CONST(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] + this->mParameters[11] = CHASTE_CONST(0.29380000000000001); // (var_time_independent_potassium_current__g_K1) [milliS_per_microF] + this->mParameters[12] = CHASTE_CONST(0.050000000000000003); // (var_non_inactivating_steady_state_potassium_current__g_Kss) [milliS_per_microF] + this->mParameters[13] = CHASTE_CONST(0.078); // (var_rapid_delayed_rectifier_potassium_current__g_Kr) [milliS_per_microF] + this->mParameters[14] = CHASTE_CONST(0.0057499999999999999); // (var_slow_delayed_rectifier_potassium_current__g_Ks) [milliS_per_microF] + this->mParameters[15] = CHASTE_CONST(292.80000000000001); // (var_sodium_calcium_exchange_current__k_NaCa) [picoA_per_picoF] + this->mParameters[16] = CHASTE_CONST(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() @@ -676,7 +678,7 @@ std::shared_ptr& rY = *pStateVariables; - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -714,24 +716,24 @@ std::shared_ptrIndexTable0(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 = 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_pump_current__i_pCa = CHASTE_MATH::Pow(var_calcium_concentration__Cai, 2) / (CHASTE_CONST(0.25) + CHASTE_MATH::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) * CHASTE_CAP() * var_chaste_interface__L_type_calcium_current__O * mParameters[7]; // uA_per_cm2 const double var_calcium_activated_chloride_current__i_ClCa = 2 * (40 + var_chaste_interface__membrane__V) * var_calcium_concentration__Cai / ((_lt_0_row[0]) * (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_calcium_background_current__i_Cab = CHASTE_CONST(0.00036699999999999998) * var_chaste_interface__membrane__V - CHASTE_CONST(0.0047112379481865285) * CHASTE_MATH::Log(mParameters[4] / var_calcium_concentration__Cai); // picoA_per_picoF + const double var_fast_transient_outward_potassium_current__E_K = CHASTE_CONST(25.674321243523316) * CHASTE_MATH::Log(mParameters[5] / var_chaste_interface__potassium_concentration__Ki); // millivolt + const double var_fast_transient_outward_potassium_current__i_Kto_f_converted = CHASTE_MATH::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) * CHASTE_CAP() * 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) * CHASTE_CAP() * 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 = CHASTE_MATH::Pow(var_chaste_interface__slow_delayed_rectifier_potassium_current__nKs, 2) * (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * CHASTE_CAP() * 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((mParameters[6] + 0.1111111111111111 * mParameters[5]) / (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((mParameters[5] + 0.020408163265306124 * mParameters[6]) / (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 = (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] / ((_lt_0_row[3]) * (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 var_fast_sodium_current__E_Na = CHASTE_CONST(25.674321243523316) * CHASTE_MATH::Log((mParameters[6] + CHASTE_CONST(0.1111111111111111) * mParameters[5]) / (var_chaste_interface__sodium_concentration__Nai + CHASTE_CONST(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) * CHASTE_CAP() * var_chaste_interface__fast_sodium_current__O_Na * mParameters[9]; // uA_per_cm2 + const double var_rapid_delayed_rectifier_potassium_current__i_Kr_converted = (-CHASTE_CONST(25.674321243523316) * CHASTE_MATH::Log((mParameters[5] + CHASTE_CONST(0.020408163265306124) * mParameters[6]) / (var_chaste_interface__potassium_concentration__Ki + CHASTE_CONST(0.020408163265306124) * var_chaste_interface__sodium_concentration__Nai)) + var_chaste_interface__membrane__V) * CHASTE_CAP() * var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K * mParameters[13]; // uA_per_cm2 + const double var_sodium_background_current__i_Nab = CHASTE_CONST(0.0025999999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(0.0025999999999999999) * var_fast_sodium_current__E_Na; // picoA_per_picoF + const double var_sodium_calcium_exchange_current__i_NaCa_converted = (CHASTE_MATH::Pow(var_chaste_interface__sodium_concentration__Nai, 3) * mParameters[4] * _lt_0_row[1] - CHASTE_MATH::Pow(mParameters[6], 3) * var_calcium_concentration__Cai * _lt_0_row[2]) * CHASTE_CAP() * mParameters[15] / ((_lt_0_row[3]) * (1380 + mParameters[4]) * (CHASTE_CONST(669921875000000.0) + CHASTE_MATH::Pow(mParameters[6], 3))); // uA_per_cm2 + const double var_sodium_potassium_pump_current__i_NaK = CHASTE_CONST(0.88) * mParameters[5] / ((1 + CHASTE_CONST(3043189.1166997822) * CHASTE_MATH::Pow((1 / var_chaste_interface__sodium_concentration__Nai), CHASTE_CONST(1.5))) * (1500 + mParameters[5]) * (1 + _lt_0_row[5] + CHASTE_CONST(0.036499999999999998) * (-CHASTE_CONST(0.14285714285714285) + CHASTE_CONST(0.14285714285714285) * CHASTE_MATH::Exp(CHASTE_CONST(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) * CHASTE_CAP() * mParameters[5] * mParameters[11] / ((1 + CHASTE_MATH::Exp(CHASTE_CONST(0.089599999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(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 = CHASTE_CONST(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 = CHASTE_CAP() * var_calcium_activated_chloride_current__i_ClCa + CHASTE_CAP() * var_calcium_background_current__i_Cab + CHASTE_CAP() * var_calcium_pump_current__i_pCa + CHASTE_CAP() * var_slow_transient_outward_potassium_current__i_Kto_s + CHASTE_CAP() * var_sodium_background_current__i_Nab + CHASTE_CAP() * var_sodium_potassium_pump_current__i_NaK + CHASTE_CAP() * 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)); @@ -741,7 +743,7 @@ std::shared_ptr &rDY, std::vector &rAlphaOrTau, std::vector &rBetaOrInf) { std::vector& rY = rGetStateVariables(); - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -837,28 +839,28 @@ std::shared_ptrGetCapacitance(); // picoA_per_picoF + const double var_membrane__i_stim_converted = CHASTE_STIM(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_membrane__i_stim = var_membrane__i_stim_converted / CHASTE_CAP(); // 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 } @@ -1116,7 +1118,7 @@ std::shared_ptrmFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -1155,33 +1157,33 @@ std::shared_ptrGetCapacitance() * 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_L_type_calcium_current__i_CaL_converted = CHASTE_CAP() * var_L_type_calcium_current__i_CaL; // uA_per_cm2 + const double var_membrane__i_stim_converted = CHASTE_STIM(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_fast_transient_outward_potassium_current__E_K = var_membrane__R * var_membrane__T * CHASTE_MATH::Log(mParameters[5] / var_chaste_interface__potassium_concentration__Ki) / var_membrane__F; // millivolt + const double var_fast_transient_outward_potassium_current__i_Kto_f = CHASTE_MATH::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 = CHASTE_CAP() * 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_non_inactivating_steady_state_potassium_current__i_Kss_converted = CHASTE_CAP() * 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_slow_delayed_rectifier_potassium_current__i_Ks = CHASTE_MATH::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 = CHASTE_CAP() * 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((mParameters[6] + 0.1111111111111111 * mParameters[5]) / (var_chaste_interface__sodium_concentration__Nai + 0.1111111111111111 * var_chaste_interface__potassium_concentration__Ki)) / var_membrane__F; // millivolt + const double var_sodium_calcium_exchange_current__eta = CHASTE_CONST(0.34999999999999998); // dimensionless + const double var_sodium_calcium_exchange_current__k_sat = CHASTE_CONST(0.10000000000000001); // dimensionless + const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * CHASTE_MATH::Log((mParameters[6] + CHASTE_CONST(0.1111111111111111) * mParameters[5]) / (var_chaste_interface__sodium_concentration__Nai + CHASTE_CONST(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((mParameters[5] + 0.020408163265306124 * mParameters[6]) / (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 = (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 + const double var_fast_sodium_current__i_Na_converted = CHASTE_CAP() * 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 * CHASTE_MATH::Log((mParameters[5] + CHASTE_CONST(0.020408163265306124) * mParameters[6]) / (var_chaste_interface__potassium_concentration__Ki + CHASTE_CONST(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 = CHASTE_CAP() * var_rapid_delayed_rectifier_potassium_current__i_Kr; // uA_per_cm2 + const double var_sodium_calcium_exchange_current__i_NaCa = (CHASTE_MATH::Pow(var_chaste_interface__sodium_concentration__Nai, 3) * mParameters[4] * CHASTE_MATH::Exp(var_membrane__F * var_chaste_interface__membrane__V * var_sodium_calcium_exchange_current__eta / (var_membrane__R * var_membrane__T)) - CHASTE_MATH::Pow(mParameters[6], 3) * var_calcium_concentration__Cai * CHASTE_MATH::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 * CHASTE_MATH::Exp((-1 + var_sodium_calcium_exchange_current__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (CHASTE_MATH::Pow(mParameters[6], 3) + CHASTE_MATH::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 = CHASTE_CAP() * 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 + CHASTE_MATH::Exp(CHASTE_CONST(0.089599999999999999) * var_chaste_interface__membrane__V - CHASTE_CONST(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 = CHASTE_CAP() * var_time_independent_potassium_current__i_K1; // uA_per_cm2 std::vector dqs(12); dqs[0] = var_calcium_fluxes__J_rel; diff --git a/chaste_codegen/data/tests/chaste_reference_models/RLopt/dynamic_bondarenko_szigeti_bett_kim_rasmusson_2004_apical.hpp b/chaste_codegen/data/tests/chaste_reference_models/RLopt/dynamic_bondarenko_szigeti_bett_kim_rasmusson_2004_apical.hpp index 07d17da55..e3f352edf 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/RLopt/dynamic_bondarenko_szigeti_bett_kim_rasmusson_2004_apical.hpp +++ b/chaste_codegen/data/tests/chaste_reference_models/RLopt/dynamic_bondarenko_szigeti_bett_kim_rasmusson_2004_apical.hpp @@ -17,6 +17,9 @@ #include #include "AbstractDynamicallyLoadableEntity.hpp" #include "AbstractStimulusFunction.hpp" +#if USING_DEVICE_COMPILER +#include "StimulusEvaluatorCuda.hpp" +#endif #include "AbstractRushLarsenCardiacCell.hpp" class Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLarsenOpt : public AbstractRushLarsenCardiacCell, public AbstractDynamicallyLoadableEntity diff --git a/chaste_codegen/data/tests/chaste_reference_models/RLopt/hodgkin_huxley_squid_axon_model_1952_modified.cpp b/chaste_codegen/data/tests/chaste_reference_models/RLopt/hodgkin_huxley_squid_axon_model_1952_modified.cpp index c1662264f..9d83a0de4 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/RLopt/hodgkin_huxley_squid_axon_model_1952_modified.cpp +++ b/chaste_codegen/data/tests/chaste_reference_models/RLopt/hodgkin_huxley_squid_axon_model_1952_modified.cpp @@ -21,6 +21,8 @@ #include "HeartConfig.hpp" #include "IsNan.hpp" #include "MathsCustomFunctions.hpp" +#include "ChasteMathDeviceNamespaces.hpp" +#include "ChasteCpuMacros.hpp" @@ -143,7 +145,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 (((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)))); + return (((CHASTE_CONST(6.5) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V >= -CHASTE_CONST(9.9999999999999995e-8)) && (CHASTE_CONST(6.5) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V <= CHASTE_CONST(9.9999999999999995e-8))) ? (CHASTE_CONST(0.42499999999999999) + CHASTE_CONST(0.0050000000000000001) * var_chaste_interface__membrane__V) : (-CHASTE_CONST(0.099999999999999992) * (CHASTE_CONST(6.5) + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V) / (-1 + CHASTE_MATH::Exp(-CHASTE_CONST(6.5) - CHASTE_CONST(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); @@ -165,7 +167,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 exp(0.9375 + 0.012500000000000001 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(CHASTE_CONST(0.9375) + CHASTE_CONST(0.012500000000000001) * 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); @@ -176,7 +178,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 exp(-3.75 - 0.050000000000000003 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(-CHASTE_CONST(3.75) - CHASTE_CONST(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); @@ -187,7 +189,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 + CHASTE_MATH::Exp(-CHASTE_CONST(4.5) - CHASTE_CONST(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 +200,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 (((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)))); + return (((5 + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V >= -CHASTE_CONST(9.9999999999999995e-8)) && (5 + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V <= CHASTE_CONST(9.9999999999999995e-8))) ? (CHASTE_CONST(3.5) + CHASTE_CONST(0.050000000000000003) * var_chaste_interface__membrane__V) : (-(5 + CHASTE_CONST(0.10000000000000001) * var_chaste_interface__membrane__V) / (-1 + CHASTE_MATH::Exp(-5 - CHASTE_CONST(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); @@ -220,7 +222,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 exp(-4.166666666666667 - 0.055555555555555552 * var_chaste_interface__membrane__V); + return CHASTE_MATH::Exp(-CHASTE_CONST(4.166666666666667) - CHASTE_CONST(0.055555555555555552) * 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); @@ -254,7 +256,7 @@ std::shared_ptr p_cellml_stim(new RegularStimulus( @@ -283,7 +285,7 @@ std::shared_ptrmParameters[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[2] = CHASTE_CONST(0.29999999999999999); // (var_leakage_current__g_L) [milliS_per_cm2] this->mParameters[3] = 36; // (var_potassium_channel__g_K) [milliS_per_cm2] } @@ -335,7 +337,7 @@ std::shared_ptr& rY = *pStateVariables; - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -345,9 +347,9 @@ std::shared_ptr &rDY, std::vector &rAlphaOrTau, std::vector &rBetaOrInf) { std::vector& rY = rGetStateVariables(); - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -377,20 +379,20 @@ 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_potassium_channel_n_gate__alpha_n = (((var_potassium_channel_n_gate__U >= -CHASTE_CONST(9.9999999999999995e-8)) && (var_potassium_channel_n_gate__U <= CHASTE_CONST(9.9999999999999995e-8))) ? ((1 - CHASTE_CONST(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 + CHASTE_MATH::Exp(var_potassium_channel_n_gate__U)))); // per_millisecond + const double var_sodium_channel_h_gate__alpha_h = CHASTE_CONST(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_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__B = -CHASTE_CONST(0.10000000000000001); // per_millivolt + const double var_sodium_channel_m_gate__A = -CHASTE_CONST(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 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 var_sodium_channel_m_gate__alpha_m = (((var_sodium_channel_m_gate__U >= -CHASTE_CONST(9.9999999999999995e-8)) && (var_sodium_channel_m_gate__U <= CHASTE_CONST(9.9999999999999995e-8))) ? ((1 - CHASTE_CONST(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 + CHASTE_MATH::Exp(var_sodium_channel_m_gate__U)))); // per_millisecond if (mSetVoltageDerivativeToZero) { @@ -399,13 +401,13 @@ std::shared_ptrmFixedVoltage : rY[0]); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? CHASTE_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 @@ -455,13 +457,13 @@ std::shared_ptr dqs(5); dqs[0] = var_sodium_channel__i_Na; diff --git a/chaste_codegen/data/tests/chaste_reference_models/RLopt/hodgkin_huxley_squid_axon_model_1952_modified.hpp b/chaste_codegen/data/tests/chaste_reference_models/RLopt/hodgkin_huxley_squid_axon_model_1952_modified.hpp index 106cc8a20..c43307e2c 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/RLopt/hodgkin_huxley_squid_axon_model_1952_modified.hpp +++ b/chaste_codegen/data/tests/chaste_reference_models/RLopt/hodgkin_huxley_squid_axon_model_1952_modified.hpp @@ -16,6 +16,9 @@ #include "ChasteSerialization.hpp" #include #include "AbstractStimulusFunction.hpp" +#if USING_DEVICE_COMPILER +#include "StimulusEvaluatorCuda.hpp" +#endif #include "AbstractRushLarsenCardiacCell.hpp" class Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLRushLarsenOpt : public AbstractRushLarsenCardiacCell diff --git a/chaste_codegen/data/tests/test_console_script_help.txt b/chaste_codegen/data/tests/test_console_script_help.txt index 53d55ab25..17baa12f7 100644 --- a/chaste_codegen/data/tests/test_console_script_help.txt +++ b/chaste_codegen/data/tests/test_console_script_help.txt @@ -3,7 +3,8 @@ usage: chaste_codegen [-h] [--version] [--normal] [--cvode] [--grl1] [--grl2] [--rush-larsen-labview] [--rush-larsen-c] [-j] [-o OUTFILE] [--output-dir OUTPUT_DIR] [--show-outputs] [-c CLS_NAME] - [-q] [--skip-singularity-fixes] [-y] [--opt] [-m] + [-q] [--skip-singularity-fixes] [--generate-kernels] + [-y] [--opt] [-m] [--lookup-table min max step] [--use-model-factory] cellml_file @@ -13,7 +14,7 @@ Chaste code generation for cellml. positional arguments: cellml_file The cellml file to convert to chaste code -optional arguments: +options: -h, --help show this help message and exit --version show program's version number and exit @@ -59,6 +60,8 @@ Generated code options: --skip-singularity-fixes skip singularity fixes in Goldman-Hodgkin-Katz (GHK) equations. + --generate-kernels Generate GPU/Device kernel files (...Kernels.hpp) for + supported model types. Chaste options: Options specific to Chaste code output diff --git a/chaste_codegen/data/tests/test_console_script_usage.txt b/chaste_codegen/data/tests/test_console_script_usage.txt index c4eda1dca..06998a70e 100644 --- a/chaste_codegen/data/tests/test_console_script_usage.txt +++ b/chaste_codegen/data/tests/test_console_script_usage.txt @@ -3,7 +3,8 @@ usage: chaste_codegen [-h] [--version] [--normal] [--cvode] [--grl1] [--grl2] [--rush-larsen-labview] [--rush-larsen-c] [-j] [-o OUTFILE] [--output-dir OUTPUT_DIR] [--show-outputs] [-c CLS_NAME] - [-q] [--skip-singularity-fixes] [-y] [--opt] [-m] + [-q] [--skip-singularity-fixes] [--generate-kernels] + [-y] [--opt] [-m] [--lookup-table min max step] [--use-model-factory] cellml_file diff --git a/chaste_codegen/data/tests/test_jacobian_matrix_2.txt b/chaste_codegen/data/tests/test_jacobian_matrix_2.txt index 8f824f21d..770ae0759 100644 --- a/chaste_codegen/data/tests/test_jacobian_matrix_2.txt +++ b/chaste_codegen/data/tests/test_jacobian_matrix_2.txt @@ -1 +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.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) * ((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 +[{'i': 0, 'j': 0, 'entry': '-CHASTE_CONST(0.29999999999999999) - 36 * CHASTE_MATH::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) ? (CHASTE_CONST(0.050000000000000003)) : (-CHASTE_CONST(0.10000000000000001) * x7 - CHASTE_CONST(0.10000000000000001) * x3 * x5 / CHASTE_MATH::Pow(x6, 2))) + CHASTE_CONST(0.22222222222222221) * x8 * sodium_channel_m_gate$m'}, {'i': 2, 'j': 0, 'entry': '-CHASTE_CONST(0.050000000000000003) * x9 * (CHASTE_CONST(0.070000000000000007) - CHASTE_CONST(0.070000000000000007) * sodium_channel_h_gate$h) - CHASTE_CONST(0.10000000000000001) * x10 * sodium_channel_h_gate$h / CHASTE_MATH::Pow(x11, 2)'}, {'i': 3, 'j': 0, 'entry': '(1 - potassium_channel_n_gate$n) * ((x13) ? (CHASTE_CONST(0.0050000000000000001)) : (-CHASTE_CONST(0.01) * x16 - CHASTE_CONST(0.01) * x12 * x14 / CHASTE_MATH::Pow(x15, 2))) - CHASTE_CONST(0.0015625000000000001) * x17 * potassium_channel_n_gate$n'}, {'i': 0, 'j': 1, 'entry': '-360 * x1 * CHASTE_MATH::Pow(sodium_channel_m_gate$m, 2) * sodium_channel_h_gate$h'}, {'i': 1, 'j': 1, 'entry': '-((x4) ? (CHASTE_CONST(3.5) + CHASTE_CONST(0.050000000000000003) * membrane$V) : (-x3 * x7)) - 4 * x8'}, {'i': 0, 'j': 2, 'entry': '-x0 * x1'}, {'i': 2, 'j': 2, 'entry': '-1 / x11 - CHASTE_CONST(0.070000000000000007) * x9'}, {'i': 0, 'j': 3, 'entry': '-144 * CHASTE_MATH::Pow(potassium_channel_n_gate$n, 3) * (87 + membrane$V)'}, {'i': 3, 'j': 3, 'entry': '-((x13) ? (CHASTE_CONST(0.42499999999999999) + CHASTE_CONST(0.0050000000000000001) * membrane$V) : (-CHASTE_CONST(0.099999999999999992) * x12 * x16)) - CHASTE_CONST(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 index 5c141c270..0cf00480f 100644 --- a/chaste_codegen/data/tests/test_jacobian_matrix_2.txt_python36 +++ b/chaste_codegen/data/tests/test_jacobian_matrix_2.txt_python36 @@ -1 +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) * ((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 +[{'i': 0, 'j': 0, 'entry': '-CHASTE_CONST(0.29999999999999999) - 36 * CHASTE_MATH::Pow(potassium_channel_n_gate$n, 4) - x0 * sodium_channel_h_gate$h'}, {'i': 1, 'j': 0, 'entry': '(CHASTE_CONST(1) - sodium_channel_m_gate$m) * ((x2) ? (CHASTE_CONST(0.050000000000000003)) : (-CHASTE_CONST(0.10000000000000001) * x7 + CHASTE_CONST(0.10000000000000001) * x4 * x5 / CHASTE_MATH::Pow(x6, 2))) + CHASTE_CONST(0.22222222222222221) * x8 * sodium_channel_m_gate$m'}, {'i': 2, 'j': 0, 'entry': '-CHASTE_CONST(0.050000000000000003) * x9 * (CHASTE_CONST(0.070000000000000007) - CHASTE_CONST(0.070000000000000007) * sodium_channel_h_gate$h) - CHASTE_CONST(0.10000000000000001) * x10 * sodium_channel_h_gate$h / CHASTE_MATH::Pow(x11, 2)'}, {'i': 3, 'j': 0, 'entry': '(CHASTE_CONST(1) - potassium_channel_n_gate$n) * ((x12) ? (CHASTE_CONST(0.0050000000000000001)) : (-CHASTE_CONST(0.01) * x16 + CHASTE_CONST(0.01) * x13 * x14 / CHASTE_MATH::Pow(x15, 2))) - CHASTE_CONST(0.0015625000000000001) * x17 * potassium_channel_n_gate$n'}, {'i': 0, 'j': 1, 'entry': '-360 * x1 * CHASTE_MATH::Pow(sodium_channel_m_gate$m, 2) * sodium_channel_h_gate$h'}, {'i': 1, 'j': 1, 'entry': '-((x2) ? (CHASTE_CONST(3.5) + CHASTE_CONST(0.050000000000000003) * membrane$V) : (x4 * x7)) - 4 * x8'}, {'i': 0, 'j': 2, 'entry': '-x0 * x1'}, {'i': 2, 'j': 2, 'entry': '-1 / x11 - CHASTE_CONST(0.070000000000000007) * x9'}, {'i': 0, 'j': 3, 'entry': '-144 * CHASTE_MATH::Pow(potassium_channel_n_gate$n, 3) * (CHASTE_CONST(87) + membrane$V)'}, {'i': 3, 'j': 3, 'entry': '-((x12) ? (CHASTE_CONST(0.42499999999999999) + CHASTE_CONST(0.0050000000000000001) * membrane$V) : (CHASTE_CONST(0.099999999999999992) * x13 * x16)) - CHASTE_CONST(0.125) * x17'}] \ No newline at end of file diff --git a/chaste_codegen/data/tests/test_lookup_tables_change_lookup_table.txt b/chaste_codegen/data/tests/test_lookup_tables_change_lookup_table.txt index 41ea50e55..85a3acb74 100644 --- a/chaste_codegen/data/tests/test_lookup_tables_change_lookup_table.txt +++ b/chaste_codegen/data/tests/test_lookup_tables_change_lookup_table.txt @@ -1 +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], ['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 +[['40.0 * CHASTE_MATH::Exp(-(72.0 + membrane$V) * 0.056)', False], ['0.095 * CHASTE_MATH::Exp((-membrane$V + 5.0) / 100.0) / (1.0 + CHASTE_MATH::Exp((-membrane$V + 5.0) / 13.89))', False], ['0.07 * CHASTE_MATH::Exp((-44.0 - membrane$V) / 59.0) / (1.0 + CHASTE_MATH::Exp((44.0 + membrane$V) / 20.0))', False], ['0.012 * CHASTE_MATH::Exp((-28.0 - membrane$V) / 125.0) / (1.0 + CHASTE_MATH::Exp((28.0 + membrane$V) / 6.67))', False], ['0.0065 * CHASTE_MATH::Exp((-30.0 - membrane$V) / 50.0) / (1.0 + CHASTE_MATH::Exp((-30.0 - membrane$V) / 5.0))', False], ['CHASTE_MATH::Exp((35.0 + membrane$V) * 0.04)', False], ['-1.0 + CHASTE_MATH::Exp((77.0 + membrane$V) * 0.04)', False], ['0.0005 * CHASTE_MATH::Exp((50.0 + membrane$V) / 12.1) / (1.0 + CHASTE_MATH::Exp((50.0 + membrane$V) / 17.5))', False], ['0.0013 * CHASTE_MATH::Exp((-20.0 - membrane$V) / 16.67) / (1.0 + CHASTE_MATH::Exp((-20.0 - membrane$V) / 25.0))', False], ['(-1.0 + CHASTE_MATH::Exp((85.0 + membrane$V) * 0.04)) * 4.0 / (CHASTE_MATH::Exp((53.0 + membrane$V) * 0.08) + CHASTE_MATH::Exp((53.0 + membrane$V) * 0.04))', False]] \ No newline at end of file diff --git a/chaste_codegen/data/tests/test_lookup_tables_method_printed_for.txt b/chaste_codegen/data/tests/test_lookup_tables_method_printed_for.txt index 2525f7938..e95e97402 100644 --- a/chaste_codegen/data/tests/test_lookup_tables_method_printed_for.txt +++ b/chaste_codegen/data/tests/test_lookup_tables_method_printed_for.txt @@ -1 +1 @@ -[['0.08 * exp(-cell$V / 11.0)', False], ['1.0 / (1.0 + exp((-50.0 - cell$V) / 7.5))', False], ['1.0 / (1.0 + exp((33.0 + cell$V) / 22.4))', False], ['1.0 / (1.0 + exp((-cell$V + 1.5) / 16.7))', False], ['1.0 / (1.0 + exp((-3.0 - cell$V) / 15.0))', False], ['9.0 / (1.0 + exp((3.0 + cell$V) / 15.0)) + 0.5', False], ['1.0 / (1.0 + exp((33.5 + cell$V) / 10.0))', False], ['3000.0 / (1.0 + exp((60.0 + cell$V) / 10.0)) + 30.0', False], ['1.0 / (1.0 + exp((33.5 + cell$V) / 10.0))', False], ['2800.0 / (1.0 + exp((60.0 + cell$V) / 10.0)) + 220.0', False], ['1.0 / (1.0 + exp((-3.0 - cell$V) / 15.0))', False], ['3.5 * exp(-pow((cell$V / 30.0), 2.0)) + 1.5', False], ['1.0 / (1.0 + exp((33.5 + cell$V) / 10.0))', False], ['20.0 / (1.0 + exp((33.5 + cell$V) / 10.0)) + 20.0', False], ['1.0 / (1.0 + exp((-14.5 - cell$V) / 6.0))', False], ['1.0 / (1.0 + exp((35.06 + cell$V) / 3.6)) + 0.6 / (1.0 + exp((-cell$V + 50.0) / 20.0))', False], ['1.0 / (0.0197 * exp(-pow(((14.5 + cell$V) * 0.0337), 2.0)) + 0.02)', False], ['(((-14.499999400000000 >= cell$V) && (-14.500000600000000 <= cell$V)) ? ((--14.500000600000000 + cell$V) * ((-exp((--14.499999400000000 - 14.5) / 6.0) + 1.0) / ((-14.499999400000000 + 14.5) * (1.0 + exp((--14.499999400000000 - 14.5) / 6.0)) * 0.035) - (-exp((--14.500000600000000 - 14.5) / 6.0) + 1.0) / ((-14.500000600000000 + 14.5) * (1.0 + exp((--14.500000600000000 - 14.5) / 6.0)) * 0.035)) / (--14.500000600000000 - 14.499999400000000) + (-exp((--14.500000600000000 - 14.5) / 6.0) + 1.0) / ((-14.500000600000000 + 14.5) * (1.0 + exp((--14.500000600000000 - 14.5) / 6.0)) * 0.035)) : ((-exp((-14.5 - cell$V) / 6.0) + 1.0) / ((1.0 + exp((-14.5 - cell$V) / 6.0)) * (14.5 + cell$V) * 0.035)))', True], ['1.0 / ((((-9.9999993103448276 >= cell$V) && (-10.000000689655172 <= cell$V)) ? ((--10.000000689655172 + cell$V) * ((-9.9999993103448276 + 10.0) * 0.00061 / (-1.0 + exp((-9.9999993103448276 + 10.0) * 0.145)) - (-10.000000689655172 + 10.0) * 0.00061 / (-1.0 + exp((-10.000000689655172 + 10.0) * 0.145))) / (--10.000000689655172 - 9.9999993103448276) + (-10.000000689655172 + 10.0) * 0.00061 / (-1.0 + exp((-10.000000689655172 + 10.0) * 0.145))) : ((10.0 + cell$V) * 0.00061 / (-1.0 + exp((10.0 + cell$V) * 0.145)))) + (((-6.9999991869918699 >= cell$V) && (-7.0000008130081301 <= cell$V)) ? ((--7.0000008130081301 + cell$V) * ((-6.9999991869918699 + 7.0) * 0.00138 / (-exp(-(-6.9999991869918699 + 7.0) * 0.123) + 1.0) - (-7.0000008130081301 + 7.0) * 0.00138 / (-exp(-(-7.0000008130081301 + 7.0) * 0.123) + 1.0)) / (--7.0000008130081301 - 6.9999991869918699) + (-7.0000008130081301 + 7.0) * 0.00138 / (-exp(-(-7.0000008130081301 + 7.0) * 0.123) + 1.0)) : ((7.0 + cell$V) * 0.00138 / (-exp(-(7.0 + cell$V) * 0.123) + 1.0))))', False], ['(((-29.999998544395924 >= cell$V) && (-30.000001455604076 <= cell$V)) ? (1 / ((--30.000001455604076 + cell$V) * ((-29.999998544395924 + 30.0) * 0.000131 / (-1.0 + exp((-29.999998544395924 + 30.0) * 0.0687)) + (-29.999998544395924 + 30.0) * 7.19e-05 / (-exp(-(-29.999998544395924 + 30.0) * 0.148) + 1.0) - (-30.000001455604076 + 30.0) * 0.000131 / (-1.0 + exp((-30.000001455604076 + 30.0) * 0.0687)) - (-30.000001455604076 + 30.0) * 7.19e-05 / (-exp(-(-30.000001455604076 + 30.0) * 0.148) + 1.0)) / (--30.000001455604076 - 29.999998544395924) + (-30.000001455604076 + 30.0) * 0.000131 / (-1.0 + exp((-30.000001455604076 + 30.0) * 0.0687)) + (-30.000001455604076 + 30.0) * 7.19e-05 / (-exp(-(-30.000001455604076 + 30.0) * 0.148) + 1.0))) : (1 / ((30.0 + cell$V) * 0.000131 / (-1.0 + exp((30.0 + cell$V) * 0.0687)) + (30.0 + cell$V) * 7.19e-05 / (-exp(-(30.0 + cell$V) * 0.148) + 1.0)))) * 1.0', False], ['(((-47.129999000000003 >= cell$V) && (-47.130001000000003 <= cell$V)) ? ((--47.130001000000003 + cell$V) * ((-47.129999000000003 + 47.13) * 0.32 / ((-exp(-(-47.129999000000003 + 47.13) * 0.1) + 1.0) * 1.0) - (-47.130001000000003 + 47.13) * 0.32 / ((-exp(-(-47.130001000000003 + 47.13) * 0.1) + 1.0) * 1.0)) / (--47.130001000000003 - 47.129999000000003) + (-47.130001000000003 + 47.13) * 0.32 / ((-exp(-(-47.130001000000003 + 47.13) * 0.1) + 1.0) * 1.0)) : ((47.13 + cell$V) * 0.32 / ((-exp(-(47.13 + cell$V) * 0.1) + 1.0) * 1.0)))', True]] \ No newline at end of file +[['0.08 * CHASTE_MATH::Exp(-cell$V / 11.0)', False], ['1.0 / (1.0 + CHASTE_MATH::Exp((-50.0 - cell$V) / 7.5))', False], ['1.0 / (1.0 + CHASTE_MATH::Exp((33.0 + cell$V) / 22.4))', False], ['1.0 / (1.0 + CHASTE_MATH::Exp((-cell$V + 1.5) / 16.7))', False], ['1.0 / (1.0 + CHASTE_MATH::Exp((-3.0 - cell$V) / 15.0))', False], ['9.0 / (1.0 + CHASTE_MATH::Exp((3.0 + cell$V) / 15.0)) + 0.5', False], ['1.0 / (1.0 + CHASTE_MATH::Exp((33.5 + cell$V) / 10.0))', False], ['3000.0 / (1.0 + CHASTE_MATH::Exp((60.0 + cell$V) / 10.0)) + 30.0', False], ['1.0 / (1.0 + CHASTE_MATH::Exp((33.5 + cell$V) / 10.0))', False], ['2800.0 / (1.0 + CHASTE_MATH::Exp((60.0 + cell$V) / 10.0)) + 220.0', False], ['1.0 / (1.0 + CHASTE_MATH::Exp((-3.0 - cell$V) / 15.0))', False], ['3.5 * CHASTE_MATH::Exp(-CHASTE_MATH::Pow((cell$V / 30.0), 2.0)) + 1.5', False], ['1.0 / (1.0 + CHASTE_MATH::Exp((33.5 + cell$V) / 10.0))', False], ['20.0 / (1.0 + CHASTE_MATH::Exp((33.5 + cell$V) / 10.0)) + 20.0', False], ['1.0 / (1.0 + CHASTE_MATH::Exp((-14.5 - cell$V) / 6.0))', False], ['1.0 / (1.0 + CHASTE_MATH::Exp((35.06 + cell$V) / 3.6)) + 0.6 / (1.0 + CHASTE_MATH::Exp((-cell$V + 50.0) / 20.0))', False], ['1.0 / (0.0197 * CHASTE_MATH::Exp(-CHASTE_MATH::Pow(((14.5 + cell$V) * 0.0337), 2.0)) + 0.02)', False], ['(((-14.499999400000000 >= cell$V) && (-14.500000600000000 <= cell$V)) ? ((--14.500000600000000 + cell$V) * ((-CHASTE_MATH::Exp((--14.499999400000000 - 14.5) / 6.0) + 1.0) / ((-14.499999400000000 + 14.5) * (1.0 + CHASTE_MATH::Exp((--14.499999400000000 - 14.5) / 6.0)) * 0.035) - (-CHASTE_MATH::Exp((--14.500000600000000 - 14.5) / 6.0) + 1.0) / ((-14.500000600000000 + 14.5) * (1.0 + CHASTE_MATH::Exp((--14.500000600000000 - 14.5) / 6.0)) * 0.035)) / (--14.500000600000000 - 14.499999400000000) + (-CHASTE_MATH::Exp((--14.500000600000000 - 14.5) / 6.0) + 1.0) / ((-14.500000600000000 + 14.5) * (1.0 + CHASTE_MATH::Exp((--14.500000600000000 - 14.5) / 6.0)) * 0.035)) : ((-CHASTE_MATH::Exp((-14.5 - cell$V) / 6.0) + 1.0) / ((1.0 + CHASTE_MATH::Exp((-14.5 - cell$V) / 6.0)) * (14.5 + cell$V) * 0.035)))', True], ['1.0 / ((((-9.9999993103448276 >= cell$V) && (-10.000000689655172 <= cell$V)) ? ((--10.000000689655172 + cell$V) * ((-9.9999993103448276 + 10.0) * 0.00061 / (-1.0 + CHASTE_MATH::Exp((-9.9999993103448276 + 10.0) * 0.145)) - (-10.000000689655172 + 10.0) * 0.00061 / (-1.0 + CHASTE_MATH::Exp((-10.000000689655172 + 10.0) * 0.145))) / (--10.000000689655172 - 9.9999993103448276) + (-10.000000689655172 + 10.0) * 0.00061 / (-1.0 + CHASTE_MATH::Exp((-10.000000689655172 + 10.0) * 0.145))) : ((10.0 + cell$V) * 0.00061 / (-1.0 + CHASTE_MATH::Exp((10.0 + cell$V) * 0.145)))) + (((-6.9999991869918699 >= cell$V) && (-7.0000008130081301 <= cell$V)) ? ((--7.0000008130081301 + cell$V) * ((-6.9999991869918699 + 7.0) * 0.00138 / (-CHASTE_MATH::Exp(-(-6.9999991869918699 + 7.0) * 0.123) + 1.0) - (-7.0000008130081301 + 7.0) * 0.00138 / (-CHASTE_MATH::Exp(-(-7.0000008130081301 + 7.0) * 0.123) + 1.0)) / (--7.0000008130081301 - 6.9999991869918699) + (-7.0000008130081301 + 7.0) * 0.00138 / (-CHASTE_MATH::Exp(-(-7.0000008130081301 + 7.0) * 0.123) + 1.0)) : ((7.0 + cell$V) * 0.00138 / (-CHASTE_MATH::Exp(-(7.0 + cell$V) * 0.123) + 1.0))))', False], ['(((-29.999998544395924 >= cell$V) && (-30.000001455604076 <= cell$V)) ? (1 / ((--30.000001455604076 + cell$V) * ((-29.999998544395924 + 30.0) * 0.000131 / (-1.0 + CHASTE_MATH::Exp((-29.999998544395924 + 30.0) * 0.0687)) + (-29.999998544395924 + 30.0) * 7.19e-05 / (-CHASTE_MATH::Exp(-(-29.999998544395924 + 30.0) * 0.148) + 1.0) - (-30.000001455604076 + 30.0) * 0.000131 / (-1.0 + CHASTE_MATH::Exp((-30.000001455604076 + 30.0) * 0.0687)) - (-30.000001455604076 + 30.0) * 7.19e-05 / (-CHASTE_MATH::Exp(-(-30.000001455604076 + 30.0) * 0.148) + 1.0)) / (--30.000001455604076 - 29.999998544395924) + (-30.000001455604076 + 30.0) * 0.000131 / (-1.0 + CHASTE_MATH::Exp((-30.000001455604076 + 30.0) * 0.0687)) + (-30.000001455604076 + 30.0) * 7.19e-05 / (-CHASTE_MATH::Exp(-(-30.000001455604076 + 30.0) * 0.148) + 1.0))) : (1 / ((30.0 + cell$V) * 0.000131 / (-1.0 + CHASTE_MATH::Exp((30.0 + cell$V) * 0.0687)) + (30.0 + cell$V) * 7.19e-05 / (-CHASTE_MATH::Exp(-(30.0 + cell$V) * 0.148) + 1.0)))) * 1.0', False], ['(((-47.129999000000003 >= cell$V) && (-47.130001000000003 <= cell$V)) ? ((--47.130001000000003 + cell$V) * ((-47.129999000000003 + 47.13) * 0.32 / ((-CHASTE_MATH::Exp(-(-47.129999000000003 + 47.13) * 0.1) + 1.0) * 1.0) - (-47.130001000000003 + 47.13) * 0.32 / ((-CHASTE_MATH::Exp(-(-47.130001000000003 + 47.13) * 0.1) + 1.0) * 1.0)) / (--47.130001000000003 - 47.129999000000003) + (-47.130001000000003 + 47.13) * 0.32 / ((-CHASTE_MATH::Exp(-(-47.130001000000003 + 47.13) * 0.1) + 1.0) * 1.0)) : ((47.13 + cell$V) * 0.32 / ((-CHASTE_MATH::Exp(-(47.13 + cell$V) * 0.1) + 1.0) * 1.0)))', True]] \ No newline at end of file diff --git a/chaste_codegen/data/tests/test_lookup_tables_multiple_methods_printed_for.txt b/chaste_codegen/data/tests/test_lookup_tables_multiple_methods_printed_for.txt index 2525f7938..e95e97402 100644 --- a/chaste_codegen/data/tests/test_lookup_tables_multiple_methods_printed_for.txt +++ b/chaste_codegen/data/tests/test_lookup_tables_multiple_methods_printed_for.txt @@ -1 +1 @@ -[['0.08 * exp(-cell$V / 11.0)', False], ['1.0 / (1.0 + exp((-50.0 - cell$V) / 7.5))', False], ['1.0 / (1.0 + exp((33.0 + cell$V) / 22.4))', False], ['1.0 / (1.0 + exp((-cell$V + 1.5) / 16.7))', False], ['1.0 / (1.0 + exp((-3.0 - cell$V) / 15.0))', False], ['9.0 / (1.0 + exp((3.0 + cell$V) / 15.0)) + 0.5', False], ['1.0 / (1.0 + exp((33.5 + cell$V) / 10.0))', False], ['3000.0 / (1.0 + exp((60.0 + cell$V) / 10.0)) + 30.0', False], ['1.0 / (1.0 + exp((33.5 + cell$V) / 10.0))', False], ['2800.0 / (1.0 + exp((60.0 + cell$V) / 10.0)) + 220.0', False], ['1.0 / (1.0 + exp((-3.0 - cell$V) / 15.0))', False], ['3.5 * exp(-pow((cell$V / 30.0), 2.0)) + 1.5', False], ['1.0 / (1.0 + exp((33.5 + cell$V) / 10.0))', False], ['20.0 / (1.0 + exp((33.5 + cell$V) / 10.0)) + 20.0', False], ['1.0 / (1.0 + exp((-14.5 - cell$V) / 6.0))', False], ['1.0 / (1.0 + exp((35.06 + cell$V) / 3.6)) + 0.6 / (1.0 + exp((-cell$V + 50.0) / 20.0))', False], ['1.0 / (0.0197 * exp(-pow(((14.5 + cell$V) * 0.0337), 2.0)) + 0.02)', False], ['(((-14.499999400000000 >= cell$V) && (-14.500000600000000 <= cell$V)) ? ((--14.500000600000000 + cell$V) * ((-exp((--14.499999400000000 - 14.5) / 6.0) + 1.0) / ((-14.499999400000000 + 14.5) * (1.0 + exp((--14.499999400000000 - 14.5) / 6.0)) * 0.035) - (-exp((--14.500000600000000 - 14.5) / 6.0) + 1.0) / ((-14.500000600000000 + 14.5) * (1.0 + exp((--14.500000600000000 - 14.5) / 6.0)) * 0.035)) / (--14.500000600000000 - 14.499999400000000) + (-exp((--14.500000600000000 - 14.5) / 6.0) + 1.0) / ((-14.500000600000000 + 14.5) * (1.0 + exp((--14.500000600000000 - 14.5) / 6.0)) * 0.035)) : ((-exp((-14.5 - cell$V) / 6.0) + 1.0) / ((1.0 + exp((-14.5 - cell$V) / 6.0)) * (14.5 + cell$V) * 0.035)))', True], ['1.0 / ((((-9.9999993103448276 >= cell$V) && (-10.000000689655172 <= cell$V)) ? ((--10.000000689655172 + cell$V) * ((-9.9999993103448276 + 10.0) * 0.00061 / (-1.0 + exp((-9.9999993103448276 + 10.0) * 0.145)) - (-10.000000689655172 + 10.0) * 0.00061 / (-1.0 + exp((-10.000000689655172 + 10.0) * 0.145))) / (--10.000000689655172 - 9.9999993103448276) + (-10.000000689655172 + 10.0) * 0.00061 / (-1.0 + exp((-10.000000689655172 + 10.0) * 0.145))) : ((10.0 + cell$V) * 0.00061 / (-1.0 + exp((10.0 + cell$V) * 0.145)))) + (((-6.9999991869918699 >= cell$V) && (-7.0000008130081301 <= cell$V)) ? ((--7.0000008130081301 + cell$V) * ((-6.9999991869918699 + 7.0) * 0.00138 / (-exp(-(-6.9999991869918699 + 7.0) * 0.123) + 1.0) - (-7.0000008130081301 + 7.0) * 0.00138 / (-exp(-(-7.0000008130081301 + 7.0) * 0.123) + 1.0)) / (--7.0000008130081301 - 6.9999991869918699) + (-7.0000008130081301 + 7.0) * 0.00138 / (-exp(-(-7.0000008130081301 + 7.0) * 0.123) + 1.0)) : ((7.0 + cell$V) * 0.00138 / (-exp(-(7.0 + cell$V) * 0.123) + 1.0))))', False], ['(((-29.999998544395924 >= cell$V) && (-30.000001455604076 <= cell$V)) ? (1 / ((--30.000001455604076 + cell$V) * ((-29.999998544395924 + 30.0) * 0.000131 / (-1.0 + exp((-29.999998544395924 + 30.0) * 0.0687)) + (-29.999998544395924 + 30.0) * 7.19e-05 / (-exp(-(-29.999998544395924 + 30.0) * 0.148) + 1.0) - (-30.000001455604076 + 30.0) * 0.000131 / (-1.0 + exp((-30.000001455604076 + 30.0) * 0.0687)) - (-30.000001455604076 + 30.0) * 7.19e-05 / (-exp(-(-30.000001455604076 + 30.0) * 0.148) + 1.0)) / (--30.000001455604076 - 29.999998544395924) + (-30.000001455604076 + 30.0) * 0.000131 / (-1.0 + exp((-30.000001455604076 + 30.0) * 0.0687)) + (-30.000001455604076 + 30.0) * 7.19e-05 / (-exp(-(-30.000001455604076 + 30.0) * 0.148) + 1.0))) : (1 / ((30.0 + cell$V) * 0.000131 / (-1.0 + exp((30.0 + cell$V) * 0.0687)) + (30.0 + cell$V) * 7.19e-05 / (-exp(-(30.0 + cell$V) * 0.148) + 1.0)))) * 1.0', False], ['(((-47.129999000000003 >= cell$V) && (-47.130001000000003 <= cell$V)) ? ((--47.130001000000003 + cell$V) * ((-47.129999000000003 + 47.13) * 0.32 / ((-exp(-(-47.129999000000003 + 47.13) * 0.1) + 1.0) * 1.0) - (-47.130001000000003 + 47.13) * 0.32 / ((-exp(-(-47.130001000000003 + 47.13) * 0.1) + 1.0) * 1.0)) / (--47.130001000000003 - 47.129999000000003) + (-47.130001000000003 + 47.13) * 0.32 / ((-exp(-(-47.130001000000003 + 47.13) * 0.1) + 1.0) * 1.0)) : ((47.13 + cell$V) * 0.32 / ((-exp(-(47.13 + cell$V) * 0.1) + 1.0) * 1.0)))', True]] \ No newline at end of file +[['0.08 * CHASTE_MATH::Exp(-cell$V / 11.0)', False], ['1.0 / (1.0 + CHASTE_MATH::Exp((-50.0 - cell$V) / 7.5))', False], ['1.0 / (1.0 + CHASTE_MATH::Exp((33.0 + cell$V) / 22.4))', False], ['1.0 / (1.0 + CHASTE_MATH::Exp((-cell$V + 1.5) / 16.7))', False], ['1.0 / (1.0 + CHASTE_MATH::Exp((-3.0 - cell$V) / 15.0))', False], ['9.0 / (1.0 + CHASTE_MATH::Exp((3.0 + cell$V) / 15.0)) + 0.5', False], ['1.0 / (1.0 + CHASTE_MATH::Exp((33.5 + cell$V) / 10.0))', False], ['3000.0 / (1.0 + CHASTE_MATH::Exp((60.0 + cell$V) / 10.0)) + 30.0', False], ['1.0 / (1.0 + CHASTE_MATH::Exp((33.5 + cell$V) / 10.0))', False], ['2800.0 / (1.0 + CHASTE_MATH::Exp((60.0 + cell$V) / 10.0)) + 220.0', False], ['1.0 / (1.0 + CHASTE_MATH::Exp((-3.0 - cell$V) / 15.0))', False], ['3.5 * CHASTE_MATH::Exp(-CHASTE_MATH::Pow((cell$V / 30.0), 2.0)) + 1.5', False], ['1.0 / (1.0 + CHASTE_MATH::Exp((33.5 + cell$V) / 10.0))', False], ['20.0 / (1.0 + CHASTE_MATH::Exp((33.5 + cell$V) / 10.0)) + 20.0', False], ['1.0 / (1.0 + CHASTE_MATH::Exp((-14.5 - cell$V) / 6.0))', False], ['1.0 / (1.0 + CHASTE_MATH::Exp((35.06 + cell$V) / 3.6)) + 0.6 / (1.0 + CHASTE_MATH::Exp((-cell$V + 50.0) / 20.0))', False], ['1.0 / (0.0197 * CHASTE_MATH::Exp(-CHASTE_MATH::Pow(((14.5 + cell$V) * 0.0337), 2.0)) + 0.02)', False], ['(((-14.499999400000000 >= cell$V) && (-14.500000600000000 <= cell$V)) ? ((--14.500000600000000 + cell$V) * ((-CHASTE_MATH::Exp((--14.499999400000000 - 14.5) / 6.0) + 1.0) / ((-14.499999400000000 + 14.5) * (1.0 + CHASTE_MATH::Exp((--14.499999400000000 - 14.5) / 6.0)) * 0.035) - (-CHASTE_MATH::Exp((--14.500000600000000 - 14.5) / 6.0) + 1.0) / ((-14.500000600000000 + 14.5) * (1.0 + CHASTE_MATH::Exp((--14.500000600000000 - 14.5) / 6.0)) * 0.035)) / (--14.500000600000000 - 14.499999400000000) + (-CHASTE_MATH::Exp((--14.500000600000000 - 14.5) / 6.0) + 1.0) / ((-14.500000600000000 + 14.5) * (1.0 + CHASTE_MATH::Exp((--14.500000600000000 - 14.5) / 6.0)) * 0.035)) : ((-CHASTE_MATH::Exp((-14.5 - cell$V) / 6.0) + 1.0) / ((1.0 + CHASTE_MATH::Exp((-14.5 - cell$V) / 6.0)) * (14.5 + cell$V) * 0.035)))', True], ['1.0 / ((((-9.9999993103448276 >= cell$V) && (-10.000000689655172 <= cell$V)) ? ((--10.000000689655172 + cell$V) * ((-9.9999993103448276 + 10.0) * 0.00061 / (-1.0 + CHASTE_MATH::Exp((-9.9999993103448276 + 10.0) * 0.145)) - (-10.000000689655172 + 10.0) * 0.00061 / (-1.0 + CHASTE_MATH::Exp((-10.000000689655172 + 10.0) * 0.145))) / (--10.000000689655172 - 9.9999993103448276) + (-10.000000689655172 + 10.0) * 0.00061 / (-1.0 + CHASTE_MATH::Exp((-10.000000689655172 + 10.0) * 0.145))) : ((10.0 + cell$V) * 0.00061 / (-1.0 + CHASTE_MATH::Exp((10.0 + cell$V) * 0.145)))) + (((-6.9999991869918699 >= cell$V) && (-7.0000008130081301 <= cell$V)) ? ((--7.0000008130081301 + cell$V) * ((-6.9999991869918699 + 7.0) * 0.00138 / (-CHASTE_MATH::Exp(-(-6.9999991869918699 + 7.0) * 0.123) + 1.0) - (-7.0000008130081301 + 7.0) * 0.00138 / (-CHASTE_MATH::Exp(-(-7.0000008130081301 + 7.0) * 0.123) + 1.0)) / (--7.0000008130081301 - 6.9999991869918699) + (-7.0000008130081301 + 7.0) * 0.00138 / (-CHASTE_MATH::Exp(-(-7.0000008130081301 + 7.0) * 0.123) + 1.0)) : ((7.0 + cell$V) * 0.00138 / (-CHASTE_MATH::Exp(-(7.0 + cell$V) * 0.123) + 1.0))))', False], ['(((-29.999998544395924 >= cell$V) && (-30.000001455604076 <= cell$V)) ? (1 / ((--30.000001455604076 + cell$V) * ((-29.999998544395924 + 30.0) * 0.000131 / (-1.0 + CHASTE_MATH::Exp((-29.999998544395924 + 30.0) * 0.0687)) + (-29.999998544395924 + 30.0) * 7.19e-05 / (-CHASTE_MATH::Exp(-(-29.999998544395924 + 30.0) * 0.148) + 1.0) - (-30.000001455604076 + 30.0) * 0.000131 / (-1.0 + CHASTE_MATH::Exp((-30.000001455604076 + 30.0) * 0.0687)) - (-30.000001455604076 + 30.0) * 7.19e-05 / (-CHASTE_MATH::Exp(-(-30.000001455604076 + 30.0) * 0.148) + 1.0)) / (--30.000001455604076 - 29.999998544395924) + (-30.000001455604076 + 30.0) * 0.000131 / (-1.0 + CHASTE_MATH::Exp((-30.000001455604076 + 30.0) * 0.0687)) + (-30.000001455604076 + 30.0) * 7.19e-05 / (-CHASTE_MATH::Exp(-(-30.000001455604076 + 30.0) * 0.148) + 1.0))) : (1 / ((30.0 + cell$V) * 0.000131 / (-1.0 + CHASTE_MATH::Exp((30.0 + cell$V) * 0.0687)) + (30.0 + cell$V) * 7.19e-05 / (-CHASTE_MATH::Exp(-(30.0 + cell$V) * 0.148) + 1.0)))) * 1.0', False], ['(((-47.129999000000003 >= cell$V) && (-47.130001000000003 <= cell$V)) ? ((--47.130001000000003 + cell$V) * ((-47.129999000000003 + 47.13) * 0.32 / ((-CHASTE_MATH::Exp(-(-47.129999000000003 + 47.13) * 0.1) + 1.0) * 1.0) - (-47.130001000000003 + 47.13) * 0.32 / ((-CHASTE_MATH::Exp(-(-47.130001000000003 + 47.13) * 0.1) + 1.0) * 1.0)) / (--47.130001000000003 - 47.129999000000003) + (-47.130001000000003 + 47.13) * 0.32 / ((-CHASTE_MATH::Exp(-(-47.130001000000003 + 47.13) * 0.1) + 1.0) * 1.0)) : ((47.13 + cell$V) * 0.32 / ((-CHASTE_MATH::Exp(-(47.13 + cell$V) * 0.1) + 1.0) * 1.0)))', True]] \ No newline at end of file diff --git a/chaste_codegen/data/tests/test_lookup_tables_nested_method_printed_for.txt b/chaste_codegen/data/tests/test_lookup_tables_nested_method_printed_for.txt index 2525f7938..e95e97402 100644 --- a/chaste_codegen/data/tests/test_lookup_tables_nested_method_printed_for.txt +++ b/chaste_codegen/data/tests/test_lookup_tables_nested_method_printed_for.txt @@ -1 +1 @@ -[['0.08 * exp(-cell$V / 11.0)', False], ['1.0 / (1.0 + exp((-50.0 - cell$V) / 7.5))', False], ['1.0 / (1.0 + exp((33.0 + cell$V) / 22.4))', False], ['1.0 / (1.0 + exp((-cell$V + 1.5) / 16.7))', False], ['1.0 / (1.0 + exp((-3.0 - cell$V) / 15.0))', False], ['9.0 / (1.0 + exp((3.0 + cell$V) / 15.0)) + 0.5', False], ['1.0 / (1.0 + exp((33.5 + cell$V) / 10.0))', False], ['3000.0 / (1.0 + exp((60.0 + cell$V) / 10.0)) + 30.0', False], ['1.0 / (1.0 + exp((33.5 + cell$V) / 10.0))', False], ['2800.0 / (1.0 + exp((60.0 + cell$V) / 10.0)) + 220.0', False], ['1.0 / (1.0 + exp((-3.0 - cell$V) / 15.0))', False], ['3.5 * exp(-pow((cell$V / 30.0), 2.0)) + 1.5', False], ['1.0 / (1.0 + exp((33.5 + cell$V) / 10.0))', False], ['20.0 / (1.0 + exp((33.5 + cell$V) / 10.0)) + 20.0', False], ['1.0 / (1.0 + exp((-14.5 - cell$V) / 6.0))', False], ['1.0 / (1.0 + exp((35.06 + cell$V) / 3.6)) + 0.6 / (1.0 + exp((-cell$V + 50.0) / 20.0))', False], ['1.0 / (0.0197 * exp(-pow(((14.5 + cell$V) * 0.0337), 2.0)) + 0.02)', False], ['(((-14.499999400000000 >= cell$V) && (-14.500000600000000 <= cell$V)) ? ((--14.500000600000000 + cell$V) * ((-exp((--14.499999400000000 - 14.5) / 6.0) + 1.0) / ((-14.499999400000000 + 14.5) * (1.0 + exp((--14.499999400000000 - 14.5) / 6.0)) * 0.035) - (-exp((--14.500000600000000 - 14.5) / 6.0) + 1.0) / ((-14.500000600000000 + 14.5) * (1.0 + exp((--14.500000600000000 - 14.5) / 6.0)) * 0.035)) / (--14.500000600000000 - 14.499999400000000) + (-exp((--14.500000600000000 - 14.5) / 6.0) + 1.0) / ((-14.500000600000000 + 14.5) * (1.0 + exp((--14.500000600000000 - 14.5) / 6.0)) * 0.035)) : ((-exp((-14.5 - cell$V) / 6.0) + 1.0) / ((1.0 + exp((-14.5 - cell$V) / 6.0)) * (14.5 + cell$V) * 0.035)))', True], ['1.0 / ((((-9.9999993103448276 >= cell$V) && (-10.000000689655172 <= cell$V)) ? ((--10.000000689655172 + cell$V) * ((-9.9999993103448276 + 10.0) * 0.00061 / (-1.0 + exp((-9.9999993103448276 + 10.0) * 0.145)) - (-10.000000689655172 + 10.0) * 0.00061 / (-1.0 + exp((-10.000000689655172 + 10.0) * 0.145))) / (--10.000000689655172 - 9.9999993103448276) + (-10.000000689655172 + 10.0) * 0.00061 / (-1.0 + exp((-10.000000689655172 + 10.0) * 0.145))) : ((10.0 + cell$V) * 0.00061 / (-1.0 + exp((10.0 + cell$V) * 0.145)))) + (((-6.9999991869918699 >= cell$V) && (-7.0000008130081301 <= cell$V)) ? ((--7.0000008130081301 + cell$V) * ((-6.9999991869918699 + 7.0) * 0.00138 / (-exp(-(-6.9999991869918699 + 7.0) * 0.123) + 1.0) - (-7.0000008130081301 + 7.0) * 0.00138 / (-exp(-(-7.0000008130081301 + 7.0) * 0.123) + 1.0)) / (--7.0000008130081301 - 6.9999991869918699) + (-7.0000008130081301 + 7.0) * 0.00138 / (-exp(-(-7.0000008130081301 + 7.0) * 0.123) + 1.0)) : ((7.0 + cell$V) * 0.00138 / (-exp(-(7.0 + cell$V) * 0.123) + 1.0))))', False], ['(((-29.999998544395924 >= cell$V) && (-30.000001455604076 <= cell$V)) ? (1 / ((--30.000001455604076 + cell$V) * ((-29.999998544395924 + 30.0) * 0.000131 / (-1.0 + exp((-29.999998544395924 + 30.0) * 0.0687)) + (-29.999998544395924 + 30.0) * 7.19e-05 / (-exp(-(-29.999998544395924 + 30.0) * 0.148) + 1.0) - (-30.000001455604076 + 30.0) * 0.000131 / (-1.0 + exp((-30.000001455604076 + 30.0) * 0.0687)) - (-30.000001455604076 + 30.0) * 7.19e-05 / (-exp(-(-30.000001455604076 + 30.0) * 0.148) + 1.0)) / (--30.000001455604076 - 29.999998544395924) + (-30.000001455604076 + 30.0) * 0.000131 / (-1.0 + exp((-30.000001455604076 + 30.0) * 0.0687)) + (-30.000001455604076 + 30.0) * 7.19e-05 / (-exp(-(-30.000001455604076 + 30.0) * 0.148) + 1.0))) : (1 / ((30.0 + cell$V) * 0.000131 / (-1.0 + exp((30.0 + cell$V) * 0.0687)) + (30.0 + cell$V) * 7.19e-05 / (-exp(-(30.0 + cell$V) * 0.148) + 1.0)))) * 1.0', False], ['(((-47.129999000000003 >= cell$V) && (-47.130001000000003 <= cell$V)) ? ((--47.130001000000003 + cell$V) * ((-47.129999000000003 + 47.13) * 0.32 / ((-exp(-(-47.129999000000003 + 47.13) * 0.1) + 1.0) * 1.0) - (-47.130001000000003 + 47.13) * 0.32 / ((-exp(-(-47.130001000000003 + 47.13) * 0.1) + 1.0) * 1.0)) / (--47.130001000000003 - 47.129999000000003) + (-47.130001000000003 + 47.13) * 0.32 / ((-exp(-(-47.130001000000003 + 47.13) * 0.1) + 1.0) * 1.0)) : ((47.13 + cell$V) * 0.32 / ((-exp(-(47.13 + cell$V) * 0.1) + 1.0) * 1.0)))', True]] \ No newline at end of file +[['0.08 * CHASTE_MATH::Exp(-cell$V / 11.0)', False], ['1.0 / (1.0 + CHASTE_MATH::Exp((-50.0 - cell$V) / 7.5))', False], ['1.0 / (1.0 + CHASTE_MATH::Exp((33.0 + cell$V) / 22.4))', False], ['1.0 / (1.0 + CHASTE_MATH::Exp((-cell$V + 1.5) / 16.7))', False], ['1.0 / (1.0 + CHASTE_MATH::Exp((-3.0 - cell$V) / 15.0))', False], ['9.0 / (1.0 + CHASTE_MATH::Exp((3.0 + cell$V) / 15.0)) + 0.5', False], ['1.0 / (1.0 + CHASTE_MATH::Exp((33.5 + cell$V) / 10.0))', False], ['3000.0 / (1.0 + CHASTE_MATH::Exp((60.0 + cell$V) / 10.0)) + 30.0', False], ['1.0 / (1.0 + CHASTE_MATH::Exp((33.5 + cell$V) / 10.0))', False], ['2800.0 / (1.0 + CHASTE_MATH::Exp((60.0 + cell$V) / 10.0)) + 220.0', False], ['1.0 / (1.0 + CHASTE_MATH::Exp((-3.0 - cell$V) / 15.0))', False], ['3.5 * CHASTE_MATH::Exp(-CHASTE_MATH::Pow((cell$V / 30.0), 2.0)) + 1.5', False], ['1.0 / (1.0 + CHASTE_MATH::Exp((33.5 + cell$V) / 10.0))', False], ['20.0 / (1.0 + CHASTE_MATH::Exp((33.5 + cell$V) / 10.0)) + 20.0', False], ['1.0 / (1.0 + CHASTE_MATH::Exp((-14.5 - cell$V) / 6.0))', False], ['1.0 / (1.0 + CHASTE_MATH::Exp((35.06 + cell$V) / 3.6)) + 0.6 / (1.0 + CHASTE_MATH::Exp((-cell$V + 50.0) / 20.0))', False], ['1.0 / (0.0197 * CHASTE_MATH::Exp(-CHASTE_MATH::Pow(((14.5 + cell$V) * 0.0337), 2.0)) + 0.02)', False], ['(((-14.499999400000000 >= cell$V) && (-14.500000600000000 <= cell$V)) ? ((--14.500000600000000 + cell$V) * ((-CHASTE_MATH::Exp((--14.499999400000000 - 14.5) / 6.0) + 1.0) / ((-14.499999400000000 + 14.5) * (1.0 + CHASTE_MATH::Exp((--14.499999400000000 - 14.5) / 6.0)) * 0.035) - (-CHASTE_MATH::Exp((--14.500000600000000 - 14.5) / 6.0) + 1.0) / ((-14.500000600000000 + 14.5) * (1.0 + CHASTE_MATH::Exp((--14.500000600000000 - 14.5) / 6.0)) * 0.035)) / (--14.500000600000000 - 14.499999400000000) + (-CHASTE_MATH::Exp((--14.500000600000000 - 14.5) / 6.0) + 1.0) / ((-14.500000600000000 + 14.5) * (1.0 + CHASTE_MATH::Exp((--14.500000600000000 - 14.5) / 6.0)) * 0.035)) : ((-CHASTE_MATH::Exp((-14.5 - cell$V) / 6.0) + 1.0) / ((1.0 + CHASTE_MATH::Exp((-14.5 - cell$V) / 6.0)) * (14.5 + cell$V) * 0.035)))', True], ['1.0 / ((((-9.9999993103448276 >= cell$V) && (-10.000000689655172 <= cell$V)) ? ((--10.000000689655172 + cell$V) * ((-9.9999993103448276 + 10.0) * 0.00061 / (-1.0 + CHASTE_MATH::Exp((-9.9999993103448276 + 10.0) * 0.145)) - (-10.000000689655172 + 10.0) * 0.00061 / (-1.0 + CHASTE_MATH::Exp((-10.000000689655172 + 10.0) * 0.145))) / (--10.000000689655172 - 9.9999993103448276) + (-10.000000689655172 + 10.0) * 0.00061 / (-1.0 + CHASTE_MATH::Exp((-10.000000689655172 + 10.0) * 0.145))) : ((10.0 + cell$V) * 0.00061 / (-1.0 + CHASTE_MATH::Exp((10.0 + cell$V) * 0.145)))) + (((-6.9999991869918699 >= cell$V) && (-7.0000008130081301 <= cell$V)) ? ((--7.0000008130081301 + cell$V) * ((-6.9999991869918699 + 7.0) * 0.00138 / (-CHASTE_MATH::Exp(-(-6.9999991869918699 + 7.0) * 0.123) + 1.0) - (-7.0000008130081301 + 7.0) * 0.00138 / (-CHASTE_MATH::Exp(-(-7.0000008130081301 + 7.0) * 0.123) + 1.0)) / (--7.0000008130081301 - 6.9999991869918699) + (-7.0000008130081301 + 7.0) * 0.00138 / (-CHASTE_MATH::Exp(-(-7.0000008130081301 + 7.0) * 0.123) + 1.0)) : ((7.0 + cell$V) * 0.00138 / (-CHASTE_MATH::Exp(-(7.0 + cell$V) * 0.123) + 1.0))))', False], ['(((-29.999998544395924 >= cell$V) && (-30.000001455604076 <= cell$V)) ? (1 / ((--30.000001455604076 + cell$V) * ((-29.999998544395924 + 30.0) * 0.000131 / (-1.0 + CHASTE_MATH::Exp((-29.999998544395924 + 30.0) * 0.0687)) + (-29.999998544395924 + 30.0) * 7.19e-05 / (-CHASTE_MATH::Exp(-(-29.999998544395924 + 30.0) * 0.148) + 1.0) - (-30.000001455604076 + 30.0) * 0.000131 / (-1.0 + CHASTE_MATH::Exp((-30.000001455604076 + 30.0) * 0.0687)) - (-30.000001455604076 + 30.0) * 7.19e-05 / (-CHASTE_MATH::Exp(-(-30.000001455604076 + 30.0) * 0.148) + 1.0)) / (--30.000001455604076 - 29.999998544395924) + (-30.000001455604076 + 30.0) * 0.000131 / (-1.0 + CHASTE_MATH::Exp((-30.000001455604076 + 30.0) * 0.0687)) + (-30.000001455604076 + 30.0) * 7.19e-05 / (-CHASTE_MATH::Exp(-(-30.000001455604076 + 30.0) * 0.148) + 1.0))) : (1 / ((30.0 + cell$V) * 0.000131 / (-1.0 + CHASTE_MATH::Exp((30.0 + cell$V) * 0.0687)) + (30.0 + cell$V) * 7.19e-05 / (-CHASTE_MATH::Exp(-(30.0 + cell$V) * 0.148) + 1.0)))) * 1.0', False], ['(((-47.129999000000003 >= cell$V) && (-47.130001000000003 <= cell$V)) ? ((--47.130001000000003 + cell$V) * ((-47.129999000000003 + 47.13) * 0.32 / ((-CHASTE_MATH::Exp(-(-47.129999000000003 + 47.13) * 0.1) + 1.0) * 1.0) - (-47.130001000000003 + 47.13) * 0.32 / ((-CHASTE_MATH::Exp(-(-47.130001000000003 + 47.13) * 0.1) + 1.0) * 1.0)) / (--47.130001000000003 - 47.129999000000003) + (-47.130001000000003 + 47.13) * 0.32 / ((-CHASTE_MATH::Exp(-(-47.130001000000003 + 47.13) * 0.1) + 1.0) * 1.0)) : ((47.13 + cell$V) * 0.32 / ((-CHASTE_MATH::Exp(-(47.13 + cell$V) * 0.1) + 1.0) * 1.0)))', True]] \ No newline at end of file diff --git a/chaste_codegen/data/tests/test_lookup_tables_no_method_printed_for.txt b/chaste_codegen/data/tests/test_lookup_tables_no_method_printed_for.txt index 2525f7938..e95e97402 100644 --- a/chaste_codegen/data/tests/test_lookup_tables_no_method_printed_for.txt +++ b/chaste_codegen/data/tests/test_lookup_tables_no_method_printed_for.txt @@ -1 +1 @@ -[['0.08 * exp(-cell$V / 11.0)', False], ['1.0 / (1.0 + exp((-50.0 - cell$V) / 7.5))', False], ['1.0 / (1.0 + exp((33.0 + cell$V) / 22.4))', False], ['1.0 / (1.0 + exp((-cell$V + 1.5) / 16.7))', False], ['1.0 / (1.0 + exp((-3.0 - cell$V) / 15.0))', False], ['9.0 / (1.0 + exp((3.0 + cell$V) / 15.0)) + 0.5', False], ['1.0 / (1.0 + exp((33.5 + cell$V) / 10.0))', False], ['3000.0 / (1.0 + exp((60.0 + cell$V) / 10.0)) + 30.0', False], ['1.0 / (1.0 + exp((33.5 + cell$V) / 10.0))', False], ['2800.0 / (1.0 + exp((60.0 + cell$V) / 10.0)) + 220.0', False], ['1.0 / (1.0 + exp((-3.0 - cell$V) / 15.0))', False], ['3.5 * exp(-pow((cell$V / 30.0), 2.0)) + 1.5', False], ['1.0 / (1.0 + exp((33.5 + cell$V) / 10.0))', False], ['20.0 / (1.0 + exp((33.5 + cell$V) / 10.0)) + 20.0', False], ['1.0 / (1.0 + exp((-14.5 - cell$V) / 6.0))', False], ['1.0 / (1.0 + exp((35.06 + cell$V) / 3.6)) + 0.6 / (1.0 + exp((-cell$V + 50.0) / 20.0))', False], ['1.0 / (0.0197 * exp(-pow(((14.5 + cell$V) * 0.0337), 2.0)) + 0.02)', False], ['(((-14.499999400000000 >= cell$V) && (-14.500000600000000 <= cell$V)) ? ((--14.500000600000000 + cell$V) * ((-exp((--14.499999400000000 - 14.5) / 6.0) + 1.0) / ((-14.499999400000000 + 14.5) * (1.0 + exp((--14.499999400000000 - 14.5) / 6.0)) * 0.035) - (-exp((--14.500000600000000 - 14.5) / 6.0) + 1.0) / ((-14.500000600000000 + 14.5) * (1.0 + exp((--14.500000600000000 - 14.5) / 6.0)) * 0.035)) / (--14.500000600000000 - 14.499999400000000) + (-exp((--14.500000600000000 - 14.5) / 6.0) + 1.0) / ((-14.500000600000000 + 14.5) * (1.0 + exp((--14.500000600000000 - 14.5) / 6.0)) * 0.035)) : ((-exp((-14.5 - cell$V) / 6.0) + 1.0) / ((1.0 + exp((-14.5 - cell$V) / 6.0)) * (14.5 + cell$V) * 0.035)))', True], ['1.0 / ((((-9.9999993103448276 >= cell$V) && (-10.000000689655172 <= cell$V)) ? ((--10.000000689655172 + cell$V) * ((-9.9999993103448276 + 10.0) * 0.00061 / (-1.0 + exp((-9.9999993103448276 + 10.0) * 0.145)) - (-10.000000689655172 + 10.0) * 0.00061 / (-1.0 + exp((-10.000000689655172 + 10.0) * 0.145))) / (--10.000000689655172 - 9.9999993103448276) + (-10.000000689655172 + 10.0) * 0.00061 / (-1.0 + exp((-10.000000689655172 + 10.0) * 0.145))) : ((10.0 + cell$V) * 0.00061 / (-1.0 + exp((10.0 + cell$V) * 0.145)))) + (((-6.9999991869918699 >= cell$V) && (-7.0000008130081301 <= cell$V)) ? ((--7.0000008130081301 + cell$V) * ((-6.9999991869918699 + 7.0) * 0.00138 / (-exp(-(-6.9999991869918699 + 7.0) * 0.123) + 1.0) - (-7.0000008130081301 + 7.0) * 0.00138 / (-exp(-(-7.0000008130081301 + 7.0) * 0.123) + 1.0)) / (--7.0000008130081301 - 6.9999991869918699) + (-7.0000008130081301 + 7.0) * 0.00138 / (-exp(-(-7.0000008130081301 + 7.0) * 0.123) + 1.0)) : ((7.0 + cell$V) * 0.00138 / (-exp(-(7.0 + cell$V) * 0.123) + 1.0))))', False], ['(((-29.999998544395924 >= cell$V) && (-30.000001455604076 <= cell$V)) ? (1 / ((--30.000001455604076 + cell$V) * ((-29.999998544395924 + 30.0) * 0.000131 / (-1.0 + exp((-29.999998544395924 + 30.0) * 0.0687)) + (-29.999998544395924 + 30.0) * 7.19e-05 / (-exp(-(-29.999998544395924 + 30.0) * 0.148) + 1.0) - (-30.000001455604076 + 30.0) * 0.000131 / (-1.0 + exp((-30.000001455604076 + 30.0) * 0.0687)) - (-30.000001455604076 + 30.0) * 7.19e-05 / (-exp(-(-30.000001455604076 + 30.0) * 0.148) + 1.0)) / (--30.000001455604076 - 29.999998544395924) + (-30.000001455604076 + 30.0) * 0.000131 / (-1.0 + exp((-30.000001455604076 + 30.0) * 0.0687)) + (-30.000001455604076 + 30.0) * 7.19e-05 / (-exp(-(-30.000001455604076 + 30.0) * 0.148) + 1.0))) : (1 / ((30.0 + cell$V) * 0.000131 / (-1.0 + exp((30.0 + cell$V) * 0.0687)) + (30.0 + cell$V) * 7.19e-05 / (-exp(-(30.0 + cell$V) * 0.148) + 1.0)))) * 1.0', False], ['(((-47.129999000000003 >= cell$V) && (-47.130001000000003 <= cell$V)) ? ((--47.130001000000003 + cell$V) * ((-47.129999000000003 + 47.13) * 0.32 / ((-exp(-(-47.129999000000003 + 47.13) * 0.1) + 1.0) * 1.0) - (-47.130001000000003 + 47.13) * 0.32 / ((-exp(-(-47.130001000000003 + 47.13) * 0.1) + 1.0) * 1.0)) / (--47.130001000000003 - 47.129999000000003) + (-47.130001000000003 + 47.13) * 0.32 / ((-exp(-(-47.130001000000003 + 47.13) * 0.1) + 1.0) * 1.0)) : ((47.13 + cell$V) * 0.32 / ((-exp(-(47.13 + cell$V) * 0.1) + 1.0) * 1.0)))', True]] \ No newline at end of file +[['0.08 * CHASTE_MATH::Exp(-cell$V / 11.0)', False], ['1.0 / (1.0 + CHASTE_MATH::Exp((-50.0 - cell$V) / 7.5))', False], ['1.0 / (1.0 + CHASTE_MATH::Exp((33.0 + cell$V) / 22.4))', False], ['1.0 / (1.0 + CHASTE_MATH::Exp((-cell$V + 1.5) / 16.7))', False], ['1.0 / (1.0 + CHASTE_MATH::Exp((-3.0 - cell$V) / 15.0))', False], ['9.0 / (1.0 + CHASTE_MATH::Exp((3.0 + cell$V) / 15.0)) + 0.5', False], ['1.0 / (1.0 + CHASTE_MATH::Exp((33.5 + cell$V) / 10.0))', False], ['3000.0 / (1.0 + CHASTE_MATH::Exp((60.0 + cell$V) / 10.0)) + 30.0', False], ['1.0 / (1.0 + CHASTE_MATH::Exp((33.5 + cell$V) / 10.0))', False], ['2800.0 / (1.0 + CHASTE_MATH::Exp((60.0 + cell$V) / 10.0)) + 220.0', False], ['1.0 / (1.0 + CHASTE_MATH::Exp((-3.0 - cell$V) / 15.0))', False], ['3.5 * CHASTE_MATH::Exp(-CHASTE_MATH::Pow((cell$V / 30.0), 2.0)) + 1.5', False], ['1.0 / (1.0 + CHASTE_MATH::Exp((33.5 + cell$V) / 10.0))', False], ['20.0 / (1.0 + CHASTE_MATH::Exp((33.5 + cell$V) / 10.0)) + 20.0', False], ['1.0 / (1.0 + CHASTE_MATH::Exp((-14.5 - cell$V) / 6.0))', False], ['1.0 / (1.0 + CHASTE_MATH::Exp((35.06 + cell$V) / 3.6)) + 0.6 / (1.0 + CHASTE_MATH::Exp((-cell$V + 50.0) / 20.0))', False], ['1.0 / (0.0197 * CHASTE_MATH::Exp(-CHASTE_MATH::Pow(((14.5 + cell$V) * 0.0337), 2.0)) + 0.02)', False], ['(((-14.499999400000000 >= cell$V) && (-14.500000600000000 <= cell$V)) ? ((--14.500000600000000 + cell$V) * ((-CHASTE_MATH::Exp((--14.499999400000000 - 14.5) / 6.0) + 1.0) / ((-14.499999400000000 + 14.5) * (1.0 + CHASTE_MATH::Exp((--14.499999400000000 - 14.5) / 6.0)) * 0.035) - (-CHASTE_MATH::Exp((--14.500000600000000 - 14.5) / 6.0) + 1.0) / ((-14.500000600000000 + 14.5) * (1.0 + CHASTE_MATH::Exp((--14.500000600000000 - 14.5) / 6.0)) * 0.035)) / (--14.500000600000000 - 14.499999400000000) + (-CHASTE_MATH::Exp((--14.500000600000000 - 14.5) / 6.0) + 1.0) / ((-14.500000600000000 + 14.5) * (1.0 + CHASTE_MATH::Exp((--14.500000600000000 - 14.5) / 6.0)) * 0.035)) : ((-CHASTE_MATH::Exp((-14.5 - cell$V) / 6.0) + 1.0) / ((1.0 + CHASTE_MATH::Exp((-14.5 - cell$V) / 6.0)) * (14.5 + cell$V) * 0.035)))', True], ['1.0 / ((((-9.9999993103448276 >= cell$V) && (-10.000000689655172 <= cell$V)) ? ((--10.000000689655172 + cell$V) * ((-9.9999993103448276 + 10.0) * 0.00061 / (-1.0 + CHASTE_MATH::Exp((-9.9999993103448276 + 10.0) * 0.145)) - (-10.000000689655172 + 10.0) * 0.00061 / (-1.0 + CHASTE_MATH::Exp((-10.000000689655172 + 10.0) * 0.145))) / (--10.000000689655172 - 9.9999993103448276) + (-10.000000689655172 + 10.0) * 0.00061 / (-1.0 + CHASTE_MATH::Exp((-10.000000689655172 + 10.0) * 0.145))) : ((10.0 + cell$V) * 0.00061 / (-1.0 + CHASTE_MATH::Exp((10.0 + cell$V) * 0.145)))) + (((-6.9999991869918699 >= cell$V) && (-7.0000008130081301 <= cell$V)) ? ((--7.0000008130081301 + cell$V) * ((-6.9999991869918699 + 7.0) * 0.00138 / (-CHASTE_MATH::Exp(-(-6.9999991869918699 + 7.0) * 0.123) + 1.0) - (-7.0000008130081301 + 7.0) * 0.00138 / (-CHASTE_MATH::Exp(-(-7.0000008130081301 + 7.0) * 0.123) + 1.0)) / (--7.0000008130081301 - 6.9999991869918699) + (-7.0000008130081301 + 7.0) * 0.00138 / (-CHASTE_MATH::Exp(-(-7.0000008130081301 + 7.0) * 0.123) + 1.0)) : ((7.0 + cell$V) * 0.00138 / (-CHASTE_MATH::Exp(-(7.0 + cell$V) * 0.123) + 1.0))))', False], ['(((-29.999998544395924 >= cell$V) && (-30.000001455604076 <= cell$V)) ? (1 / ((--30.000001455604076 + cell$V) * ((-29.999998544395924 + 30.0) * 0.000131 / (-1.0 + CHASTE_MATH::Exp((-29.999998544395924 + 30.0) * 0.0687)) + (-29.999998544395924 + 30.0) * 7.19e-05 / (-CHASTE_MATH::Exp(-(-29.999998544395924 + 30.0) * 0.148) + 1.0) - (-30.000001455604076 + 30.0) * 0.000131 / (-1.0 + CHASTE_MATH::Exp((-30.000001455604076 + 30.0) * 0.0687)) - (-30.000001455604076 + 30.0) * 7.19e-05 / (-CHASTE_MATH::Exp(-(-30.000001455604076 + 30.0) * 0.148) + 1.0)) / (--30.000001455604076 - 29.999998544395924) + (-30.000001455604076 + 30.0) * 0.000131 / (-1.0 + CHASTE_MATH::Exp((-30.000001455604076 + 30.0) * 0.0687)) + (-30.000001455604076 + 30.0) * 7.19e-05 / (-CHASTE_MATH::Exp(-(-30.000001455604076 + 30.0) * 0.148) + 1.0))) : (1 / ((30.0 + cell$V) * 0.000131 / (-1.0 + CHASTE_MATH::Exp((30.0 + cell$V) * 0.0687)) + (30.0 + cell$V) * 7.19e-05 / (-CHASTE_MATH::Exp(-(30.0 + cell$V) * 0.148) + 1.0)))) * 1.0', False], ['(((-47.129999000000003 >= cell$V) && (-47.130001000000003 <= cell$V)) ? ((--47.130001000000003 + cell$V) * ((-47.129999000000003 + 47.13) * 0.32 / ((-CHASTE_MATH::Exp(-(-47.129999000000003 + 47.13) * 0.1) + 1.0) * 1.0) - (-47.130001000000003 + 47.13) * 0.32 / ((-CHASTE_MATH::Exp(-(-47.130001000000003 + 47.13) * 0.1) + 1.0) * 1.0)) / (--47.130001000000003 - 47.129999000000003) + (-47.130001000000003 + 47.13) * 0.32 / ((-CHASTE_MATH::Exp(-(-47.130001000000003 + 47.13) * 0.1) + 1.0) * 1.0)) : ((47.13 + cell$V) * 0.32 / ((-CHASTE_MATH::Exp(-(47.13 + cell$V) * 0.1) + 1.0) * 1.0)))', True]] \ No newline at end of file diff --git a/chaste_codegen/rush_larsen_c.py b/chaste_codegen/rush_larsen_c.py index b2f562467..2cc5c9065 100644 --- a/chaste_codegen/rush_larsen_c.py +++ b/chaste_codegen/rush_larsen_c.py @@ -136,15 +136,15 @@ def _add_printers(self, lookup_table_function=lambda e: None): # (state variables, time, lhs of default_stimulus eqs, i_ionic and lhs of y_derivatives) # Print modifiable parameters as mParameters[index] self._printer = \ - cg.ChastePrinter(lambda variable: - get_variable_name(variable, variable in self._in_interface) - if variable not in self._model.modifiable_parameters - else self._print_modifiable_parameters(variable), - lambda deriv: get_variable_name(deriv), - lookup_table_function) + cg.ChastePrinterCommon(lambda variable: + get_variable_name(variable, variable in self._in_interface) + if variable not in self._model.modifiable_parameters + else self._print_modifiable_parameters(variable), + lambda deriv: get_variable_name(deriv), + lookup_table_function) # Printer for printing variable in comments e.g. for ode system information - self._name_printer = cg.ChastePrinter(lambda variable: get_variable_name(variable)) + self._name_printer = cg.ChastePrinterCommon(lambda variable: get_variable_name(variable)) def _print_sv_ind(self, v): var_name = "Y[%s]" % self._state_vars.index(list(v.free_symbols)[0]) diff --git a/chaste_codegen/templates/BE/kernels/ComputeJacobianDevice b/chaste_codegen/templates/BE/kernels/ComputeJacobianDevice new file mode 100644 index 000000000..cb5f0d097 --- /dev/null +++ b/chaste_codegen/templates/BE/kernels/ComputeJacobianDevice @@ -0,0 +1,28 @@ +{% if nonlinear_state_vars|length > 0 -%} +template +DEVICE +void {{class_name}}::ComputeJacobianDevice(ValueType {{free_variable.var_name}}, + const ValueType rCurrentGuess[{{class_name}}::NONLINEAR_SIZE], + const ValueType rY[], + ValueType rJacobian[{{class_name}}::NONLINEAR_SIZE][{{class_name}}::NONLINEAR_SIZE], + ValueType mDt, + const ValueType mParameters[], + bool mSetVoltageDerivativeToZero, + ValueType mFixedVoltage, + ValueType capacitance, + const DeviceStimulusFunctor stim) +{ + {% for state_var in state_vars if state_var.in_y_deriv and state_var.linear and state_var.in_jacobian -%} + ValueType {{ state_var.var }} = {{state_var.rY_lookup}}; // Units: {{state_var.units}} + {% endfor %} + {% for state_var in nonlinear_state_vars if state_var.in_jacobian -%} + ValueType {{ state_var.var }} = rCurrentGuess[{{loop.index0}}]; + {% endfor %} + {% for equation in jacobian_equations -%} + const ValueType {{equation.lhs}} = {{equation.rhs}}; + {% endfor %} + {% for entry in jacobian_entries -%} + rJacobian[{{entry.i}}][{{entry.j}}] = {% if entry.i == entry.j and entry.entry != '0' %}1.0 - (mDt * ({{entry.entry}})){% endif %}{% if entry.i == entry.j and entry.entry == '0' %}1.0{% endif %}{% if entry.i != entry.j and entry.entry == '0' %}0.0{% endif %}{% if entry.i != entry.j and entry.entry != '0' %}-(mDt * ({{entry.entry}})){% endif %}; + {%- endfor %} +} +{%- endif %} \ No newline at end of file diff --git a/chaste_codegen/templates/BE/kernels/ComputeOneStepExceptVoltageDevice b/chaste_codegen/templates/BE/kernels/ComputeOneStepExceptVoltageDevice new file mode 100644 index 000000000..10d46a35f --- /dev/null +++ b/chaste_codegen/templates/BE/kernels/ComputeOneStepExceptVoltageDevice @@ -0,0 +1,42 @@ +template +DEVICE +void {{class_name}}::SolveClosedFormVarsDevice(ValueType rY[{{class_name}}::TOTAL_SIZE], + ValueType mDt, + const ValueType mParameters[], + bool mSetVoltageDerivativeToZero, + ValueType mFixedVoltage, + ValueType capacitance) +{ + {% for state_var in state_vars %} + {%- if state_var.in_y_deriv and state_var.linear and state_var.in_one_step_except_v %}ValueType {{ state_var.var }} = {{state_var.rY_lookup}}; + // Units: {{state_var.units}}; Initial value: {{state_var.initial_value}} + {% endif %}{%- endfor %} + {% for eq in linear_equations %}const ValueType {{eq.lhs}} = {{eq.rhs}}; + {%- endfor %} + + {% for deriv in linear_deriv_eqs -%} + rY[{{deriv.state_var_index}}] = ({{deriv.var}} + (({{deriv.g}}) * mDt)) / (1.0 - (({{deriv.h}}) * mDt)); + {%- endfor %} +} +{% if nonlinear_state_vars|length > 0 %} +template +DEVICE +void {{class_name}}::FillInitialGuessDevice(ValueType _guess[{{class_name}}::NONLINEAR_SIZE], + const ValueType rY[{{class_name}}::TOTAL_SIZE]) +{ + {% if nonlinear_state_vars|length > 0 -%}{# We do not need this if really, if it is empty we just get no op -#} + {% for state_var in nonlinear_state_vars %}_guess[{{ loop.index0 }}] = rY[{{ state_var.state_var_index }}]; + {%- endfor %} + {%- endif %} +} + +template +DEVICE +void {{class_name}}::ScatterSolutionDevice(const ValueType _guess[{{class_name}}::NONLINEAR_SIZE], + ValueType rY[{{class_name}}::TOTAL_SIZE]) +{ + {% if nonlinear_state_vars|length > 0 -%} + {% for state_var in nonlinear_state_vars %}rY[{{ state_var.state_var_index }}] = _guess[{{ loop.index0 }}]; + {%- endfor %} + {%- endif %} +}{% endif %} \ No newline at end of file diff --git a/chaste_codegen/templates/BE/kernels/ComputeResidualDevice b/chaste_codegen/templates/BE/kernels/ComputeResidualDevice new file mode 100644 index 000000000..bea60a2d8 --- /dev/null +++ b/chaste_codegen/templates/BE/kernels/ComputeResidualDevice @@ -0,0 +1,28 @@ +{% if nonlinear_state_vars|length > 0 -%} +template +DEVICE +void {{class_name}}::ComputeResidualDevice(ValueType {{free_variable.var_name}}, + const ValueType rCurrentGuess[{{class_name}}::NONLINEAR_SIZE], + const ValueType rY[], + ValueType rResidual[{{class_name}}::NONLINEAR_SIZE], + ValueType mDt, + const ValueType mParameters[], + bool mSetVoltageDerivativeToZero, + ValueType mFixedVoltage, + ValueType capacitance, + const DeviceStimulusFunctor stim) +{ + {% for state_var in state_vars if state_var.linear and state_var.in_non_linear_eq -%} + ValueType {{ state_var.var }} = {{state_var.rY_lookup}}; // Units: {{state_var.units}} + {% endfor %} + {% for state_var in nonlinear_state_vars if state_var.in_non_linear_eq -%} + ValueType {{ state_var.var }} = rCurrentGuess[{{loop.index0}}]; + {% endfor %} + {% for deriv in y_derivative_equations if not deriv.linear -%} + const ValueType {{deriv.lhs}} = {{deriv.rhs}}; // {{deriv.units}} + {% endfor %} + {% for residual_var in residual_equations -%} + rResidual[{{ residual_var.residual_index }}] = rCurrentGuess[{{ residual_var.residual_index }}] - rY[{{ residual_var.state_var_index }}] - mDt*{{ residual_var.var }}; + {%- endfor %} +} +{%- endif %} \ No newline at end of file diff --git a/chaste_codegen/templates/BE/kernels/UpdateTransmembranePotentialDevice b/chaste_codegen/templates/BE/kernels/UpdateTransmembranePotentialDevice new file mode 100644 index 000000000..e9bab9ea9 --- /dev/null +++ b/chaste_codegen/templates/BE/kernels/UpdateTransmembranePotentialDevice @@ -0,0 +1,21 @@ +template +DEVICE +void {{class_name}}::UpdateTransmembranePotentialDevice(ValueType {{free_variable.var_name}}, + ValueType rY[], + ValueType mDt, + const ValueType mParameters[], + bool mSetVoltageDerivativeToZero, + ValueType mFixedVoltage, + DeviceStimulusFunctor stim, + ValueType capacitance) +{ + {% for state_var in state_vars %} + {%- if state_var.in_voltage_deriv %}ValueType {{ state_var.var }} = {{state_var.rY_lookup}}; + // Units: {{state_var.units}}; Initial value: {{state_var.initial_value}} + {% endif %}{%- endfor %} + {%- set method = "UpdateTransmembranePotential" %}{% include "Shared/cpp/lookup_table_init" %} + {% for deriv in y_derivative_equations %} + {%- if deriv.in_membrane_voltage %}const ValueType {{deriv.lhs}} = {{deriv.rhs}}; // {{deriv.units}} + {% endif %}{%- endfor %} + {% for deriv in y_derivative_equations %}{%- if deriv.is_voltage%}rY[{{membrane_voltage_index}}] += mDt*{{deriv.lhs}};{%- endif %}{%- endfor %} +} \ No newline at end of file diff --git a/chaste_codegen/templates/Cvode/kernels/EvaluateAnalyticJacobianDevice b/chaste_codegen/templates/Cvode/kernels/EvaluateAnalyticJacobianDevice new file mode 100644 index 000000000..d507c6301 --- /dev/null +++ b/chaste_codegen/templates/Cvode/kernels/EvaluateAnalyticJacobianDevice @@ -0,0 +1,16 @@ +{%- if jacobian_equations|length > 0 %} +template +DEVICE +void {{class_name}}::EvaluateAnalyticJacobianDevice(ValueType {{free_variable.var_name}}, const ValueType *rY, ValueType *rDY, ValueType *rJacobian, ValueType *rTmp1, ValueType *rTmp2, ValueType *rTmp3, const unsigned nvars, const ValueType mSetVoltageDerivativeToZero, const ValueType mFixedVoltage, const ValueType *mParameters, const ValueType capacitance, const DeviceStimulusFunctor stim) +{ + {% for state_var in state_vars %} + {%- if state_var.in_jacobian %}double {{ state_var.var }} = {{state_var.rY_lookup_device}}; + // Units: {{state_var.units}}; Initial value: {{state_var.initial_value}} + {% endif %}{%- endfor %} + {% for equation in jacobian_equations_device %}const double {{equation.lhs}} = {{equation.rhs}}; + {% endfor %} + // Matrix entries{% for entry in jacobian_entries_device %} + rJacobian[{{entry.j}} * nvars + {{entry.i}}] = {% if membrane_voltage_index == entry.i %}mSetVoltageDerivativeToZero ? CHASTE_CONST(0.0) : ({{entry.entry}});{%- else %}{{entry.entry}};{%- endif %} + {%- endfor %} +} +{%- endif -%} \ No newline at end of file diff --git a/chaste_codegen/templates/Cvode/kernels/EvaluateSparseAnalyticJacobianDevice b/chaste_codegen/templates/Cvode/kernels/EvaluateSparseAnalyticJacobianDevice new file mode 100644 index 000000000..ac672e565 --- /dev/null +++ b/chaste_codegen/templates/Cvode/kernels/EvaluateSparseAnalyticJacobianDevice @@ -0,0 +1,16 @@ +{%- if jacobian_equations|length > 0 -%} +template +DEVICE +void {{class_name}}::EvaluateSparseAnalyticJacobianDevice(ValueType {{free_variable.var_name}}, const ValueType *rY, ValueType *rDY, ValueType *rJacobian, ValueType *rTmp1, ValueType *rTmp2, ValueType *rTmp3, const unsigned nvars, const ValueType mSetVoltageDerivativeToZero, const ValueType mFixedVoltage, const ValueType *mParameters, const ValueType capacitance, const DeviceStimulusFunctor stim) +{ + {% for state_var in state_vars %} + {%- if state_var.in_jacobian %}double {{ state_var.var }} = {{state_var.rY_lookup_device}}; + // Units: {{state_var.units}}; Initial value: {{state_var.initial_value}} + {% endif %}{%- endfor %} + {% for equation in jacobian_equations_device %}const double {{equation.lhs}} = {{equation.rhs}}; + {% endfor %} + // Matrix entries{% for entry in jacobian_entries_device %} + rJacobian[{{loop.index0}}] = {% if membrane_voltage_index == entry.i %}mSetVoltageDerivativeToZero ? CHASTE_CONST(0.0) : ({{entry.entry}});{%- else %}{{entry.entry}};{%- endif %} + {%- endfor %} +} +{%- endif -%} \ No newline at end of file diff --git a/chaste_codegen/templates/Shared/cpp/includes b/chaste_codegen/templates/Shared/cpp/includes index 2e4048eb7..54faaf012 100644 --- a/chaste_codegen/templates/Shared/cpp/includes +++ b/chaste_codegen/templates/Shared/cpp/includes @@ -9,6 +9,8 @@ #include "HeartConfig.hpp" #include "IsNan.hpp" #include "MathsCustomFunctions.hpp" +#include "ChasteMathDeviceNamespaces.hpp" +#include "ChasteCpuMacros.hpp" {% if is_cvode is defined and is_cvode %} #if CHASTE_SUNDIALS_VERSION >= 60000 #include "CvodeContextManager.hpp" diff --git a/chaste_codegen/templates/Shared/hpp/includes b/chaste_codegen/templates/Shared/hpp/includes index a725d1a9f..81f893d58 100644 --- a/chaste_codegen/templates/Shared/hpp/includes +++ b/chaste_codegen/templates/Shared/hpp/includes @@ -5,4 +5,7 @@ #include "AbstractModifier.hpp"{%- endif %} {%- if dynamically_loadable %} #include "AbstractDynamicallyLoadableEntity.hpp"{%- endif %} -#include "AbstractStimulusFunction.hpp" \ No newline at end of file +#include "AbstractStimulusFunction.hpp" +#if USING_DEVICE_COMPILER +#include "StimulusEvaluatorCuda.hpp" +#endif \ No newline at end of file diff --git a/chaste_codegen/templates/Shared/kernels/EvaluateYDerivativesDevice b/chaste_codegen/templates/Shared/kernels/EvaluateYDerivativesDevice new file mode 100644 index 000000000..8a3acd682 --- /dev/null +++ b/chaste_codegen/templates/Shared/kernels/EvaluateYDerivativesDevice @@ -0,0 +1,33 @@ +template +DEVICE +void {{class_name}}::EvaluateYDerivativesDevice(ValueType {{free_variable.var_name}}, const ValueType *rY, ValueType *rDY, const ValueType mSetVoltageDerivativeToZero, const ValueType mFixedVoltage, const ValueType *mParameters, const ValueType capacitance, const DeviceStimulusFunctor stim) +{ + // Inputs: + // Time units: millisecond + {%- for state_var in state_vars %} + {% if state_var.in_y_deriv %}double {{ state_var.var }} = {{state_var.rY_lookup_device}}; + // Units: {{state_var.units}}; Initial value: {{state_var.initial_value}} + {%- endif %}{%- endfor %} + // Mathematics + {% for deriv in y_derivative_equations_device %}{%- if deriv.is_voltage%}double {{deriv.lhs}};{%- endif %}{%- endfor %} + {%- for deriv in y_derivative_equations_device %}{%- if deriv.in_eqs_excl_voltage %} + const double {{deriv.lhs}} = {{deriv.rhs}}; // {{deriv.units}}{%- endif %} + {%- endfor %} + + if (mSetVoltageDerivativeToZero) + { + {% for deriv in y_derivative_equations_device %}{%- if deriv.is_voltage %}{{ deriv.lhs }} = 0.0;{%- endif %}{%- endfor %} + } + else + { + {% for deriv in y_derivative_equations_device -%} + {% if not deriv.in_eqs_excl_voltage -%} + {# We treat everything as a standard derivative here, omitting Data Clamp branches -#} + {% if not deriv.is_voltage %}const double {% endif %}{{ deriv.lhs }} = {{ deriv.rhs }}; + {%- endif %} + {%- endfor %} + } + {% for deriv in y_derivatives %} + rDY[{{loop.index0}}] = {{deriv}}; + {%- endfor %} +} \ No newline at end of file diff --git a/chaste_codegen/templates/Shared/kernels/footer b/chaste_codegen/templates/Shared/kernels/footer new file mode 100644 index 000000000..2fa70a5d6 --- /dev/null +++ b/chaste_codegen/templates/Shared/kernels/footer @@ -0,0 +1,2 @@ +#include "ChasteCpuMacros.hpp" +#endif // {% filter upper %}{{class_name}}KERNELS_HPP_{% endfilter %} \ No newline at end of file diff --git a/chaste_codegen/templates/Shared/kernels/header_comments b/chaste_codegen/templates/Shared/kernels/header_comments new file mode 100644 index 000000000..7f1a930a1 --- /dev/null +++ b/chaste_codegen/templates/Shared/kernels/header_comments @@ -0,0 +1,14 @@ +#ifndef {% filter upper %}{{class_name}}KERNELS_HPP_{% endfilter %} +#define {% filter upper %}{{class_name}}KERNELS_HPP_{% endfilter %} + +//! @file +//! +//! This source file was generated from CellML by chaste_codegen version {{converter_version}} +//! +//! Model: {{model_name}} +//! +//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen +//! (translator: chaste_codegen, model type: {{model_type}}) +//! on {{generation_date}} +//! +//! \ No newline at end of file diff --git a/chaste_codegen/templates/Shared/kernels/includes b/chaste_codegen/templates/Shared/kernels/includes new file mode 100644 index 000000000..c4f2dffd4 --- /dev/null +++ b/chaste_codegen/templates/Shared/kernels/includes @@ -0,0 +1,2 @@ +#include "MathsCustomFunctions.hpp" +#include "ChasteDeviceMacros.hpp" \ No newline at end of file diff --git a/chaste_codegen/templates/backward_euler_kernels.hpp b/chaste_codegen/templates/backward_euler_kernels.hpp new file mode 100644 index 000000000..77721ff19 --- /dev/null +++ b/chaste_codegen/templates/backward_euler_kernels.hpp @@ -0,0 +1,15 @@ +{% include "Shared/kernels/header_comments" %} +{% include "Shared/kernels/includes" %} + + +{% include "BE/kernels/ComputeOneStepExceptVoltageDevice" %} {# (file contains SolveClosedFormVars, FillInitialGuess, ScatterSolution) #} + +{% if nonlinear_state_vars|length > 0 -%} +{% include "BE/kernels/ComputeResidualDevice" %} + +{% include "BE/kernels/ComputeJacobianDevice" %} +{%- endif %} + +{% include "BE/kernels/UpdateTransmembranePotentialDevice" %} + +{% include "Shared/kernels/footer" %} \ No newline at end of file diff --git a/chaste_codegen/templates/backward_euler_model.hpp b/chaste_codegen/templates/backward_euler_model.hpp index ea7cc7982..af07326a5 100644 --- a/chaste_codegen/templates/backward_euler_model.hpp +++ b/chaste_codegen/templates/backward_euler_model.hpp @@ -1,14 +1,68 @@ {% include "Shared/hpp/header_comments" %} {% include "Shared/hpp/includes" %} #include "{{base_class}}.hpp" -{% with %}{% set base_class = base_class ~ "<"~nonlinear_state_vars|length~">" %}{% include "Shared/hpp/class_declaration" %}{% endwith %} + +{% if not lookup_parameters is defined -%} +#if USING_DEVICE_COMPILER +template +class BackwardEulerKernelLauncher; // Forward declare to hide CUDA-specifics from standard C++ compiler +#endif +{%- endif %} +{% with %}{% set base_class = base_class ~ "<" ~ nonlinear_state_vars|length ~ ">" %}{% include "Shared/hpp/class_declaration" %}{% endwith %} +{% if not lookup_parameters is defined -%} +#if USING_DEVICE_COMPILER + template using SolverKernelLauncher = BackwardEulerKernelLauncher<{{class_name}}, ValueType>; + static constexpr unsigned TOTAL_SIZE = {{ state_vars|length }}u; + static constexpr unsigned NONLINEAR_SIZE = {{ nonlinear_state_vars|length }}u; +#endif{%- endif %} {% include "Shared/hpp/DefaultStimulus_IntracellularCalciumConcentration" %} - {{class_name}}(boost::shared_ptr /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus); + {{class_name}}(boost::shared_ptr /* unused */, boost::shared_ptr pIntracellularStimulus); {% include "Shared/hpp/destructor_verify_state_variables_GetIIonic" %} - {%- if nonlinear_state_vars|length > 0 %}void ComputeResidual(double {{free_variable.var_name}}, const double rCurrentGuess[{{nonlinear_state_vars|length}}], double rResidual[{{nonlinear_state_vars|length}}]); - void ComputeJacobian(double {{free_variable.var_name}}, const double rCurrentGuess[{{nonlinear_state_vars|length}}], double rJacobian[{{nonlinear_state_vars|length}}][{{nonlinear_state_vars|length}}]);{% endif -%} + {% if nonlinear_state_vars|length > 0 -%} + void ComputeResidual(double {{free_variable.var_name}}, const double rCurrentGuess[{{nonlinear_state_vars|length}}], double rResidual[{{nonlinear_state_vars|length}}]); + void ComputeJacobian(double {{free_variable.var_name}}, const double rCurrentGuess[{{nonlinear_state_vars|length}}], double rJacobian[{{nonlinear_state_vars|length}}][{{nonlinear_state_vars|length}}]); + {%- endif %} {# nonlinear_state_vars #} + +#if USING_DEVICE_COMPILER + {% if not lookup_parameters is defined -%}{# only generate kernels for non opt models -#} + {% if nonlinear_state_vars|length > 0 -%} + template + DEVICE + static void ComputeResidualDevice(ValueType {{free_variable.var_name}}, const ValueType rCurrentGuess[NONLINEAR_SIZE], const ValueType rY[], ValueType rResidual[NONLINEAR_SIZE], ValueType mDt, const ValueType mParameters[], bool mSetVoltageDerivativeToZero, ValueType mFixedVoltage, ValueType capacitance, const DeviceStimulusFunctor stim); + + template + DEVICE + static void ComputeJacobianDevice(ValueType {{free_variable.var_name}}, const ValueType rCurrentGuess[NONLINEAR_SIZE], const ValueType rY[], ValueType rJacobian[NONLINEAR_SIZE][NONLINEAR_SIZE], ValueType mDt, const ValueType mParameters[], bool mSetVoltageDerivativeToZero, ValueType mFixedVoltage, ValueType capacitance, const DeviceStimulusFunctor stim); + {%- endif %} {# nonlinear_state_vars #} + template + DEVICE + static void UpdateTransmembranePotentialDevice(ValueType {{free_variable.var_name}}, ValueType rY[], ValueType mDt, const ValueType mParameters[], bool mSetVoltageDerivativeToZero, ValueType mFixedVoltage, DeviceStimulusFunctor stim, ValueType capacitance); + + template + DEVICE + static void SolveClosedFormVarsDevice(ValueType rY[TOTAL_SIZE], ValueType mDt, const ValueType mParameters[], bool mSetVoltageDerivativeToZero, ValueType mFixedVoltage, ValueType capacitance); + + {% if nonlinear_state_vars|length > 0 -%} + template + DEVICE + static void FillInitialGuessDevice(ValueType _guess[NONLINEAR_SIZE], const ValueType rY[TOTAL_SIZE]); + + template + DEVICE + static void ScatterSolutionDevice(const ValueType _guess[NONLINEAR_SIZE], ValueType rY[TOTAL_SIZE]); + {%- endif %} {# nonlinear_state_vars #} + {%- endif %} {# lookup_parameters #} +#endif protected: void UpdateTransmembranePotential(double {{free_variable.var_name}}); void ComputeOneStepExceptVoltage(double {{free_variable.var_name}}); -{% include "Shared/hpp/ComputeDerivedQuantities" %} -{% include "Shared/hpp/CHASTE_CLASS_EXPORT" %} \ No newline at end of file +{% include "Shared/hpp/ComputeDerivedQuantities" -%} + +{% include "Shared/hpp/CHASTE_CLASS_EXPORT" %} + +{% if not lookup_parameters is defined -%} +#if USING_DEVICE_COMPILER + #include "{{ file_name }}Kernels.hpp" + #include "BackwardEulerKernels.hpp" +#endif +{%- endif %} \ No newline at end of file diff --git a/chaste_codegen/templates/cvode_model.cpp b/chaste_codegen/templates/cvode_model.cpp index 9403f5f41..4ab62271d 100644 --- a/chaste_codegen/templates/cvode_model.cpp +++ b/chaste_codegen/templates/cvode_model.cpp @@ -14,5 +14,6 @@ {%- include "Cvode/cpp/EvaluateAnalyticJacobian" %} {%- include "Cvode/cpp/ComputeDerivedQuantities" %} {% include "Shared/cpp/OdeSystemInformation" %} -{% include "Shared/cpp/CHASTE_CLASS_EXPORT" %}#endif // CHASTE_CVODE +{% include "Shared/cpp/CHASTE_CLASS_EXPORT" %} +#endif // CHASTE_CVODE {%endwith%} \ No newline at end of file diff --git a/chaste_codegen/templates/cvode_model.hpp b/chaste_codegen/templates/cvode_model.hpp index 28b362557..ccd62cce7 100644 --- a/chaste_codegen/templates/cvode_model.hpp +++ b/chaste_codegen/templates/cvode_model.hpp @@ -2,16 +2,41 @@ {% include "Shared/hpp/header_comments" %} {% include "Shared/hpp/includes" %} #include "{{base_class}}.hpp" +#include "HostDeviceMacros.hpp" {% include "Shared/hpp/class_declaration" %} + static constexpr unsigned TOTAL_SIZE = {{ state_vars|length }}u; + static constexpr unsigned NNZ = {{ sparse_nnz }}u; + static inline const int sparse_rowptr[] = { {{ sparse_rowptr|join(", ") }} }; + static inline const int sparse_colind[] = { {{ sparse_colind|join(", ") }} }; {% include "Shared/hpp/DefaultStimulus_IntracellularCalciumConcentration" %} {{class_name}}(boost::shared_ptr pOdeSolver /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus); {% include "Shared/hpp/destructor_verify_state_variables_GetIIonic" %} void EvaluateYDerivatives(double {{free_variable.var_name}}, const {{vector_decl}} rY, {{vector_decl}} rDY); - {%- if derived_quantities|length > 0 %} + {% if jacobian_equations|length > 0 -%} + void EvaluateAnalyticJacobian(double {{free_variable.var_name}}, {{vector_decl}} rY, {{vector_decl}} rDY, CHASTE_CVODE_DENSE_MATRIX rJacobian, {{vector_decl}} rTmp1, {{vector_decl}} rTmp2, {{vector_decl}} rTmp3); + {%- endif %} + {% if derived_quantities|length > 0 -%} {{vector_decl}} ComputeDerivedQuantities(double {{free_variable.var_name}}, const {{vector_decl}} & rY); {%- endif %} - {%- if jacobian_equations|length > 0 %} - void EvaluateAnalyticJacobian(double {{free_variable.var_name}}, {{vector_decl}} rY, {{vector_decl}} rDY, CHASTE_CVODE_DENSE_MATRIX rJacobian, {{vector_decl}} rTmp1, {{vector_decl}} rTmp2, {{vector_decl}} rTmp3); +#if USING_DEVICE_COMPILER + {% if not lookup_parameters is defined%}template + DEVICE + static void EvaluateYDerivativesDevice(ValueType {{free_variable.var_name}}, const ValueType* rY, ValueType* rDY, const ValueType mSetVoltageDerivativeToZero, const ValueType mFixedVoltage, const ValueType* mParameters, const ValueType capacitance, const DeviceStimulusFunctor stim); + template + DEVICE + static void EvaluateAnalyticJacobianDevice(ValueType {{free_variable.var_name}}, const ValueType *rY, ValueType *rDY, ValueType *rJacobian, ValueType *rTmp1, ValueType *rTmp2, ValueType *rTmp3, const unsigned nvars, const ValueType mSetVoltageDerivativeToZero, const ValueType mFixedVoltage, const ValueType *mParameters, const ValueType capacitance, const DeviceStimulusFunctor stim); + template + DEVICE + static void EvaluateSparseAnalyticJacobianDevice(ValueType {{free_variable.var_name}}, const ValueType *rY, ValueType *rDY, ValueType *rJacobian, ValueType *rTmp1, ValueType *rTmp2, ValueType *rTmp3, const unsigned nvars, const ValueType mSetVoltageDerivativeToZero, const ValueType mFixedVoltage, const ValueType *mParameters, const ValueType capacitance, const DeviceStimulusFunctor stim); {%- endif %} +#endif {% include "Shared/hpp/CHASTE_CLASS_EXPORT" %} +{# As CHASTE_CLASS_EXPORT defines our closing bracket for our class, and also the end of the double include guard for this file, + we cannot easily add our extra includes below within the double include guard. Hence we should ensure anything included below + also has its own double include guard (or is ok to be included multiple times). #} + +{% if not lookup_parameters is defined %} +#if USING_DEVICE_COMPILER + #include "{{ file_name }}Kernels.hpp" +#endif{% endif %} #endif // CHASTE_CVODE \ No newline at end of file diff --git a/chaste_codegen/templates/cvode_model_kernels.hpp b/chaste_codegen/templates/cvode_model_kernels.hpp new file mode 100644 index 000000000..ddd43e60d --- /dev/null +++ b/chaste_codegen/templates/cvode_model_kernels.hpp @@ -0,0 +1,10 @@ +{% include "Shared/kernels/header_comments" %} +{% include "Shared/kernels/includes" %} + + +{% include "Shared/kernels/EvaluateYDerivativesDevice"%} +{% include "Cvode/kernels/EvaluateAnalyticJacobianDevice" %} + +{% include "Cvode/kernels/EvaluateSparseAnalyticJacobianDevice" %} + +{% include "Shared/kernels/footer" %} \ No newline at end of file diff --git a/chaste_codegen/tests/conftest.py b/chaste_codegen/tests/conftest.py index f9756829d..29daf8bfe 100644 --- a/chaste_codegen/tests/conftest.py +++ b/chaste_codegen/tests/conftest.py @@ -106,11 +106,15 @@ def compare_model_against_reference(chaste_model, tmp_path, model_type, referenc """ tmp_path = str(tmp_path) expected_path = os.path.join(TESTS_FOLDER, reference_folder, model_type, chaste_model.file_name) + extensions = list(chaste_model.DEFAULT_EXTENSIONS) + if chaste_model.will_generate_kernels: + extensions.append('Kernels.hpp') # Write generated files # Compare against reference - assert len(chaste_model.generated_code) == len(chaste_model.generated_code) == len(chaste_model.DEFAULT_EXTENSIONS) + expected_len = len(extensions) + assert len(chaste_model.generated_code) == expected_len assert len(chaste_model.generated_code) > 0 - for ext, code in zip(chaste_model.DEFAULT_EXTENSIONS, chaste_model.generated_code): + for ext, code in zip(extensions, chaste_model.generated_code): gen_file_path = os.path.join(tmp_path, chaste_model.file_name + ext) write_file(gen_file_path, code) compare_file_against_reference(expected_path + ext, gen_file_path) diff --git a/chaste_codegen/tests/test_codegen.py b/chaste_codegen/tests/test_codegen.py index be6d18981..baaddb285 100644 --- a/chaste_codegen/tests/test_codegen.py +++ b/chaste_codegen/tests/test_codegen.py @@ -199,7 +199,7 @@ def test_BE(tmp_path, model): LOGGER.info('Converting: BE: ' + class_name + '\n') # Generate chaste code with cg.BackwardEulerModel(cache_model(model['model']), model['model_name_from_file'], - class_name=class_name) as chaste_model: + class_name=class_name, will_generate_kernels=True) as chaste_model: chaste_model.generate_chaste_code() # Compare against reference compare_model_against_reference(chaste_model, tmp_path, 'BE') @@ -212,7 +212,8 @@ def test_Cvode_jacobian(tmp_path, model): LOGGER.info('Converting: Cvode: ' + class_name + ' with jacobian\n') # Generate chaste code with cg.CvodeChasteModel(cache_model(model['model']), model['model_name_from_file'], - class_name=class_name, use_analytic_jacobian=True) as chaste_model: + class_name=class_name, use_analytic_jacobian=True, + will_generate_kernels=True) as chaste_model: chaste_model.generate_chaste_code() # Compare against reference compare_model_against_reference(chaste_model, tmp_path, 'Cvode_with_jacobian') @@ -225,7 +226,7 @@ def test_Cvode(tmp_path, model): LOGGER.info('Converting: Cvode: ' + class_name + '\n') # Generate chaste code with cg.CvodeChasteModel(cache_model(model['model']), model['model_name_from_file'], - class_name=class_name) as chaste_model: + class_name=class_name, will_generate_kernels=True) as chaste_model: chaste_model.generate_chaste_code() # Compare against reference compare_model_against_reference(chaste_model, tmp_path, 'Cvode') diff --git a/chaste_codegen/tests/test_lookup_tables.py b/chaste_codegen/tests/test_lookup_tables.py index 0763bb018..1f8915082 100644 --- a/chaste_codegen/tests/test_lookup_tables.py +++ b/chaste_codegen/tests/test_lookup_tables.py @@ -168,7 +168,7 @@ def test_change_lookup_table(be_model): assert params_for_printing[1]['var'] == 'slow_inward_current$Cai' assert str(params_for_printing[1]['lookup_epxrs']) \ - == "[['-82.3 - 13.0287 * log(0.001 * slow_inward_current$Cai)', False]]" + == "[['-82.3 - 13.0287 * CHASTE_MATH::Log(0.001 * slow_inward_current$Cai)', False]]" def test_no_print_after_table(s_model): diff --git a/chaste_codegen/tests/test_printer.py b/chaste_codegen/tests/test_printer.py index d1c7523f7..53755c6ee 100644 --- a/chaste_codegen/tests/test_printer.py +++ b/chaste_codegen/tests/test_printer.py @@ -57,12 +57,12 @@ def test_or(self, printer, x, y, z): == printer.doprint(sp.Eq(x, y) | sp.Eq(x, z)) == '(x == y) || (x == z)' def test_pow(self, printer, x, y): - assert printer.doprint(sp.sympify('x ** y')) == 'pow(x, y)' - assert printer.doprint(sp.sympify('Pow(x,y)')) == 'pow(x, y)' - assert printer.doprint(sp.sympify('x ** (1/2)')) == 'sqrt(x)' - assert printer.doprint(sp.sympify('x ** (-1/2)')) == '1 / sqrt(x)' + assert printer.doprint(sp.sympify('x ** y')) == 'CHASTE_MATH::Pow(x, y)' + assert printer.doprint(sp.sympify('Pow(x,y)')) == 'CHASTE_MATH::Pow(x, y)' + assert printer.doprint(sp.sympify('x ** (1/2)')) == 'CHASTE_MATH::Sqrt(x)' + assert printer.doprint(sp.sympify('x ** (-1/2)')) == '1 / CHASTE_MATH::Sqrt(x)' assert printer.doprint(1 / x) == '1 / x' - assert printer.doprint(sp.Pow(x, 0.5)) == 'sqrt(x)' + assert printer.doprint(sp.Pow(x, 0.5)) == 'CHASTE_MATH::Sqrt(x)' def test_piecewise_expressions(self, printer, x, y, z): # Piecewise expressions @@ -72,72 +72,73 @@ def test_piecewise_expressions(self, printer, x, y, z): assert printer.doprint(conditionalexp_r) == '((x > 0) ? (0) : ((x > 1) ? (1) : (2)))' def testabs_(self, printer, x, y): - assert printer.doprint(sp.Abs(x + y)) == 'fabs(x + y)' - assert printer.doprint(sp.Abs(sp.Float('3.2', 17), evaluate=False)) == 'fabs(3.2000000000000002)' - assert printer.doprint(sp.Abs(-3, evaluate=False)) == 'fabs(-3)' + assert printer.doprint(sp.Abs(x + y)) == 'CHASTE_MATH::Abs(x + y)' + assert printer.doprint(sp.Abs(sp.Float('3.2', 17), evaluate=False)) \ + == 'CHASTE_MATH::Abs(CHASTE_CONST(3.2000000000000002))' + assert printer.doprint(sp.Abs(-3, evaluate=False)) == 'CHASTE_MATH::Abs(-3)' def test_trig_functions(self, printer, x): # Trig functions - assert printer.doprint(sp.acos(x)) == 'acos(x)' - assert printer.doprint(sp.acosh(x)) == 'acosh(x)' - assert printer.doprint(sp.asin(x)) == 'asin(x)' - assert printer.doprint(sp.asinh(x)) == 'asinh(x)' - assert printer.doprint(sp.atan(x)) == 'atan(x)' - assert printer.doprint(sp.atanh(x)) == 'atanh(x)' - assert printer.doprint(sp.ceiling(x)) == 'ceil(x)' - assert printer.doprint(sp.cos(x)) == 'cos(x)' - assert printer.doprint(sp.cosh(x)) == 'cosh(x)' - assert printer.doprint(sp.exp(x)) == 'exp(x)' - assert printer.doprint(sp.factorial(x)) == 'factorial(x)' - assert printer.doprint(sp.floor(x)) == 'floor(x)' - assert printer.doprint(sp.log(x)) == 'log(x)' - assert printer.doprint(sp.sin(x)) == 'sin(x)' - assert printer.doprint(sp.sinh(x)) == 'sinh(x)' - assert printer.doprint(sp.tan(x)) == 'tan(x)' - assert printer.doprint(sp.tanh(x)) == 'tanh(x)' + assert printer.doprint(sp.acos(x)) == 'CHASTE_MATH::Acos(x)' + assert printer.doprint(sp.acosh(x)) == 'CHASTE_MATH::Acosh(x)' + assert printer.doprint(sp.asin(x)) == 'CHASTE_MATH::Asin(x)' + assert printer.doprint(sp.asinh(x)) == 'CHASTE_MATH::Asinh(x)' + assert printer.doprint(sp.atan(x)) == 'CHASTE_MATH::Atan(x)' + assert printer.doprint(sp.atanh(x)) == 'CHASTE_MATH::Atanh(x)' + assert printer.doprint(sp.ceiling(x)) == 'CHASTE_MATH::Ceil(x)' + assert printer.doprint(sp.cos(x)) == 'CHASTE_MATH::Cos(x)' + assert printer.doprint(sp.cosh(x)) == 'CHASTE_MATH::Cosh(x)' + assert printer.doprint(sp.exp(x)) == 'CHASTE_MATH::Exp(x)' + assert printer.doprint(sp.factorial(x)) == 'CHASTE_MATH::Factorial(x)' + assert printer.doprint(sp.floor(x)) == 'CHASTE_MATH::Floor(x)' + assert printer.doprint(sp.log(x)) == 'CHASTE_MATH::Log(x)' + assert printer.doprint(sp.sin(x)) == 'CHASTE_MATH::Sin(x)' + assert printer.doprint(sp.sinh(x)) == 'CHASTE_MATH::Sinh(x)' + assert printer.doprint(sp.tan(x)) == 'CHASTE_MATH::Tan(x)' + assert printer.doprint(sp.tanh(x)) == 'CHASTE_MATH::Tanh(x)' # extra trig functions - assert printer.doprint(sp.sec(x)) == '1 / cos(x)' - assert printer.doprint(sp.csc(x)) == '1 / sin(x)' - assert printer.doprint(sp.cot(x)) == '1 / tan(x)' - assert printer.doprint(sp.asec(x)) == 'acos(1 / x)' - assert printer.doprint(sp.acsc(x)) == 'asin(1 / x)' - assert printer.doprint(sp.acot(x)) == 'atan(1 / x)' - assert printer.doprint(sp.sech(x)) == '1 / cosh(x)' - assert printer.doprint(sp.csch(x)) == '1 / sinh(x)' - assert printer.doprint(sp.coth(x)) == '1 / tanh(x)' - assert printer.doprint(sp.asech(x)) == 'acosh(1 / x)' - assert printer.doprint(sp.acsch(x)) == 'asinh(1 / x)' - assert printer.doprint(sp.acoth(x)) == 'atanh(1 / x)' + assert printer.doprint(sp.sec(x)) == '1 / CHASTE_MATH::Cos(x)' + assert printer.doprint(sp.csc(x)) == '1 / CHASTE_MATH::Sin(x)' + assert printer.doprint(sp.cot(x)) == '1 / CHASTE_MATH::Tan(x)' + assert printer.doprint(sp.asec(x)) == 'CHASTE_MATH::Acos(1 / x)' + assert printer.doprint(sp.acsc(x)) == 'CHASTE_MATH::Asin(1 / x)' + assert printer.doprint(sp.acot(x)) == 'CHASTE_MATH::Atan(1 / x)' + assert printer.doprint(sp.sech(x)) == '1 / CHASTE_MATH::Cosh(x)' + assert printer.doprint(sp.csch(x)) == '1 / CHASTE_MATH::Sinh(x)' + assert printer.doprint(sp.coth(x)) == '1 / CHASTE_MATH::Tanh(x)' + assert printer.doprint(sp.asech(x)) == 'CHASTE_MATH::Acosh(1 / x)' + assert printer.doprint(sp.acsch(x)) == 'CHASTE_MATH::Asinh(1 / x)' + assert printer.doprint(sp.acoth(x)) == 'CHASTE_MATH::Atanh(1 / x)' def test_custom_math_functions(self, printer, x): - assert printer.doprint(acos_(x)) == 'acos(x)' - assert printer.doprint(cos_(x)) == 'cos(x)' - assert printer.doprint(exp_(x)) == 'exp(x)' - assert printer.doprint(sin_(x)) == 'sin(x)' - assert printer.doprint(sqrt_(x)) == 'sqrt(x)' - assert printer.doprint(abs_(x)) == 'fabs(x)' + assert printer.doprint(acos_(x)) == 'CHASTE_MATH::Acos(x)' + assert printer.doprint(cos_(x)) == 'CHASTE_MATH::Cos(x)' + assert printer.doprint(exp_(x)) == 'CHASTE_MATH::Exp(x)' + assert printer.doprint(sin_(x)) == 'CHASTE_MATH::Sin(x)' + assert printer.doprint(sqrt_(x)) == 'CHASTE_MATH::Sqrt(x)' + assert printer.doprint(abs_(x)) == 'CHASTE_MATH::Abs(x)' def test_numbers(self, printer, x): # Number types assert printer.doprint(1) == '1' # int - assert printer.doprint(1.2) == '1.2' # float, short format - assert printer.doprint(math.pi) == '3.1415926535897931' # float, long format - assert printer.doprint(1.436432635636e-123) == '1.436432635636e-123' + assert printer.doprint(1.2) == 'CHASTE_CONST(1.2)' # float, short format + assert printer.doprint(math.pi) == 'CHASTE_CONST(3.1415926535897931)' # float, long format + assert printer.doprint(1.436432635636e-123) == 'CHASTE_CONST(1.436432635636e-123)' assert printer.doprint(x - x) == '0' # Zero assert printer.doprint(x / x) == '1' # One assert printer.doprint(-x / x) == '-1' # Negative one assert printer.doprint(5 * (x / x)) == '5' # Sympy integer - assert printer.doprint(5.5 * (x / x)) == '5.5' # Sympy float + assert printer.doprint(5.5 * (x / x)) == 'CHASTE_CONST(5.5)' # Sympy float assert printer.doprint(sp.Rational(5, 7)) == '5 / 7' # Sympy rational # Special numbers - assert printer.doprint(sp.pi) == 'M_PI' - assert printer.doprint(sp.E) == 'e' + assert printer.doprint(sp.pi) == 'CHASTE_CONST(CHASTE_MATH::Pi)' + assert printer.doprint(sp.E) == 'CHASTE_CONST(CHASTE_MATH::E)' # large ints - assert printer.doprint(8034023767017108950029959168) == '8.034023767017109e+27' - assert printer.doprint(-8034023767017108950029959168) == '-8.034023767017109e+27' + assert printer.doprint(8034023767017108950029959168) == 'CHASTE_CONST(8.034023767017109e+27)' + assert printer.doprint(-8034023767017108950029959168) == '-CHASTE_CONST(8.034023767017109e+27)' def test_unsupported_function(self, printer, x): f = sp.Function('f') @@ -162,13 +163,13 @@ def test_multiplication(self, printer, x, y, z): assert printer.doprint(x * (y + z)) == 'x * (y + z)' assert printer.doprint(x * y * z) == 'x * y * z' assert printer.doprint(x + y > x * z), 'x + y > x * z' - assert printer.doprint(x**2 + 3 * y**2) == 'pow(x, 2) + 3 * pow(y, 2)' - assert printer.doprint(x**(2 + 3 * y**2)) == 'pow(x, (2 + 3 * pow(y, 2)))' + assert printer.doprint(x**2 + 3 * y**2) == 'CHASTE_MATH::Pow(x, 2) + 3 * CHASTE_MATH::Pow(y, 2)' + assert printer.doprint(x**(2 + 3 * y**2)) == 'CHASTE_MATH::Pow(x, (2 + 3 * CHASTE_MATH::Pow(y, 2)))' assert printer.doprint(x**-1 * y**-1) == '1 / (x * y)' assert printer.doprint(x / y / z) == 'x / (y * z)' assert printer.doprint(x / y * z) == 'x * z / y' assert printer.doprint(x / (y * z)) == 'x / (y * z)' - assert printer.doprint(x * y**(-2 / (3 * x / x))) == 'x / pow(y, (2 / 3))' + assert printer.doprint(x * y**(-2 / (3 * x / x))) == 'x / CHASTE_MATH::Pow(y, (2 / 3))' # Sympy issue #14160 d = sp.Mul(