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

#include <Fox02.h>

Inheritance diagram for Nektar::Fox02:
[legend]

Public Member Functions

 Fox02 (const LibUtilities::SessionReaderSharedPtr &pSession, const MultiRegions::ExpListSharedPtr &pField)
 Constructor. More...
 
virtual ~Fox02 ()
 Destructor. 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 Member Functions

virtual void v_Update (const Array< OneD, const Array< OneD, NekDouble > > &inarray, Array< OneD, Array< OneD, NekDouble > > &outarray, const NekDouble time) override
 Computes the reaction terms $f(u,v)$ and $g(u,v)$. More...
 
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 ()
 

Private Attributes

NekDouble m_chi
 
NekDouble m_sigmai
 

Additional Inherited Members

- 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...
 

Detailed Description

Definition at line 41 of file Fox02.h.

Constructor & Destructor Documentation

◆ Fox02()

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

Constructor.

Definition at line 48 of file Fox02.cpp.

50 : CellModel(pSession, pField)
51{
52 pSession->LoadParameter("chi", m_chi);
53 pSession->LoadParameter("sigmai", m_sigmai);
54
55 m_nvar = 13;
56
57 m_gates.push_back(1);
58 m_gates.push_back(2);
59 m_gates.push_back(3);
60 m_gates.push_back(4);
61 m_gates.push_back(5);
62 m_gates.push_back(6);
63 m_gates.push_back(7);
64 m_gates.push_back(8);
65 m_gates.push_back(9);
66 m_gates.push_back(10);
67 m_concentrations.push_back(11);
68 m_concentrations.push_back(12);
69}
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
NekDouble m_chi
Definition: Fox02.h:80
NekDouble m_sigmai
Definition: Fox02.h:81

References m_chi, Nektar::CellModel::m_concentrations, Nektar::CellModel::m_gates, Nektar::CellModel::m_nvar, and m_sigmai.

◆ ~Fox02()

virtual Nektar::Fox02::~Fox02 ( )
inlinevirtual

Destructor.

Definition at line 61 of file Fox02.h.

62 {
63 }

Member Function Documentation

◆ create()

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

Creates an instance of this class.

Definition at line 46 of file Fox02.h.

49 {
50 return MemoryManager<Fox02>::AllocateSharedPtr(pSession, pField);
51 }
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::Fox02::v_GenerateSummary ( SummaryList s)
overrideprotectedvirtual

Prints a summary of the model parameters.

Implements Nektar::CellModel.

Definition at line 977 of file Fox02.cpp.

978{
979 SolverUtils::AddSummaryItem(s, "Cell model", "Fox02");
980}
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::Fox02::v_SetInitialConditions ( )
overrideprotectedvirtual

Implements Nektar::CellModel.

Definition at line 985 of file Fox02.cpp.

986{
987 Vmath::Fill(m_nq, -94.7, m_cellSol[0], 1);
988 Vmath::Fill(m_nq, 0.00024676, m_cellSol[1], 1);
989 Vmath::Fill(m_nq, 0.99869, m_cellSol[2], 1);
990 Vmath::Fill(m_nq, 0.99887, m_cellSol[3], 1);
991 Vmath::Fill(m_nq, 0.229, m_cellSol[4], 1);
992 Vmath::Fill(m_nq, 0.0001, m_cellSol[5], 1);
993 Vmath::Fill(m_nq, 0.00003742, m_cellSol[6], 1);
994 Vmath::Fill(m_nq, 1.0, m_cellSol[7], 1);
995 Vmath::Fill(m_nq, 0.0472, m_cellSol[8], 1);
996 Vmath::Fill(m_nq, 0.983, m_cellSol[9], 1);
997 Vmath::Fill(m_nq, 0.0001, m_cellSol[10], 1);
998 Vmath::Fill(m_nq, 0.942, m_cellSol[11], 1);
999 Vmath::Fill(m_nq, 320.0, m_cellSol[12], 1);
1000}
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 Vmath::Fill(), Nektar::CellModel::m_cellSol, and Nektar::CellModel::m_nq.

◆ v_Update()

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

Computes the reaction terms $f(u,v)$ and $g(u,v)$.

Implements Nektar::CellModel.

Definition at line 71 of file Fox02.cpp.

