Nektar++
Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Types | Protected Member Functions | Protected Attributes | Static Protected Attributes | List of all members
Nektar::TenTusscher06 Class Reference

#include <TenTusscher06.h>

Inheritance diagram for Nektar::TenTusscher06:
[legend]

Public Member Functions

 TenTusscher06 (const LibUtilities::SessionReaderSharedPtr &pSession, const MultiRegions::ExpListSharedPtr &pField)
 Constructor. More...
 
virtual ~TenTusscher06 ()
 Desctructor. More...
 
- Public Member Functions inherited from Nektar::CellModel
 CellModel (const LibUtilities::SessionReaderSharedPtr &pSession, const MultiRegions::ExpListSharedPtr &pField)
 
virtual ~CellModel ()
 
void Initialise ()
 Initialise the cell model storage and set initial conditions. More...
 
void TimeIntegrate (const Array< OneD, const Array< OneD, NekDouble >> &inarray, Array< OneD, Array< OneD, NekDouble >> &outarray, const NekDouble time)
 Time integrate the cell model by one PDE timestep. More...
 
void Update (const Array< OneD, const Array< OneD, NekDouble >> &inarray, Array< OneD, Array< OneD, NekDouble >> &outarray, const NekDouble time)
 Compute the derivatives of cell model variables. More...
 
void GenerateSummary (SummaryList &s)
 Print a summary of the cell model. More...
 
unsigned int GetNumCellVariables ()
 
std::string GetCellVarName (unsigned int idx)
 
Array< OneD, NekDoubleGetCellSolutionCoeffs (unsigned int idx)
 
Array< OneD, NekDoubleGetCellSolution (unsigned int idx)
 

Static Public Member Functions

static CellModelSharedPtr create (const LibUtilities::SessionReaderSharedPtr &pSession, const MultiRegions::ExpListSharedPtr &pField)
 Creates an instance of this class. More...
 

Static Public Attributes

static std::string className
 Name of class. More...
 

Protected Types

enum  Variants { eEpicardium , eEndocardium , eMid , eIschemia }
 

Protected Member Functions

virtual void v_Update (const Array< OneD, const Array< OneD, NekDouble >> &inarray, Array< OneD, Array< OneD, NekDouble >> &outarray, const NekDouble time)
 
virtual void v_GenerateSummary (SummaryList &s)
 Prints a summary of the model parameters. More...
 
virtual void v_SetInitialConditions ()
 
- Protected Member Functions inherited from Nektar::CellModel
virtual std::string v_GetCellVarName (unsigned int idx)
 
void LoadCellModel ()
 

Protected Attributes

NekDouble g_to
 
NekDouble g_Ks
 
NekDouble s_inf_factor
 
NekDouble s_tau_f1
 
NekDouble s_tau_f2
 
NekDouble s_tau_f3
 
NekDouble s_tau_f4
 
NekDouble s_tau_f5
 
NekDouble k_0
 
enum Variants model_variant
 
- Protected Attributes inherited from Nektar::CellModel
LibUtilities::SessionReaderSharedPtr m_session
 Session. More...
 
MultiRegions::ExpListSharedPtr m_field
 Transmembrane potential field from PDE system. More...
 
int m_nq
 Number of physical points. More...
 
int m_nvar
 Number of variables in cell model (inc. transmembrane voltage) More...
 
NekDouble m_lastTime
 Timestep for pde model. More...
 
int m_substeps
 Number of substeps to take. More...
 
Array< OneD, Array< OneD, NekDouble > > m_cellSol
 Cell model solution variables. More...
 
Array< OneD, Array< OneD, NekDouble > > m_wsp
 Cell model integration workspace. More...
 
bool m_useNodal
 Flag indicating whether nodal projection in use. More...
 
StdRegions::StdNodalTriExpSharedPtr m_nodalTri
 StdNodalTri for cell model calculations. More...
 
StdRegions::StdNodalTetExpSharedPtr m_nodalTet
 
Array< OneD, Array< OneD, NekDouble > > m_nodalTmp
 Temporary array for nodal projection. More...
 
std::vector< int > m_concentrations
 Indices of cell model variables which are concentrations. More...
 
std::vector< int > m_gates
 Indices of cell model variables which are gates. More...
 
Array< OneD, Array< OneD, NekDouble > > m_gates_tau
 Storage for gate tau values. More...
 

Static Protected Attributes

static std::string lookupIds []
 
static std::string def
 

Detailed Description

Definition at line 42 of file TenTusscher06.h.

Member Enumeration Documentation

◆ Variants

Enumerator
eEpicardium 
eEndocardium 
eMid 
eIschemia 

Definition at line 87 of file TenTusscher06.h.

Constructor & Destructor Documentation

◆ TenTusscher06()

Nektar::TenTusscher06::TenTusscher06 ( const LibUtilities::SessionReaderSharedPtr pSession,
const MultiRegions::ExpListSharedPtr pField 
)

Constructor.

Definition at line 64 of file TenTusscher06.cpp.

67  : CellModel(pSession, pField)
68 {
69  model_variant = pSession->GetSolverInfoAsEnum<TenTusscher06::Variants>(
70  "CellModelVariant");
71 
72  switch (model_variant)
73  {
74  case eEpicardium:
75  g_to = 0.294;
76  g_Ks = 0.392;
77  s_inf_factor = 20.0;
78  s_tau_f1 = 85.0;
79  s_tau_f2 = 45.0;
80  s_tau_f3 = 320.0;
81  s_tau_f4 = 0.0;
82  s_tau_f5 = 1.0;
83  k_0 = 5.4;
84  break;
85  case eEndocardium:
86  g_to = 0.073;
87  g_Ks = 0.392;
88  s_inf_factor = 28.0;
89  s_tau_f1 = 1000.0;
90  s_tau_f2 = 67.0;
91  s_tau_f3 = 1000.0;
92  s_tau_f4 = 8.0;
93  s_tau_f5 = 0.0;
94  k_0 = 5.4;
95  break;
96  case eMid:
97  g_to = 0.294;
98  g_Ks = 0.098;
99  s_inf_factor = 20.0;
100  s_tau_f1 = 85.0;
101  s_tau_f2 = 45.0;
102  s_tau_f3 = 320.0;
103  s_tau_f4 = 0.0;
104  s_tau_f5 = 1.0;
105  k_0 = 5.4;
106  break;
107  case eIschemia:
108  g_to = 0.294;
109  g_Ks = 0.392;
110  s_inf_factor = 20.0;
111  s_tau_f1 = 85.0;
112  s_tau_f2 = 45.0;
113  s_tau_f3 = 320.0;
114  s_tau_f4 = 0.0;
115  s_tau_f5 = 1.0;
116  k_0 = 9.0;
117  break;
118  }
119  m_nvar = 19;
120 
121  m_gates.push_back(1);
122  m_gates.push_back(2);
123  m_gates.push_back(3);
124  m_gates.push_back(4);
125  m_gates.push_back(5);
126  m_gates.push_back(6);
127  m_gates.push_back(7);
128  m_gates.push_back(8);
129  m_gates.push_back(9);
130  m_gates.push_back(10);
131  m_gates.push_back(11);
132  m_gates.push_back(12);
133  m_concentrations.push_back(13);
134  m_concentrations.push_back(14);
135  m_concentrations.push_back(15);
136  m_concentrations.push_back(16);
137  m_concentrations.push_back(17);
138  m_concentrations.push_back(18);
139 }
std::vector< int > m_concentrations
Indices of cell model variables which are concentrations.
Definition: CellModel.h:139
std::vector< int > m_gates
Indices of cell model variables which are gates.
Definition: CellModel.h:141
CellModel(const LibUtilities::SessionReaderSharedPtr &pSession, const MultiRegions::ExpListSharedPtr &pField)
Definition: CellModel.cpp:66
int m_nvar
Number of variables in cell model (inc. transmembrane voltage)
Definition: CellModel.h:119
enum Variants model_variant
Definition: TenTusscher06.h:94

References eEndocardium, eEpicardium, eIschemia, eMid, g_Ks, g_to, k_0, Nektar::CellModel::m_concentrations, Nektar::CellModel::m_gates, Nektar::CellModel::m_nvar, model_variant, s_inf_factor, s_tau_f1, s_tau_f2, s_tau_f3, s_tau_f4, and s_tau_f5.

◆ ~TenTusscher06()

virtual Nektar::TenTusscher06::~TenTusscher06 ( )
inlinevirtual

Desctructor.

Definition at line 63 of file TenTusscher06.h.

64  {
65  }

Member Function Documentation

◆ create()

static CellModelSharedPtr Nektar::TenTusscher06::create ( const LibUtilities::SessionReaderSharedPtr pSession,
const MultiRegions::ExpListSharedPtr pField 
)
inlinestatic

Creates an instance of this class.

Definition at line 47 of file TenTusscher06.h.

50  {
52  pField);
53  }
static std::shared_ptr< DataType > AllocateSharedPtr(const Args &...args)
Allocate a shared pointer from the memory pool.

References Nektar::MemoryManager< DataType >::AllocateSharedPtr().

◆ v_GenerateSummary()

void Nektar::TenTusscher06::v_GenerateSummary ( SummaryList s)
protectedvirtual

Prints a summary of the model parameters.

Implements Nektar::CellModel.

Definition at line 1077 of file TenTusscher06.cpp.

1078 {
1079  SolverUtils::AddSummaryItem(s, "Cell model", "TenTusscher06");
1080 }
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

References Nektar::SolverUtils::AddSummaryItem().

◆ v_SetInitialConditions()

void Nektar::TenTusscher06::v_SetInitialConditions ( )
protectedvirtual

Implements Nektar::CellModel.

Definition at line 1085 of file TenTusscher06.cpp.

