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...
 
size_t GetNumCellVariables ()
 
std::string GetCellVarName (size_t idx)
 
Array< OneD, NekDoubleGetCellSolutionCoeffs (size_t idx)
 
Array< OneD, NekDoubleGetCellSolution (size_t 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) override
 
virtual void v_GenerateSummary (SummaryList &s) override
 Prints a summary of the model parameters. More...
 
virtual void v_SetInitialConditions () override
 
- Protected Member Functions inherited from Nektar::CellModel
virtual void v_Update (const Array< OneD, const Array< OneD, NekDouble > > &inarray, Array< OneD, Array< OneD, NekDouble > > &outarray, const NekDouble time)=0
 
virtual void v_GenerateSummary (SummaryList &s)=0
 
virtual std::string v_GetCellVarName (size_t idx)
 
virtual void v_SetInitialConditions ()=0
 
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...
 
size_t m_nq
 Number of physical points. More...
 
size_t m_nvar
 Number of variables in cell model (inc. transmembrane voltage) More...
 
NekDouble m_lastTime
 Timestep for pde model. More...
 
size_t 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 88 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
size_t m_nvar
Number of variables in cell model (inc. transmembrane voltage)
Definition: CellModel.h:119
CellModel(const LibUtilities::SessionReaderSharedPtr &pSession, const MultiRegions::ExpListSharedPtr &pField)
Definition: CellModel.cpp:66
enum Variants model_variant
Definition: TenTusscher06.h:95

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)
overrideprotectedvirtual

Prints a summary of the model parameters.

Implements Nektar::CellModel.

Definition at line 1079 of file TenTusscher06.cpp.

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

Implements Nektar::CellModel.

Definition at line 1087 of file TenTusscher06.cpp.

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

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 
)
overrideprotectedvirtual

Implements Nektar::CellModel.

Definition at line 144 of file TenTusscher06.cpp.

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

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 98 of file TenTusscher06.h.

◆ g_Ks

NekDouble Nektar::TenTusscher06::g_Ks
protected

Definition at line 79 of file TenTusscher06.h.

Referenced by TenTusscher06(), and v_Update().

◆ g_to

NekDouble Nektar::TenTusscher06::g_to
protected

Definition at line 78 of file TenTusscher06.h.

Referenced by TenTusscher06(), and v_Update().

◆ k_0

NekDouble Nektar::TenTusscher06::k_0
protected

Definition at line 86 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 97 of file TenTusscher06.h.

◆ model_variant

enum Variants Nektar::TenTusscher06::model_variant
protected

Definition at line 95 of file TenTusscher06.h.

Referenced by TenTusscher06(), and v_SetInitialConditions().

◆ s_inf_factor

NekDouble Nektar::TenTusscher06::s_inf_factor
protected

Definition at line 80 of file TenTusscher06.h.

Referenced by TenTusscher06(), and v_Update().

◆ s_tau_f1

NekDouble Nektar::TenTusscher06::s_tau_f1
protected

Definition at line 81 of file TenTusscher06.h.

Referenced by TenTusscher06(), and v_Update().

◆ s_tau_f2

NekDouble Nektar::TenTusscher06::s_tau_f2
protected

Definition at line 82 of file TenTusscher06.h.

Referenced by TenTusscher06(), and v_Update().

◆ s_tau_f3

NekDouble Nektar::TenTusscher06::s_tau_f3
protected

Definition at line 83 of file TenTusscher06.h.

Referenced by TenTusscher06(), and v_Update().

◆ s_tau_f4

NekDouble Nektar::TenTusscher06::s_tau_f4
protected

Definition at line 84 of file TenTusscher06.h.

Referenced by TenTusscher06(), and v_Update().

◆ s_tau_f5

NekDouble Nektar::TenTusscher06::s_tau_f5
protected

Definition at line 85 of file TenTusscher06.h.

Referenced by TenTusscher06(), and v_Update().