74{
75 boost::ignore_unused(time);
76
77 for (size_t i = 0; i < m_nq; ++i)
78 {
79
80 // Inputs:
81 // Time units: millisecond
82 NekDouble var_chaste_interface__membrane__V = inarray[0][i];
83 // Units: millivolt; Initial value: -94.7
84 NekDouble var_chaste_interface__fast_sodium_current_m_gate__m =
85 inarray[1][i];
86 // Units: dimensionless; Initial value: 0.00024676
87 NekDouble var_chaste_interface__fast_sodium_current_h_gate__h =
88 inarray[2][i];
89 // Units: dimensionless; Initial value: 0.99869
90 NekDouble var_chaste_interface__fast_sodium_current_j_gate__j =
91 inarray[3][i];
92 // Units: dimensionless; Initial value: 0.99887
94 var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr =
95 inarray[4][i];
96 // Units: dimensionless; Initial value: 0.229
98 var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks =
99 inarray[5][i];
100 // Units: dimensionless; Initial value: 0.0001
102 var_chaste_interface__transient_outward_potassium_current_X_to_gate__X_to =
103 inarray[6][i];
104 // Units: dimensionless; Initial value: 0.00003742
106 var_chaste_interface__transient_outward_potassium_current_Y_to_gate__Y_to =
107 inarray[7][i];
108 // Units: dimensionless; Initial value: 1
109 NekDouble var_chaste_interface__L_type_Ca_current_f_gate__f =
110 inarray[8][i];
111 // Units: dimensionless; Initial value: 0.983
112 NekDouble var_chaste_interface__L_type_Ca_current_d_gate__d =
113 inarray[9][i];
114 // Units: dimensionless; Initial value: 0.0001
115 NekDouble var_chaste_interface__L_type_Ca_current_f_Ca_gate__f_Ca =
116 inarray[10][i];
117 // Units: dimensionless; Initial value: 0.942
118 NekDouble var_chaste_interface__calcium_dynamics__Ca_i = inarray[11][i];
119 // Units: micromolar; Initial value: 0.0472
120 NekDouble var_chaste_interface__calcium_dynamics__Ca_SR =
121 inarray[12][i];
122 // Units: micromolar; Initial value: 320
123
124 // Mathematics
125 NekDouble d_dt_chaste_interface__membrane__V;
126 const NekDouble var_membrane__R = 8.314; // joule_per_mole_kelvin
127 const NekDouble var_membrane__T = 310.0; // kelvin
128 const NekDouble var_membrane__F = 96.5; // coulomb_per_millimole
129 const NekDouble var_fast_sodium_current__j =
130 var_chaste_interface__fast_sodium_current_j_gate__j; // dimensionless
131 const NekDouble var_fast_sodium_current__h =
132 var_chaste_interface__fast_sodium_current_h_gate__h; // dimensionless
133 const NekDouble var_fast_sodium_current__m =
134 var_chaste_interface__fast_sodium_current_m_gate__m; // dimensionless
135 const NekDouble var_fast_sodium_current__V =
136 var_chaste_interface__membrane__V; // millivolt
137 const NekDouble var_standard_ionic_concentrations__Na_o =
138 138.0; // millimolar
139 const NekDouble var_standard_ionic_concentrations__Na_i =
140 10.0; // millimolar
141 const NekDouble var_L_type_Ca_current__f =
142 var_chaste_interface__L_type_Ca_current_f_gate__f; // dimensionless
143 const NekDouble var_L_type_Ca_current__f_Ca =
144 var_chaste_interface__L_type_Ca_current_f_Ca_gate__f_Ca; // dimensionless
145 const NekDouble var_L_type_Ca_current__F =
146 var_membrane__F; // coulomb_per_millimole
147 const NekDouble var_L_type_Ca_current__P_Ca =
148 1.26e-05; // cm_per_millisecond
149 const NekDouble var_L_type_Ca_current__V =
150 var_chaste_interface__membrane__V; // millivolt
151 const NekDouble var_L_type_Ca_current__C_sc = 1.0; // microF_per_cm2
152 const NekDouble var_L_type_Ca_current__T = var_membrane__T; // kelvin
153 const NekDouble var_standard_ionic_concentrations__Ca_o =
154 2000.0; // micromolar
155 const NekDouble var_L_type_Ca_current__Ca_o =
156 var_standard_ionic_concentrations__Ca_o; // micromolar
157 const NekDouble var_L_type_Ca_current__R =
158 var_membrane__R; // joule_per_mole_kelvin
159 const NekDouble var_L_type_Ca_current__Ca_i =
160 var_chaste_interface__calcium_dynamics__Ca_i; // micromolar
161 const NekDouble var_L_type_Ca_current__i_Ca_max =
162 ((((var_L_type_Ca_current__P_Ca / var_L_type_Ca_current__C_sc) *
163 4.0 * var_L_type_Ca_current__V *
164 pow(var_L_type_Ca_current__F, 2.0)) /
165 (var_L_type_Ca_current__R * var_L_type_Ca_current__T)) *
166 ((var_L_type_Ca_current__Ca_i *
167 exp((2.0 * var_L_type_Ca_current__V * var_L_type_Ca_current__F) /
168 (var_L_type_Ca_current__R * var_L_type_Ca_current__T))) -
169 (0.341 * var_L_type_Ca_current__Ca_o))) /
170 (exp((2.0 * var_L_type_Ca_current__V * var_L_type_Ca_current__F) /
171 (var_L_type_Ca_current__R * var_L_type_Ca_current__T)) -
172 1.0); // microA_per_microF
173 const NekDouble var_L_type_Ca_current__d =
174 var_chaste_interface__L_type_Ca_current_d_gate__d; // dimensionless
175 const NekDouble var_L_type_Ca_current__i_Ca =
176 var_L_type_Ca_current__i_Ca_max * var_L_type_Ca_current__f *
177 var_L_type_Ca_current__d *
178 var_L_type_Ca_current__f_Ca; // microA_per_microF
179 const NekDouble var_rapid_activating_delayed_rectifiyer_K_current__V =
180 var_chaste_interface__membrane__V; // millivolt
181 const NekDouble var_rapid_activating_delayed_rectifiyer_K_current__X_kr =
182 var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr; // dimensionless
183 const NekDouble var_slow_activating_delayed_rectifiyer_K_current__V =
184 var_chaste_interface__membrane__V; // millivolt
185 const NekDouble var_slow_activating_delayed_rectifiyer_K_current__X_ks =
186 var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks; // dimensionless
187 const NekDouble var_transient_outward_potassium_current__Y_to =
188 var_chaste_interface__transient_outward_potassium_current_Y_to_gate__Y_to; // dimensionless
189 const NekDouble var_transient_outward_potassium_current__X_to =
190 var_chaste_interface__transient_outward_potassium_current_X_to_gate__X_to; // dimensionless
191 const NekDouble var_transient_outward_potassium_current__V =
192 var_chaste_interface__membrane__V; // millivolt
193 const NekDouble var_Na_Ca_exchanger__Na_o =
194 var_standard_ionic_concentrations__Na_o; // millimolar
195 const NekDouble var_Na_Ca_exchanger__K_sat = 0.2; // dimensionless
196 const NekDouble var_Na_Ca_exchanger__Ca_i =
197 var_chaste_interface__calcium_dynamics__Ca_i; // micromolar
198 const NekDouble var_Na_Ca_exchanger__K_mNa = 87.5; // millimolar
199 const NekDouble var_Na_Ca_exchanger__Ca_o =
200 var_standard_ionic_concentrations__Ca_o; // micromolar
201 const NekDouble var_Na_Ca_exchanger__K_NaCa =
202 1500.0; // microA_per_microF
203 const NekDouble var_Na_Ca_exchanger__T = var_membrane__T; // kelvin
204 const NekDouble var_Na_Ca_exchanger__V =
205 var_chaste_interface__membrane__V; // millivolt
206 const NekDouble var_Na_Ca_exchanger__Na_i =
207 var_standard_ionic_concentrations__Na_i; // millimolar
208 const NekDouble var_Na_Ca_exchanger__eta = 0.35; // dimensionless
209 const NekDouble var_Na_Ca_exchanger__K_mCa = 1380.0; // micromolar
210 const NekDouble var_Na_Ca_exchanger__F =
211 var_membrane__F; // coulomb_per_millimole
212 const NekDouble var_Na_Ca_exchanger__R =
213 var_membrane__R; // joule_per_mole_kelvin
214 const NekDouble var_Na_Ca_exchanger__i_NaCa =
215 (var_Na_Ca_exchanger__K_NaCa /
216 ((pow(var_Na_Ca_exchanger__K_mNa, 3.0) +
217 pow(var_Na_Ca_exchanger__Na_o, 3.0)) *
218 (var_Na_Ca_exchanger__K_mCa + var_Na_Ca_exchanger__Ca_o) *
219 (1.0 +
220 (var_Na_Ca_exchanger__K_sat *
221 exp(((var_Na_Ca_exchanger__eta - 1.0) * var_Na_Ca_exchanger__V *
222 var_Na_Ca_exchanger__F) /
223 (var_Na_Ca_exchanger__R * var_Na_Ca_exchanger__T)))))) *
224 ((exp((var_Na_Ca_exchanger__eta * var_Na_Ca_exchanger__V *
225 var_Na_Ca_exchanger__F) /
226 (var_Na_Ca_exchanger__R * var_Na_Ca_exchanger__T)) *
227 pow(var_Na_Ca_exchanger__Na_i, 3.0) * var_Na_Ca_exchanger__Ca_o) -
228 (exp(((var_Na_Ca_exchanger__eta - 1.0) * var_Na_Ca_exchanger__V *
229 var_Na_Ca_exchanger__F) /
230 (var_Na_Ca_exchanger__R * var_Na_Ca_exchanger__T)) *
231 pow(var_Na_Ca_exchanger__Na_o, 3.0) *
232 var_Na_Ca_exchanger__Ca_i)); // microA_per_microF
233 const NekDouble var_sarcolemmal_calcium_pump__Ca_i =
234 var_chaste_interface__calcium_dynamics__Ca_i; // micromolar
235 const NekDouble var_sarcolemmal_calcium_pump__i_pCa_max =
236 0.05; // microA_per_microF
237 const NekDouble var_sarcolemmal_calcium_pump__K_mpCa =
238 0.05; // micromolar
239 const NekDouble var_sarcolemmal_calcium_pump__i_p_Ca =
240 (var_sarcolemmal_calcium_pump__i_pCa_max *
241 var_sarcolemmal_calcium_pump__Ca_i) /
242 (var_sarcolemmal_calcium_pump__K_mpCa +
243 var_sarcolemmal_calcium_pump__Ca_i); // microA_per_microF
244 const NekDouble var_calcium_background_current__R =
245 var_membrane__R; // joule_per_mole_kelvin
246 const NekDouble var_calcium_background_current__Ca_i =
247 var_chaste_interface__calcium_dynamics__Ca_i; // micromolar
248 const NekDouble var_calcium_background_current__F =
249 var_membrane__F; // coulomb_per_millimole
250 const NekDouble var_calcium_background_current__T =
251 var_membrane__T; // kelvin
252 const NekDouble var_calcium_background_current__Ca_o =
253 var_standard_ionic_concentrations__Ca_o; // micromolar
254 const NekDouble var_calcium_background_current__E_Ca =
255 ((var_calcium_background_current__R *
256 var_calcium_background_current__T) /
257 (2.0 * var_calcium_background_current__F)) *
258 log(var_calcium_background_current__Ca_o /
259 var_calcium_background_current__Ca_i); // millivolt
260 const NekDouble var_calcium_background_current__g_Cab =
261 0.0003842; // milliS_per_microF
262 const NekDouble var_calcium_background_current__V =
263 var_chaste_interface__membrane__V; // millivolt
264 const NekDouble var_calcium_background_current__i_Ca_b =
265 var_calcium_background_current__g_Cab *
266 (var_calcium_background_current__V -
267 var_calcium_background_current__E_Ca); // microA_per_microF
268 const NekDouble var_fast_sodium_current_m_gate__m =
269 var_fast_sodium_current__m; // dimensionless
270 const NekDouble var_fast_sodium_current_m_gate__V =
271 var_fast_sodium_current__V; // millivolt
272 const NekDouble var_fast_sodium_current_m_gate__E0_m =
273 var_fast_sodium_current_m_gate__V + 47.13; // millivolt
274 const NekDouble var_fast_sodium_current_m_gate__alpha_m =
275 (0.32 * var_fast_sodium_current_m_gate__E0_m) /
276 (1.0 -
277 exp((-0.1) *
278 var_fast_sodium_current_m_gate__E0_m)); // per_millisecond
279 const NekDouble var_fast_sodium_current_m_gate__beta_m =
280 0.08 *
281 exp((-var_fast_sodium_current_m_gate__V) / 11.0); // per_millisecond
282 const NekDouble
283 var_fast_sodium_current_m_gate__d_m_d_environment__time =
284 (var_fast_sodium_current_m_gate__alpha_m *
285 (1.0 - var_fast_sodium_current_m_gate__m)) -
286 (var_fast_sodium_current_m_gate__beta_m *
287 var_fast_sodium_current_m_gate__m); // per_millisecond
288 const NekDouble
289 var_fast_sodium_current__fast_sodium_current_m_gate__d_m_d_environment__time =
290 var_fast_sodium_current_m_gate__d_m_d_environment__time; // per_millisecond
291 const NekDouble var_fast_sodium_current_h_gate__V =
292 var_fast_sodium_current__V; // millivolt
293 const NekDouble var_fast_sodium_current_h_gate__beta_h =
294 7.5 / (1.0 + exp((-0.1) * (var_fast_sodium_current_h_gate__V +
295 11.0))); // per_millisecond
296 const NekDouble var_fast_sodium_current_h_gate__alpha_h =
297 0.135 * exp((var_fast_sodium_current_h_gate__V + 80.0) /
298 (-6.8)); // per_millisecond
299 const NekDouble var_fast_sodium_current_h_gate__h =
300 var_fast_sodium_current__h; // dimensionless
301 const NekDouble
302 var_fast_sodium_current_h_gate__d_h_d_environment__time =
303 (var_fast_sodium_current_h_gate__alpha_h *
304 (1.0 - var_fast_sodium_current_h_gate__h)) -
305 (var_fast_sodium_current_h_gate__beta_h *
306 var_fast_sodium_current_h_gate__h); // per_millisecond
307 const NekDouble
308 var_fast_sodium_current__fast_sodium_current_h_gate__d_h_d_environment__time =
309 var_fast_sodium_current_h_gate__d_h_d_environment__time; // per_millisecond
310 const NekDouble var_fast_sodium_current_j_gate__V =
311 var_fast_sodium_current__V; // millivolt
312 const NekDouble var_fast_sodium_current_j_gate__alpha_j =
313 (0.175 *
314 exp((var_fast_sodium_current_j_gate__V + 100.0) / (-23.0))) /
315 (1.0 + exp(0.15 * (var_fast_sodium_current_j_gate__V +
316 79.0))); // per_millisecond
317 const NekDouble var_fast_sodium_current_j_gate__beta_j =
318 0.3 / (1.0 + exp((-0.1) * (var_fast_sodium_current_j_gate__V +
319 32.0))); // per_millisecond
320 const NekDouble var_fast_sodium_current_j_gate__j =
321 var_fast_sodium_current__j; // dimensionless
322 const NekDouble
323 var_fast_sodium_current_j_gate__d_j_d_environment__time =
324 (var_fast_sodium_current_j_gate__alpha_j *
325 (1.0 - var_fast_sodium_current_j_gate__j)) -
326 (var_fast_sodium_current_j_gate__beta_j *
327 var_fast_sodium_current_j_gate__j); // per_millisecond
328 const NekDouble
329 var_fast_sodium_current__fast_sodium_current_j_gate__d_j_d_environment__time =
330 var_fast_sodium_current_j_gate__d_j_d_environment__time; // per_millisecond
331 const NekDouble
332 var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__V =
333 var_rapid_activating_delayed_rectifiyer_K_current__V; // millivolt
334 const NekDouble var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__tau_X_kr =
335 43.0 +
336 (1.0 /
337 (exp((-5.495) +
338 (0.1691 *
339 var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__V)) +
340 exp((-7.677) -
341 (0.0128 *
342 var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__V)))); // millisecond
343 const NekDouble
344 var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr =
345 var_rapid_activating_delayed_rectifiyer_K_current__X_kr; // dimensionless
346 const NekDouble var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr_inf =
347 1.0 /
348 (1.0 +
349 exp((-2.182) -
350 (0.1819 *
351 var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__V))); // dimensionless
352 const NekDouble var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__d_X_kr_d_environment__time =
353 (var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr_inf -
354 var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr) /
355 var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__tau_X_kr; // per_millisecond
356 const NekDouble
357 var_rapid_activating_delayed_rectifiyer_K_current__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__d_X_kr_d_environment__time =
358 var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__d_X_kr_d_environment__time; // per_millisecond
359 const NekDouble
360 var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__V =
361 var_slow_activating_delayed_rectifiyer_K_current__V; // millivolt
362 const NekDouble var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__tau_X_ks =
363 1.0 /
364 (((7.19e-05 *
365 (var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__V -
366 10.0)) /
367 (1.0 -
368 exp((-0.148) *
369 (var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__V -
370 10.0)))) +
371 ((0.000131 *
372 (var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__V -
373 10.0)) /
374 (exp(0.0687 *
375 (var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__V -
376 10.0)) -
377 1.0))); // millisecond
378 const NekDouble
379 var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks_infinity =
380 1.0 /
381 (1.0 +
382 exp((var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__V -
383 16.0) /
384 (-13.6))); // dimensionless
385 const NekDouble
386 var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks =
387 var_slow_activating_delayed_rectifiyer_K_current__X_ks; // dimensionless
388 const NekDouble var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__d_X_ks_d_environment__time =
389 (var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks_infinity -
390 var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks) /
391 var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__tau_X_ks; // per_millisecond
392 const NekDouble
393 var_slow_activating_delayed_rectifiyer_K_current__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__d_X_ks_d_environment__time =
394 var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__d_X_ks_d_environment__time; // per_millisecond
395 const NekDouble var_transient_outward_potassium_current_X_to_gate__V =
396 var_transient_outward_potassium_current__V; // millivolt
397 const NekDouble
398 var_transient_outward_potassium_current_X_to_gate__alpha_X_to =
399 0.04516 *
400 exp(0.03577 *
401 var_transient_outward_potassium_current_X_to_gate__V); // per_millisecond
402 const NekDouble
403 var_transient_outward_potassium_current_X_to_gate__X_to =
404 var_transient_outward_potassium_current__X_to; // dimensionless
405 const NekDouble
406 var_transient_outward_potassium_current_X_to_gate__beta_X_to =
407 0.0989 *
408 exp((-0.06237) *
409 var_transient_outward_potassium_current_X_to_gate__V); // per_millisecond
410 const NekDouble
411 var_transient_outward_potassium_current_X_to_gate__d_X_to_d_environment__time =
412 (var_transient_outward_potassium_current_X_to_gate__alpha_X_to *
413 (1.0 -
414 var_transient_outward_potassium_current_X_to_gate__X_to)) -
415 (var_transient_outward_potassium_current_X_to_gate__beta_X_to *
416 var_transient_outward_potassium_current_X_to_gate__X_to); // per_millisecond
417 const NekDouble
418 var_transient_outward_potassium_current__transient_outward_potassium_current_X_to_gate__d_X_to_d_environment__time =
419 var_transient_outward_potassium_current_X_to_gate__d_X_to_d_environment__time; // per_millisecond
420 const NekDouble var_transient_outward_potassium_current_Y_to_gate__V =
421 var_transient_outward_potassium_current__V; // millivolt
422 const NekDouble
423 var_transient_outward_potassium_current_Y_to_gate__beta_Y_to =
424 (0.005415 *
425 exp((var_transient_outward_potassium_current_Y_to_gate__V +
426 33.5) /
427 5.0)) /
428 (1.0 +
429 (0.051335 *
430 exp((var_transient_outward_potassium_current_Y_to_gate__V +
431 33.5) /
432 5.0))); // per_millisecond
433 const NekDouble
434 var_transient_outward_potassium_current_Y_to_gate__alpha_Y_to =
435 (0.005415 *
436 exp((var_transient_outward_potassium_current_Y_to_gate__V +
437 33.5) /
438 (-5.0))) /
439 (1.0 +
440 (0.051335 *
441 exp((var_transient_outward_potassium_current_Y_to_gate__V +
442 33.5) /
443 (-5.0)))); // per_millisecond
444 const NekDouble
445 var_transient_outward_potassium_current_Y_to_gate__Y_to =
446 var_transient_outward_potassium_current__Y_to; // dimensionless
447 const NekDouble
448 var_transient_outward_potassium_current_Y_to_gate__d_Y_to_d_environment__time =
449 (var_transient_outward_potassium_current_Y_to_gate__alpha_Y_to *
450 (1.0 -
451 var_transient_outward_potassium_current_Y_to_gate__Y_to)) -
452 (var_transient_outward_potassium_current_Y_to_gate__beta_Y_to *
453 var_transient_outward_potassium_current_Y_to_gate__Y_to); // per_millisecond
454 const NekDouble
455 var_transient_outward_potassium_current__transient_outward_potassium_current_Y_to_gate__d_Y_to_d_environment__time =
456 var_transient_outward_potassium_current_Y_to_gate__d_Y_to_d_environment__time; // per_millisecond
457 const NekDouble var_L_type_Ca_current_f_gate__V =
458 var_L_type_Ca_current__V; // millivolt
459 const NekDouble var_L_type_Ca_current_f_gate__tau_f =
460 30.0 +
461 (200.0 / (1.0 + exp((var_L_type_Ca_current_f_gate__V + 20.0) /
462 9.5))); // millisecond
463 const NekDouble var_L_type_Ca_current_f_gate__f =
464 var_L_type_Ca_current__f; // dimensionless
465 const NekDouble var_L_type_Ca_current_f_gate__f_infinity =
466 1.0 / (1.0 + exp((var_L_type_Ca_current_f_gate__V + 12.5) /
467 5.0)); // dimensionless
468 const NekDouble var_L_type_Ca_current_f_gate__d_f_d_environment__time =
469 (var_L_type_Ca_current_f_gate__f_infinity -
470 var_L_type_Ca_current_f_gate__f) /
471 var_L_type_Ca_current_f_gate__tau_f; // per_millisecond
472 const NekDouble
473 var_L_type_Ca_current__L_type_Ca_current_f_gate__d_f_d_environment__time =
474 var_L_type_Ca_current_f_gate__d_f_d_environment__time; // per_millisecond
475 const NekDouble var_L_type_Ca_current_d_gate__V =
476 var_L_type_Ca_current__V; // millivolt
477 const NekDouble var_L_type_Ca_current_d_gate__E0_m =
478 var_L_type_Ca_current_d_gate__V + 40.0; // millivolt
479 const NekDouble var_L_type_Ca_current_d_gate__tau_d =
480 1.0 /
481 (((0.25 * exp((-0.01) * var_L_type_Ca_current_d_gate__V)) /
482 (1.0 + exp((-0.07) * var_L_type_Ca_current_d_gate__V))) +
483 ((0.07 * exp((-0.05) * var_L_type_Ca_current_d_gate__E0_m)) /
484 (1.0 +
485 exp(0.05 * var_L_type_Ca_current_d_gate__E0_m)))); // millisecond
486 const NekDouble var_L_type_Ca_current_d_gate__d =
487 var_L_type_Ca_current__d; // dimensionless
488 const NekDouble var_L_type_Ca_current_d_gate__d_infinity =
489 1.0 / (1.0 + exp((var_L_type_Ca_current_d_gate__V + 10.0) /
490 (-6.24))); // dimensionless
491 const NekDouble var_L_type_Ca_current_d_gate__d_d_d_environment__time =
492 (var_L_type_Ca_current_d_gate__d_infinity -
493 var_L_type_Ca_current_d_gate__d) /
494 var_L_type_Ca_current_d_gate__tau_d; // per_millisecond
495 const NekDouble
496 var_L_type_Ca_current__L_type_Ca_current_d_gate__d_d_d_environment__time =
497 var_L_type_Ca_current_d_gate__d_d_d_environment__time; // per_millisecond
498 const NekDouble var_L_type_Ca_current_f_Ca_gate__f_Ca =
499 var_L_type_Ca_current__f_Ca; // dimensionless
500 const NekDouble var_L_type_Ca_current_f_Ca_gate__K_mfCa =
501 0.18; // micromolar
502 const NekDouble var_L_type_Ca_current_f_Ca_gate__Ca_i =
503 var_L_type_Ca_current__Ca_i; // micromolar
504 const NekDouble var_L_type_Ca_current_f_Ca_gate__f_Ca_infinity =
505 1.0 / (1.0 + pow(var_L_type_Ca_current_f_Ca_gate__Ca_i /
506 var_L_type_Ca_current_f_Ca_gate__K_mfCa,
507 3.0)); // dimensionless
508 const NekDouble var_L_type_Ca_current_f_Ca_gate__tau_f_Ca =
509 30.0; // millisecond
510 const NekDouble
511 var_L_type_Ca_current_f_Ca_gate__d_f_Ca_d_environment__time =
512 (var_L_type_Ca_current_f_Ca_gate__f_Ca_infinity -
513 var_L_type_Ca_current_f_Ca_gate__f_Ca) /
514 var_L_type_Ca_current_f_Ca_gate__tau_f_Ca; // per_millisecond
515 const NekDouble
516 var_L_type_Ca_current__L_type_Ca_current_f_Ca_gate__d_f_Ca_d_environment__time =
517 var_L_type_Ca_current_f_Ca_gate__d_f_Ca_d_environment__time; // per_millisecond
518 const NekDouble var_calcium_dynamics__Ca_i =
519 var_chaste_interface__calcium_dynamics__Ca_i; // micromolar
520 const NekDouble var_calcium_dynamics__CMDN_tot = 10.0; // micromolar
521 const NekDouble var_calcium_dynamics__K_mCMDN = 2.0; // micromolar
522 const NekDouble var_calcium_dynamics__beta_i =
523 1.0 /
524 (1.0 +
525 ((var_calcium_dynamics__CMDN_tot * var_calcium_dynamics__K_mCMDN) /
526 pow(var_calcium_dynamics__K_mCMDN + var_calcium_dynamics__Ca_i,
527 2.0))); // dimensionless
528 const NekDouble var_calcium_dynamics__V_myo = 2.584e-05; // microlitre
529 const NekDouble var_calcium_dynamics__F =
530 var_membrane__F; // coulomb_per_millimole
531 const NekDouble var_calcium_dynamics__C_sc =
532 var_L_type_Ca_current__C_sc; // microF_per_cm2
533 const NekDouble var_calcium_dynamics__A_Cap = 0.0001534; // cm2
534 const NekDouble var_calcium_dynamics__Ca_SR =
535 var_chaste_interface__calcium_dynamics__Ca_SR; // micromolar
536 const NekDouble var_calcium_dynamics__P_rel = 6.0; // per_millisecond
537 const NekDouble var_calcium_dynamics__V =
538 var_chaste_interface__membrane__V; // millivolt
539 const NekDouble var_calcium_dynamics__f_Ca =
540 var_chaste_interface__L_type_Ca_current_f_Ca_gate__f_Ca; // dimensionless
541 const NekDouble var_calcium_dynamics__gamma =
542 1.0 / (1.0 + pow(2000.0 / var_calcium_dynamics__Ca_SR,
543 3.0)); // dimensionless
544 const NekDouble var_calcium_dynamics__d =
545 var_chaste_interface__L_type_Ca_current_d_gate__d; // dimensionless
546 const NekDouble var_calcium_dynamics__f =
547 var_chaste_interface__L_type_Ca_current_f_gate__f; // dimensionless
548 const NekDouble var_calcium_dynamics__J_rel =
549 (var_calcium_dynamics__P_rel * var_calcium_dynamics__f *
550 var_calcium_dynamics__d * var_calcium_dynamics__f_Ca *
551 ((var_calcium_dynamics__gamma * var_calcium_dynamics__Ca_SR) -
552 var_calcium_dynamics__Ca_i)) /
553 (1.0 + (1.65 * exp(var_calcium_dynamics__V /
554 20.0))); // micromolar_per_millisecond
555 const NekDouble var_calcium_dynamics__P_leak = 1e-06; // per_millisecond
556 const NekDouble var_calcium_dynamics__J_leak =
557 var_calcium_dynamics__P_leak *
558 (var_calcium_dynamics__Ca_SR -
559 var_calcium_dynamics__Ca_i); // micromolar_per_millisecond
560 const NekDouble var_calcium_dynamics__K_mup = 0.32; // micromolar
561 const NekDouble var_calcium_dynamics__V_up =
562 0.1; // micromolar_per_millisecond
563 const NekDouble var_calcium_dynamics__J_up =
564 var_calcium_dynamics__V_up /
565 (1.0 + pow(var_calcium_dynamics__K_mup / var_calcium_dynamics__Ca_i,
566 2.0)); // micromolar_per_millisecond
567 const NekDouble var_calcium_dynamics__i_Ca =
568 var_L_type_Ca_current__i_Ca; // microA_per_microF
569 const NekDouble var_calcium_dynamics__i_Ca_b =
570 var_calcium_background_current__i_Ca_b; // microA_per_microF
571 const NekDouble var_calcium_dynamics__i_p_Ca =
572 var_sarcolemmal_calcium_pump__i_p_Ca; // microA_per_microF
573 const NekDouble var_calcium_dynamics__i_NaCa =
574 var_Na_Ca_exchanger__i_NaCa; // microA_per_microF
575 const NekDouble var_calcium_dynamics__K_mCSQN = 600.0; // micromolar
576 const NekDouble var_calcium_dynamics__CSQN_tot = 10000.0; // micromolar
577 const NekDouble var_calcium_dynamics__V_SR = 2e-06; // microlitre
578 const NekDouble var_calcium_dynamics__beta_SR =
579 1.0 /
580 (1.0 +
581 ((var_calcium_dynamics__CSQN_tot * var_calcium_dynamics__K_mCSQN) /
582 pow(var_calcium_dynamics__K_mCSQN + var_calcium_dynamics__Ca_SR,
583 2.0))); // dimensionless
584 const NekDouble var_calcium_dynamics__d_Ca_i_d_environment__time =
585 var_calcium_dynamics__beta_i *
586 (((var_calcium_dynamics__J_rel + var_calcium_dynamics__J_leak) -
587 var_calcium_dynamics__J_up) -
588 (((var_calcium_dynamics__A_Cap * var_calcium_dynamics__C_sc) /
589 (2.0 * var_calcium_dynamics__F * var_calcium_dynamics__V_myo)) *
590 ((var_calcium_dynamics__i_Ca + var_calcium_dynamics__i_Ca_b +
591 var_calcium_dynamics__i_p_Ca) -
592 (2.0 * var_calcium_dynamics__i_NaCa)))); // 'micromole per litre
593 // per millisecond'
594 const NekDouble var_calcium_dynamics__d_Ca_SR_d_environment__time =
595 (var_calcium_dynamics__beta_SR *
596 ((var_calcium_dynamics__J_up - var_calcium_dynamics__J_leak) -
597 var_calcium_dynamics__J_rel) *
598 var_calcium_dynamics__V_myo) /
599 var_calcium_dynamics__V_SR; // 'micromole per litre per millisecond'
600 const NekDouble
601 var_chaste_interface__fast_sodium_current_m_gate__d_m_d_environment__time =
602 var_fast_sodium_current__fast_sodium_current_m_gate__d_m_d_environment__time; // per_millisecond
603 const NekDouble
604 var_chaste_interface__fast_sodium_current_h_gate__d_h_d_environment__time =
605 var_fast_sodium_current__fast_sodium_current_h_gate__d_h_d_environment__time; // per_millisecond
606 const NekDouble
607 var_chaste_interface__fast_sodium_current_j_gate__d_j_d_environment__time =
608 var_fast_sodium_current__fast_sodium_current_j_gate__d_j_d_environment__time; // per_millisecond
609 const NekDouble
610 var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__d_X_kr_d_environment__time =
611 var_rapid_activating_delayed_rectifiyer_K_current__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__d_X_kr_d_environment__time; // per_millisecond
612 const NekDouble
613 var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__d_X_ks_d_environment__time =
614 var_slow_activating_delayed_rectifiyer_K_current__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__d_X_ks_d_environment__time; // per_millisecond
615 const NekDouble
616 var_chaste_interface__transient_outward_potassium_current_X_to_gate__d_X_to_d_environment__time =
617 var_transient_outward_potassium_current__transient_outward_potassium_current_X_to_gate__d_X_to_d_environment__time; // per_millisecond
618 const NekDouble
619 var_chaste_interface__transient_outward_potassium_current_Y_to_gate__d_Y_to_d_environment__time =
620 var_transient_outward_potassium_current__transient_outward_potassium_current_Y_to_gate__d_Y_to_d_environment__time; // per_millisecond
621 const NekDouble
622 var_chaste_interface__L_type_Ca_current_f_gate__d_f_d_environment__time =
623 var_L_type_Ca_current__L_type_Ca_current_f_gate__d_f_d_environment__time; // per_millisecond
624 const NekDouble
625 var_chaste_interface__L_type_Ca_current_d_gate__d_d_d_environment__time =
626 var_L_type_Ca_current__L_type_Ca_current_d_gate__d_d_d_environment__time; // per_millisecond
627 const NekDouble
628 var_chaste_interface__L_type_Ca_current_f_Ca_gate__d_f_Ca_d_environment__time =
629 var_L_type_Ca_current__L_type_Ca_current_f_Ca_gate__d_f_Ca_d_environment__time; // per_millisecond
630 const NekDouble
631 var_chaste_interface__calcium_dynamics__d_Ca_i_d_environment__time =
632 var_calcium_dynamics__d_Ca_i_d_environment__time; // micromolar_per_millisecond
633 const NekDouble
634 var_chaste_interface__calcium_dynamics__d_Ca_SR_d_environment__time =
635 var_calcium_dynamics__d_Ca_SR_d_environment__time; // micromolar_per_millisecond
636 const NekDouble d_dt_chaste_interface__fast_sodium_current_m_gate__m =
637 var_chaste_interface__fast_sodium_current_m_gate__d_m_d_environment__time; // per_millisecond
638 const NekDouble d_dt_chaste_interface__fast_sodium_current_h_gate__h =
639 var_chaste_interface__fast_sodium_current_h_gate__d_h_d_environment__time; // per_millisecond
640 const NekDouble d_dt_chaste_interface__fast_sodium_current_j_gate__j =
641 var_chaste_interface__fast_sodium_current_j_gate__d_j_d_environment__time; // per_millisecond
642 const NekDouble
643 d_dt_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr =
644 var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__d_X_kr_d_environment__time; // per_millisecond
645 const NekDouble
646 d_dt_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks =
647 var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__d_X_ks_d_environment__time; // per_millisecond
648 const NekDouble
649 d_dt_chaste_interface__transient_outward_potassium_current_X_to_gate__X_to =
650 var_chaste_interface__transient_outward_potassium_current_X_to_gate__d_X_to_d_environment__time; // per_millisecond
651 const NekDouble
652 d_dt_chaste_interface__transient_outward_potassium_current_Y_to_gate__Y_to =
653 var_chaste_interface__transient_outward_potassium_current_Y_to_gate__d_Y_to_d_environment__time; // per_millisecond
654 const NekDouble d_dt_chaste_interface__L_type_Ca_current_f_gate__f =
655 var_chaste_interface__L_type_Ca_current_f_gate__d_f_d_environment__time; // per_millisecond
656 const NekDouble d_dt_chaste_interface__L_type_Ca_current_d_gate__d =
657 var_chaste_interface__L_type_Ca_current_d_gate__d_d_d_environment__time; // per_millisecond
658 const NekDouble d_dt_chaste_interface__L_type_Ca_current_f_Ca_gate__f_Ca =
659 var_chaste_interface__L_type_Ca_current_f_Ca_gate__d_f_Ca_d_environment__time; // per_millisecond
660 const NekDouble d_dt_chaste_interface__calcium_dynamics__Ca_i =
661 var_chaste_interface__calcium_dynamics__d_Ca_i_d_environment__time; // 'micromole per litre per millisecond'
662 const NekDouble d_dt_chaste_interface__calcium_dynamics__Ca_SR =
663 var_chaste_interface__calcium_dynamics__d_Ca_SR_d_environment__time; // 'micromole per litre per millisecond'
664
665 const NekDouble var_fast_sodium_current__g_Na =
666 12.8; // milliS_per_microF
667 const NekDouble var_fast_sodium_current__R =
668 var_membrane__R; // joule_per_mole_kelvin
669 const NekDouble var_fast_sodium_current__Na_o =
670 var_standard_ionic_concentrations__Na_o; // millimolar
671 const NekDouble var_fast_sodium_current__F =
672 var_membrane__F; // coulomb_per_millimole
673 const NekDouble var_fast_sodium_current__T = var_membrane__T; // kelvin
674 const NekDouble var_fast_sodium_current__Na_i =
675 var_standard_ionic_concentrations__Na_i; // millimolar
676 const NekDouble var_fast_sodium_current__E_Na =
677 ((var_fast_sodium_current__R * var_fast_sodium_current__T) /
678 var_fast_sodium_current__F) *
679 log(var_fast_sodium_current__Na_o /
680 var_fast_sodium_current__Na_i); // millivolt
681 const NekDouble var_fast_sodium_current__i_Na =
682 var_fast_sodium_current__g_Na *
683 pow(var_fast_sodium_current__m, 3.0) * var_fast_sodium_current__h *
684 var_fast_sodium_current__j *
685 (var_fast_sodium_current__V -
686 var_fast_sodium_current__E_Na); // microA_per_microF
687 const NekDouble var_membrane__i_Na =
688 var_fast_sodium_current__i_Na; // microA_per_microF
689 const NekDouble var_membrane__i_Ca =
690 var_L_type_Ca_current__i_Ca; // microA_per_microF
691 const NekDouble var_L_type_Ca_current__P_CaK =
692 5.79e-07; // cm_per_millisecond
693 const NekDouble var_standard_ionic_concentrations__K_o =
694 4.0; // millimolar
695 const NekDouble var_L_type_Ca_current__K_o =
696 var_standard_ionic_concentrations__K_o; // millimolar
697 const NekDouble var_L_type_Ca_current__i_Ca_half =
698 -0.265; // microA_per_microF
699 const NekDouble var_standard_ionic_concentrations__K_i =
700 149.4; // millimolar
701 const NekDouble var_L_type_Ca_current__K_i =
702 var_standard_ionic_concentrations__K_i; // millimolar
703 const NekDouble var_L_type_Ca_current__i_CaK =
704 ((((((var_L_type_Ca_current__P_CaK / var_L_type_Ca_current__C_sc) *
705 var_L_type_Ca_current__f * var_L_type_Ca_current__d *
706 var_L_type_Ca_current__f_Ca) /
707 (1.0 + (var_L_type_Ca_current__i_Ca_max /
708 var_L_type_Ca_current__i_Ca_half))) *
709 1000.0 * var_L_type_Ca_current__V *
710 pow(var_L_type_Ca_current__F, 2.0)) /
711 (var_L_type_Ca_current__R * var_L_type_Ca_current__T)) *
712 ((var_L_type_Ca_current__K_i *
713 exp((var_L_type_Ca_current__V * var_L_type_Ca_current__F) /
714 (var_L_type_Ca_current__R * var_L_type_Ca_current__T))) -
715 var_L_type_Ca_current__K_o)) /
716 (exp((var_L_type_Ca_current__V * var_L_type_Ca_current__F) /
717 (var_L_type_Ca_current__R * var_L_type_Ca_current__T)) -
718 1.0); // microA_per_microF
719 const NekDouble var_membrane__i_CaK =
720 var_L_type_Ca_current__i_CaK; // microA_per_microF
721 const NekDouble var_rapid_activating_delayed_rectifiyer_K_current__K_o =
722 var_standard_ionic_concentrations__K_o; // millimolar
723 const NekDouble var_rapid_activating_delayed_rectifiyer_K_current__R =
724 var_membrane__R; // joule_per_mole_kelvin
725 const NekDouble var_rapid_activating_delayed_rectifiyer_K_current__F =
726 var_membrane__F; // coulomb_per_millimole
727 const NekDouble var_rapid_activating_delayed_rectifiyer_K_current__K_i =
728 var_standard_ionic_concentrations__K_i; // millimolar
729 const NekDouble var_rapid_activating_delayed_rectifiyer_K_current__T =
730 var_membrane__T; // kelvin
731 const NekDouble var_rapid_activating_delayed_rectifiyer_K_current__E_K =
732 ((var_rapid_activating_delayed_rectifiyer_K_current__R *
733 var_rapid_activating_delayed_rectifiyer_K_current__T) /
734 var_rapid_activating_delayed_rectifiyer_K_current__F) *
735 log(var_rapid_activating_delayed_rectifiyer_K_current__K_o /
736 var_rapid_activating_delayed_rectifiyer_K_current__K_i); // millivolt
737 const NekDouble var_rapid_activating_delayed_rectifiyer_K_current__R_V =
738 1.0 /
739 (1.0 +
740 (2.5 *
741 exp(0.1 * (var_rapid_activating_delayed_rectifiyer_K_current__V +
742 28.0)))); // dimensionless
743 const NekDouble
744 var_rapid_activating_delayed_rectifiyer_K_current__g_Kr =
745 0.0136; // milliS_per_microF
746 const NekDouble var_rapid_activating_delayed_rectifiyer_K_current__i_Kr =
747 var_rapid_activating_delayed_rectifiyer_K_current__g_Kr *
748 var_rapid_activating_delayed_rectifiyer_K_current__R_V *
749 var_rapid_activating_delayed_rectifiyer_K_current__X_kr *
750 sqrt(var_rapid_activating_delayed_rectifiyer_K_current__K_o / 4.0) *
751 (var_rapid_activating_delayed_rectifiyer_K_current__V -
752 var_rapid_activating_delayed_rectifiyer_K_current__E_K); // microA_per_microF
753 const NekDouble var_membrane__i_Kr =
754 var_rapid_activating_delayed_rectifiyer_K_current__i_Kr; // microA_per_microF
755 const NekDouble var_slow_activating_delayed_rectifiyer_K_current__g_Ks =
756 0.0245; // milliS_per_microF
757 const NekDouble var_slow_activating_delayed_rectifiyer_K_current__T =
758 var_membrane__T; // kelvin
759 const NekDouble var_slow_activating_delayed_rectifiyer_K_current__K_o =
760 var_standard_ionic_concentrations__K_o; // millimolar
761 const NekDouble var_slow_activating_delayed_rectifiyer_K_current__R =
762 var_membrane__R; // joule_per_mole_kelvin
763 const NekDouble var_slow_activating_delayed_rectifiyer_K_current__Na_o =
764 var_standard_ionic_concentrations__Na_o; // millimolar
765 const NekDouble var_slow_activating_delayed_rectifiyer_K_current__Na_i =
766 var_standard_ionic_concentrations__Na_i; // millimolar
767 const NekDouble var_slow_activating_delayed_rectifiyer_K_current__K_i =
768 var_standard_ionic_concentrations__K_i; // millimolar
769 const NekDouble var_slow_activating_delayed_rectifiyer_K_current__F =
770 var_membrane__F; // coulomb_per_millimole
771 const NekDouble var_slow_activating_delayed_rectifiyer_K_current__E_Ks =
772 ((var_slow_activating_delayed_rectifiyer_K_current__R *
773 var_slow_activating_delayed_rectifiyer_K_current__T) /
774 var_slow_activating_delayed_rectifiyer_K_current__F) *
775 log((var_slow_activating_delayed_rectifiyer_K_current__K_o +
776 (0.01833 *
777 var_slow_activating_delayed_rectifiyer_K_current__Na_o)) /
778 (var_slow_activating_delayed_rectifiyer_K_current__K_i +
779 (0.01833 *
780 var_slow_activating_delayed_rectifiyer_K_current__Na_i))); // millivolt
781 const NekDouble var_slow_activating_delayed_rectifiyer_K_current__i_Ks =
782 var_slow_activating_delayed_rectifiyer_K_current__g_Ks *
783 pow(var_slow_activating_delayed_rectifiyer_K_current__X_ks, 2.0) *
784 (var_slow_activating_delayed_rectifiyer_K_current__V -
785 var_slow_activating_delayed_rectifiyer_K_current__E_Ks); // microA_per_microF
786 const NekDouble var_membrane__i_Ks =
787 var_slow_activating_delayed_rectifiyer_K_current__i_Ks; // microA_per_microF
788 const NekDouble var_transient_outward_potassium_current__g_to =
789 0.23815; // milliS_per_microF
790 const NekDouble var_transient_outward_potassium_current__E_K =
791 var_rapid_activating_delayed_rectifiyer_K_current__E_K; // millivolt
792 const NekDouble var_transient_outward_potassium_current__i_to =
793 var_transient_outward_potassium_current__g_to *
794 var_transient_outward_potassium_current__X_to *
795 var_transient_outward_potassium_current__Y_to *
796 (var_transient_outward_potassium_current__V -
797 var_transient_outward_potassium_current__E_K); // microA_per_microF
798 const NekDouble var_membrane__i_to =
799 var_transient_outward_potassium_current__i_to; // microA_per_microF
800 const NekDouble var_time_independent_potassium_current__E_K =
801 var_rapid_activating_delayed_rectifiyer_K_current__E_K; // millivolt
802 const NekDouble var_time_independent_potassium_current__K_o =
803 var_standard_ionic_concentrations__K_o; // millimolar
804 const NekDouble var_time_independent_potassium_current__g_K1 =
805 2.8; // milliS_per_microF
806 const NekDouble var_time_independent_potassium_current__F =
807 var_membrane__F; // coulomb_per_millimole
808 const NekDouble var_time_independent_potassium_current_K1_gate__F =
809 var_time_independent_potassium_current__F; // coulomb_per_millimole
810 const NekDouble var_time_independent_potassium_current__V =
811 var_chaste_interface__membrane__V; // millivolt
812 const NekDouble var_time_independent_potassium_current_K1_gate__V =
813 var_time_independent_potassium_current__V; // millivolt
814 const NekDouble var_time_independent_potassium_current__T =
815 var_membrane__T; // kelvin
816 const NekDouble var_time_independent_potassium_current_K1_gate__T =
817 var_time_independent_potassium_current__T; // kelvin
818 const NekDouble var_time_independent_potassium_current_K1_gate__E_K =
819 var_time_independent_potassium_current__E_K; // millivolt
820 const NekDouble var_time_independent_potassium_current__R =
821 var_membrane__R; // joule_per_mole_kelvin
822 const NekDouble var_time_independent_potassium_current_K1_gate__R =
823 var_time_independent_potassium_current__R; // joule_per_mole_kelvin
824 const NekDouble
825 var_time_independent_potassium_current_K1_gate__K1_infinity =
826 1.0 /
827 (2.0 +
828 exp(((1.62 *
829 var_time_independent_potassium_current_K1_gate__F) /
830 (var_time_independent_potassium_current_K1_gate__R *
831 var_time_independent_potassium_current_K1_gate__T)) *
832 (var_time_independent_potassium_current_K1_gate__V -
833 var_time_independent_potassium_current_K1_gate__E_K))); // dimensionless
834 const NekDouble var_time_independent_potassium_current__K1_infinity =
835 var_time_independent_potassium_current_K1_gate__K1_infinity; // dimensionless
836 const NekDouble var_time_independent_potassium_current__K_mK1 =
837 13.0; // millimolar
838 const NekDouble var_time_independent_potassium_current__i_K1 =
839 ((var_time_independent_potassium_current__g_K1 *
840 var_time_independent_potassium_current__K1_infinity *
841 var_time_independent_potassium_current__K_o) /
842 (var_time_independent_potassium_current__K_o +
843 var_time_independent_potassium_current__K_mK1)) *
844 (var_time_independent_potassium_current__V -
845 var_time_independent_potassium_current__E_K); // microA_per_microF
846 const NekDouble var_membrane__i_K1 =
847 var_time_independent_potassium_current__i_K1; // microA_per_microF
848 const NekDouble var_plateau_potassium_current__g_Kp =
849 0.002216; // milliS_per_microF
850 const NekDouble var_plateau_potassium_current__V =
851 var_chaste_interface__membrane__V; // millivolt
852 const NekDouble var_plateau_potassium_current_Kp_gate__V =
853 var_plateau_potassium_current__V; // millivolt
854 const NekDouble var_plateau_potassium_current_Kp_gate__Kp_V =
855 1.0 /
856 (1.0 + exp((7.488 - var_plateau_potassium_current_Kp_gate__V) /
857 5.98)); // dimensionless
858 const NekDouble var_plateau_potassium_current__Kp_V =
859 var_plateau_potassium_current_Kp_gate__Kp_V; // dimensionless
860 const NekDouble var_plateau_potassium_current__E_K =
861 var_rapid_activating_delayed_rectifiyer_K_current__E_K; // millivolt
862 const NekDouble var_plateau_potassium_current__i_Kp =
863 var_plateau_potassium_current__g_Kp *
864 var_plateau_potassium_current__Kp_V *
865 (var_plateau_potassium_current__V -
866 var_plateau_potassium_current__E_K); // microA_per_microF
867 const NekDouble var_membrane__i_Kp =
868 var_plateau_potassium_current__i_Kp; // microA_per_microF
869 const NekDouble var_membrane__i_NaCa =
870 var_Na_Ca_exchanger__i_NaCa; // microA_per_microF
871 const NekDouble var_sodium_potassium_pump__K_mNai = 10.0; // millimolar
872 const NekDouble var_sodium_potassium_pump__V =
873 var_chaste_interface__membrane__V; // millivolt
874 const NekDouble var_sodium_potassium_pump__F =
875 var_membrane__F; // coulomb_per_millimole
876 const NekDouble var_sodium_potassium_pump__T =
877 var_membrane__T; // kelvin
878 const NekDouble var_sodium_potassium_pump__Na_o =
879 var_standard_ionic_concentrations__Na_o; // millimolar
880 const NekDouble var_sodium_potassium_pump__sigma =
881 (1.0 / 7.0) * (exp(var_sodium_potassium_pump__Na_o / 67.3) -
882 1.0); // dimensionless
883 const NekDouble var_sodium_potassium_pump__R =
884 var_membrane__R; // joule_per_mole_kelvin
885 const NekDouble var_sodium_potassium_pump__f_NaK =
886 1.0 / (1.0 +
887 (0.1245 * exp(((-0.1) * var_sodium_potassium_pump__V *
888 var_sodium_potassium_pump__F) /
889 (var_sodium_potassium_pump__R *
890 var_sodium_potassium_pump__T))) +
891 (0.0365 * var_sodium_potassium_pump__sigma *
892 exp(((-var_sodium_potassium_pump__V) *
893 var_sodium_potassium_pump__F) /
894 (var_sodium_potassium_pump__R *
895 var_sodium_potassium_pump__T)))); // dimensionless
896 const NekDouble var_sodium_potassium_pump__i_NaK_max =
897 0.693; // microA_per_microF
898 const NekDouble var_sodium_potassium_pump__K_o =
899 var_standard_ionic_concentrations__K_o; // millimolar
900 const NekDouble var_sodium_potassium_pump__Na_i =
901 var_standard_ionic_concentrations__Na_i; // millimolar
902 const NekDouble var_sodium_potassium_pump__K_mKo = 1.5; // millimolar
903 const NekDouble var_sodium_potassium_pump__i_NaK =
904 (((var_sodium_potassium_pump__i_NaK_max *
905 var_sodium_potassium_pump__f_NaK) /
906 (1.0 + pow(var_sodium_potassium_pump__K_mNai /
907 var_sodium_potassium_pump__Na_i,
908 1.5))) *
909 var_sodium_potassium_pump__K_o) /
910 (var_sodium_potassium_pump__K_o +
911 var_sodium_potassium_pump__K_mKo); // microA_per_microF
912 const NekDouble var_membrane__i_NaK =
913 var_sodium_potassium_pump__i_NaK; // microA_per_microF
914 const NekDouble var_membrane__i_p_Ca =
915 var_sarcolemmal_calcium_pump__i_p_Ca; // microA_per_microF
916 const NekDouble var_membrane__i_Ca_b =
917 var_calcium_background_current__i_Ca_b; // microA_per_microF
918 const NekDouble var_sodium_background_current__g_Nab =
919 0.0031; // milliS_per_microF
920 const NekDouble var_sodium_background_current__V =
921 var_chaste_interface__membrane__V; // millivolt
922 const NekDouble var_sodium_background_current__E_Na =
923 var_fast_sodium_current__E_Na; // millivolt
924 const NekDouble var_sodium_background_current__i_Na_b =
925 var_sodium_background_current__g_Nab *
926 (var_sodium_background_current__V -
927 var_sodium_background_current__E_Na); // microA_per_microF
928 const NekDouble var_membrane__i_Na_b =
929 var_sodium_background_current__i_Na_b; // microA_per_microF
930 const NekDouble var_chaste_interface__membrane__i_Stim = 0.0;
931 const NekDouble var_membrane__i_Stim_converter =
932 var_chaste_interface__membrane__i_Stim; // uA_per_cm2
933 const NekDouble
934 var_membrane__chaste_interface__chaste_membrane_capacitance =
935 1.0; // uF_per_cm2
936 const NekDouble var_membrane__i_Stim =
937 var_membrane__i_Stim_converter /
938 var_membrane__chaste_interface__chaste_membrane_capacitance; // microA_per_microF
939 const NekDouble var_membrane__d_V_d_environment__time =
940 -(var_membrane__i_Na + var_membrane__i_Ca + var_membrane__i_CaK +
941 var_membrane__i_Kr + var_membrane__i_Ks + var_membrane__i_to +
942 var_membrane__i_K1 + var_membrane__i_Kp + var_membrane__i_NaCa +
943 var_membrane__i_NaK + var_membrane__i_p_Ca +
944 var_membrane__i_Na_b + var_membrane__i_Ca_b +
945 var_membrane__i_Stim); // 'millivolt per millisecond'
946 const NekDouble
947 var_chaste_interface__membrane__d_V_d_environment__time =
948 var_membrane__d_V_d_environment__time; // ___units_1
949 d_dt_chaste_interface__membrane__V =
950 var_chaste_interface__membrane__d_V_d_environment__time; // 'millivolt
951 // per
952 // millisecond'
953 outarray[0][i] = d_dt_chaste_interface__membrane__V;
954 outarray[1][i] = d_dt_chaste_interface__fast_sodium_current_m_gate__m;
955 outarray[2][i] = d_dt_chaste_interface__fast_sodium_current_h_gate__h;
956 outarray[3][i] = d_dt_chaste_interface__fast_sodium_current_j_gate__j;
957 outarray[4][i] =
958 d_dt_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr;
959 outarray[5][i] =
960 d_dt_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks;
961 outarray[6][i] =
962 d_dt_chaste_interface__transient_outward_potassium_current_X_to_gate__X_to;
963 outarray[7][i] =
964 d_dt_chaste_interface__transient_outward_potassium_current_Y_to_gate__Y_to;
965 outarray[8][i] = d_dt_chaste_interface__L_type_Ca_current_f_gate__f;
966 outarray[9][i] = d_dt_chaste_interface__L_type_Ca_current_d_gate__d;
967 outarray[10][i] =
968 d_dt_chaste_interface__L_type_Ca_current_f_Ca_gate__f_Ca;
969 outarray[11][i] = d_dt_chaste_interface__calcium_dynamics__Ca_i;
970 outarray[12][i] = d_dt_chaste_interface__calcium_dynamics__Ca_SR;
971 }
972}
double NekDouble
scalarT< T > log(scalarT< T > in)
Definition: scalar.hpp:303
scalarT< T > sqrt(scalarT< T > in)
Definition: scalar.hpp:294

References tinysimd::log(), Nektar::CellModel::m_nq, and tinysimd::sqrt().

Member Data Documentation

◆ className

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

Name of class.

Definition at line 54 of file Fox02.h.

◆ m_chi

NekDouble Nektar::Fox02::m_chi
private

Definition at line 80 of file Fox02.h.

Referenced by Fox02().

◆ m_sigmai

NekDouble Nektar::Fox02::m_sigmai
private

Definition at line 81 of file Fox02.h.

Referenced by Fox02().