1086 {
1087  // Values taken from CellML website
1088  switch (model_variant)
1089  {
1090  case eEpicardium:
1091  Vmath::Fill(m_nq, -85.23, m_cellSol[0], 1);
1092  Vmath::Fill(m_nq, 0.00621, m_cellSol[1], 1);
1093  Vmath::Fill(m_nq, 0.4712, m_cellSol[2], 1);
1094  Vmath::Fill(m_nq, 0.0095, m_cellSol[3], 1);
1095  Vmath::Fill(m_nq, 0.00172, m_cellSol[4], 1);
1096  Vmath::Fill(m_nq, 0.7444, m_cellSol[5], 1);
1097  Vmath::Fill(m_nq, 0.7045, m_cellSol[6], 1);
1098  Vmath::Fill(m_nq, 3.373e-5, m_cellSol[7], 1);
1099  Vmath::Fill(m_nq, 0.7888, m_cellSol[8], 1);
1100  Vmath::Fill(m_nq, 0.9755, m_cellSol[9], 1);
1101  Vmath::Fill(m_nq, 0.9953, m_cellSol[10], 1);
1102  Vmath::Fill(m_nq, 0.999998, m_cellSol[11], 1);
1103  Vmath::Fill(m_nq, 2.42e-8, m_cellSol[12], 1);
1104  Vmath::Fill(m_nq, 0.000126, m_cellSol[13], 1);
1105  Vmath::Fill(m_nq, 3.64, m_cellSol[14], 1);
1106  Vmath::Fill(m_nq, 0.00036, m_cellSol[15], 1);
1107  Vmath::Fill(m_nq, 0.9073, m_cellSol[16], 1);
1108  Vmath::Fill(m_nq, 8.604, m_cellSol[17], 1);
1109  Vmath::Fill(m_nq, 136.89, m_cellSol[18], 1);
1110  break;
1111  case eEndocardium:
1112  Vmath::Fill(m_nq, -86.709, m_cellSol[0], 1);
1113  Vmath::Fill(m_nq, 0.00448, m_cellSol[1], 1);
1114  Vmath::Fill(m_nq, 0.476, m_cellSol[2], 1);
1115  Vmath::Fill(m_nq, 0.0087, m_cellSol[3], 1);
1116  Vmath::Fill(m_nq, 0.00155, m_cellSol[4], 1);
1117  Vmath::Fill(m_nq, 0.7573, m_cellSol[5], 1);
1118  Vmath::Fill(m_nq, 0.7225, m_cellSol[6], 1);
1119  Vmath::Fill(m_nq, 3.164e-5, m_cellSol[7], 1);
1120  Vmath::Fill(m_nq, 0.8009, m_cellSol[8], 1);
1121  Vmath::Fill(m_nq, 0.9778, m_cellSol[9], 1);
1122  Vmath::Fill(m_nq, 0.9953, m_cellSol[10], 1);
1123  Vmath::Fill(m_nq, 0.3212, m_cellSol[11], 1);
1124  Vmath::Fill(m_nq, 2.235e-8, m_cellSol[12], 1);
1125  Vmath::Fill(m_nq, 0.00013, m_cellSol[13], 1);
1126  Vmath::Fill(m_nq, 3.715, m_cellSol[14], 1);
1127  Vmath::Fill(m_nq, 0.00036, m_cellSol[15], 1);
1128  Vmath::Fill(m_nq, 0.9068, m_cellSol[16], 1);
1129  Vmath::Fill(m_nq, 10.355, m_cellSol[17], 1);
1130  Vmath::Fill(m_nq, 138.4, m_cellSol[18], 1);
1131  break;
1132  case eMid:
1133  Vmath::Fill(m_nq, -85.423, m_cellSol[0], 1);
1134  Vmath::Fill(m_nq, 0.0165, m_cellSol[1], 1);
1135  Vmath::Fill(m_nq, 0.473, m_cellSol[2], 1);
1136  Vmath::Fill(m_nq, 0.0174, m_cellSol[3], 1);
1137  Vmath::Fill(m_nq, 0.00165, m_cellSol[4], 1);
1138  Vmath::Fill(m_nq, 0.749, m_cellSol[5], 1);
1139  Vmath::Fill(m_nq, 0.6788, m_cellSol[6], 1);
1140  Vmath::Fill(m_nq, 3.288e-5, m_cellSol[7], 1);
1141  Vmath::Fill(m_nq, 0.7026, m_cellSol[8], 1);
1142  Vmath::Fill(m_nq, 0.9526, m_cellSol[9], 1);
1143  Vmath::Fill(m_nq, 0.9942, m_cellSol[10], 1);
1144  Vmath::Fill(m_nq, 0.999998, m_cellSol[11], 1);
1145  Vmath::Fill(m_nq, 2.347e-8, m_cellSol[12], 1);
1146  Vmath::Fill(m_nq, 0.000153, m_cellSol[13], 1);
1147  Vmath::Fill(m_nq, 4.272, m_cellSol[14], 1);
1148  Vmath::Fill(m_nq, 0.00042, m_cellSol[15], 1);
1149  Vmath::Fill(m_nq, 0.8978, m_cellSol[16], 1);
1150  Vmath::Fill(m_nq, 10.132, m_cellSol[17], 1);
1151  Vmath::Fill(m_nq, 138.52, m_cellSol[18], 1);
1152  break;
1153  case eIschemia:
1154  Vmath::Fill(m_nq, -85.23, m_cellSol[0], 1);
1155  Vmath::Fill(m_nq, 0.00621, m_cellSol[1], 1);
1156  Vmath::Fill(m_nq, 0.4712, m_cellSol[2], 1);
1157  Vmath::Fill(m_nq, 0.0095, m_cellSol[3], 1);
1158  Vmath::Fill(m_nq, 0.00172, m_cellSol[4], 1);
1159  Vmath::Fill(m_nq, 0.7444, m_cellSol[5], 1);
1160  Vmath::Fill(m_nq, 0.7045, m_cellSol[6], 1);
1161  Vmath::Fill(m_nq, 3.373e-5, m_cellSol[7], 1);
1162  Vmath::Fill(m_nq, 0.7888, m_cellSol[8], 1);
1163  Vmath::Fill(m_nq, 0.9755, m_cellSol[9], 1);
1164  Vmath::Fill(m_nq, 0.9953, m_cellSol[10], 1);
1165  Vmath::Fill(m_nq, 0.999998, m_cellSol[11], 1);
1166  Vmath::Fill(m_nq, 2.42e-8, m_cellSol[12], 1);
1167  Vmath::Fill(m_nq, 0.000126, m_cellSol[13], 1);
1168  Vmath::Fill(m_nq, 3.64, m_cellSol[14], 1);
1169  Vmath::Fill(m_nq, 0.00036, m_cellSol[15], 1);
1170  Vmath::Fill(m_nq, 0.9073, m_cellSol[16], 1);
1171  Vmath::Fill(m_nq, 8.604, m_cellSol[17], 1);
1172  Vmath::Fill(m_nq, 136.89, m_cellSol[18], 1);
1173  break;
1174  }
1175 }
Array< OneD, Array< OneD, NekDouble > > m_cellSol
Cell model solution variables.
Definition: CellModel.h:126
int m_nq
Number of physical points.
Definition: CellModel.h:117
void Fill(int n, const T alpha, T *x, const int incx)
Fill a vector with a constant value.
Definition: Vmath.cpp:45

References eEndocardium, eEpicardium, eIschemia, eMid, Vmath::Fill(), Nektar::CellModel::m_cellSol, Nektar::CellModel::m_nq, and model_variant.

◆ v_Update()

void Nektar::TenTusscher06::v_Update ( const Array< OneD, const Array< OneD, NekDouble >> &  inarray,
Array< OneD, Array< OneD, NekDouble >> &  outarray,
const NekDouble  time 
)
protectedvirtual

Implements Nektar::CellModel.

Definition at line 144 of file TenTusscher06.cpp.

