52 pSession->LoadParameter(
"chi",
m_chi);
53 pSession->LoadParameter(
"sigmai",
m_sigmai);
75 for (
size_t i = 0; i <
m_nq; ++i)
80 NekDouble var_chaste_interface__membrane__V = inarray[0][i];
82 NekDouble var_chaste_interface__fast_sodium_current_m_gate__m =
85 NekDouble var_chaste_interface__fast_sodium_current_h_gate__h =
88 NekDouble var_chaste_interface__fast_sodium_current_j_gate__j =
92 var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr =
96 var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks =
100 var_chaste_interface__transient_outward_potassium_current_X_to_gate__X_to =
104 var_chaste_interface__transient_outward_potassium_current_Y_to_gate__Y_to =
107 NekDouble var_chaste_interface__L_type_Ca_current_f_gate__f =
110 NekDouble var_chaste_interface__L_type_Ca_current_d_gate__d =
113 NekDouble var_chaste_interface__L_type_Ca_current_f_Ca_gate__f_Ca =
116 NekDouble var_chaste_interface__calcium_dynamics__Ca_i = inarray[11][i];
118 NekDouble var_chaste_interface__calcium_dynamics__Ca_SR =
123 NekDouble d_dt_chaste_interface__membrane__V;
127 const NekDouble var_fast_sodium_current__j =
128 var_chaste_interface__fast_sodium_current_j_gate__j;
129 const NekDouble var_fast_sodium_current__h =
130 var_chaste_interface__fast_sodium_current_h_gate__h;
131 const NekDouble var_fast_sodium_current__m =
132 var_chaste_interface__fast_sodium_current_m_gate__m;
133 const NekDouble var_fast_sodium_current__V =
134 var_chaste_interface__membrane__V;
135 const NekDouble var_standard_ionic_concentrations__Na_o =
137 const NekDouble var_standard_ionic_concentrations__Na_i =
139 const NekDouble var_L_type_Ca_current__f =
140 var_chaste_interface__L_type_Ca_current_f_gate__f;
141 const NekDouble var_L_type_Ca_current__f_Ca =
142 var_chaste_interface__L_type_Ca_current_f_Ca_gate__f_Ca;
143 const NekDouble var_L_type_Ca_current__F =
145 const NekDouble var_L_type_Ca_current__P_Ca =
147 const NekDouble var_L_type_Ca_current__V =
148 var_chaste_interface__membrane__V;
149 const NekDouble var_L_type_Ca_current__C_sc = 1.0;
150 const NekDouble var_L_type_Ca_current__T = var_membrane__T;
151 const NekDouble var_standard_ionic_concentrations__Ca_o =
153 const NekDouble var_L_type_Ca_current__Ca_o =
154 var_standard_ionic_concentrations__Ca_o;
155 const NekDouble var_L_type_Ca_current__R =
157 const NekDouble var_L_type_Ca_current__Ca_i =
158 var_chaste_interface__calcium_dynamics__Ca_i;
159 const NekDouble var_L_type_Ca_current__i_Ca_max =
160 ((((var_L_type_Ca_current__P_Ca / var_L_type_Ca_current__C_sc) *
161 4.0 * var_L_type_Ca_current__V *
162 pow(var_L_type_Ca_current__F, 2.0)) /
163 (var_L_type_Ca_current__R * var_L_type_Ca_current__T)) *
164 ((var_L_type_Ca_current__Ca_i *
165 exp((2.0 * var_L_type_Ca_current__V * var_L_type_Ca_current__F) /
166 (var_L_type_Ca_current__R * var_L_type_Ca_current__T))) -
167 (0.341 * var_L_type_Ca_current__Ca_o))) /
168 (exp((2.0 * var_L_type_Ca_current__V * var_L_type_Ca_current__F) /
169 (var_L_type_Ca_current__R * var_L_type_Ca_current__T)) -
171 const NekDouble var_L_type_Ca_current__d =
172 var_chaste_interface__L_type_Ca_current_d_gate__d;
173 const NekDouble var_L_type_Ca_current__i_Ca =
174 var_L_type_Ca_current__i_Ca_max * var_L_type_Ca_current__f *
175 var_L_type_Ca_current__d *
176 var_L_type_Ca_current__f_Ca;
177 const NekDouble var_rapid_activating_delayed_rectifiyer_K_current__V =
178 var_chaste_interface__membrane__V;
179 const NekDouble var_rapid_activating_delayed_rectifiyer_K_current__X_kr =
180 var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr;
181 const NekDouble var_slow_activating_delayed_rectifiyer_K_current__V =
182 var_chaste_interface__membrane__V;
183 const NekDouble var_slow_activating_delayed_rectifiyer_K_current__X_ks =
184 var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks;
185 const NekDouble var_transient_outward_potassium_current__Y_to =
186 var_chaste_interface__transient_outward_potassium_current_Y_to_gate__Y_to;
187 const NekDouble var_transient_outward_potassium_current__X_to =
188 var_chaste_interface__transient_outward_potassium_current_X_to_gate__X_to;
189 const NekDouble var_transient_outward_potassium_current__V =
190 var_chaste_interface__membrane__V;
191 const NekDouble var_Na_Ca_exchanger__Na_o =
192 var_standard_ionic_concentrations__Na_o;
193 const NekDouble var_Na_Ca_exchanger__K_sat = 0.2;
194 const NekDouble var_Na_Ca_exchanger__Ca_i =
195 var_chaste_interface__calcium_dynamics__Ca_i;
196 const NekDouble var_Na_Ca_exchanger__K_mNa = 87.5;
197 const NekDouble var_Na_Ca_exchanger__Ca_o =
198 var_standard_ionic_concentrations__Ca_o;
199 const NekDouble var_Na_Ca_exchanger__K_NaCa =
201 const NekDouble var_Na_Ca_exchanger__T = var_membrane__T;
203 var_chaste_interface__membrane__V;
204 const NekDouble var_Na_Ca_exchanger__Na_i =
205 var_standard_ionic_concentrations__Na_i;
206 const NekDouble var_Na_Ca_exchanger__eta = 0.35;
207 const NekDouble var_Na_Ca_exchanger__K_mCa = 1380.0;
212 const NekDouble var_Na_Ca_exchanger__i_NaCa =
213 (var_Na_Ca_exchanger__K_NaCa /
214 ((pow(var_Na_Ca_exchanger__K_mNa, 3.0) +
215 pow(var_Na_Ca_exchanger__Na_o, 3.0)) *
216 (var_Na_Ca_exchanger__K_mCa + var_Na_Ca_exchanger__Ca_o) *
218 (var_Na_Ca_exchanger__K_sat *
219 exp(((var_Na_Ca_exchanger__eta - 1.0) * var_Na_Ca_exchanger__V *
220 var_Na_Ca_exchanger__F) /
221 (var_Na_Ca_exchanger__R * var_Na_Ca_exchanger__T)))))) *
222 ((exp((var_Na_Ca_exchanger__eta * var_Na_Ca_exchanger__V *
223 var_Na_Ca_exchanger__F) /
224 (var_Na_Ca_exchanger__R * var_Na_Ca_exchanger__T)) *
225 pow(var_Na_Ca_exchanger__Na_i, 3.0) * var_Na_Ca_exchanger__Ca_o) -
226 (exp(((var_Na_Ca_exchanger__eta - 1.0) * var_Na_Ca_exchanger__V *
227 var_Na_Ca_exchanger__F) /
228 (var_Na_Ca_exchanger__R * var_Na_Ca_exchanger__T)) *
229 pow(var_Na_Ca_exchanger__Na_o, 3.0) *
230 var_Na_Ca_exchanger__Ca_i));
231 const NekDouble var_sarcolemmal_calcium_pump__Ca_i =
232 var_chaste_interface__calcium_dynamics__Ca_i;
233 const NekDouble var_sarcolemmal_calcium_pump__i_pCa_max =
235 const NekDouble var_sarcolemmal_calcium_pump__K_mpCa =
237 const NekDouble var_sarcolemmal_calcium_pump__i_p_Ca =
238 (var_sarcolemmal_calcium_pump__i_pCa_max *
239 var_sarcolemmal_calcium_pump__Ca_i) /
240 (var_sarcolemmal_calcium_pump__K_mpCa +
241 var_sarcolemmal_calcium_pump__Ca_i);
242 const NekDouble var_calcium_background_current__R =
244 const NekDouble var_calcium_background_current__Ca_i =
245 var_chaste_interface__calcium_dynamics__Ca_i;
246 const NekDouble var_calcium_background_current__F =
248 const NekDouble var_calcium_background_current__T =
250 const NekDouble var_calcium_background_current__Ca_o =
251 var_standard_ionic_concentrations__Ca_o;
252 const NekDouble var_calcium_background_current__E_Ca =
253 ((var_calcium_background_current__R *
254 var_calcium_background_current__T) /
255 (2.0 * var_calcium_background_current__F)) *
256 log(var_calcium_background_current__Ca_o /
257 var_calcium_background_current__Ca_i);
258 const NekDouble var_calcium_background_current__g_Cab =
260 const NekDouble var_calcium_background_current__V =
261 var_chaste_interface__membrane__V;
262 const NekDouble var_calcium_background_current__i_Ca_b =
263 var_calcium_background_current__g_Cab *
264 (var_calcium_background_current__V -
265 var_calcium_background_current__E_Ca);
266 const NekDouble var_fast_sodium_current_m_gate__m =
267 var_fast_sodium_current__m;
268 const NekDouble var_fast_sodium_current_m_gate__V =
269 var_fast_sodium_current__V;
270 const NekDouble var_fast_sodium_current_m_gate__E0_m =
271 var_fast_sodium_current_m_gate__V + 47.13;
272 const NekDouble var_fast_sodium_current_m_gate__alpha_m =
273 (0.32 * var_fast_sodium_current_m_gate__E0_m) /
276 var_fast_sodium_current_m_gate__E0_m));
277 const NekDouble var_fast_sodium_current_m_gate__beta_m =
279 exp((-var_fast_sodium_current_m_gate__V) / 11.0);
281 var_fast_sodium_current_m_gate__d_m_d_environment__time =
282 (var_fast_sodium_current_m_gate__alpha_m *
283 (1.0 - var_fast_sodium_current_m_gate__m)) -
284 (var_fast_sodium_current_m_gate__beta_m *
285 var_fast_sodium_current_m_gate__m);
287 var_fast_sodium_current__fast_sodium_current_m_gate__d_m_d_environment__time =
288 var_fast_sodium_current_m_gate__d_m_d_environment__time;
289 const NekDouble var_fast_sodium_current_h_gate__V =
290 var_fast_sodium_current__V;
291 const NekDouble var_fast_sodium_current_h_gate__beta_h =
292 7.5 / (1.0 + exp((-0.1) * (var_fast_sodium_current_h_gate__V +
294 const NekDouble var_fast_sodium_current_h_gate__alpha_h =
295 0.135 * exp((var_fast_sodium_current_h_gate__V + 80.0) /
297 const NekDouble var_fast_sodium_current_h_gate__h =
298 var_fast_sodium_current__h;
300 var_fast_sodium_current_h_gate__d_h_d_environment__time =
301 (var_fast_sodium_current_h_gate__alpha_h *
302 (1.0 - var_fast_sodium_current_h_gate__h)) -
303 (var_fast_sodium_current_h_gate__beta_h *
304 var_fast_sodium_current_h_gate__h);
306 var_fast_sodium_current__fast_sodium_current_h_gate__d_h_d_environment__time =
307 var_fast_sodium_current_h_gate__d_h_d_environment__time;
308 const NekDouble var_fast_sodium_current_j_gate__V =
309 var_fast_sodium_current__V;
310 const NekDouble var_fast_sodium_current_j_gate__alpha_j =
312 exp((var_fast_sodium_current_j_gate__V + 100.0) / (-23.0))) /
313 (1.0 + exp(0.15 * (var_fast_sodium_current_j_gate__V +
315 const NekDouble var_fast_sodium_current_j_gate__beta_j =
316 0.3 / (1.0 + exp((-0.1) * (var_fast_sodium_current_j_gate__V +
318 const NekDouble var_fast_sodium_current_j_gate__j =
319 var_fast_sodium_current__j;
321 var_fast_sodium_current_j_gate__d_j_d_environment__time =
322 (var_fast_sodium_current_j_gate__alpha_j *
323 (1.0 - var_fast_sodium_current_j_gate__j)) -
324 (var_fast_sodium_current_j_gate__beta_j *
325 var_fast_sodium_current_j_gate__j);
327 var_fast_sodium_current__fast_sodium_current_j_gate__d_j_d_environment__time =
328 var_fast_sodium_current_j_gate__d_j_d_environment__time;
330 var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__V =
331 var_rapid_activating_delayed_rectifiyer_K_current__V;
332 const NekDouble var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__tau_X_kr =
337 var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__V)) +
340 var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__V))));
342 var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr =
343 var_rapid_activating_delayed_rectifiyer_K_current__X_kr;
344 const NekDouble var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr_inf =
349 var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__V)));
350 const NekDouble var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__d_X_kr_d_environment__time =
351 (var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr_inf -
352 var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr) /
353 var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__tau_X_kr;
355 var_rapid_activating_delayed_rectifiyer_K_current__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__d_X_kr_d_environment__time =
356 var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__d_X_kr_d_environment__time;
358 var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__V =
359 var_slow_activating_delayed_rectifiyer_K_current__V;
360 const NekDouble var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__tau_X_ks =
363 (var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__V -
367 (var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__V -
370 (var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__V -
373 (var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__V -
377 var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks_infinity =
380 exp((var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__V -
384 var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks =
385 var_slow_activating_delayed_rectifiyer_K_current__X_ks;
386 const NekDouble var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__d_X_ks_d_environment__time =
387 (var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks_infinity -
388 var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks) /
389 var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__tau_X_ks;
391 var_slow_activating_delayed_rectifiyer_K_current__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__d_X_ks_d_environment__time =
392 var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__d_X_ks_d_environment__time;
393 const NekDouble var_transient_outward_potassium_current_X_to_gate__V =
394 var_transient_outward_potassium_current__V;
396 var_transient_outward_potassium_current_X_to_gate__alpha_X_to =
399 var_transient_outward_potassium_current_X_to_gate__V);
401 var_transient_outward_potassium_current_X_to_gate__X_to =
402 var_transient_outward_potassium_current__X_to;
404 var_transient_outward_potassium_current_X_to_gate__beta_X_to =
407 var_transient_outward_potassium_current_X_to_gate__V);
409 var_transient_outward_potassium_current_X_to_gate__d_X_to_d_environment__time =
410 (var_transient_outward_potassium_current_X_to_gate__alpha_X_to *
412 var_transient_outward_potassium_current_X_to_gate__X_to)) -
413 (var_transient_outward_potassium_current_X_to_gate__beta_X_to *
414 var_transient_outward_potassium_current_X_to_gate__X_to);
416 var_transient_outward_potassium_current__transient_outward_potassium_current_X_to_gate__d_X_to_d_environment__time =
417 var_transient_outward_potassium_current_X_to_gate__d_X_to_d_environment__time;
418 const NekDouble var_transient_outward_potassium_current_Y_to_gate__V =
419 var_transient_outward_potassium_current__V;
421 var_transient_outward_potassium_current_Y_to_gate__beta_Y_to =
423 exp((var_transient_outward_potassium_current_Y_to_gate__V +
428 exp((var_transient_outward_potassium_current_Y_to_gate__V +
432 var_transient_outward_potassium_current_Y_to_gate__alpha_Y_to =
434 exp((var_transient_outward_potassium_current_Y_to_gate__V +
439 exp((var_transient_outward_potassium_current_Y_to_gate__V +
443 var_transient_outward_potassium_current_Y_to_gate__Y_to =
444 var_transient_outward_potassium_current__Y_to;
446 var_transient_outward_potassium_current_Y_to_gate__d_Y_to_d_environment__time =
447 (var_transient_outward_potassium_current_Y_to_gate__alpha_Y_to *
449 var_transient_outward_potassium_current_Y_to_gate__Y_to)) -
450 (var_transient_outward_potassium_current_Y_to_gate__beta_Y_to *
451 var_transient_outward_potassium_current_Y_to_gate__Y_to);
453 var_transient_outward_potassium_current__transient_outward_potassium_current_Y_to_gate__d_Y_to_d_environment__time =
454 var_transient_outward_potassium_current_Y_to_gate__d_Y_to_d_environment__time;
455 const NekDouble var_L_type_Ca_current_f_gate__V =
456 var_L_type_Ca_current__V;
457 const NekDouble var_L_type_Ca_current_f_gate__tau_f =
459 (200.0 / (1.0 + exp((var_L_type_Ca_current_f_gate__V + 20.0) /
461 const NekDouble var_L_type_Ca_current_f_gate__f =
462 var_L_type_Ca_current__f;
463 const NekDouble var_L_type_Ca_current_f_gate__f_infinity =
464 1.0 / (1.0 + exp((var_L_type_Ca_current_f_gate__V + 12.5) /
466 const NekDouble var_L_type_Ca_current_f_gate__d_f_d_environment__time =
467 (var_L_type_Ca_current_f_gate__f_infinity -
468 var_L_type_Ca_current_f_gate__f) /
469 var_L_type_Ca_current_f_gate__tau_f;
471 var_L_type_Ca_current__L_type_Ca_current_f_gate__d_f_d_environment__time =
472 var_L_type_Ca_current_f_gate__d_f_d_environment__time;
473 const NekDouble var_L_type_Ca_current_d_gate__V =
474 var_L_type_Ca_current__V;
475 const NekDouble var_L_type_Ca_current_d_gate__E0_m =
476 var_L_type_Ca_current_d_gate__V + 40.0;
477 const NekDouble var_L_type_Ca_current_d_gate__tau_d =
479 (((0.25 * exp((-0.01) * var_L_type_Ca_current_d_gate__V)) /
480 (1.0 + exp((-0.07) * var_L_type_Ca_current_d_gate__V))) +
481 ((0.07 * exp((-0.05) * var_L_type_Ca_current_d_gate__E0_m)) /
483 exp(0.05 * var_L_type_Ca_current_d_gate__E0_m))));
484 const NekDouble var_L_type_Ca_current_d_gate__d =
485 var_L_type_Ca_current__d;
486 const NekDouble var_L_type_Ca_current_d_gate__d_infinity =
487 1.0 / (1.0 + exp((var_L_type_Ca_current_d_gate__V + 10.0) /
489 const NekDouble var_L_type_Ca_current_d_gate__d_d_d_environment__time =
490 (var_L_type_Ca_current_d_gate__d_infinity -
491 var_L_type_Ca_current_d_gate__d) /
492 var_L_type_Ca_current_d_gate__tau_d;
494 var_L_type_Ca_current__L_type_Ca_current_d_gate__d_d_d_environment__time =
495 var_L_type_Ca_current_d_gate__d_d_d_environment__time;
496 const NekDouble var_L_type_Ca_current_f_Ca_gate__f_Ca =
497 var_L_type_Ca_current__f_Ca;
498 const NekDouble var_L_type_Ca_current_f_Ca_gate__K_mfCa =
500 const NekDouble var_L_type_Ca_current_f_Ca_gate__Ca_i =
501 var_L_type_Ca_current__Ca_i;
502 const NekDouble var_L_type_Ca_current_f_Ca_gate__f_Ca_infinity =
503 1.0 / (1.0 + pow(var_L_type_Ca_current_f_Ca_gate__Ca_i /
504 var_L_type_Ca_current_f_Ca_gate__K_mfCa,
506 const NekDouble var_L_type_Ca_current_f_Ca_gate__tau_f_Ca =
509 var_L_type_Ca_current_f_Ca_gate__d_f_Ca_d_environment__time =
510 (var_L_type_Ca_current_f_Ca_gate__f_Ca_infinity -
511 var_L_type_Ca_current_f_Ca_gate__f_Ca) /
512 var_L_type_Ca_current_f_Ca_gate__tau_f_Ca;
514 var_L_type_Ca_current__L_type_Ca_current_f_Ca_gate__d_f_Ca_d_environment__time =
515 var_L_type_Ca_current_f_Ca_gate__d_f_Ca_d_environment__time;
516 const NekDouble var_calcium_dynamics__Ca_i =
517 var_chaste_interface__calcium_dynamics__Ca_i;
518 const NekDouble var_calcium_dynamics__CMDN_tot = 10.0;
519 const NekDouble var_calcium_dynamics__K_mCMDN = 2.0;
520 const NekDouble var_calcium_dynamics__beta_i =
523 ((var_calcium_dynamics__CMDN_tot * var_calcium_dynamics__K_mCMDN) /
524 pow(var_calcium_dynamics__K_mCMDN + var_calcium_dynamics__Ca_i,
526 const NekDouble var_calcium_dynamics__V_myo = 2.584e-05;
527 const NekDouble var_calcium_dynamics__F =
529 const NekDouble var_calcium_dynamics__C_sc =
530 var_L_type_Ca_current__C_sc;
531 const NekDouble var_calcium_dynamics__A_Cap = 0.0001534;
532 const NekDouble var_calcium_dynamics__Ca_SR =
533 var_chaste_interface__calcium_dynamics__Ca_SR;
534 const NekDouble var_calcium_dynamics__P_rel = 6.0;
535 const NekDouble var_calcium_dynamics__V =
536 var_chaste_interface__membrane__V;
537 const NekDouble var_calcium_dynamics__f_Ca =
538 var_chaste_interface__L_type_Ca_current_f_Ca_gate__f_Ca;
539 const NekDouble var_calcium_dynamics__gamma =
540 1.0 / (1.0 + pow(2000.0 / var_calcium_dynamics__Ca_SR,
542 const NekDouble var_calcium_dynamics__d =
543 var_chaste_interface__L_type_Ca_current_d_gate__d;
544 const NekDouble var_calcium_dynamics__f =
545 var_chaste_interface__L_type_Ca_current_f_gate__f;
546 const NekDouble var_calcium_dynamics__J_rel =
547 (var_calcium_dynamics__P_rel * var_calcium_dynamics__f *
548 var_calcium_dynamics__d * var_calcium_dynamics__f_Ca *
549 ((var_calcium_dynamics__gamma * var_calcium_dynamics__Ca_SR) -
550 var_calcium_dynamics__Ca_i)) /
551 (1.0 + (1.65 * exp(var_calcium_dynamics__V /
553 const NekDouble var_calcium_dynamics__P_leak = 1e-06;
554 const NekDouble var_calcium_dynamics__J_leak =
555 var_calcium_dynamics__P_leak *
556 (var_calcium_dynamics__Ca_SR -
557 var_calcium_dynamics__Ca_i);
558 const NekDouble var_calcium_dynamics__K_mup = 0.32;
559 const NekDouble var_calcium_dynamics__V_up =
561 const NekDouble var_calcium_dynamics__J_up =
562 var_calcium_dynamics__V_up /
563 (1.0 + pow(var_calcium_dynamics__K_mup / var_calcium_dynamics__Ca_i,
565 const NekDouble var_calcium_dynamics__i_Ca =
566 var_L_type_Ca_current__i_Ca;
567 const NekDouble var_calcium_dynamics__i_Ca_b =
568 var_calcium_background_current__i_Ca_b;
569 const NekDouble var_calcium_dynamics__i_p_Ca =
570 var_sarcolemmal_calcium_pump__i_p_Ca;
571 const NekDouble var_calcium_dynamics__i_NaCa =
572 var_Na_Ca_exchanger__i_NaCa;
573 const NekDouble var_calcium_dynamics__K_mCSQN = 600.0;
574 const NekDouble var_calcium_dynamics__CSQN_tot = 10000.0;
575 const NekDouble var_calcium_dynamics__V_SR = 2e-06;
576 const NekDouble var_calcium_dynamics__beta_SR =
579 ((var_calcium_dynamics__CSQN_tot * var_calcium_dynamics__K_mCSQN) /
580 pow(var_calcium_dynamics__K_mCSQN + var_calcium_dynamics__Ca_SR,
582 const NekDouble var_calcium_dynamics__d_Ca_i_d_environment__time =
583 var_calcium_dynamics__beta_i *
584 (((var_calcium_dynamics__J_rel + var_calcium_dynamics__J_leak) -
585 var_calcium_dynamics__J_up) -
586 (((var_calcium_dynamics__A_Cap * var_calcium_dynamics__C_sc) /
587 (2.0 * var_calcium_dynamics__F * var_calcium_dynamics__V_myo)) *
588 ((var_calcium_dynamics__i_Ca + var_calcium_dynamics__i_Ca_b +
589 var_calcium_dynamics__i_p_Ca) -
590 (2.0 * var_calcium_dynamics__i_NaCa))));
592 const NekDouble var_calcium_dynamics__d_Ca_SR_d_environment__time =
593 (var_calcium_dynamics__beta_SR *
594 ((var_calcium_dynamics__J_up - var_calcium_dynamics__J_leak) -
595 var_calcium_dynamics__J_rel) *
596 var_calcium_dynamics__V_myo) /
597 var_calcium_dynamics__V_SR;
599 var_chaste_interface__fast_sodium_current_m_gate__d_m_d_environment__time =
600 var_fast_sodium_current__fast_sodium_current_m_gate__d_m_d_environment__time;
602 var_chaste_interface__fast_sodium_current_h_gate__d_h_d_environment__time =
603 var_fast_sodium_current__fast_sodium_current_h_gate__d_h_d_environment__time;
605 var_chaste_interface__fast_sodium_current_j_gate__d_j_d_environment__time =
606 var_fast_sodium_current__fast_sodium_current_j_gate__d_j_d_environment__time;
608 var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__d_X_kr_d_environment__time =
609 var_rapid_activating_delayed_rectifiyer_K_current__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__d_X_kr_d_environment__time;
611 var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__d_X_ks_d_environment__time =
612 var_slow_activating_delayed_rectifiyer_K_current__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__d_X_ks_d_environment__time;
614 var_chaste_interface__transient_outward_potassium_current_X_to_gate__d_X_to_d_environment__time =
615 var_transient_outward_potassium_current__transient_outward_potassium_current_X_to_gate__d_X_to_d_environment__time;
617 var_chaste_interface__transient_outward_potassium_current_Y_to_gate__d_Y_to_d_environment__time =
618 var_transient_outward_potassium_current__transient_outward_potassium_current_Y_to_gate__d_Y_to_d_environment__time;
620 var_chaste_interface__L_type_Ca_current_f_gate__d_f_d_environment__time =
621 var_L_type_Ca_current__L_type_Ca_current_f_gate__d_f_d_environment__time;
623 var_chaste_interface__L_type_Ca_current_d_gate__d_d_d_environment__time =
624 var_L_type_Ca_current__L_type_Ca_current_d_gate__d_d_d_environment__time;
626 var_chaste_interface__L_type_Ca_current_f_Ca_gate__d_f_Ca_d_environment__time =
627 var_L_type_Ca_current__L_type_Ca_current_f_Ca_gate__d_f_Ca_d_environment__time;
629 var_chaste_interface__calcium_dynamics__d_Ca_i_d_environment__time =
630 var_calcium_dynamics__d_Ca_i_d_environment__time;
632 var_chaste_interface__calcium_dynamics__d_Ca_SR_d_environment__time =
633 var_calcium_dynamics__d_Ca_SR_d_environment__time;
634 const NekDouble d_dt_chaste_interface__fast_sodium_current_m_gate__m =
635 var_chaste_interface__fast_sodium_current_m_gate__d_m_d_environment__time;
636 const NekDouble d_dt_chaste_interface__fast_sodium_current_h_gate__h =
637 var_chaste_interface__fast_sodium_current_h_gate__d_h_d_environment__time;
638 const NekDouble d_dt_chaste_interface__fast_sodium_current_j_gate__j =
639 var_chaste_interface__fast_sodium_current_j_gate__d_j_d_environment__time;
641 d_dt_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr =
642 var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__d_X_kr_d_environment__time;
644 d_dt_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks =
645 var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__d_X_ks_d_environment__time;
647 d_dt_chaste_interface__transient_outward_potassium_current_X_to_gate__X_to =
648 var_chaste_interface__transient_outward_potassium_current_X_to_gate__d_X_to_d_environment__time;
650 d_dt_chaste_interface__transient_outward_potassium_current_Y_to_gate__Y_to =
651 var_chaste_interface__transient_outward_potassium_current_Y_to_gate__d_Y_to_d_environment__time;
652 const NekDouble d_dt_chaste_interface__L_type_Ca_current_f_gate__f =
653 var_chaste_interface__L_type_Ca_current_f_gate__d_f_d_environment__time;
654 const NekDouble d_dt_chaste_interface__L_type_Ca_current_d_gate__d =
655 var_chaste_interface__L_type_Ca_current_d_gate__d_d_d_environment__time;
656 const NekDouble d_dt_chaste_interface__L_type_Ca_current_f_Ca_gate__f_Ca =
657 var_chaste_interface__L_type_Ca_current_f_Ca_gate__d_f_Ca_d_environment__time;
658 const NekDouble d_dt_chaste_interface__calcium_dynamics__Ca_i =
659 var_chaste_interface__calcium_dynamics__d_Ca_i_d_environment__time;
660 const NekDouble d_dt_chaste_interface__calcium_dynamics__Ca_SR =
661 var_chaste_interface__calcium_dynamics__d_Ca_SR_d_environment__time;
663 const NekDouble var_fast_sodium_current__g_Na =
665 const NekDouble var_fast_sodium_current__R =
667 const NekDouble var_fast_sodium_current__Na_o =
668 var_standard_ionic_concentrations__Na_o;
669 const NekDouble var_fast_sodium_current__F =
671 const NekDouble var_fast_sodium_current__T = var_membrane__T;
672 const NekDouble var_fast_sodium_current__Na_i =
673 var_standard_ionic_concentrations__Na_i;
674 const NekDouble var_fast_sodium_current__E_Na =
675 ((var_fast_sodium_current__R * var_fast_sodium_current__T) /
676 var_fast_sodium_current__F) *
677 log(var_fast_sodium_current__Na_o /
678 var_fast_sodium_current__Na_i);
679 const NekDouble var_fast_sodium_current__i_Na =
680 var_fast_sodium_current__g_Na *
681 pow(var_fast_sodium_current__m, 3.0) * var_fast_sodium_current__h *
682 var_fast_sodium_current__j *
683 (var_fast_sodium_current__V -
684 var_fast_sodium_current__E_Na);
686 var_fast_sodium_current__i_Na;
688 var_L_type_Ca_current__i_Ca;
689 const NekDouble var_L_type_Ca_current__P_CaK =
691 const NekDouble var_standard_ionic_concentrations__K_o =
693 const NekDouble var_L_type_Ca_current__K_o =
694 var_standard_ionic_concentrations__K_o;
695 const NekDouble var_L_type_Ca_current__i_Ca_half =
697 const NekDouble var_standard_ionic_concentrations__K_i =
699 const NekDouble var_L_type_Ca_current__K_i =
700 var_standard_ionic_concentrations__K_i;
701 const NekDouble var_L_type_Ca_current__i_CaK =
702 ((((((var_L_type_Ca_current__P_CaK / var_L_type_Ca_current__C_sc) *
703 var_L_type_Ca_current__f * var_L_type_Ca_current__d *
704 var_L_type_Ca_current__f_Ca) /
705 (1.0 + (var_L_type_Ca_current__i_Ca_max /
706 var_L_type_Ca_current__i_Ca_half))) *
707 1000.0 * var_L_type_Ca_current__V *
708 pow(var_L_type_Ca_current__F, 2.0)) /
709 (var_L_type_Ca_current__R * var_L_type_Ca_current__T)) *
710 ((var_L_type_Ca_current__K_i *
711 exp((var_L_type_Ca_current__V * var_L_type_Ca_current__F) /
712 (var_L_type_Ca_current__R * var_L_type_Ca_current__T))) -
713 var_L_type_Ca_current__K_o)) /
714 (exp((var_L_type_Ca_current__V * var_L_type_Ca_current__F) /
715 (var_L_type_Ca_current__R * var_L_type_Ca_current__T)) -
718 var_L_type_Ca_current__i_CaK;
719 const NekDouble var_rapid_activating_delayed_rectifiyer_K_current__K_o =
720 var_standard_ionic_concentrations__K_o;
721 const NekDouble var_rapid_activating_delayed_rectifiyer_K_current__R =
723 const NekDouble var_rapid_activating_delayed_rectifiyer_K_current__F =
725 const NekDouble var_rapid_activating_delayed_rectifiyer_K_current__K_i =
726 var_standard_ionic_concentrations__K_i;
727 const NekDouble var_rapid_activating_delayed_rectifiyer_K_current__T =
729 const NekDouble var_rapid_activating_delayed_rectifiyer_K_current__E_K =
730 ((var_rapid_activating_delayed_rectifiyer_K_current__R *
731 var_rapid_activating_delayed_rectifiyer_K_current__T) /
732 var_rapid_activating_delayed_rectifiyer_K_current__F) *
733 log(var_rapid_activating_delayed_rectifiyer_K_current__K_o /
734 var_rapid_activating_delayed_rectifiyer_K_current__K_i);
735 const NekDouble var_rapid_activating_delayed_rectifiyer_K_current__R_V =
739 exp(0.1 * (var_rapid_activating_delayed_rectifiyer_K_current__V +
742 var_rapid_activating_delayed_rectifiyer_K_current__g_Kr =
744 const NekDouble var_rapid_activating_delayed_rectifiyer_K_current__i_Kr =
745 var_rapid_activating_delayed_rectifiyer_K_current__g_Kr *
746 var_rapid_activating_delayed_rectifiyer_K_current__R_V *
747 var_rapid_activating_delayed_rectifiyer_K_current__X_kr *
748 sqrt(var_rapid_activating_delayed_rectifiyer_K_current__K_o / 4.0) *
749 (var_rapid_activating_delayed_rectifiyer_K_current__V -
750 var_rapid_activating_delayed_rectifiyer_K_current__E_K);
752 var_rapid_activating_delayed_rectifiyer_K_current__i_Kr;
753 const NekDouble var_slow_activating_delayed_rectifiyer_K_current__g_Ks =
755 const NekDouble var_slow_activating_delayed_rectifiyer_K_current__T =
757 const NekDouble var_slow_activating_delayed_rectifiyer_K_current__K_o =
758 var_standard_ionic_concentrations__K_o;
759 const NekDouble var_slow_activating_delayed_rectifiyer_K_current__R =
761 const NekDouble var_slow_activating_delayed_rectifiyer_K_current__Na_o =
762 var_standard_ionic_concentrations__Na_o;
763 const NekDouble var_slow_activating_delayed_rectifiyer_K_current__Na_i =
764 var_standard_ionic_concentrations__Na_i;
765 const NekDouble var_slow_activating_delayed_rectifiyer_K_current__K_i =
766 var_standard_ionic_concentrations__K_i;
767 const NekDouble var_slow_activating_delayed_rectifiyer_K_current__F =
769 const NekDouble var_slow_activating_delayed_rectifiyer_K_current__E_Ks =
770 ((var_slow_activating_delayed_rectifiyer_K_current__R *
771 var_slow_activating_delayed_rectifiyer_K_current__T) /
772 var_slow_activating_delayed_rectifiyer_K_current__F) *
773 log((var_slow_activating_delayed_rectifiyer_K_current__K_o +
775 var_slow_activating_delayed_rectifiyer_K_current__Na_o)) /
776 (var_slow_activating_delayed_rectifiyer_K_current__K_i +
778 var_slow_activating_delayed_rectifiyer_K_current__Na_i)));
779 const NekDouble var_slow_activating_delayed_rectifiyer_K_current__i_Ks =
780 var_slow_activating_delayed_rectifiyer_K_current__g_Ks *
781 pow(var_slow_activating_delayed_rectifiyer_K_current__X_ks, 2.0) *
782 (var_slow_activating_delayed_rectifiyer_K_current__V -
783 var_slow_activating_delayed_rectifiyer_K_current__E_Ks);
785 var_slow_activating_delayed_rectifiyer_K_current__i_Ks;
786 const NekDouble var_transient_outward_potassium_current__g_to =
788 const NekDouble var_transient_outward_potassium_current__E_K =
789 var_rapid_activating_delayed_rectifiyer_K_current__E_K;
790 const NekDouble var_transient_outward_potassium_current__i_to =
791 var_transient_outward_potassium_current__g_to *
792 var_transient_outward_potassium_current__X_to *
793 var_transient_outward_potassium_current__Y_to *
794 (var_transient_outward_potassium_current__V -
795 var_transient_outward_potassium_current__E_K);
797 var_transient_outward_potassium_current__i_to;
798 const NekDouble var_time_independent_potassium_current__E_K =
799 var_rapid_activating_delayed_rectifiyer_K_current__E_K;
800 const NekDouble var_time_independent_potassium_current__K_o =
801 var_standard_ionic_concentrations__K_o;
802 const NekDouble var_time_independent_potassium_current__g_K1 =
804 const NekDouble var_time_independent_potassium_current__F =
806 const NekDouble var_time_independent_potassium_current_K1_gate__F =
807 var_time_independent_potassium_current__F;
808 const NekDouble var_time_independent_potassium_current__V =
809 var_chaste_interface__membrane__V;
810 const NekDouble var_time_independent_potassium_current_K1_gate__V =
811 var_time_independent_potassium_current__V;
812 const NekDouble var_time_independent_potassium_current__T =
814 const NekDouble var_time_independent_potassium_current_K1_gate__T =
815 var_time_independent_potassium_current__T;
816 const NekDouble var_time_independent_potassium_current_K1_gate__E_K =
817 var_time_independent_potassium_current__E_K;
818 const NekDouble var_time_independent_potassium_current__R =
820 const NekDouble var_time_independent_potassium_current_K1_gate__R =
821 var_time_independent_potassium_current__R;
823 var_time_independent_potassium_current_K1_gate__K1_infinity =
827 var_time_independent_potassium_current_K1_gate__F) /
828 (var_time_independent_potassium_current_K1_gate__R *
829 var_time_independent_potassium_current_K1_gate__T)) *
830 (var_time_independent_potassium_current_K1_gate__V -
831 var_time_independent_potassium_current_K1_gate__E_K)));
832 const NekDouble var_time_independent_potassium_current__K1_infinity =
833 var_time_independent_potassium_current_K1_gate__K1_infinity;
834 const NekDouble var_time_independent_potassium_current__K_mK1 =
836 const NekDouble var_time_independent_potassium_current__i_K1 =
837 ((var_time_independent_potassium_current__g_K1 *
838 var_time_independent_potassium_current__K1_infinity *
839 var_time_independent_potassium_current__K_o) /
840 (var_time_independent_potassium_current__K_o +
841 var_time_independent_potassium_current__K_mK1)) *
842 (var_time_independent_potassium_current__V -
843 var_time_independent_potassium_current__E_K);
845 var_time_independent_potassium_current__i_K1;
846 const NekDouble var_plateau_potassium_current__g_Kp =
848 const NekDouble var_plateau_potassium_current__V =
849 var_chaste_interface__membrane__V;
850 const NekDouble var_plateau_potassium_current_Kp_gate__V =
851 var_plateau_potassium_current__V;
852 const NekDouble var_plateau_potassium_current_Kp_gate__Kp_V =
854 (1.0 + exp((7.488 - var_plateau_potassium_current_Kp_gate__V) /
856 const NekDouble var_plateau_potassium_current__Kp_V =
857 var_plateau_potassium_current_Kp_gate__Kp_V;
858 const NekDouble var_plateau_potassium_current__E_K =
859 var_rapid_activating_delayed_rectifiyer_K_current__E_K;
860 const NekDouble var_plateau_potassium_current__i_Kp =
861 var_plateau_potassium_current__g_Kp *
862 var_plateau_potassium_current__Kp_V *
863 (var_plateau_potassium_current__V -
864 var_plateau_potassium_current__E_K);
866 var_plateau_potassium_current__i_Kp;
868 var_Na_Ca_exchanger__i_NaCa;
869 const NekDouble var_sodium_potassium_pump__K_mNai = 10.0;
870 const NekDouble var_sodium_potassium_pump__V =
871 var_chaste_interface__membrane__V;
872 const NekDouble var_sodium_potassium_pump__F =
874 const NekDouble var_sodium_potassium_pump__T =
876 const NekDouble var_sodium_potassium_pump__Na_o =
877 var_standard_ionic_concentrations__Na_o;
878 const NekDouble var_sodium_potassium_pump__sigma =
879 (1.0 / 7.0) * (exp(var_sodium_potassium_pump__Na_o / 67.3) -
881 const NekDouble var_sodium_potassium_pump__R =
883 const NekDouble var_sodium_potassium_pump__f_NaK =
885 (0.1245 * exp(((-0.1) * var_sodium_potassium_pump__V *
886 var_sodium_potassium_pump__F) /
887 (var_sodium_potassium_pump__R *
888 var_sodium_potassium_pump__T))) +
889 (0.0365 * var_sodium_potassium_pump__sigma *
890 exp(((-var_sodium_potassium_pump__V) *
891 var_sodium_potassium_pump__F) /
892 (var_sodium_potassium_pump__R *
893 var_sodium_potassium_pump__T))));
894 const NekDouble var_sodium_potassium_pump__i_NaK_max =
896 const NekDouble var_sodium_potassium_pump__K_o =
897 var_standard_ionic_concentrations__K_o;
898 const NekDouble var_sodium_potassium_pump__Na_i =
899 var_standard_ionic_concentrations__Na_i;
900 const NekDouble var_sodium_potassium_pump__K_mKo = 1.5;
901 const NekDouble var_sodium_potassium_pump__i_NaK =
902 (((var_sodium_potassium_pump__i_NaK_max *
903 var_sodium_potassium_pump__f_NaK) /
904 (1.0 + pow(var_sodium_potassium_pump__K_mNai /
905 var_sodium_potassium_pump__Na_i,
907 var_sodium_potassium_pump__K_o) /
908 (var_sodium_potassium_pump__K_o +
909 var_sodium_potassium_pump__K_mKo);
911 var_sodium_potassium_pump__i_NaK;
913 var_sarcolemmal_calcium_pump__i_p_Ca;
915 var_calcium_background_current__i_Ca_b;
916 const NekDouble var_sodium_background_current__g_Nab =
918 const NekDouble var_sodium_background_current__V =
919 var_chaste_interface__membrane__V;
920 const NekDouble var_sodium_background_current__E_Na =
921 var_fast_sodium_current__E_Na;
922 const NekDouble var_sodium_background_current__i_Na_b =
923 var_sodium_background_current__g_Nab *
924 (var_sodium_background_current__V -
925 var_sodium_background_current__E_Na);
927 var_sodium_background_current__i_Na_b;
928 const NekDouble var_chaste_interface__membrane__i_Stim = 0.0;
929 const NekDouble var_membrane__i_Stim_converter =
930 var_chaste_interface__membrane__i_Stim;
932 var_membrane__chaste_interface__chaste_membrane_capacitance =
935 var_membrane__i_Stim_converter /
936 var_membrane__chaste_interface__chaste_membrane_capacitance;
937 const NekDouble var_membrane__d_V_d_environment__time =
938 -(var_membrane__i_Na + var_membrane__i_Ca + var_membrane__i_CaK +
939 var_membrane__i_Kr + var_membrane__i_Ks + var_membrane__i_to +
940 var_membrane__i_K1 + var_membrane__i_Kp + var_membrane__i_NaCa +
941 var_membrane__i_NaK + var_membrane__i_p_Ca +
942 var_membrane__i_Na_b + var_membrane__i_Ca_b +
943 var_membrane__i_Stim);
945 var_chaste_interface__membrane__d_V_d_environment__time =
946 var_membrane__d_V_d_environment__time;
947 d_dt_chaste_interface__membrane__V =
948 var_chaste_interface__membrane__d_V_d_environment__time;
951 outarray[0][i] = d_dt_chaste_interface__membrane__V;
952 outarray[1][i] = d_dt_chaste_interface__fast_sodium_current_m_gate__m;
953 outarray[2][i] = d_dt_chaste_interface__fast_sodium_current_h_gate__h;
954 outarray[3][i] = d_dt_chaste_interface__fast_sodium_current_j_gate__j;
956 d_dt_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr;
958 d_dt_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks;
960 d_dt_chaste_interface__transient_outward_potassium_current_X_to_gate__X_to;
962 d_dt_chaste_interface__transient_outward_potassium_current_Y_to_gate__Y_to;
963 outarray[8][i] = d_dt_chaste_interface__L_type_Ca_current_f_gate__f;
964 outarray[9][i] = d_dt_chaste_interface__L_type_Ca_current_d_gate__d;
966 d_dt_chaste_interface__L_type_Ca_current_f_Ca_gate__f_Ca;
967 outarray[11][i] = d_dt_chaste_interface__calcium_dynamics__Ca_i;
968 outarray[12][i] = d_dt_chaste_interface__calcium_dynamics__Ca_SR;
Array< OneD, Array< OneD, NekDouble > > m_cellSol
Cell model solution variables.
std::vector< int > m_concentrations
Indices of cell model variables which are concentrations.
std::vector< int > m_gates
Indices of cell model variables which are gates.
size_t m_nq
Number of physical points.
size_t m_nvar
Number of variables in cell model (inc. transmembrane voltage)
void v_GenerateSummary(SummaryList &s) override
Prints a summary of the model parameters.
static CellModelSharedPtr create(const LibUtilities::SessionReaderSharedPtr &pSession, const MultiRegions::ExpListSharedPtr &pField)
Creates an instance of this class.
void v_SetInitialConditions() override
static std::string className
Name of class.
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)$.
Fox02(const LibUtilities::SessionReaderSharedPtr &pSession, const MultiRegions::ExpListSharedPtr &pField)
Constructor.
tKey RegisterCreatorFunction(tKey idKey, CreatorFunction classCreator, std::string pDesc="")
Register a class with the factory.
std::shared_ptr< SessionReader > SessionReaderSharedPtr
std::shared_ptr< ExpList > ExpListSharedPtr
Shared pointer to an ExpList object.
std::vector< std::pair< std::string, std::string > > SummaryList
void AddSummaryItem(SummaryList &l, const std::string &name, const std::string &value)
Adds a summary item to the summary info list.
CellModelFactory & GetCellModelFactory()
void Fill(int n, const T alpha, T *x, const int incx)
Fill a vector with a constant value.
scalarT< T > log(scalarT< T > in)
scalarT< T > sqrt(scalarT< T > in)