Nektar++
Fox02.cpp
Go to the documentation of this file.
1 ///////////////////////////////////////////////////////////////////////////////
2 //
3 // File Fox02.cpp
4 //
5 // For more information, please see: http://www.nektar.info
6 //
7 // The MIT License
8 //
9 // Copyright (c) 2006 Division of Applied Mathematics, Brown University (USA),
10 // Department of Aeronautics, Imperial College London (UK), and Scientific
11 // Computing and Imaging Institute, University of Utah (USA).
12 //
13 // Permission is hereby granted, free of charge, to any person obtaining a
14 // copy of this software and associated documentation files (the "Software"),
15 // to deal in the Software without restriction, including without limitation
16 // the rights to use, copy, modify, merge, publish, distribute, sublicense,
17 // and/or sell copies of the Software, and to permit persons to whom the
18 // Software is furnished to do so, subject to the following conditions:
19 //
20 // The above copyright notice and this permission notice shall be included
21 // in all copies or substantial portions of the Software.
22 //
23 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
24 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
25 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
26 // THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
27 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
28 // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
29 // DEALINGS IN THE SOFTWARE.
30 //
31 // Description: Fox 2002 cell model.
32 //
33 ///////////////////////////////////////////////////////////////////////////////
34 
35 #include <iostream>
36 #include <string>
37 //#include <LibUtilities/BasicUtils/Vmath.hpp>
39 
40 namespace Nektar
41 {
42  std::string Fox02::className
44  "Fox02",
46  "Fox 2002 cell model.");
47 
48 
49  /**
50  *
51  */
54  const MultiRegions::ExpListSharedPtr& pField):
55  CellModel(pSession, pField)
56  {
57  pSession->LoadParameter("chi", m_chi);
58  pSession->LoadParameter("sigmai", m_sigmai);
59 
60  m_nvar = 13;
61 
62  m_gates.push_back(1);
63  m_gates.push_back(2);
64  m_gates.push_back(3);
65  m_gates.push_back(4);
66  m_gates.push_back(5);
67  m_gates.push_back(6);
68  m_gates.push_back(7);
69  m_gates.push_back(8);
70  m_gates.push_back(9);
71  m_gates.push_back(10);
72  m_concentrations.push_back(11);
73  m_concentrations.push_back(12);
74  }
75 
76 
77 
78 
79 
81  const Array<OneD, const Array<OneD, NekDouble> >&inarray,
82  Array<OneD, Array<OneD, NekDouble> >&outarray,
83  const NekDouble time)
84  {
85  for (unsigned int i = 0; i < m_nq; ++i)
86  {
87 
88  // Inputs:
89  // Time units: millisecond
90  NekDouble var_chaste_interface__membrane__V = inarray[0][i];
91  // Units: millivolt; Initial value: -94.7
92  NekDouble var_chaste_interface__fast_sodium_current_m_gate__m = inarray[1][i];
93  // Units: dimensionless; Initial value: 0.00024676
94  NekDouble var_chaste_interface__fast_sodium_current_h_gate__h = inarray[2][i];
95  // Units: dimensionless; Initial value: 0.99869
96  NekDouble var_chaste_interface__fast_sodium_current_j_gate__j = inarray[3][i];
97  // Units: dimensionless; Initial value: 0.99887
98  NekDouble var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr = inarray[4][i];
99  // Units: dimensionless; Initial value: 0.229
100  NekDouble var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks = inarray[5][i];
101  // Units: dimensionless; Initial value: 0.0001
102  NekDouble var_chaste_interface__transient_outward_potassium_current_X_to_gate__X_to = inarray[6][i];
103  // Units: dimensionless; Initial value: 0.00003742
104  NekDouble var_chaste_interface__transient_outward_potassium_current_Y_to_gate__Y_to = inarray[7][i];
105  // Units: dimensionless; Initial value: 1
106  NekDouble var_chaste_interface__L_type_Ca_current_f_gate__f = inarray[8][i];
107  // Units: dimensionless; Initial value: 0.983
108  NekDouble var_chaste_interface__L_type_Ca_current_d_gate__d = inarray[9][i];
109  // Units: dimensionless; Initial value: 0.0001
110  NekDouble var_chaste_interface__L_type_Ca_current_f_Ca_gate__f_Ca = inarray[10][i];
111  // Units: dimensionless; Initial value: 0.942
112  NekDouble var_chaste_interface__calcium_dynamics__Ca_i = inarray[11][i];
113  // Units: micromolar; Initial value: 0.0472
114  NekDouble var_chaste_interface__calcium_dynamics__Ca_SR = inarray[12][i];
115  // Units: micromolar; Initial value: 320
116 
117 
118  // Mathematics
119  NekDouble d_dt_chaste_interface__membrane__V;
120  const NekDouble var_membrane__R = 8.314; // joule_per_mole_kelvin
121  const NekDouble var_membrane__T = 310.0; // kelvin
122  const NekDouble var_membrane__F = 96.5; // coulomb_per_millimole
123  const NekDouble var_fast_sodium_current__j = var_chaste_interface__fast_sodium_current_j_gate__j; // dimensionless
124  const NekDouble var_fast_sodium_current__h = var_chaste_interface__fast_sodium_current_h_gate__h; // dimensionless
125  const NekDouble var_fast_sodium_current__m = var_chaste_interface__fast_sodium_current_m_gate__m; // dimensionless
126  const NekDouble var_fast_sodium_current__V = var_chaste_interface__membrane__V; // millivolt
127  const NekDouble var_standard_ionic_concentrations__Na_o = 138.0; // millimolar
128  const NekDouble var_standard_ionic_concentrations__Na_i = 10.0; // millimolar
129  const NekDouble var_L_type_Ca_current__f = var_chaste_interface__L_type_Ca_current_f_gate__f; // dimensionless
130  const NekDouble var_L_type_Ca_current__f_Ca = var_chaste_interface__L_type_Ca_current_f_Ca_gate__f_Ca; // dimensionless
131  const NekDouble var_L_type_Ca_current__F = var_membrane__F; // coulomb_per_millimole
132  const NekDouble var_L_type_Ca_current__P_Ca = 1.26e-05; // cm_per_millisecond
133  const NekDouble var_L_type_Ca_current__V = var_chaste_interface__membrane__V; // millivolt
134  const NekDouble var_L_type_Ca_current__C_sc = 1.0; // microF_per_cm2
135  const NekDouble var_L_type_Ca_current__T = var_membrane__T; // kelvin
136  const NekDouble var_standard_ionic_concentrations__Ca_o = 2000.0; // micromolar
137  const NekDouble var_L_type_Ca_current__Ca_o = var_standard_ionic_concentrations__Ca_o; // micromolar
138  const NekDouble var_L_type_Ca_current__R = var_membrane__R; // joule_per_mole_kelvin
139  const NekDouble var_L_type_Ca_current__Ca_i = var_chaste_interface__calcium_dynamics__Ca_i; // micromolar
140  const NekDouble var_L_type_Ca_current__i_Ca_max = ((((var_L_type_Ca_current__P_Ca / var_L_type_Ca_current__C_sc) * 4.0 * var_L_type_Ca_current__V * pow(var_L_type_Ca_current__F, 2.0)) / (var_L_type_Ca_current__R * var_L_type_Ca_current__T)) * ((var_L_type_Ca_current__Ca_i * exp((2.0 * var_L_type_Ca_current__V * var_L_type_Ca_current__F) / (var_L_type_Ca_current__R * var_L_type_Ca_current__T))) - (0.341 * var_L_type_Ca_current__Ca_o))) / (exp((2.0 * var_L_type_Ca_current__V * var_L_type_Ca_current__F) / (var_L_type_Ca_current__R * var_L_type_Ca_current__T)) - 1.0); // microA_per_microF
141  const NekDouble var_L_type_Ca_current__d = var_chaste_interface__L_type_Ca_current_d_gate__d; // dimensionless
142  const NekDouble var_L_type_Ca_current__i_Ca = var_L_type_Ca_current__i_Ca_max * var_L_type_Ca_current__f * var_L_type_Ca_current__d * var_L_type_Ca_current__f_Ca; // microA_per_microF
143  const NekDouble var_rapid_activating_delayed_rectifiyer_K_current__V = var_chaste_interface__membrane__V; // millivolt
144  const NekDouble var_rapid_activating_delayed_rectifiyer_K_current__X_kr = var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr; // dimensionless
145  const NekDouble var_slow_activating_delayed_rectifiyer_K_current__V = var_chaste_interface__membrane__V; // millivolt
146  const NekDouble var_slow_activating_delayed_rectifiyer_K_current__X_ks = var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks; // dimensionless
147  const NekDouble var_transient_outward_potassium_current__Y_to = var_chaste_interface__transient_outward_potassium_current_Y_to_gate__Y_to; // dimensionless
148  const NekDouble var_transient_outward_potassium_current__X_to = var_chaste_interface__transient_outward_potassium_current_X_to_gate__X_to; // dimensionless
149  const NekDouble var_transient_outward_potassium_current__V = var_chaste_interface__membrane__V; // millivolt
150  const NekDouble var_Na_Ca_exchanger__Na_o = var_standard_ionic_concentrations__Na_o; // millimolar
151  const NekDouble var_Na_Ca_exchanger__K_sat = 0.2; // dimensionless
152  const NekDouble var_Na_Ca_exchanger__Ca_i = var_chaste_interface__calcium_dynamics__Ca_i; // micromolar
153  const NekDouble var_Na_Ca_exchanger__K_mNa = 87.5; // millimolar
154  const NekDouble var_Na_Ca_exchanger__Ca_o = var_standard_ionic_concentrations__Ca_o; // micromolar
155  const NekDouble var_Na_Ca_exchanger__K_NaCa = 1500.0; // microA_per_microF
156  const NekDouble var_Na_Ca_exchanger__T = var_membrane__T; // kelvin
157  const NekDouble var_Na_Ca_exchanger__V = var_chaste_interface__membrane__V; // millivolt
158  const NekDouble var_Na_Ca_exchanger__Na_i = var_standard_ionic_concentrations__Na_i; // millimolar
159  const NekDouble var_Na_Ca_exchanger__eta = 0.35; // dimensionless
160  const NekDouble var_Na_Ca_exchanger__K_mCa = 1380.0; // micromolar
161  const NekDouble var_Na_Ca_exchanger__F = var_membrane__F; // coulomb_per_millimole
162  const NekDouble var_Na_Ca_exchanger__R = var_membrane__R; // joule_per_mole_kelvin
163  const NekDouble var_Na_Ca_exchanger__i_NaCa = (var_Na_Ca_exchanger__K_NaCa / ((pow(var_Na_Ca_exchanger__K_mNa, 3.0) + pow(var_Na_Ca_exchanger__Na_o, 3.0)) * (var_Na_Ca_exchanger__K_mCa + var_Na_Ca_exchanger__Ca_o) * (1.0 + (var_Na_Ca_exchanger__K_sat * exp(((var_Na_Ca_exchanger__eta - 1.0) * var_Na_Ca_exchanger__V * var_Na_Ca_exchanger__F) / (var_Na_Ca_exchanger__R * var_Na_Ca_exchanger__T)))))) * ((exp((var_Na_Ca_exchanger__eta * var_Na_Ca_exchanger__V * var_Na_Ca_exchanger__F) / (var_Na_Ca_exchanger__R * var_Na_Ca_exchanger__T)) * pow(var_Na_Ca_exchanger__Na_i, 3.0) * var_Na_Ca_exchanger__Ca_o) - (exp(((var_Na_Ca_exchanger__eta - 1.0) * var_Na_Ca_exchanger__V * var_Na_Ca_exchanger__F) / (var_Na_Ca_exchanger__R * var_Na_Ca_exchanger__T)) * pow(var_Na_Ca_exchanger__Na_o, 3.0) * var_Na_Ca_exchanger__Ca_i)); // microA_per_microF
164  const NekDouble var_sarcolemmal_calcium_pump__Ca_i = var_chaste_interface__calcium_dynamics__Ca_i; // micromolar
165  const NekDouble var_sarcolemmal_calcium_pump__i_pCa_max = 0.05; // microA_per_microF
166  const NekDouble var_sarcolemmal_calcium_pump__K_mpCa = 0.05; // micromolar
167  const NekDouble var_sarcolemmal_calcium_pump__i_p_Ca = (var_sarcolemmal_calcium_pump__i_pCa_max * var_sarcolemmal_calcium_pump__Ca_i) / (var_sarcolemmal_calcium_pump__K_mpCa + var_sarcolemmal_calcium_pump__Ca_i); // microA_per_microF
168  const NekDouble var_calcium_background_current__R = var_membrane__R; // joule_per_mole_kelvin
169  const NekDouble var_calcium_background_current__Ca_i = var_chaste_interface__calcium_dynamics__Ca_i; // micromolar
170  const NekDouble var_calcium_background_current__F = var_membrane__F; // coulomb_per_millimole
171  const NekDouble var_calcium_background_current__T = var_membrane__T; // kelvin
172  const NekDouble var_calcium_background_current__Ca_o = var_standard_ionic_concentrations__Ca_o; // micromolar
173  const NekDouble var_calcium_background_current__E_Ca = ((var_calcium_background_current__R * var_calcium_background_current__T) / (2.0 * var_calcium_background_current__F)) * log(var_calcium_background_current__Ca_o / var_calcium_background_current__Ca_i); // millivolt
174  const NekDouble var_calcium_background_current__g_Cab = 0.0003842; // milliS_per_microF
175  const NekDouble var_calcium_background_current__V = var_chaste_interface__membrane__V; // millivolt
176  const NekDouble var_calcium_background_current__i_Ca_b = var_calcium_background_current__g_Cab * (var_calcium_background_current__V - var_calcium_background_current__E_Ca); // microA_per_microF
177  const NekDouble var_fast_sodium_current_m_gate__m = var_fast_sodium_current__m; // dimensionless
178  const NekDouble var_fast_sodium_current_m_gate__V = var_fast_sodium_current__V; // millivolt
179  const NekDouble var_fast_sodium_current_m_gate__E0_m = var_fast_sodium_current_m_gate__V + 47.13; // millivolt
180  const NekDouble var_fast_sodium_current_m_gate__alpha_m = (0.32 * var_fast_sodium_current_m_gate__E0_m) / (1.0 - exp((-0.1) * var_fast_sodium_current_m_gate__E0_m)); // per_millisecond
181  const NekDouble var_fast_sodium_current_m_gate__beta_m = 0.08 * exp((-var_fast_sodium_current_m_gate__V) / 11.0); // per_millisecond
182  const NekDouble var_fast_sodium_current_m_gate__d_m_d_environment__time = (var_fast_sodium_current_m_gate__alpha_m * (1.0 - var_fast_sodium_current_m_gate__m)) - (var_fast_sodium_current_m_gate__beta_m * var_fast_sodium_current_m_gate__m); // per_millisecond
183  const NekDouble var_fast_sodium_current__fast_sodium_current_m_gate__d_m_d_environment__time = var_fast_sodium_current_m_gate__d_m_d_environment__time; // per_millisecond
184  const NekDouble var_fast_sodium_current_h_gate__V = var_fast_sodium_current__V; // millivolt
185  const NekDouble var_fast_sodium_current_h_gate__beta_h = 7.5 / (1.0 + exp((-0.1) * (var_fast_sodium_current_h_gate__V + 11.0))); // per_millisecond
186  const NekDouble var_fast_sodium_current_h_gate__alpha_h = 0.135 * exp((var_fast_sodium_current_h_gate__V + 80.0) / (-6.8)); // per_millisecond
187  const NekDouble var_fast_sodium_current_h_gate__h = var_fast_sodium_current__h; // dimensionless
188  const NekDouble var_fast_sodium_current_h_gate__d_h_d_environment__time = (var_fast_sodium_current_h_gate__alpha_h * (1.0 - var_fast_sodium_current_h_gate__h)) - (var_fast_sodium_current_h_gate__beta_h * var_fast_sodium_current_h_gate__h); // per_millisecond
189  const NekDouble var_fast_sodium_current__fast_sodium_current_h_gate__d_h_d_environment__time = var_fast_sodium_current_h_gate__d_h_d_environment__time; // per_millisecond
190  const NekDouble var_fast_sodium_current_j_gate__V = var_fast_sodium_current__V; // millivolt
191  const NekDouble var_fast_sodium_current_j_gate__alpha_j = (0.175 * exp((var_fast_sodium_current_j_gate__V + 100.0) / (-23.0))) / (1.0 + exp(0.15 * (var_fast_sodium_current_j_gate__V + 79.0))); // per_millisecond
192  const NekDouble var_fast_sodium_current_j_gate__beta_j = 0.3 / (1.0 + exp((-0.1) * (var_fast_sodium_current_j_gate__V + 32.0))); // per_millisecond
193  const NekDouble var_fast_sodium_current_j_gate__j = var_fast_sodium_current__j; // dimensionless
194  const NekDouble var_fast_sodium_current_j_gate__d_j_d_environment__time = (var_fast_sodium_current_j_gate__alpha_j * (1.0 - var_fast_sodium_current_j_gate__j)) - (var_fast_sodium_current_j_gate__beta_j * var_fast_sodium_current_j_gate__j); // per_millisecond
195  const NekDouble var_fast_sodium_current__fast_sodium_current_j_gate__d_j_d_environment__time = var_fast_sodium_current_j_gate__d_j_d_environment__time; // per_millisecond
196  const NekDouble var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__V = var_rapid_activating_delayed_rectifiyer_K_current__V; // millivolt
197  const NekDouble var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__tau_X_kr = 43.0 + (1.0 / (exp((-5.495) + (0.1691 * var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__V)) + exp((-7.677) - (0.0128 * var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__V)))); // millisecond
198  const NekDouble var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr = var_rapid_activating_delayed_rectifiyer_K_current__X_kr; // dimensionless
199  const NekDouble var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr_inf = 1.0 / (1.0 + exp((-2.182) - (0.1819 * var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__V))); // dimensionless
200  const NekDouble var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__d_X_kr_d_environment__time = (var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr_inf - var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr) / var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__tau_X_kr; // per_millisecond
201  const NekDouble var_rapid_activating_delayed_rectifiyer_K_current__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__d_X_kr_d_environment__time = var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__d_X_kr_d_environment__time; // per_millisecond
202  const NekDouble var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__V = var_slow_activating_delayed_rectifiyer_K_current__V; // millivolt
203  const NekDouble var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__tau_X_ks = 1.0 / (((7.19e-05 * (var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__V - 10.0)) / (1.0 - exp((-0.148) * (var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__V - 10.0)))) + ((0.000131 * (var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__V - 10.0)) / (exp(0.0687 * (var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__V - 10.0)) - 1.0))); // millisecond
204  const NekDouble var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks_infinity = 1.0 / (1.0 + exp((var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__V - 16.0) / (-13.6))); // dimensionless
205  const NekDouble var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks = var_slow_activating_delayed_rectifiyer_K_current__X_ks; // dimensionless
206  const NekDouble var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__d_X_ks_d_environment__time = (var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks_infinity - var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks) / var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__tau_X_ks; // per_millisecond
207  const NekDouble var_slow_activating_delayed_rectifiyer_K_current__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__d_X_ks_d_environment__time = var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__d_X_ks_d_environment__time; // per_millisecond
208  const NekDouble var_transient_outward_potassium_current_X_to_gate__V = var_transient_outward_potassium_current__V; // millivolt
209  const NekDouble var_transient_outward_potassium_current_X_to_gate__alpha_X_to = 0.04516 * exp(0.03577 * var_transient_outward_potassium_current_X_to_gate__V); // per_millisecond
210  const NekDouble var_transient_outward_potassium_current_X_to_gate__X_to = var_transient_outward_potassium_current__X_to; // dimensionless
211  const NekDouble var_transient_outward_potassium_current_X_to_gate__beta_X_to = 0.0989 * exp((-0.06237) * var_transient_outward_potassium_current_X_to_gate__V); // per_millisecond
212  const NekDouble var_transient_outward_potassium_current_X_to_gate__d_X_to_d_environment__time = (var_transient_outward_potassium_current_X_to_gate__alpha_X_to * (1.0 - var_transient_outward_potassium_current_X_to_gate__X_to)) - (var_transient_outward_potassium_current_X_to_gate__beta_X_to * var_transient_outward_potassium_current_X_to_gate__X_to); // per_millisecond
213  const NekDouble var_transient_outward_potassium_current__transient_outward_potassium_current_X_to_gate__d_X_to_d_environment__time = var_transient_outward_potassium_current_X_to_gate__d_X_to_d_environment__time; // per_millisecond
214  const NekDouble var_transient_outward_potassium_current_Y_to_gate__V = var_transient_outward_potassium_current__V; // millivolt
215  const NekDouble var_transient_outward_potassium_current_Y_to_gate__beta_Y_to = (0.005415 * exp((var_transient_outward_potassium_current_Y_to_gate__V + 33.5) / 5.0)) / (1.0 + (0.051335 * exp((var_transient_outward_potassium_current_Y_to_gate__V + 33.5) / 5.0))); // per_millisecond
216  const NekDouble var_transient_outward_potassium_current_Y_to_gate__alpha_Y_to = (0.005415 * exp((var_transient_outward_potassium_current_Y_to_gate__V + 33.5) / (-5.0))) / (1.0 + (0.051335 * exp((var_transient_outward_potassium_current_Y_to_gate__V + 33.5) / (-5.0)))); // per_millisecond
217  const NekDouble var_transient_outward_potassium_current_Y_to_gate__Y_to = var_transient_outward_potassium_current__Y_to; // dimensionless
218  const NekDouble var_transient_outward_potassium_current_Y_to_gate__d_Y_to_d_environment__time = (var_transient_outward_potassium_current_Y_to_gate__alpha_Y_to * (1.0 - var_transient_outward_potassium_current_Y_to_gate__Y_to)) - (var_transient_outward_potassium_current_Y_to_gate__beta_Y_to * var_transient_outward_potassium_current_Y_to_gate__Y_to); // per_millisecond
219  const NekDouble var_transient_outward_potassium_current__transient_outward_potassium_current_Y_to_gate__d_Y_to_d_environment__time = var_transient_outward_potassium_current_Y_to_gate__d_Y_to_d_environment__time; // per_millisecond
220  const NekDouble var_L_type_Ca_current_f_gate__V = var_L_type_Ca_current__V; // millivolt
221  const NekDouble var_L_type_Ca_current_f_gate__tau_f = 30.0 + (200.0 / (1.0 + exp((var_L_type_Ca_current_f_gate__V + 20.0) / 9.5))); // millisecond
222  const NekDouble var_L_type_Ca_current_f_gate__f = var_L_type_Ca_current__f; // dimensionless
223  const NekDouble var_L_type_Ca_current_f_gate__f_infinity = 1.0 / (1.0 + exp((var_L_type_Ca_current_f_gate__V + 12.5) / 5.0)); // dimensionless
224  const NekDouble var_L_type_Ca_current_f_gate__d_f_d_environment__time = (var_L_type_Ca_current_f_gate__f_infinity - var_L_type_Ca_current_f_gate__f) / var_L_type_Ca_current_f_gate__tau_f; // per_millisecond
225  const NekDouble var_L_type_Ca_current__L_type_Ca_current_f_gate__d_f_d_environment__time = var_L_type_Ca_current_f_gate__d_f_d_environment__time; // per_millisecond
226  const NekDouble var_L_type_Ca_current_d_gate__V = var_L_type_Ca_current__V; // millivolt
227  const NekDouble var_L_type_Ca_current_d_gate__E0_m = var_L_type_Ca_current_d_gate__V + 40.0; // millivolt
228  const NekDouble var_L_type_Ca_current_d_gate__tau_d = 1.0 / (((0.25 * exp((-0.01) * var_L_type_Ca_current_d_gate__V)) / (1.0 + exp((-0.07) * var_L_type_Ca_current_d_gate__V))) + ((0.07 * exp((-0.05) * var_L_type_Ca_current_d_gate__E0_m)) / (1.0 + exp(0.05 * var_L_type_Ca_current_d_gate__E0_m)))); // millisecond
229  const NekDouble var_L_type_Ca_current_d_gate__d = var_L_type_Ca_current__d; // dimensionless
230  const NekDouble var_L_type_Ca_current_d_gate__d_infinity = 1.0 / (1.0 + exp((var_L_type_Ca_current_d_gate__V + 10.0) / (-6.24))); // dimensionless
231  const NekDouble var_L_type_Ca_current_d_gate__d_d_d_environment__time = (var_L_type_Ca_current_d_gate__d_infinity - var_L_type_Ca_current_d_gate__d) / var_L_type_Ca_current_d_gate__tau_d; // per_millisecond
232  const NekDouble var_L_type_Ca_current__L_type_Ca_current_d_gate__d_d_d_environment__time = var_L_type_Ca_current_d_gate__d_d_d_environment__time; // per_millisecond
233  const NekDouble var_L_type_Ca_current_f_Ca_gate__f_Ca = var_L_type_Ca_current__f_Ca; // dimensionless
234  const NekDouble var_L_type_Ca_current_f_Ca_gate__K_mfCa = 0.18; // micromolar
235  const NekDouble var_L_type_Ca_current_f_Ca_gate__Ca_i = var_L_type_Ca_current__Ca_i; // micromolar
236  const NekDouble var_L_type_Ca_current_f_Ca_gate__f_Ca_infinity = 1.0 / (1.0 + pow(var_L_type_Ca_current_f_Ca_gate__Ca_i / var_L_type_Ca_current_f_Ca_gate__K_mfCa, 3.0)); // dimensionless
237  const NekDouble var_L_type_Ca_current_f_Ca_gate__tau_f_Ca = 30.0; // millisecond
238  const NekDouble var_L_type_Ca_current_f_Ca_gate__d_f_Ca_d_environment__time = (var_L_type_Ca_current_f_Ca_gate__f_Ca_infinity - var_L_type_Ca_current_f_Ca_gate__f_Ca) / var_L_type_Ca_current_f_Ca_gate__tau_f_Ca; // per_millisecond
239  const NekDouble var_L_type_Ca_current__L_type_Ca_current_f_Ca_gate__d_f_Ca_d_environment__time = var_L_type_Ca_current_f_Ca_gate__d_f_Ca_d_environment__time; // per_millisecond
240  const NekDouble var_calcium_dynamics__Ca_i = var_chaste_interface__calcium_dynamics__Ca_i; // micromolar
241  const NekDouble var_calcium_dynamics__CMDN_tot = 10.0; // micromolar
242  const NekDouble var_calcium_dynamics__K_mCMDN = 2.0; // micromolar
243  const NekDouble var_calcium_dynamics__beta_i = 1.0 / (1.0 + ((var_calcium_dynamics__CMDN_tot * var_calcium_dynamics__K_mCMDN) / pow(var_calcium_dynamics__K_mCMDN + var_calcium_dynamics__Ca_i, 2.0))); // dimensionless
244  const NekDouble var_calcium_dynamics__V_myo = 2.584e-05; // microlitre
245  const NekDouble var_calcium_dynamics__F = var_membrane__F; // coulomb_per_millimole
246  const NekDouble var_calcium_dynamics__C_sc = var_L_type_Ca_current__C_sc; // microF_per_cm2
247  const NekDouble var_calcium_dynamics__A_Cap = 0.0001534; // cm2
248  const NekDouble var_calcium_dynamics__Ca_SR = var_chaste_interface__calcium_dynamics__Ca_SR; // micromolar
249  const NekDouble var_calcium_dynamics__P_rel = 6.0; // per_millisecond
250  const NekDouble var_calcium_dynamics__V = var_chaste_interface__membrane__V; // millivolt
251  const NekDouble var_calcium_dynamics__f_Ca = var_chaste_interface__L_type_Ca_current_f_Ca_gate__f_Ca; // dimensionless
252  const NekDouble var_calcium_dynamics__gamma = 1.0 / (1.0 + pow(2000.0 / var_calcium_dynamics__Ca_SR, 3.0)); // dimensionless
253  const NekDouble var_calcium_dynamics__d = var_chaste_interface__L_type_Ca_current_d_gate__d; // dimensionless
254  const NekDouble var_calcium_dynamics__f = var_chaste_interface__L_type_Ca_current_f_gate__f; // dimensionless
255  const NekDouble var_calcium_dynamics__J_rel = (var_calcium_dynamics__P_rel * var_calcium_dynamics__f * var_calcium_dynamics__d * var_calcium_dynamics__f_Ca * ((var_calcium_dynamics__gamma * var_calcium_dynamics__Ca_SR) - var_calcium_dynamics__Ca_i)) / (1.0 + (1.65 * exp(var_calcium_dynamics__V / 20.0))); // micromolar_per_millisecond
256  const NekDouble var_calcium_dynamics__P_leak = 1e-06; // per_millisecond
257  const NekDouble var_calcium_dynamics__J_leak = var_calcium_dynamics__P_leak * (var_calcium_dynamics__Ca_SR - var_calcium_dynamics__Ca_i); // micromolar_per_millisecond
258  const NekDouble var_calcium_dynamics__K_mup = 0.32; // micromolar
259  const NekDouble var_calcium_dynamics__V_up = 0.1; // micromolar_per_millisecond
260  const NekDouble var_calcium_dynamics__J_up = var_calcium_dynamics__V_up / (1.0 + pow(var_calcium_dynamics__K_mup / var_calcium_dynamics__Ca_i, 2.0)); // micromolar_per_millisecond
261  const NekDouble var_calcium_dynamics__i_Ca = var_L_type_Ca_current__i_Ca; // microA_per_microF
262  const NekDouble var_calcium_dynamics__i_Ca_b = var_calcium_background_current__i_Ca_b; // microA_per_microF
263  const NekDouble var_calcium_dynamics__i_p_Ca = var_sarcolemmal_calcium_pump__i_p_Ca; // microA_per_microF
264  const NekDouble var_calcium_dynamics__i_NaCa = var_Na_Ca_exchanger__i_NaCa; // microA_per_microF
265  const NekDouble var_calcium_dynamics__K_mCSQN = 600.0; // micromolar
266  const NekDouble var_calcium_dynamics__CSQN_tot = 10000.0; // micromolar
267  const NekDouble var_calcium_dynamics__V_SR = 2e-06; // microlitre
268  const NekDouble var_calcium_dynamics__beta_SR = 1.0 / (1.0 + ((var_calcium_dynamics__CSQN_tot * var_calcium_dynamics__K_mCSQN) / pow(var_calcium_dynamics__K_mCSQN + var_calcium_dynamics__Ca_SR, 2.0))); // dimensionless
269  const NekDouble var_calcium_dynamics__d_Ca_i_d_environment__time = var_calcium_dynamics__beta_i * (((var_calcium_dynamics__J_rel + var_calcium_dynamics__J_leak) - var_calcium_dynamics__J_up) - (((var_calcium_dynamics__A_Cap * var_calcium_dynamics__C_sc) / (2.0 * var_calcium_dynamics__F * var_calcium_dynamics__V_myo)) * ((var_calcium_dynamics__i_Ca + var_calcium_dynamics__i_Ca_b + var_calcium_dynamics__i_p_Ca) - (2.0 * var_calcium_dynamics__i_NaCa)))); // 'micromole per litre per millisecond'
270  const NekDouble var_calcium_dynamics__d_Ca_SR_d_environment__time = (var_calcium_dynamics__beta_SR * ((var_calcium_dynamics__J_up - var_calcium_dynamics__J_leak) - var_calcium_dynamics__J_rel) * var_calcium_dynamics__V_myo) / var_calcium_dynamics__V_SR; // 'micromole per litre per millisecond'
271  const NekDouble var_chaste_interface__fast_sodium_current_m_gate__d_m_d_environment__time = var_fast_sodium_current__fast_sodium_current_m_gate__d_m_d_environment__time; // per_millisecond
272  const NekDouble var_chaste_interface__fast_sodium_current_h_gate__d_h_d_environment__time = var_fast_sodium_current__fast_sodium_current_h_gate__d_h_d_environment__time; // per_millisecond
273  const NekDouble var_chaste_interface__fast_sodium_current_j_gate__d_j_d_environment__time = var_fast_sodium_current__fast_sodium_current_j_gate__d_j_d_environment__time; // per_millisecond
274  const NekDouble var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__d_X_kr_d_environment__time = var_rapid_activating_delayed_rectifiyer_K_current__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__d_X_kr_d_environment__time; // per_millisecond
275  const NekDouble var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__d_X_ks_d_environment__time = var_slow_activating_delayed_rectifiyer_K_current__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__d_X_ks_d_environment__time; // per_millisecond
276  const NekDouble var_chaste_interface__transient_outward_potassium_current_X_to_gate__d_X_to_d_environment__time = var_transient_outward_potassium_current__transient_outward_potassium_current_X_to_gate__d_X_to_d_environment__time; // per_millisecond
277  const NekDouble var_chaste_interface__transient_outward_potassium_current_Y_to_gate__d_Y_to_d_environment__time = var_transient_outward_potassium_current__transient_outward_potassium_current_Y_to_gate__d_Y_to_d_environment__time; // per_millisecond
278  const NekDouble var_chaste_interface__L_type_Ca_current_f_gate__d_f_d_environment__time = var_L_type_Ca_current__L_type_Ca_current_f_gate__d_f_d_environment__time; // per_millisecond
279  const NekDouble var_chaste_interface__L_type_Ca_current_d_gate__d_d_d_environment__time = var_L_type_Ca_current__L_type_Ca_current_d_gate__d_d_d_environment__time; // per_millisecond
280  const NekDouble var_chaste_interface__L_type_Ca_current_f_Ca_gate__d_f_Ca_d_environment__time = var_L_type_Ca_current__L_type_Ca_current_f_Ca_gate__d_f_Ca_d_environment__time; // per_millisecond
281  const NekDouble var_chaste_interface__calcium_dynamics__d_Ca_i_d_environment__time = var_calcium_dynamics__d_Ca_i_d_environment__time; // micromolar_per_millisecond
282  const NekDouble var_chaste_interface__calcium_dynamics__d_Ca_SR_d_environment__time = var_calcium_dynamics__d_Ca_SR_d_environment__time; // micromolar_per_millisecond
283  const NekDouble d_dt_chaste_interface__fast_sodium_current_m_gate__m = var_chaste_interface__fast_sodium_current_m_gate__d_m_d_environment__time; // per_millisecond
284  const NekDouble d_dt_chaste_interface__fast_sodium_current_h_gate__h = var_chaste_interface__fast_sodium_current_h_gate__d_h_d_environment__time; // per_millisecond
285  const NekDouble d_dt_chaste_interface__fast_sodium_current_j_gate__j = var_chaste_interface__fast_sodium_current_j_gate__d_j_d_environment__time; // per_millisecond
286  const NekDouble d_dt_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr = var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__d_X_kr_d_environment__time; // per_millisecond
287  const NekDouble d_dt_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks = var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__d_X_ks_d_environment__time; // per_millisecond
288  const NekDouble d_dt_chaste_interface__transient_outward_potassium_current_X_to_gate__X_to = var_chaste_interface__transient_outward_potassium_current_X_to_gate__d_X_to_d_environment__time; // per_millisecond
289  const NekDouble d_dt_chaste_interface__transient_outward_potassium_current_Y_to_gate__Y_to = var_chaste_interface__transient_outward_potassium_current_Y_to_gate__d_Y_to_d_environment__time; // per_millisecond
290  const NekDouble d_dt_chaste_interface__L_type_Ca_current_f_gate__f = var_chaste_interface__L_type_Ca_current_f_gate__d_f_d_environment__time; // per_millisecond
291  const NekDouble d_dt_chaste_interface__L_type_Ca_current_d_gate__d = var_chaste_interface__L_type_Ca_current_d_gate__d_d_d_environment__time; // per_millisecond
292  const NekDouble d_dt_chaste_interface__L_type_Ca_current_f_Ca_gate__f_Ca = var_chaste_interface__L_type_Ca_current_f_Ca_gate__d_f_Ca_d_environment__time; // per_millisecond
293  const NekDouble d_dt_chaste_interface__calcium_dynamics__Ca_i = var_chaste_interface__calcium_dynamics__d_Ca_i_d_environment__time; // 'micromole per litre per millisecond'
294  const NekDouble d_dt_chaste_interface__calcium_dynamics__Ca_SR = var_chaste_interface__calcium_dynamics__d_Ca_SR_d_environment__time; // 'micromole per litre per millisecond'
295 
296  const NekDouble var_fast_sodium_current__g_Na = 12.8; // milliS_per_microF
297  const NekDouble var_fast_sodium_current__R = var_membrane__R; // joule_per_mole_kelvin
298  const NekDouble var_fast_sodium_current__Na_o = var_standard_ionic_concentrations__Na_o; // millimolar
299  const NekDouble var_fast_sodium_current__F = var_membrane__F; // coulomb_per_millimole
300  const NekDouble var_fast_sodium_current__T = var_membrane__T; // kelvin
301  const NekDouble var_fast_sodium_current__Na_i = var_standard_ionic_concentrations__Na_i; // millimolar
302  const NekDouble var_fast_sodium_current__E_Na = ((var_fast_sodium_current__R * var_fast_sodium_current__T) / var_fast_sodium_current__F) * log(var_fast_sodium_current__Na_o / var_fast_sodium_current__Na_i); // millivolt
303  const NekDouble var_fast_sodium_current__i_Na = var_fast_sodium_current__g_Na * pow(var_fast_sodium_current__m, 3.0) * var_fast_sodium_current__h * var_fast_sodium_current__j * (var_fast_sodium_current__V - var_fast_sodium_current__E_Na); // microA_per_microF
304  const NekDouble var_membrane__i_Na = var_fast_sodium_current__i_Na; // microA_per_microF
305  const NekDouble var_membrane__i_Ca = var_L_type_Ca_current__i_Ca; // microA_per_microF
306  const NekDouble var_L_type_Ca_current__P_CaK = 5.79e-07; // cm_per_millisecond
307  const NekDouble var_standard_ionic_concentrations__K_o = 4.0; // millimolar
308  const NekDouble var_L_type_Ca_current__K_o = var_standard_ionic_concentrations__K_o; // millimolar
309  const NekDouble var_L_type_Ca_current__i_Ca_half = -0.265; // microA_per_microF
310  const NekDouble var_standard_ionic_concentrations__K_i = 149.4; // millimolar
311  const NekDouble var_L_type_Ca_current__K_i = var_standard_ionic_concentrations__K_i; // millimolar
312  const NekDouble var_L_type_Ca_current__i_CaK = ((((((var_L_type_Ca_current__P_CaK / var_L_type_Ca_current__C_sc) * var_L_type_Ca_current__f * var_L_type_Ca_current__d * var_L_type_Ca_current__f_Ca) / (1.0 + (var_L_type_Ca_current__i_Ca_max / var_L_type_Ca_current__i_Ca_half))) * 1000.0 * var_L_type_Ca_current__V * pow(var_L_type_Ca_current__F, 2.0)) / (var_L_type_Ca_current__R * var_L_type_Ca_current__T)) * ((var_L_type_Ca_current__K_i * exp((var_L_type_Ca_current__V * var_L_type_Ca_current__F) / (var_L_type_Ca_current__R * var_L_type_Ca_current__T))) - var_L_type_Ca_current__K_o)) / (exp((var_L_type_Ca_current__V * var_L_type_Ca_current__F) / (var_L_type_Ca_current__R * var_L_type_Ca_current__T)) - 1.0); // microA_per_microF
313  const NekDouble var_membrane__i_CaK = var_L_type_Ca_current__i_CaK; // microA_per_microF
314  const NekDouble var_rapid_activating_delayed_rectifiyer_K_current__K_o = var_standard_ionic_concentrations__K_o; // millimolar
315  const NekDouble var_rapid_activating_delayed_rectifiyer_K_current__R = var_membrane__R; // joule_per_mole_kelvin
316  const NekDouble var_rapid_activating_delayed_rectifiyer_K_current__F = var_membrane__F; // coulomb_per_millimole
317  const NekDouble var_rapid_activating_delayed_rectifiyer_K_current__K_i = var_standard_ionic_concentrations__K_i; // millimolar
318  const NekDouble var_rapid_activating_delayed_rectifiyer_K_current__T = var_membrane__T; // kelvin
319  const NekDouble var_rapid_activating_delayed_rectifiyer_K_current__E_K = ((var_rapid_activating_delayed_rectifiyer_K_current__R * var_rapid_activating_delayed_rectifiyer_K_current__T) / var_rapid_activating_delayed_rectifiyer_K_current__F) * log(var_rapid_activating_delayed_rectifiyer_K_current__K_o / var_rapid_activating_delayed_rectifiyer_K_current__K_i); // millivolt
320  const NekDouble var_rapid_activating_delayed_rectifiyer_K_current__R_V = 1.0 / (1.0 + (2.5 * exp(0.1 * (var_rapid_activating_delayed_rectifiyer_K_current__V + 28.0)))); // dimensionless
321  const NekDouble var_rapid_activating_delayed_rectifiyer_K_current__g_Kr = 0.0136; // milliS_per_microF
322  const NekDouble var_rapid_activating_delayed_rectifiyer_K_current__i_Kr = var_rapid_activating_delayed_rectifiyer_K_current__g_Kr * var_rapid_activating_delayed_rectifiyer_K_current__R_V * var_rapid_activating_delayed_rectifiyer_K_current__X_kr * sqrt(var_rapid_activating_delayed_rectifiyer_K_current__K_o / 4.0) * (var_rapid_activating_delayed_rectifiyer_K_current__V - var_rapid_activating_delayed_rectifiyer_K_current__E_K); // microA_per_microF
323  const NekDouble var_membrane__i_Kr = var_rapid_activating_delayed_rectifiyer_K_current__i_Kr; // microA_per_microF
324  const NekDouble var_slow_activating_delayed_rectifiyer_K_current__g_Ks = 0.0245; // milliS_per_microF
325  const NekDouble var_slow_activating_delayed_rectifiyer_K_current__T = var_membrane__T; // kelvin
326  const NekDouble var_slow_activating_delayed_rectifiyer_K_current__K_o = var_standard_ionic_concentrations__K_o; // millimolar
327  const NekDouble var_slow_activating_delayed_rectifiyer_K_current__R = var_membrane__R; // joule_per_mole_kelvin
328  const NekDouble var_slow_activating_delayed_rectifiyer_K_current__Na_o = var_standard_ionic_concentrations__Na_o; // millimolar
329  const NekDouble var_slow_activating_delayed_rectifiyer_K_current__Na_i = var_standard_ionic_concentrations__Na_i; // millimolar
330  const NekDouble var_slow_activating_delayed_rectifiyer_K_current__K_i = var_standard_ionic_concentrations__K_i; // millimolar
331  const NekDouble var_slow_activating_delayed_rectifiyer_K_current__F = var_membrane__F; // coulomb_per_millimole
332  const NekDouble var_slow_activating_delayed_rectifiyer_K_current__E_Ks = ((var_slow_activating_delayed_rectifiyer_K_current__R * var_slow_activating_delayed_rectifiyer_K_current__T) / var_slow_activating_delayed_rectifiyer_K_current__F) * log((var_slow_activating_delayed_rectifiyer_K_current__K_o + (0.01833 * var_slow_activating_delayed_rectifiyer_K_current__Na_o)) / (var_slow_activating_delayed_rectifiyer_K_current__K_i + (0.01833 * var_slow_activating_delayed_rectifiyer_K_current__Na_i))); // millivolt
333  const NekDouble var_slow_activating_delayed_rectifiyer_K_current__i_Ks = var_slow_activating_delayed_rectifiyer_K_current__g_Ks * pow(var_slow_activating_delayed_rectifiyer_K_current__X_ks, 2.0) * (var_slow_activating_delayed_rectifiyer_K_current__V - var_slow_activating_delayed_rectifiyer_K_current__E_Ks); // microA_per_microF
334  const NekDouble var_membrane__i_Ks = var_slow_activating_delayed_rectifiyer_K_current__i_Ks; // microA_per_microF
335  const NekDouble var_transient_outward_potassium_current__g_to = 0.23815; // milliS_per_microF
336  const NekDouble var_transient_outward_potassium_current__E_K = var_rapid_activating_delayed_rectifiyer_K_current__E_K; // millivolt
337  const NekDouble var_transient_outward_potassium_current__i_to = var_transient_outward_potassium_current__g_to * var_transient_outward_potassium_current__X_to * var_transient_outward_potassium_current__Y_to * (var_transient_outward_potassium_current__V - var_transient_outward_potassium_current__E_K); // microA_per_microF
338  const NekDouble var_membrane__i_to = var_transient_outward_potassium_current__i_to; // microA_per_microF
339  const NekDouble var_time_independent_potassium_current__E_K = var_rapid_activating_delayed_rectifiyer_K_current__E_K; // millivolt
340  const NekDouble var_time_independent_potassium_current__K_o = var_standard_ionic_concentrations__K_o; // millimolar
341  const NekDouble var_time_independent_potassium_current__g_K1 = 2.8; // milliS_per_microF
342  const NekDouble var_time_independent_potassium_current__F = var_membrane__F; // coulomb_per_millimole
343  const NekDouble var_time_independent_potassium_current_K1_gate__F = var_time_independent_potassium_current__F; // coulomb_per_millimole
344  const NekDouble var_time_independent_potassium_current__V = var_chaste_interface__membrane__V; // millivolt
345  const NekDouble var_time_independent_potassium_current_K1_gate__V = var_time_independent_potassium_current__V; // millivolt
346  const NekDouble var_time_independent_potassium_current__T = var_membrane__T; // kelvin
347  const NekDouble var_time_independent_potassium_current_K1_gate__T = var_time_independent_potassium_current__T; // kelvin
348  const NekDouble var_time_independent_potassium_current_K1_gate__E_K = var_time_independent_potassium_current__E_K; // millivolt
349  const NekDouble var_time_independent_potassium_current__R = var_membrane__R; // joule_per_mole_kelvin
350  const NekDouble var_time_independent_potassium_current_K1_gate__R = var_time_independent_potassium_current__R; // joule_per_mole_kelvin
351  const NekDouble var_time_independent_potassium_current_K1_gate__K1_infinity = 1.0 / (2.0 + exp(((1.62 * var_time_independent_potassium_current_K1_gate__F) / (var_time_independent_potassium_current_K1_gate__R * var_time_independent_potassium_current_K1_gate__T)) * (var_time_independent_potassium_current_K1_gate__V - var_time_independent_potassium_current_K1_gate__E_K))); // dimensionless
352  const NekDouble var_time_independent_potassium_current__K1_infinity = var_time_independent_potassium_current_K1_gate__K1_infinity; // dimensionless
353  const NekDouble var_time_independent_potassium_current__K_mK1 = 13.0; // millimolar
354  const NekDouble var_time_independent_potassium_current__i_K1 = ((var_time_independent_potassium_current__g_K1 * var_time_independent_potassium_current__K1_infinity * var_time_independent_potassium_current__K_o) / (var_time_independent_potassium_current__K_o + var_time_independent_potassium_current__K_mK1)) * (var_time_independent_potassium_current__V - var_time_independent_potassium_current__E_K); // microA_per_microF
355  const NekDouble var_membrane__i_K1 = var_time_independent_potassium_current__i_K1; // microA_per_microF
356  const NekDouble var_plateau_potassium_current__g_Kp = 0.002216; // milliS_per_microF
357  const NekDouble var_plateau_potassium_current__V = var_chaste_interface__membrane__V; // millivolt
358  const NekDouble var_plateau_potassium_current_Kp_gate__V = var_plateau_potassium_current__V; // millivolt
359  const NekDouble var_plateau_potassium_current_Kp_gate__Kp_V = 1.0 / (1.0 + exp((7.488 - var_plateau_potassium_current_Kp_gate__V) / 5.98)); // dimensionless
360  const NekDouble var_plateau_potassium_current__Kp_V = var_plateau_potassium_current_Kp_gate__Kp_V; // dimensionless
361  const NekDouble var_plateau_potassium_current__E_K = var_rapid_activating_delayed_rectifiyer_K_current__E_K; // millivolt
362  const NekDouble var_plateau_potassium_current__i_Kp = var_plateau_potassium_current__g_Kp * var_plateau_potassium_current__Kp_V * (var_plateau_potassium_current__V - var_plateau_potassium_current__E_K); // microA_per_microF
363  const NekDouble var_membrane__i_Kp = var_plateau_potassium_current__i_Kp; // microA_per_microF
364  const NekDouble var_membrane__i_NaCa = var_Na_Ca_exchanger__i_NaCa; // microA_per_microF
365  const NekDouble var_sodium_potassium_pump__K_mNai = 10.0; // millimolar
366  const NekDouble var_sodium_potassium_pump__V = var_chaste_interface__membrane__V; // millivolt
367  const NekDouble var_sodium_potassium_pump__F = var_membrane__F; // coulomb_per_millimole
368  const NekDouble var_sodium_potassium_pump__T = var_membrane__T; // kelvin
369  const NekDouble var_sodium_potassium_pump__Na_o = var_standard_ionic_concentrations__Na_o; // millimolar
370  const NekDouble var_sodium_potassium_pump__sigma = (1.0 / 7.0) * (exp(var_sodium_potassium_pump__Na_o / 67.3) - 1.0); // dimensionless
371  const NekDouble var_sodium_potassium_pump__R = var_membrane__R; // joule_per_mole_kelvin
372  const NekDouble var_sodium_potassium_pump__f_NaK = 1.0 / (1.0 + (0.1245 * exp(((-0.1) * var_sodium_potassium_pump__V * var_sodium_potassium_pump__F) / (var_sodium_potassium_pump__R * var_sodium_potassium_pump__T))) + (0.0365 * var_sodium_potassium_pump__sigma * exp(((-var_sodium_potassium_pump__V) * var_sodium_potassium_pump__F) / (var_sodium_potassium_pump__R * var_sodium_potassium_pump__T)))); // dimensionless
373  const NekDouble var_sodium_potassium_pump__i_NaK_max = 0.693; // microA_per_microF
374  const NekDouble var_sodium_potassium_pump__K_o = var_standard_ionic_concentrations__K_o; // millimolar
375  const NekDouble var_sodium_potassium_pump__Na_i = var_standard_ionic_concentrations__Na_i; // millimolar
376  const NekDouble var_sodium_potassium_pump__K_mKo = 1.5; // millimolar
377  const NekDouble var_sodium_potassium_pump__i_NaK = (((var_sodium_potassium_pump__i_NaK_max * var_sodium_potassium_pump__f_NaK) / (1.0 + pow(var_sodium_potassium_pump__K_mNai / var_sodium_potassium_pump__Na_i, 1.5))) * var_sodium_potassium_pump__K_o) / (var_sodium_potassium_pump__K_o + var_sodium_potassium_pump__K_mKo); // microA_per_microF
378  const NekDouble var_membrane__i_NaK = var_sodium_potassium_pump__i_NaK; // microA_per_microF
379  const NekDouble var_membrane__i_p_Ca = var_sarcolemmal_calcium_pump__i_p_Ca; // microA_per_microF
380  const NekDouble var_membrane__i_Ca_b = var_calcium_background_current__i_Ca_b; // microA_per_microF
381  const NekDouble var_sodium_background_current__g_Nab = 0.0031; // milliS_per_microF
382  const NekDouble var_sodium_background_current__V = var_chaste_interface__membrane__V; // millivolt
383  const NekDouble var_sodium_background_current__E_Na = var_fast_sodium_current__E_Na; // millivolt
384  const NekDouble var_sodium_background_current__i_Na_b = var_sodium_background_current__g_Nab * (var_sodium_background_current__V - var_sodium_background_current__E_Na); // microA_per_microF
385  const NekDouble var_membrane__i_Na_b = var_sodium_background_current__i_Na_b; // microA_per_microF
386  const NekDouble var_chaste_interface__membrane__i_Stim = 0.0;
387  const NekDouble var_membrane__i_Stim_converter = var_chaste_interface__membrane__i_Stim; // uA_per_cm2
388  const NekDouble var_membrane__chaste_interface__chaste_membrane_capacitance = 1.0; // uF_per_cm2
389  const NekDouble var_membrane__i_Stim = var_membrane__i_Stim_converter / var_membrane__chaste_interface__chaste_membrane_capacitance; // microA_per_microF
390  const NekDouble var_membrane__d_V_d_environment__time = -(var_membrane__i_Na + var_membrane__i_Ca + var_membrane__i_CaK + var_membrane__i_Kr + var_membrane__i_Ks + var_membrane__i_to + var_membrane__i_K1 + var_membrane__i_Kp + var_membrane__i_NaCa + var_membrane__i_NaK + var_membrane__i_p_Ca + var_membrane__i_Na_b + var_membrane__i_Ca_b + var_membrane__i_Stim); // 'millivolt per millisecond'
391  const NekDouble var_chaste_interface__membrane__d_V_d_environment__time = var_membrane__d_V_d_environment__time; // ___units_1
392  d_dt_chaste_interface__membrane__V = var_chaste_interface__membrane__d_V_d_environment__time; // 'millivolt per millisecond'
393  outarray[0][i] = d_dt_chaste_interface__membrane__V;
394  outarray[1][i] = d_dt_chaste_interface__fast_sodium_current_m_gate__m;
395  outarray[2][i] = d_dt_chaste_interface__fast_sodium_current_h_gate__h;
396  outarray[3][i] = d_dt_chaste_interface__fast_sodium_current_j_gate__j;
397  outarray[4][i] = d_dt_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr;
398  outarray[5][i] = d_dt_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks;
399  outarray[6][i] = d_dt_chaste_interface__transient_outward_potassium_current_X_to_gate__X_to;
400  outarray[7][i] = d_dt_chaste_interface__transient_outward_potassium_current_Y_to_gate__Y_to;
401  outarray[8][i] = d_dt_chaste_interface__L_type_Ca_current_f_gate__f;
402  outarray[9][i] = d_dt_chaste_interface__L_type_Ca_current_d_gate__d;
403  outarray[10][i] = d_dt_chaste_interface__L_type_Ca_current_f_Ca_gate__f_Ca;
404  outarray[11][i] = d_dt_chaste_interface__calcium_dynamics__Ca_i;
405  outarray[12][i] = d_dt_chaste_interface__calcium_dynamics__Ca_SR;
406  }
407 
408  }
409 
410  /**
411  *
412  */
414  {
415  SolverUtils::AddSummaryItem(s, "Cell model", "Fox02");
416  }
417 
418 
419  /**
420  *
421  */
423  {
424  Vmath::Fill(m_nq, -94.7, m_cellSol[0], 1);
425  Vmath::Fill(m_nq, 0.00024676, m_cellSol[1], 1);
426  Vmath::Fill(m_nq, 0.99869, m_cellSol[2], 1);
427  Vmath::Fill(m_nq, 0.99887, m_cellSol[3], 1);
428  Vmath::Fill(m_nq, 0.229, m_cellSol[4], 1);
429  Vmath::Fill(m_nq, 0.0001, m_cellSol[5], 1);
430  Vmath::Fill(m_nq, 0.00003742, m_cellSol[6], 1);
431  Vmath::Fill(m_nq, 1.0, m_cellSol[7], 1);
432  Vmath::Fill(m_nq, 0.0472, m_cellSol[8], 1);
433  Vmath::Fill(m_nq, 0.983, m_cellSol[9], 1);
434  Vmath::Fill(m_nq, 0.0001, m_cellSol[10], 1);
435  Vmath::Fill(m_nq, 0.942, m_cellSol[11], 1);
436  Vmath::Fill(m_nq, 320.0, m_cellSol[12], 1);
437  }
438 }
439 
static CellModelSharedPtr create(const LibUtilities::SessionReaderSharedPtr &pSession, const MultiRegions::ExpListSharedPtr &pField)
Creates an instance of this class.
Definition: Fox02.h:46
int m_nq
Number of physical points.
Definition: CellModel.h:116
virtual void v_Update(const Array< OneD, const Array< OneD, NekDouble > > &inarray, Array< OneD, Array< OneD, NekDouble > > &outarray, const NekDouble time)
Computes the reaction terms $f(u,v)$ and $g(u,v)$.
Definition: Fox02.cpp:80
NekDouble m_sigmai
Definition: Fox02.h:79
std::shared_ptr< ExpList > ExpListSharedPtr
Shared pointer to an ExpList object.
std::vector< std::pair< std::string, std::string > > SummaryList
Definition: Misc.h:46
void Fill(int n, const T alpha, T *x, const int incx)
Fill a vector with a constant value.
Definition: Vmath.cpp:45
Cell model base class.
Definition: CellModel.h:64
virtual void v_SetInitialConditions()
Definition: Fox02.cpp:422
virtual void v_GenerateSummary(SummaryList &s)
Prints a summary of the model parameters.
Definition: Fox02.cpp:413
Fox02(const LibUtilities::SessionReaderSharedPtr &pSession, const MultiRegions::ExpListSharedPtr &pField)
Constructor.
Definition: Fox02.cpp:52
NekDouble m_chi
Definition: Fox02.h:78
std::vector< int > m_concentrations
Indices of cell model variables which are concentrations.
Definition: CellModel.h:138
void AddSummaryItem(SummaryList &l, const std::string &name, const std::string &value)
Adds a summary item to the summary info list.
Definition: Misc.cpp:49
Array< OneD, Array< OneD, NekDouble > > m_cellSol
Cell model solution variables.
Definition: CellModel.h:125
int m_nvar
Number of variables in cell model (inc. transmembrane voltage)
Definition: CellModel.h:118
std::vector< int > m_gates
Indices of cell model variables which are gates.
Definition: CellModel.h:140
double NekDouble
static std::string className
Name of class.
Definition: Fox02.h:54
CellModelFactory & GetCellModelFactory()
Definition: CellModel.cpp:46
tKey RegisterCreatorFunction(tKey idKey, CreatorFunction classCreator, std::string pDesc="")
Register a class with the factory.
Definition: NekFactory.hpp:199
std::shared_ptr< SessionReader > SessionReaderSharedPtr