147 {
148  for (unsigned int i = 0; i < m_nq; ++i)
149  {
150  // Inputs:
151  // Time units: millisecond
152  NekDouble var_chaste_interface__membrane__V = inarray[0][i];
153  // Units: millivolt; Initial value: -85.23
154  NekDouble
155  var_chaste_interface__rapid_time_dependent_potassium_current_Xr1_gate__Xr1 =
156  inarray[1][i];
157  // Units: dimensionless; Initial value: 0.00621
158  NekDouble
159  var_chaste_interface__rapid_time_dependent_potassium_current_Xr2_gate__Xr2 =
160  inarray[2][i];
161  // Units: dimensionless; Initial value: 0.4712
162  NekDouble
163  var_chaste_interface__slow_time_dependent_potassium_current_Xs_gate__Xs =
164  inarray[3][i];
165  // Units: dimensionless; Initial value: 0.0095
166  NekDouble var_chaste_interface__fast_sodium_current_m_gate__m =
167  inarray[4][i];
168  // Units: dimensionless; Initial value: 0.00172
169  NekDouble var_chaste_interface__fast_sodium_current_h_gate__h =
170  inarray[5][i];
171  // Units: dimensionless; Initial value: 0.7444
172  NekDouble var_chaste_interface__fast_sodium_current_j_gate__j =
173  inarray[6][i];
174  // Units: dimensionless; Initial value: 0.7045
175  NekDouble var_chaste_interface__L_type_Ca_current_d_gate__d =
176  inarray[7][i];
177  // Units: dimensionless; Initial value: 3.373e-5
178  NekDouble var_chaste_interface__L_type_Ca_current_f_gate__f =
179  inarray[8][i];
180  // Units: dimensionless; Initial value: 0.7888
181  NekDouble var_chaste_interface__L_type_Ca_current_f2_gate__f2 =
182  inarray[9][i];
183  // Units: dimensionless; Initial value: 0.9755
184  NekDouble var_chaste_interface__L_type_Ca_current_fCass_gate__fCass =
185  inarray[10][i];
186  // Units: dimensionless; Initial value: 0.9953
187  NekDouble var_chaste_interface__transient_outward_current_s_gate__s =
188  inarray[11][i];
189  // Units: dimensionless; Initial value: 0.999998
190  NekDouble var_chaste_interface__transient_outward_current_r_gate__r =
191  inarray[12][i];
192  // Units: dimensionless; Initial value: 2.42e-8
193  NekDouble var_chaste_interface__calcium_dynamics__Ca_i = inarray[13][i];
194  // Units: millimolar; Initial value: 0.000126
195  NekDouble var_chaste_interface__calcium_dynamics__Ca_SR =
196  inarray[14][i];
197  // Units: millimolar; Initial value: 3.64
198  NekDouble var_chaste_interface__calcium_dynamics__Ca_ss =
199  inarray[15][i];
200  // Units: millimolar; Initial value: 0.00036
201  NekDouble var_chaste_interface__calcium_dynamics__R_prime =
202  inarray[16][i];
203  // Units: dimensionless; Initial value: 0.9073
204  NekDouble var_chaste_interface__sodium_dynamics__Na_i = inarray[17][i];
205  // Units: millimolar; Initial value: 8.604
206  NekDouble var_chaste_interface__potassium_dynamics__K_i =
207  inarray[18][i];
208  // Units: millimolar; Initial value: 136.89
209 
210  // Mathematics
211  NekDouble d_dt_chaste_interface__membrane__V;
212  const NekDouble var_membrane__R = 8314.472; // joule_per_mole_kelvin
213  const NekDouble var_membrane__T = 310.0; // kelvin
214  const NekDouble var_membrane__F = 96485.3415; // coulomb_per_millimole
215  const NekDouble var_membrane__Cm = 0.185; // microF
216  const NekDouble var_membrane__V_c = 0.016404; // micrometre3
217  const NekDouble var_inward_rectifier_potassium_current__V =
218  var_chaste_interface__membrane__V; // millivolt
219  const NekDouble var_reversal_potentials__K_i =
220  var_chaste_interface__potassium_dynamics__K_i; // millimolar
221  const NekDouble var_reversal_potentials__R =
222  var_membrane__R; // joule_per_mole_kelvin
223  const NekDouble var_reversal_potentials__T = var_membrane__T; // kelvin
224  const NekDouble var_reversal_potentials__F =
225  var_membrane__F; // coulomb_per_millimole
226  const NekDouble var_potassium_dynamics__K_o = k_0; // millimolar
227  const NekDouble var_reversal_potentials__K_o =
228  var_potassium_dynamics__K_o; // millimolar
229  const NekDouble var_reversal_potentials__E_K =
230  ((var_reversal_potentials__R * var_reversal_potentials__T) /
231  var_reversal_potentials__F) *
232  log(var_reversal_potentials__K_o /
233  var_reversal_potentials__K_i); // millivolt
234  const NekDouble var_inward_rectifier_potassium_current__E_K =
235  var_reversal_potentials__E_K; // millivolt
236  const NekDouble var_inward_rectifier_potassium_current__beta_K1 =
237  ((3.0 *
238  exp(0.0002 * ((var_inward_rectifier_potassium_current__V -
239  var_inward_rectifier_potassium_current__E_K) +
240  100.0))) +
241  exp(0.1 * ((var_inward_rectifier_potassium_current__V -
242  var_inward_rectifier_potassium_current__E_K) -
243  10.0))) /
244  (1.0 +
245  exp((-0.5) *
246  (var_inward_rectifier_potassium_current__V -
247  var_inward_rectifier_potassium_current__E_K))); // dimensionless
248  const NekDouble var_inward_rectifier_potassium_current__alpha_K1 =
249  0.1 /
250  (1.0 + exp(0.06 * ((var_inward_rectifier_potassium_current__V -
251  var_inward_rectifier_potassium_current__E_K) -
252  200.0))); // dimensionless
253  const NekDouble var_inward_rectifier_potassium_current__xK1_inf =
254  var_inward_rectifier_potassium_current__alpha_K1 /
255  (var_inward_rectifier_potassium_current__alpha_K1 +
256  var_inward_rectifier_potassium_current__beta_K1); // dimensionless
257  const NekDouble var_inward_rectifier_potassium_current__K_o =
258  var_potassium_dynamics__K_o; // millimolar
259  const NekDouble var_inward_rectifier_potassium_current__g_K1 =
260  5.405; // nanoS_per_picoF
261  const NekDouble var_inward_rectifier_potassium_current__i_K1 =
262  var_inward_rectifier_potassium_current__g_K1 *
263  var_inward_rectifier_potassium_current__xK1_inf *
264  sqrt(var_inward_rectifier_potassium_current__K_o / 5.4) *
265  (var_inward_rectifier_potassium_current__V -
266  var_inward_rectifier_potassium_current__E_K); // picoA_per_picoF
267  const NekDouble var_transient_outward_current__s =
268  var_chaste_interface__transient_outward_current_s_gate__s; // dimensionless
269  const NekDouble var_transient_outward_current__r =
270  var_chaste_interface__transient_outward_current_r_gate__r; // dimensionless
271  const NekDouble var_transient_outward_current__g_to =
272  g_to; // nanoS_per_picoF
273  const NekDouble var_transient_outward_current__V =
274  var_chaste_interface__membrane__V; // millivolt
275  const NekDouble var_transient_outward_current__E_K =
276  var_reversal_potentials__E_K; // millivolt
277  const NekDouble var_transient_outward_current__i_to =
278  var_transient_outward_current__g_to *
279  var_transient_outward_current__r *
280  var_transient_outward_current__s *
281  (var_transient_outward_current__V -
282  var_transient_outward_current__E_K); // picoA_per_picoF
283  const NekDouble var_rapid_time_dependent_potassium_current__Xr1 =
284  var_chaste_interface__rapid_time_dependent_potassium_current_Xr1_gate__Xr1; // dimensionless
285  const NekDouble var_rapid_time_dependent_potassium_current__Xr2 =
286  var_chaste_interface__rapid_time_dependent_potassium_current_Xr2_gate__Xr2; // dimensionless
287  const NekDouble var_rapid_time_dependent_potassium_current__V =
288  var_chaste_interface__membrane__V; // millivolt
289  const NekDouble var_rapid_time_dependent_potassium_current__K_o =
290  var_potassium_dynamics__K_o; // millimolar
291  const NekDouble var_rapid_time_dependent_potassium_current__E_K =
292  var_reversal_potentials__E_K; // millivolt
293  const NekDouble var_rapid_time_dependent_potassium_current__g_Kr =
294  0.153; // nanoS_per_picoF
295  const NekDouble var_rapid_time_dependent_potassium_current__i_Kr =
296  var_rapid_time_dependent_potassium_current__g_Kr *
297  sqrt(var_rapid_time_dependent_potassium_current__K_o / 5.4) *
298  var_rapid_time_dependent_potassium_current__Xr1 *
299  var_rapid_time_dependent_potassium_current__Xr2 *
300  (var_rapid_time_dependent_potassium_current__V -
301  var_rapid_time_dependent_potassium_current__E_K); // picoA_per_picoF
302  const NekDouble var_slow_time_dependent_potassium_current__g_Ks =
303  g_Ks; // nanoS_per_picoF
304  const NekDouble var_sodium_dynamics__Na_o = 140.0; // millimolar
305  const NekDouble var_reversal_potentials__Na_o =
306  var_sodium_dynamics__Na_o; // millimolar
307  const NekDouble var_reversal_potentials__Na_i =
308  var_chaste_interface__sodium_dynamics__Na_i; // millimolar
309  const NekDouble var_reversal_potentials__P_kna = 0.03; // dimensionless
310  const NekDouble var_reversal_potentials__E_Ks =
311  ((var_reversal_potentials__R * var_reversal_potentials__T) /
312  var_reversal_potentials__F) *
313  log((var_reversal_potentials__K_o +
314  (var_reversal_potentials__P_kna *
315  var_reversal_potentials__Na_o)) /
316  (var_reversal_potentials__K_i +
317  (var_reversal_potentials__P_kna *
318  var_reversal_potentials__Na_i))); // millivolt
319  const NekDouble var_slow_time_dependent_potassium_current__E_Ks =
320  var_reversal_potentials__E_Ks; // millivolt
321  const NekDouble var_slow_time_dependent_potassium_current__V =
322  var_chaste_interface__membrane__V; // millivolt
323  const NekDouble var_slow_time_dependent_potassium_current__Xs =
324  var_chaste_interface__slow_time_dependent_potassium_current_Xs_gate__Xs; // dimensionless
325  const NekDouble var_slow_time_dependent_potassium_current__i_Ks =
326  var_slow_time_dependent_potassium_current__g_Ks *
327  pow(var_slow_time_dependent_potassium_current__Xs, 2.0) *
328  (var_slow_time_dependent_potassium_current__V -
329  var_slow_time_dependent_potassium_current__E_Ks); // picoA_per_picoF
330  const NekDouble var_L_type_Ca_current__Ca_ss =
331  var_chaste_interface__calcium_dynamics__Ca_ss; // millimolar
332  const NekDouble var_L_type_Ca_current__g_CaL =
333  3.98e-05; // litre_per_farad_second
334  const NekDouble var_L_type_Ca_current__f =
335  var_chaste_interface__L_type_Ca_current_f_gate__f; // dimensionless
336  const NekDouble var_L_type_Ca_current__d =
337  var_chaste_interface__L_type_Ca_current_d_gate__d; // dimensionless
338  const NekDouble var_L_type_Ca_current__F =
339  var_membrane__F; // coulomb_per_millimole
340  const NekDouble var_L_type_Ca_current__f2 =
341  var_chaste_interface__L_type_Ca_current_f2_gate__f2; // dimensionless
342  const NekDouble var_L_type_Ca_current__fCass =
343  var_chaste_interface__L_type_Ca_current_fCass_gate__fCass; // dimensionless
344  const NekDouble var_L_type_Ca_current__V =
345  var_chaste_interface__membrane__V; // millivolt
346  const NekDouble var_L_type_Ca_current__T = var_membrane__T; // kelvin
347  const NekDouble var_calcium_dynamics__Ca_o = 2.0; // millimolar
348  const NekDouble var_L_type_Ca_current__Ca_o =
349  var_calcium_dynamics__Ca_o; // millimolar
350  const NekDouble var_L_type_Ca_current__R =
351  var_membrane__R; // joule_per_mole_kelvin
352  const NekDouble var_L_type_Ca_current__i_CaL =
353  (((var_L_type_Ca_current__g_CaL * var_L_type_Ca_current__d *
354  var_L_type_Ca_current__f * var_L_type_Ca_current__f2 *
355  var_L_type_Ca_current__fCass * 4.0 *
356  (var_L_type_Ca_current__V - 15.0) *
357  pow(var_L_type_Ca_current__F, 2.0)) /
358  (var_L_type_Ca_current__R * var_L_type_Ca_current__T)) *
359  ((0.25 * var_L_type_Ca_current__Ca_ss *
360  exp((2.0 * (var_L_type_Ca_current__V - 15.0) *
361  var_L_type_Ca_current__F) /
362  (var_L_type_Ca_current__R * var_L_type_Ca_current__T))) -
363  var_L_type_Ca_current__Ca_o)) /
364  (exp((2.0 * (var_L_type_Ca_current__V - 15.0) *
365  var_L_type_Ca_current__F) /
366  (var_L_type_Ca_current__R * var_L_type_Ca_current__T)) -
367  1.0); // picoA_per_picoF
368  const NekDouble var_sodium_potassium_pump_current__Na_i =
369  var_chaste_interface__sodium_dynamics__Na_i; // millimolar
370  const NekDouble var_sodium_potassium_pump_current__R =
371  var_membrane__R; // joule_per_mole_kelvin
372  const NekDouble var_sodium_potassium_pump_current__T =
373  var_membrane__T; // kelvin
374  const NekDouble var_sodium_potassium_pump_current__V =
375  var_chaste_interface__membrane__V; // millivolt
376  const NekDouble var_sodium_potassium_pump_current__K_mk =
377  1.0; // millimolar
378  const NekDouble var_sodium_potassium_pump_current__P_NaK =
379  2.724; // picoA_per_picoF
380  const NekDouble var_sodium_potassium_pump_current__K_mNa =
381  40.0; // millimolar
382  const NekDouble var_sodium_potassium_pump_current__F =
383  var_membrane__F; // coulomb_per_millimole
384  const NekDouble var_sodium_potassium_pump_current__K_o =
385  var_potassium_dynamics__K_o; // millimolar
386  const NekDouble var_sodium_potassium_pump_current__i_NaK =
387  ((((var_sodium_potassium_pump_current__P_NaK *
388  var_sodium_potassium_pump_current__K_o) /
389  (var_sodium_potassium_pump_current__K_o +
390  var_sodium_potassium_pump_current__K_mk)) *
391  var_sodium_potassium_pump_current__Na_i) /
392  (var_sodium_potassium_pump_current__Na_i +
393  var_sodium_potassium_pump_current__K_mNa)) /
394  (1.0 +
395  (0.1245 * exp(((-0.1) * var_sodium_potassium_pump_current__V *
396  var_sodium_potassium_pump_current__F) /
397  (var_sodium_potassium_pump_current__R *
398  var_sodium_potassium_pump_current__T))) +
399  (0.0353 *
400  exp(((-var_sodium_potassium_pump_current__V) *
401  var_sodium_potassium_pump_current__F) /
402  (var_sodium_potassium_pump_current__R *
403  var_sodium_potassium_pump_current__T)))); // picoA_per_picoF
404  const NekDouble var_fast_sodium_current__j =
405  var_chaste_interface__fast_sodium_current_j_gate__j; // dimensionless
406  const NekDouble var_fast_sodium_current__h =
407  var_chaste_interface__fast_sodium_current_h_gate__h; // dimensionless
408  const NekDouble var_fast_sodium_current__g_Na =
409  14.838; // nanoS_per_picoF
410  const NekDouble var_fast_sodium_current__m =
411  var_chaste_interface__fast_sodium_current_m_gate__m; // dimensionless
412  const NekDouble var_fast_sodium_current__V =
413  var_chaste_interface__membrane__V; // millivolt
414  const NekDouble var_reversal_potentials__E_Na =
415  ((var_reversal_potentials__R * var_reversal_potentials__T) /
416  var_reversal_potentials__F) *
417  log(var_reversal_potentials__Na_o /
418  var_reversal_potentials__Na_i); // millivolt
419  const NekDouble var_fast_sodium_current__E_Na =
420  var_reversal_potentials__E_Na; // millivolt
421  const NekDouble var_fast_sodium_current__i_Na =
422  var_fast_sodium_current__g_Na *
423  pow(var_fast_sodium_current__m, 3.0) * var_fast_sodium_current__h *
424  var_fast_sodium_current__j *
425  (var_fast_sodium_current__V -
426  var_fast_sodium_current__E_Na); // picoA_per_picoF
427  const NekDouble var_sodium_background_current__V =
428  var_chaste_interface__membrane__V; // millivolt
429  const NekDouble var_sodium_background_current__E_Na =
430  var_reversal_potentials__E_Na; // millivolt
431  const NekDouble var_sodium_background_current__g_bna =
432  0.00029; // nanoS_per_picoF
433  const NekDouble var_sodium_background_current__i_b_Na =
434  var_sodium_background_current__g_bna *
435  (var_sodium_background_current__V -
436  var_sodium_background_current__E_Na); // picoA_per_picoF
437  const NekDouble var_sodium_calcium_exchanger_current__alpha =
438  2.5; // dimensionless
439  const NekDouble var_sodium_calcium_exchanger_current__gamma =
440  0.35; // dimensionless
441  const NekDouble var_sodium_calcium_exchanger_current__K_sat =
442  0.1; // dimensionless
443  const NekDouble var_sodium_calcium_exchanger_current__Km_Ca =
444  1.38; // millimolar
445  const NekDouble var_sodium_calcium_exchanger_current__K_NaCa =
446  1000.0; // picoA_per_picoF
447  const NekDouble var_sodium_calcium_exchanger_current__F =
448  var_membrane__F; // coulomb_per_millimole
449  const NekDouble var_sodium_calcium_exchanger_current__Ca_i =
450  var_chaste_interface__calcium_dynamics__Ca_i; // millimolar
451  const NekDouble var_sodium_calcium_exchanger_current__Ca_o =
452  var_calcium_dynamics__Ca_o; // millimolar
453  const NekDouble var_sodium_calcium_exchanger_current__V =
454  var_chaste_interface__membrane__V; // millivolt
455  const NekDouble var_sodium_calcium_exchanger_current__R =
456  var_membrane__R; // joule_per_mole_kelvin
457  const NekDouble var_sodium_calcium_exchanger_current__Km_Nai =
458  87.5; // millimolar
459  const NekDouble var_sodium_calcium_exchanger_current__Na_o =
460  var_sodium_dynamics__Na_o; // millimolar
461  const NekDouble var_sodium_calcium_exchanger_current__Na_i =
462  var_chaste_interface__sodium_dynamics__Na_i; // millimolar
463  const NekDouble var_sodium_calcium_exchanger_current__T =
464  var_membrane__T; // kelvin
465  const NekDouble var_sodium_calcium_exchanger_current__i_NaCa =
466  (var_sodium_calcium_exchanger_current__K_NaCa *
467  ((exp((var_sodium_calcium_exchanger_current__gamma *
468  var_sodium_calcium_exchanger_current__V *
469  var_sodium_calcium_exchanger_current__F) /
470  (var_sodium_calcium_exchanger_current__R *
471  var_sodium_calcium_exchanger_current__T)) *
472  pow(var_sodium_calcium_exchanger_current__Na_i, 3.0) *
473  var_sodium_calcium_exchanger_current__Ca_o) -
474  (exp(((var_sodium_calcium_exchanger_current__gamma - 1.0) *
475  var_sodium_calcium_exchanger_current__V *
476  var_sodium_calcium_exchanger_current__F) /
477  (var_sodium_calcium_exchanger_current__R *
478  var_sodium_calcium_exchanger_current__T)) *
479  pow(var_sodium_calcium_exchanger_current__Na_o, 3.0) *
480  var_sodium_calcium_exchanger_current__Ca_i *
481  var_sodium_calcium_exchanger_current__alpha))) /
482  ((pow(var_sodium_calcium_exchanger_current__Km_Nai, 3.0) +
483  pow(var_sodium_calcium_exchanger_current__Na_o, 3.0)) *
484  (var_sodium_calcium_exchanger_current__Km_Ca +
485  var_sodium_calcium_exchanger_current__Ca_o) *
486  (1.0 +
487  (var_sodium_calcium_exchanger_current__K_sat *
488  exp(((var_sodium_calcium_exchanger_current__gamma - 1.0) *
489  var_sodium_calcium_exchanger_current__V *
490  var_sodium_calcium_exchanger_current__F) /
491  (var_sodium_calcium_exchanger_current__R *
492  var_sodium_calcium_exchanger_current__T))))); // picoA_per_picoF
493  const NekDouble var_reversal_potentials__Ca_o =
494  var_calcium_dynamics__Ca_o; // millimolar
495  const NekDouble var_reversal_potentials__Ca_i =
496  var_chaste_interface__calcium_dynamics__Ca_i; // millimolar
497  const NekDouble var_reversal_potentials__E_Ca =
498  ((0.5 * var_reversal_potentials__R * var_reversal_potentials__T) /
499  var_reversal_potentials__F) *
500  log(var_reversal_potentials__Ca_o /
501  var_reversal_potentials__Ca_i); // millivolt
502  const NekDouble var_calcium_background_current__E_Ca =
503  var_reversal_potentials__E_Ca; // millivolt
504  const NekDouble var_calcium_background_current__g_bca =
505  0.000592; // nanoS_per_picoF
506  const NekDouble var_calcium_background_current__V =
507  var_chaste_interface__membrane__V; // millivolt
508  const NekDouble var_calcium_background_current__i_b_Ca =
509  var_calcium_background_current__g_bca *
510  (var_calcium_background_current__V -
511  var_calcium_background_current__E_Ca); // picoA_per_picoF
512  const NekDouble var_potassium_pump_current__g_pK =
513  0.0146; // nanoS_per_picoF
514  const NekDouble var_potassium_pump_current__V =
515  var_chaste_interface__membrane__V; // millivolt
516  const NekDouble var_potassium_pump_current__E_K =
517  var_reversal_potentials__E_K; // millivolt
518  const NekDouble var_potassium_pump_current__i_p_K =
519  (var_potassium_pump_current__g_pK *
520  (var_potassium_pump_current__V -
521  var_potassium_pump_current__E_K)) /
522  (1.0 + exp((25.0 - var_potassium_pump_current__V) /
523  5.98)); // picoA_per_picoF
524  const NekDouble var_calcium_pump_current__K_pCa = 0.0005; // millimolar
525  const NekDouble var_calcium_pump_current__Ca_i =
526  var_chaste_interface__calcium_dynamics__Ca_i; // millimolar
527  const NekDouble var_calcium_pump_current__g_pCa =
528  0.1238; // picoA_per_picoF
529  const NekDouble var_calcium_pump_current__i_p_Ca =
530  (var_calcium_pump_current__g_pCa * var_calcium_pump_current__Ca_i) /
531  (var_calcium_pump_current__Ca_i +
532  var_calcium_pump_current__K_pCa); // picoA_per_picoF
533  const NekDouble var_chaste_interface__membrane__i_Stim = 0.0;
534  const NekDouble var_rapid_time_dependent_potassium_current_Xr1_gate__V =
535  var_rapid_time_dependent_potassium_current__V; // millivolt
536  const NekDouble
537  var_rapid_time_dependent_potassium_current_Xr1_gate__alpha_xr1 =
538  450.0 /
539  (1.0 +
540  exp(((-45.0) -
541  var_rapid_time_dependent_potassium_current_Xr1_gate__V) /
542  10.0)); // dimensionless
543  const NekDouble
544  var_rapid_time_dependent_potassium_current_Xr1_gate__beta_xr1 =
545  6.0 /
546  (1.0 +
547  exp((var_rapid_time_dependent_potassium_current_Xr1_gate__V +
548  30.0) /
549  11.5)); // dimensionless
550  const NekDouble
551  var_rapid_time_dependent_potassium_current_Xr1_gate__tau_xr1 =
552  1.0 *
553  var_rapid_time_dependent_potassium_current_Xr1_gate__alpha_xr1 *
554  var_rapid_time_dependent_potassium_current_Xr1_gate__beta_xr1; // millisecond
555  const NekDouble
556  var_rapid_time_dependent_potassium_current_Xr1_gate__xr1_inf =
557  1.0 /
558  (1.0 +
559  exp(((-26.0) -
560  var_rapid_time_dependent_potassium_current_Xr1_gate__V) /
561  7.0)); // dimensionless
562  const NekDouble var_rapid_time_dependent_potassium_current_Xr2_gate__V =
563  var_rapid_time_dependent_potassium_current__V; // millivolt
564  const NekDouble
565  var_rapid_time_dependent_potassium_current_Xr2_gate__alpha_xr2 =
566  3.0 /
567  (1.0 +
568  exp(((-60.0) -
569  var_rapid_time_dependent_potassium_current_Xr2_gate__V) /
570  20.0)); // dimensionless
571  const NekDouble
572  var_rapid_time_dependent_potassium_current_Xr2_gate__beta_xr2 =
573  1.12 /
574  (1.0 +
575  exp((var_rapid_time_dependent_potassium_current_Xr2_gate__V -
576  60.0) /
577  20.0)); // dimensionless
578  const NekDouble
579  var_rapid_time_dependent_potassium_current_Xr2_gate__tau_xr2 =
580  1.0 *
581  var_rapid_time_dependent_potassium_current_Xr2_gate__alpha_xr2 *
582  var_rapid_time_dependent_potassium_current_Xr2_gate__beta_xr2; // millisecond
583  const NekDouble
584  var_rapid_time_dependent_potassium_current_Xr2_gate__xr2_inf =
585  1.0 /
586  (1.0 +
587  exp((var_rapid_time_dependent_potassium_current_Xr2_gate__V +
588  88.0) /
589  24.0)); // dimensionless
590  const NekDouble var_slow_time_dependent_potassium_current_Xs_gate__V =
591  var_slow_time_dependent_potassium_current__V; // millivolt
592  const NekDouble
593  var_slow_time_dependent_potassium_current_Xs_gate__beta_xs =
594  1.0 /
595  (1.0 +
596  exp((var_slow_time_dependent_potassium_current_Xs_gate__V -
597  35.0) /
598  15.0)); // dimensionless
599  const NekDouble
600  var_slow_time_dependent_potassium_current_Xs_gate__alpha_xs =
601  1400.0 /
602  sqrt(
603  1.0 +
604  exp((5.0 -
605  var_slow_time_dependent_potassium_current_Xs_gate__V) /
606  6.0)); // dimensionless
607  const NekDouble
608  var_slow_time_dependent_potassium_current_Xs_gate__tau_xs =
609  (1.0 *
610  var_slow_time_dependent_potassium_current_Xs_gate__alpha_xs *
611  var_slow_time_dependent_potassium_current_Xs_gate__beta_xs) +
612  80.0; // millisecond
613  const NekDouble
614  var_slow_time_dependent_potassium_current_Xs_gate__xs_inf =
615  1.0 /
616  (1.0 +
617  exp(((-5.0) -
618  var_slow_time_dependent_potassium_current_Xs_gate__V) /
619  14.0)); // dimensionless
620  const NekDouble var_fast_sodium_current_m_gate__V =
621  var_fast_sodium_current__V; // millivolt
622  const NekDouble var_fast_sodium_current_m_gate__alpha_m =
623  1.0 / (1.0 + exp(((-60.0) - var_fast_sodium_current_m_gate__V) /
624  5.0)); // dimensionless
625  const NekDouble var_fast_sodium_current_m_gate__beta_m =
626  (0.1 /
627  (1.0 + exp((var_fast_sodium_current_m_gate__V + 35.0) / 5.0))) +
628  (0.1 / (1.0 + exp((var_fast_sodium_current_m_gate__V - 50.0) /
629  200.0))); // dimensionless
630  const NekDouble var_fast_sodium_current_m_gate__tau_m =
631  1.0 * var_fast_sodium_current_m_gate__alpha_m *
632  var_fast_sodium_current_m_gate__beta_m; // millisecond
633  const NekDouble var_fast_sodium_current_m_gate__m_inf =
634  1.0 / pow(1.0 + exp(((-56.86) - var_fast_sodium_current_m_gate__V) /
635  9.03),
636  2.0); // dimensionless
637  const NekDouble var_fast_sodium_current_h_gate__V =
638  var_fast_sodium_current__V; // millivolt
639  const NekDouble var_fast_sodium_current_h_gate__h_inf =
640  1.0 /
641  pow(1.0 + exp((var_fast_sodium_current_h_gate__V + 71.55) / 7.43),
642  2.0); // dimensionless
643  const NekDouble var_fast_sodium_current_h_gate__beta_h =
644  (var_fast_sodium_current_h_gate__V < (-40.0))
645  ? ((2.7 * exp(0.079 * var_fast_sodium_current_h_gate__V)) +
646  (310000.0 * exp(0.3485 * var_fast_sodium_current_h_gate__V)))
647  : (0.77 /
648  (0.13 *
649  (1.0 + exp((var_fast_sodium_current_h_gate__V + 10.66) /
650  (-11.1))))); // per_millisecond
651  const NekDouble var_fast_sodium_current_h_gate__alpha_h =
652  (var_fast_sodium_current_h_gate__V < (-40.0))
653  ? (0.057 *
654  exp((-(var_fast_sodium_current_h_gate__V + 80.0)) / 6.8))
655  : 0.0; // per_millisecond
656  const NekDouble var_fast_sodium_current_h_gate__tau_h =
657  1.0 / (var_fast_sodium_current_h_gate__alpha_h +
658  var_fast_sodium_current_h_gate__beta_h); // millisecond
659  const NekDouble var_fast_sodium_current_j_gate__V =
660  var_fast_sodium_current__V; // millivolt
661  const NekDouble var_fast_sodium_current_j_gate__j_inf =
662  1.0 /
663  pow(1.0 + exp((var_fast_sodium_current_j_gate__V + 71.55) / 7.43),
664  2.0); // dimensionless
665  const NekDouble var_fast_sodium_current_j_gate__alpha_j =
666  (var_fast_sodium_current_j_gate__V < (-40.0))
667  ? ((((((-25428.0) *
668  exp(0.2444 * var_fast_sodium_current_j_gate__V)) -
669  (6.948e-06 *
670  exp((-0.04391) * var_fast_sodium_current_j_gate__V))) *
671  (var_fast_sodium_current_j_gate__V + 37.78)) /
672  1.0) /
673  (1.0 +
674  exp(0.311 * (var_fast_sodium_current_j_gate__V + 79.23))))
675  : 0.0; // per_millisecond
676  const NekDouble var_fast_sodium_current_j_gate__beta_j =
677  (var_fast_sodium_current_j_gate__V < (-40.0))
678  ? ((0.02424 *
679  exp((-0.01052) * var_fast_sodium_current_j_gate__V)) /
680  (1.0 + exp((-0.1378) *
681  (var_fast_sodium_current_j_gate__V + 40.14))))
682  : ((0.6 * exp(0.057 * var_fast_sodium_current_j_gate__V)) /
683  (1.0 + exp((-0.1) * (var_fast_sodium_current_j_gate__V +
684  32.0)))); // per_millisecond
685  const NekDouble var_fast_sodium_current_j_gate__tau_j =
686  1.0 / (var_fast_sodium_current_j_gate__alpha_j +
687  var_fast_sodium_current_j_gate__beta_j); // millisecond
688  const NekDouble var_L_type_Ca_current_d_gate__V =
689  var_L_type_Ca_current__V; // millivolt
690  const NekDouble var_L_type_Ca_current_d_gate__alpha_d =
691  (1.4 /
692  (1.0 + exp(((-35.0) - var_L_type_Ca_current_d_gate__V) / 13.0))) +
693  0.25; // dimensionless
694  const NekDouble var_L_type_Ca_current_d_gate__gamma_d =
695  1.0 / (1.0 + exp((50.0 - var_L_type_Ca_current_d_gate__V) /
696  20.0)); // millisecond
697  const NekDouble var_L_type_Ca_current_d_gate__beta_d =
698  1.4 / (1.0 + exp((var_L_type_Ca_current_d_gate__V + 5.0) /
699  5.0)); // dimensionless
700  const NekDouble var_L_type_Ca_current_d_gate__tau_d =
701  (1.0 * var_L_type_Ca_current_d_gate__alpha_d *
702  var_L_type_Ca_current_d_gate__beta_d) +
703  var_L_type_Ca_current_d_gate__gamma_d; // millisecond
704  const NekDouble var_L_type_Ca_current_d_gate__d_inf =
705  1.0 / (1.0 + exp(((-8.0) - var_L_type_Ca_current_d_gate__V) /
706  7.5)); // dimensionless
707  const NekDouble var_L_type_Ca_current_f_gate__V =
708  var_L_type_Ca_current__V; // millivolt
709  const NekDouble var_L_type_Ca_current_f_gate__tau_f =
710  (1102.5 *
711  exp((-pow(var_L_type_Ca_current_f_gate__V + 27.0, 2.0)) / 225.0)) +
712  (200.0 /
713  (1.0 + exp((13.0 - var_L_type_Ca_current_f_gate__V) / 10.0))) +
714  (180.0 /
715  (1.0 + exp((var_L_type_Ca_current_f_gate__V + 30.0) / 10.0))) +
716  20.0; // millisecond
717  const NekDouble var_L_type_Ca_current_f_gate__f_inf =
718  1.0 / (1.0 + exp((var_L_type_Ca_current_f_gate__V + 20.0) /
719  7.0)); // dimensionless
720  const NekDouble var_L_type_Ca_current_f2_gate__V =
721  var_L_type_Ca_current__V; // millivolt
722  const NekDouble var_L_type_Ca_current_f2_gate__f2_inf =
723  (0.67 /
724  (1.0 + exp((var_L_type_Ca_current_f2_gate__V + 35.0) / 7.0))) +
725  0.33; // dimensionless
726  const NekDouble var_L_type_Ca_current_f2_gate__tau_f2 =
727  (562.0 * exp((-pow(var_L_type_Ca_current_f2_gate__V + 27.0, 2.0)) /
728  240.0)) +
729  (31.0 /
730  (1.0 + exp((25.0 - var_L_type_Ca_current_f2_gate__V) / 10.0))) +
731  (80.0 / (1.0 + exp((var_L_type_Ca_current_f2_gate__V + 30.0) /
732  10.0))); // millisecond
733  const NekDouble var_L_type_Ca_current_fCass_gate__Ca_ss =
734  var_L_type_Ca_current__Ca_ss; // millimolar
735  const NekDouble var_L_type_Ca_current_fCass_gate__tau_fCass =
736  (80.0 /
737  (1.0 + pow(var_L_type_Ca_current_fCass_gate__Ca_ss / 0.05, 2.0))) +
738  2.0; // millisecond
739  const NekDouble var_L_type_Ca_current_fCass_gate__fCass_inf =
740  (0.6 /
741  (1.0 + pow(var_L_type_Ca_current_fCass_gate__Ca_ss / 0.05, 2.0))) +
742  0.4; // dimensionless
743  const NekDouble var_transient_outward_current_s_gate__V =
744  var_transient_outward_current__V; // millivolt
745  const NekDouble var_transient_outward_current_s_gate__s_inf =
746  1.0 / (1.0 + exp((var_transient_outward_current_s_gate__V +
747  s_inf_factor) /
748  5.0)); // dimensionless
749  const NekDouble var_transient_outward_current_s_gate__tau_s =
750  (s_tau_f1 *
751  exp((-pow(var_transient_outward_current_s_gate__V + s_tau_f2,
752  2.0)) /
753  s_tau_f3)) +
754  s_tau_f4 +
755  s_tau_f5 *
756  ((5.0 /
757  (1.0 + exp((var_transient_outward_current_s_gate__V - 20.0) /
758  5.0))) +
759  3.0); // millisecond
760  const NekDouble var_transient_outward_current_r_gate__V =
761  var_transient_outward_current__V; // millivolt
762  const NekDouble var_transient_outward_current_r_gate__r_inf =
763  1.0 / (1.0 + exp((20.0 - var_transient_outward_current_r_gate__V) /
764  6.0)); // dimensionless
765  const NekDouble var_transient_outward_current_r_gate__tau_r =
766  (9.5 *
767  exp((-pow(var_transient_outward_current_r_gate__V + 40.0, 2.0)) /
768  1800.0)) +
769  0.8; // millisecond
770  const NekDouble var_calcium_dynamics__Ca_i =
771  var_chaste_interface__calcium_dynamics__Ca_i; // millimolar
772  const NekDouble var_calcium_dynamics__Ca_SR =
773  var_chaste_interface__calcium_dynamics__Ca_SR; // millimolar
774  const NekDouble var_calcium_dynamics__Ca_ss =
775  var_chaste_interface__calcium_dynamics__Ca_ss; // millimolar
776  const NekDouble var_calcium_dynamics__V_rel = 0.102; // per_millisecond
777  const NekDouble var_calcium_dynamics__R_prime =
778  var_chaste_interface__calcium_dynamics__R_prime; // dimensionless
779  const NekDouble var_calcium_dynamics__k1_prime =
780  0.15; // per_millimolar2_per_millisecond
781  const NekDouble var_calcium_dynamics__max_sr = 2.5; // dimensionless
782  const NekDouble var_calcium_dynamics__EC = 1.5; // millimolar
783  const NekDouble var_calcium_dynamics__min_sr = 1.0; // dimensionless
784  const NekDouble var_calcium_dynamics__kcasr =
785  var_calcium_dynamics__max_sr -
786  ((var_calcium_dynamics__max_sr - var_calcium_dynamics__min_sr) /
787  (1.0 + pow(var_calcium_dynamics__EC / var_calcium_dynamics__Ca_SR,
788  2.0))); // dimensionless
789  const NekDouble var_calcium_dynamics__k1 =
790  var_calcium_dynamics__k1_prime /
791  var_calcium_dynamics__kcasr; // per_millimolar2_per_millisecond
792  const NekDouble var_calcium_dynamics__k3 = 0.06; // per_millisecond
793  const NekDouble var_calcium_dynamics__O =
794  (var_calcium_dynamics__k1 * pow(var_calcium_dynamics__Ca_ss, 2.0) *
795  var_calcium_dynamics__R_prime) /
796  (var_calcium_dynamics__k3 +
797  (var_calcium_dynamics__k1 *
798  pow(var_calcium_dynamics__Ca_ss, 2.0))); // dimensionless
799  const NekDouble var_calcium_dynamics__i_rel =
800  var_calcium_dynamics__V_rel * var_calcium_dynamics__O *
801  (var_calcium_dynamics__Ca_SR -
802  var_calcium_dynamics__Ca_ss); // millimolar_per_millisecond
803  const NekDouble var_calcium_dynamics__Vmax_up =
804  0.006375; // millimolar_per_millisecond
805  const NekDouble var_calcium_dynamics__K_up = 0.00025; // millimolar
806  const NekDouble var_calcium_dynamics__i_up =
807  var_calcium_dynamics__Vmax_up /
808  (1.0 + (pow(var_calcium_dynamics__K_up, 2.0) /
809  pow(var_calcium_dynamics__Ca_i,
810  2.0))); // millimolar_per_millisecond
811  const NekDouble var_calcium_dynamics__V_leak =
812  0.00036; // per_millisecond
813  const NekDouble var_calcium_dynamics__i_leak =
814  var_calcium_dynamics__V_leak *
815  (var_calcium_dynamics__Ca_SR -
816  var_calcium_dynamics__Ca_i); // millimolar_per_millisecond
817  const NekDouble var_calcium_dynamics__V_xfer =
818  0.0038; // per_millisecond
819  const NekDouble var_calcium_dynamics__i_xfer =
820  var_calcium_dynamics__V_xfer *
821  (var_calcium_dynamics__Ca_ss -
822  var_calcium_dynamics__Ca_i); // millimolar_per_millisecond
823  const NekDouble var_calcium_dynamics__k2_prime =
824  0.045; // per_millimolar_per_millisecond
825  const NekDouble var_calcium_dynamics__k2 =
826  var_calcium_dynamics__k2_prime *
827  var_calcium_dynamics__kcasr; // per_millimolar_per_millisecond
828  const NekDouble var_calcium_dynamics__k4 = 0.005; // per_millisecond
829  const NekDouble var_calcium_dynamics__Buf_c = 0.2; // millimolar
830  const NekDouble var_calcium_dynamics__K_buf_c = 0.001; // millimolar
831  const NekDouble var_calcium_dynamics__Ca_i_bufc =
832  1.0 /
833  (1.0 +
834  ((var_calcium_dynamics__Buf_c * var_calcium_dynamics__K_buf_c) /
835  pow(var_calcium_dynamics__Ca_i + var_calcium_dynamics__K_buf_c,
836  2.0))); // dimensionless
837  const NekDouble var_calcium_dynamics__K_buf_sr = 0.3; // millimolar
838  const NekDouble var_calcium_dynamics__Buf_sr = 10.0; // millimolar
839  const NekDouble var_calcium_dynamics__Ca_sr_bufsr =
840  1.0 /
841  (1.0 +
842  ((var_calcium_dynamics__Buf_sr * var_calcium_dynamics__K_buf_sr) /
843  pow(var_calcium_dynamics__Ca_SR + var_calcium_dynamics__K_buf_sr,
844  2.0))); // dimensionless
845  const NekDouble var_calcium_dynamics__Buf_ss = 0.4; // millimolar
846  const NekDouble var_calcium_dynamics__K_buf_ss = 0.00025; // millimolar
847  const NekDouble var_calcium_dynamics__Ca_ss_bufss =
848  1.0 /
849  (1.0 +
850  ((var_calcium_dynamics__Buf_ss * var_calcium_dynamics__K_buf_ss) /
851  pow(var_calcium_dynamics__Ca_ss + var_calcium_dynamics__K_buf_ss,
852  2.0))); // dimensionless
853  const NekDouble var_calcium_dynamics__V_sr = 0.001094; // micrometre3
854  const NekDouble var_calcium_dynamics__V_ss = 5.468e-05; // micrometre3
855  const NekDouble var_calcium_dynamics__V_c =
856  var_membrane__V_c; // micrometre3
857  const NekDouble var_calcium_dynamics__F =
858  var_membrane__F; // coulomb_per_millimole
859  const NekDouble var_calcium_dynamics__Cm = var_membrane__Cm; // microF
860  const NekDouble var_calcium_dynamics__i_CaL =
861  var_L_type_Ca_current__i_CaL; // picoA_per_picoF
862  const NekDouble var_calcium_dynamics__i_NaCa =
863  var_sodium_calcium_exchanger_current__i_NaCa; // picoA_per_picoF
864  const NekDouble var_calcium_dynamics__i_p_Ca =
865  var_calcium_pump_current__i_p_Ca; // picoA_per_picoF
866  const NekDouble var_calcium_dynamics__i_b_Ca =
867  var_calcium_background_current__i_b_Ca; // picoA_per_picoF
868  const NekDouble var_calcium_dynamics__d_Ca_i_d_environment__time =
869  var_calcium_dynamics__Ca_i_bufc *
870  (((((var_calcium_dynamics__i_leak - var_calcium_dynamics__i_up) *
871  var_calcium_dynamics__V_sr) /
872  var_calcium_dynamics__V_c) +
873  var_calcium_dynamics__i_xfer) -
874  ((1.0 *
875  ((var_calcium_dynamics__i_b_Ca + var_calcium_dynamics__i_p_Ca) -
876  (2.0 * var_calcium_dynamics__i_NaCa)) *
877  var_calcium_dynamics__Cm) /
878  (2.0 * 1.0 * var_calcium_dynamics__V_c *
879  var_calcium_dynamics__F))); // 'millimole per litre per
880  // millisecond'
881  const NekDouble var_calcium_dynamics__d_Ca_SR_d_environment__time =
882  var_calcium_dynamics__Ca_sr_bufsr *
883  (var_calcium_dynamics__i_up -
884  (var_calcium_dynamics__i_rel +
885  var_calcium_dynamics__i_leak)); // 'millimole per litre per
886  // millisecond'
887  const NekDouble var_calcium_dynamics__d_Ca_ss_d_environment__time =
888  var_calcium_dynamics__Ca_ss_bufss *
889  (((((-1.0) * var_calcium_dynamics__i_CaL *
890  var_calcium_dynamics__Cm) /
891  (2.0 * 1.0 * var_calcium_dynamics__V_ss *
892  var_calcium_dynamics__F)) +
893  ((var_calcium_dynamics__i_rel * var_calcium_dynamics__V_sr) /
894  var_calcium_dynamics__V_ss)) -
895  ((var_calcium_dynamics__i_xfer * var_calcium_dynamics__V_c) /
896  var_calcium_dynamics__V_ss)); // 'millimole per litre per
897  // millisecond'
898  const NekDouble var_calcium_dynamics__d_R_prime_d_environment__time =
899  ((-var_calcium_dynamics__k2) * var_calcium_dynamics__Ca_ss *
900  var_calcium_dynamics__R_prime) +
901  (var_calcium_dynamics__k4 *
902  (1.0 - var_calcium_dynamics__R_prime)); // per_millisecond
903  const NekDouble var_sodium_dynamics__F =
904  var_membrane__F; // coulomb_per_millimole
905  const NekDouble var_sodium_dynamics__Cm = var_membrane__Cm; // microF
906  const NekDouble var_sodium_dynamics__V_c =
907  var_membrane__V_c; // micrometre3
908  const NekDouble var_sodium_dynamics__i_Na =
909  var_fast_sodium_current__i_Na; // picoA_per_picoF
910  const NekDouble var_sodium_dynamics__i_NaCa =
911  var_sodium_calcium_exchanger_current__i_NaCa; // picoA_per_picoF
912  const NekDouble var_sodium_dynamics__i_NaK =
913  var_sodium_potassium_pump_current__i_NaK; // picoA_per_picoF
914  const NekDouble var_sodium_dynamics__i_b_Na =
915  var_sodium_background_current__i_b_Na; // picoA_per_picoF
916  const NekDouble var_sodium_dynamics__d_Na_i_d_environment__time =
917  (((-1.0) *
918  (var_sodium_dynamics__i_Na + var_sodium_dynamics__i_b_Na +
919  (3.0 * var_sodium_dynamics__i_NaK) +
920  (3.0 * var_sodium_dynamics__i_NaCa))) /
921  (1.0 * var_sodium_dynamics__V_c * var_sodium_dynamics__F)) *
922  var_sodium_dynamics__Cm; // 'millimole per litre per millisecond'
923  const NekDouble var_potassium_dynamics__F =
924  var_membrane__F; // coulomb_per_millimole
925  const NekDouble var_potassium_dynamics__Cm = var_membrane__Cm; // microF
926  const NekDouble var_potassium_dynamics__V_c =
927  var_membrane__V_c; // micrometre3
928  const NekDouble var_potassium_dynamics__i_K1 =
929  var_inward_rectifier_potassium_current__i_K1; // picoA_per_picoF
930  const NekDouble var_potassium_dynamics__i_to =
931  var_transient_outward_current__i_to; // picoA_per_picoF
932  const NekDouble var_potassium_dynamics__i_NaK =
933  var_sodium_potassium_pump_current__i_NaK; // picoA_per_picoF
934  const NekDouble var_potassium_dynamics__i_Kr =
935  var_rapid_time_dependent_potassium_current__i_Kr; // picoA_per_picoF
936  const NekDouble var_potassium_dynamics__i_Ks =
937  var_slow_time_dependent_potassium_current__i_Ks; // picoA_per_picoF
938  const NekDouble var_potassium_dynamics__i_p_K =
939  var_potassium_pump_current__i_p_K; // picoA_per_picoF
940  const NekDouble
941  var_potassium_dynamics__chaste_interface__chaste_membrane_capacitance =
942  1.0; // uF_per_cm2
943  const NekDouble var_potassium_dynamics__i_Stim_converter =
944  var_chaste_interface__membrane__i_Stim; // uA_per_cm2
945  const NekDouble var_potassium_dynamics__i_Stim =
946  var_potassium_dynamics__i_Stim_converter /
947  var_potassium_dynamics__chaste_interface__chaste_membrane_capacitance; // picoA_per_picoF
948  const NekDouble var_potassium_dynamics__d_K_i_d_environment__time =
949  (((-1.0) *
950  ((var_potassium_dynamics__i_K1 + var_potassium_dynamics__i_to +
951  var_potassium_dynamics__i_Kr + var_potassium_dynamics__i_Ks +
952  var_potassium_dynamics__i_p_K +
953  var_potassium_dynamics__i_Stim) -
954  (2.0 * var_potassium_dynamics__i_NaK))) /
955  (1.0 * var_potassium_dynamics__V_c * var_potassium_dynamics__F)) *
956  var_potassium_dynamics__Cm; // 'millimole per litre per millisecond'
957  const NekDouble
958  var_chaste_interface__calcium_dynamics__d_Ca_i_d_environment__time =
959  var_calcium_dynamics__d_Ca_i_d_environment__time; // millimolar_per_millisecond
960  const NekDouble
961  var_chaste_interface__calcium_dynamics__d_Ca_SR_d_environment__time =
962  var_calcium_dynamics__d_Ca_SR_d_environment__time; // millimolar_per_millisecond
963  const NekDouble
964  var_chaste_interface__calcium_dynamics__d_Ca_ss_d_environment__time =
965  var_calcium_dynamics__d_Ca_ss_d_environment__time; // millimolar_per_millisecond
966  const NekDouble
967  var_chaste_interface__calcium_dynamics__d_R_prime_d_environment__time =
968  var_calcium_dynamics__d_R_prime_d_environment__time; // per_millisecond
969  const NekDouble
970  var_chaste_interface__sodium_dynamics__d_Na_i_d_environment__time =
971  var_sodium_dynamics__d_Na_i_d_environment__time; // millimolar_per_millisecond
972  const NekDouble
973  var_chaste_interface__potassium_dynamics__d_K_i_d_environment__time =
974  var_potassium_dynamics__d_K_i_d_environment__time; // millimolar_per_millisecond
975  const NekDouble d_dt_chaste_interface__calcium_dynamics__Ca_i =
976  var_chaste_interface__calcium_dynamics__d_Ca_i_d_environment__time; // 'millimole per litre per millisecond'
977  const NekDouble d_dt_chaste_interface__calcium_dynamics__Ca_SR =
978  var_chaste_interface__calcium_dynamics__d_Ca_SR_d_environment__time; // 'millimole per litre per millisecond'
979  const NekDouble d_dt_chaste_interface__calcium_dynamics__Ca_ss =
980  var_chaste_interface__calcium_dynamics__d_Ca_ss_d_environment__time; // 'millimole per litre per millisecond'
981  const NekDouble d_dt_chaste_interface__calcium_dynamics__R_prime =
982  var_chaste_interface__calcium_dynamics__d_R_prime_d_environment__time; // per_millisecond
983  const NekDouble d_dt_chaste_interface__sodium_dynamics__Na_i =
984  var_chaste_interface__sodium_dynamics__d_Na_i_d_environment__time; // 'millimole per litre per millisecond'
985  const NekDouble d_dt_chaste_interface__potassium_dynamics__K_i =
986  var_chaste_interface__potassium_dynamics__d_K_i_d_environment__time; // 'millimole per litre per millisecond'
987 
988  const NekDouble var_membrane__i_K1 =
989  var_inward_rectifier_potassium_current__i_K1; // picoA_per_picoF
990  const NekDouble var_membrane__i_to =
991  var_transient_outward_current__i_to; // picoA_per_picoF
992  const NekDouble var_membrane__i_Kr =
993  var_rapid_time_dependent_potassium_current__i_Kr; // picoA_per_picoF
994  const NekDouble var_membrane__i_Ks =
995  var_slow_time_dependent_potassium_current__i_Ks; // picoA_per_picoF
996  const NekDouble var_membrane__i_CaL =
997  var_L_type_Ca_current__i_CaL; // picoA_per_picoF
998  const NekDouble var_membrane__i_NaK =
999  var_sodium_potassium_pump_current__i_NaK; // picoA_per_picoF
1000  const NekDouble var_membrane__i_Na =
1001  var_fast_sodium_current__i_Na; // picoA_per_picoF
1002  const NekDouble var_membrane__i_b_Na =
1003  var_sodium_background_current__i_b_Na; // picoA_per_picoF
1004  const NekDouble var_membrane__i_NaCa =
1005  var_sodium_calcium_exchanger_current__i_NaCa; // picoA_per_picoF
1006  const NekDouble var_membrane__i_b_Ca =
1007  var_calcium_background_current__i_b_Ca; // picoA_per_picoF
1008  const NekDouble var_membrane__i_p_K =
1009  var_potassium_pump_current__i_p_K; // picoA_per_picoF
1010  const NekDouble var_membrane__i_p_Ca =
1011  var_calcium_pump_current__i_p_Ca; // picoA_per_picoF
1012  const NekDouble var_membrane__i_Stim_converter =
1013  var_chaste_interface__membrane__i_Stim; // uA_per_cm2
1014  const NekDouble
1015  var_membrane__chaste_interface__chaste_membrane_capacitance =
1016  1.0; // uF_per_cm2
1017  const NekDouble var_membrane__i_Stim =
1018  var_membrane__i_Stim_converter /
1019  var_membrane__chaste_interface__chaste_membrane_capacitance; // picoA_per_picoF
1020  const NekDouble var_membrane__d_V_d_environment__time =
1021  ((-1.0) / 1.0) *
1022  (var_membrane__i_K1 + var_membrane__i_to + var_membrane__i_Kr +
1023  var_membrane__i_Ks + var_membrane__i_CaL + var_membrane__i_NaK +
1024  var_membrane__i_Na + var_membrane__i_b_Na + var_membrane__i_NaCa +
1025  var_membrane__i_b_Ca + var_membrane__i_p_K + var_membrane__i_p_Ca +
1026  var_membrane__i_Stim); // 'millivolt per millisecond'
1027  const NekDouble
1028  var_chaste_interface__membrane__d_V_d_environment__time =
1029  var_membrane__d_V_d_environment__time; // ___units_1
1030  d_dt_chaste_interface__membrane__V =
1031  var_chaste_interface__membrane__d_V_d_environment__time; // 'millivolt
1032  // per
1033  // millisecond'
1034  outarray[0][i] = d_dt_chaste_interface__membrane__V;
1035  outarray[1][i] =
1036  var_rapid_time_dependent_potassium_current_Xr1_gate__xr1_inf;
1037  m_gates_tau[0][i] =
1038  var_rapid_time_dependent_potassium_current_Xr1_gate__tau_xr1;
1039  outarray[2][i] =
1040  var_rapid_time_dependent_potassium_current_Xr2_gate__xr2_inf;
1041  m_gates_tau[1][i] =
1042  var_rapid_time_dependent_potassium_current_Xr2_gate__tau_xr2;
1043  outarray[3][i] =
1044  var_slow_time_dependent_potassium_current_Xs_gate__xs_inf;
1045  m_gates_tau[2][i] =
1046  var_slow_time_dependent_potassium_current_Xs_gate__tau_xs;
1047  outarray[4][i] = var_fast_sodium_current_m_gate__m_inf;
1048  m_gates_tau[3][i] = var_fast_sodium_current_m_gate__tau_m;
1049  outarray[5][i] = var_fast_sodium_current_h_gate__h_inf;
1050  m_gates_tau[4][i] = var_fast_sodium_current_h_gate__tau_h;
1051  outarray[6][i] = var_fast_sodium_current_j_gate__j_inf;
1052  m_gates_tau[5][i] = var_fast_sodium_current_j_gate__tau_j;
1053  outarray[7][i] = var_L_type_Ca_current_d_gate__d_inf;
1054  m_gates_tau[6][i] = var_L_type_Ca_current_d_gate__tau_d;
1055  outarray[8][i] = var_L_type_Ca_current_f_gate__f_inf;
1056  m_gates_tau[7][i] = var_L_type_Ca_current_f_gate__tau_f;
1057  outarray[9][i] = var_L_type_Ca_current_f2_gate__f2_inf;
1058  m_gates_tau[8][i] = var_L_type_Ca_current_f2_gate__tau_f2;
1059  outarray[10][i] = var_L_type_Ca_current_fCass_gate__fCass_inf;
1060  m_gates_tau[9][i] = var_L_type_Ca_current_fCass_gate__tau_fCass;
1061  outarray[11][i] = var_transient_outward_current_s_gate__s_inf;
1062  m_gates_tau[10][i] = var_transient_outward_current_s_gate__tau_s;
1063  outarray[12][i] = var_transient_outward_current_r_gate__r_inf;
1064  m_gates_tau[11][i] = var_transient_outward_current_r_gate__tau_r;
1065  outarray[13][i] = d_dt_chaste_interface__calcium_dynamics__Ca_i;
1066  outarray[14][i] = d_dt_chaste_interface__calcium_dynamics__Ca_SR;
1067  outarray[15][i] = d_dt_chaste_interface__calcium_dynamics__Ca_ss;
1068  outarray[16][i] = d_dt_chaste_interface__calcium_dynamics__R_prime;
1069  outarray[17][i] = d_dt_chaste_interface__sodium_dynamics__Na_i;
1070  outarray[18][i] = d_dt_chaste_interface__potassium_dynamics__K_i;
1071  }
1072 }
Array< OneD, Array< OneD, NekDouble > > m_gates_tau
Storage for gate tau values.
Definition: CellModel.h:143
double NekDouble
scalarT< T > log(scalarT< T > in)
Definition: scalar.hpp:300
scalarT< T > sqrt(scalarT< T > in)
Definition: scalar.hpp:291

References g_Ks, g_to, k_0, tinysimd::log(), Nektar::CellModel::m_gates_tau, Nektar::CellModel::m_nq, s_inf_factor, s_tau_f1, s_tau_f2, s_tau_f3, s_tau_f4, s_tau_f5, and tinysimd::sqrt().

Member Data Documentation

◆ className

std::string Nektar::TenTusscher06::className
static
Initial value:
=
"TenTusscher06", TenTusscher06::create, "ten Tusscher 2006.")
tKey RegisterCreatorFunction(tKey idKey, CreatorFunction classCreator, std::string pDesc="")
Register a class with the factory.
Definition: NekFactory.hpp:198
static CellModelSharedPtr create(const LibUtilities::SessionReaderSharedPtr &pSession, const MultiRegions::ExpListSharedPtr &pField)
Creates an instance of this class.
Definition: TenTusscher06.h:47
CellModelFactory & GetCellModelFactory()
Definition: CellModel.cpp:46

Name of class.

Definition at line 56 of file TenTusscher06.h.

◆ def

std::string Nektar::TenTusscher06::def
staticprotected
Initial value:
=
"Epicardium")
static std::string RegisterDefaultSolverInfo(const std::string &pName, const std::string &pValue)
Registers the default string value of a solver info property.

Definition at line 97 of file TenTusscher06.h.

◆ g_Ks

NekDouble Nektar::TenTusscher06::g_Ks
protected

Definition at line 78 of file TenTusscher06.h.

Referenced by TenTusscher06(), and v_Update().

◆ g_to

NekDouble Nektar::TenTusscher06::g_to
protected

Definition at line 77 of file TenTusscher06.h.

Referenced by TenTusscher06(), and v_Update().

◆ k_0

NekDouble Nektar::TenTusscher06::k_0
protected

Definition at line 85 of file TenTusscher06.h.

Referenced by TenTusscher06(), and v_Update().

◆ lookupIds

std::string Nektar::TenTusscher06::lookupIds
staticprotected
Initial value:
= {
"CellModelVariant", "Epicardium", TenTusscher06::eEpicardium),
"CellModelVariant", "Endocardium", TenTusscher06::eEndocardium),
"CellModelVariant", "Ischemia", TenTusscher06::eIschemia)}
static std::string RegisterEnumValue(std::string pEnum, std::string pString, int pEnumValue)
Registers an enumeration value.

Definition at line 96 of file TenTusscher06.h.

◆ model_variant

enum Variants Nektar::TenTusscher06::model_variant
protected

Definition at line 85 of file TenTusscher06.h.

Referenced by TenTusscher06(), and v_SetInitialConditions().

◆ s_inf_factor

NekDouble Nektar::TenTusscher06::s_inf_factor
protected

Definition at line 79 of file TenTusscher06.h.

Referenced by TenTusscher06(), and v_Update().

◆ s_tau_f1

NekDouble Nektar::TenTusscher06::s_tau_f1
protected

Definition at line 80 of file TenTusscher06.h.

Referenced by TenTusscher06(), and v_Update().

◆ s_tau_f2

NekDouble Nektar::TenTusscher06::s_tau_f2
protected

Definition at line 81 of file TenTusscher06.h.

Referenced by TenTusscher06(), and v_Update().

◆ s_tau_f3

NekDouble Nektar::TenTusscher06::s_tau_f3
protected

Definition at line 82 of file TenTusscher06.h.

Referenced by TenTusscher06(), and v_Update().

◆ s_tau_f4

NekDouble Nektar::TenTusscher06::s_tau_f4
protected

Definition at line 83 of file TenTusscher06.h.

Referenced by TenTusscher06(), and v_Update().

◆ s_tau_f5

NekDouble Nektar::TenTusscher06::s_tau_f5
protected

Definition at line 84 of file TenTusscher06.h.

Referenced by TenTusscher06(), and v_Update().