Chaste  Release::2018.1
CorriasBuistICCModified.cpp
1 /*
2 
3 Copyright (c) 2005-2018, University of Oxford.
4 All rights reserved.
5 
6 University of Oxford means the Chancellor, Masters and Scholars of the
7 University of Oxford, having an administrative office at Wellington
8 Square, Oxford OX1 2JD, UK.
9 
10 This file is part of Chaste.
11 
12 Redistribution and use in source and binary forms, with or without
13 modification, are permitted provided that the following conditions are met:
14  * Redistributions of source code must retain the above copyright notice,
15  this list of conditions and the following disclaimer.
16  * Redistributions in binary form must reproduce the above copyright notice,
17  this list of conditions and the following disclaimer in the documentation
18  and/or other materials provided with the distribution.
19  * Neither the name of the University of Oxford nor the names of its
20  contributors may be used to endorse or promote products derived from this
21  software without specific prior written permission.
22 
23 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
24 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
25 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
26 ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
27 LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
28 CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
29 GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
30 HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
31 LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
32 OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
33 
34 */
35 
36 #include "CorriasBuistICCModified.hpp"
37 #include <cmath>
38 #include <cassert>
39 #include <memory>
40 #include "Exception.hpp"
41 #include "OdeSystemInformation.hpp"
42 #include "HeartConfig.hpp"
43 
44  CorriasBuistICCModified::CorriasBuistICCModified(boost::shared_ptr<AbstractIvpOdeSolver> pSolver, boost::shared_ptr<AbstractStimulusFunction> pIntracellularStimulus)
46  pSolver,
47  18,//reduced by 3 from original
48  0,
49  pIntracellularStimulus)
50  {
51 
53  mFractionOfVDDRInPU = 0.0;
54  mIP3Concentration = 0.0006;
55  mScaleFactorSerca = 1.0;
56  mScaleFactorCarbonMonoxide = 1.0; //initialise to 1 --> no effect
57  //IP3 = 0.00065;// mM *** no longer used ***
58 
60  //Constants
62 
63  /* Concentrations */
64  Ca_o = 2.5 ;// mM
65  Cl_o =134.0 ;// mM
66  K_o =7.0 ;// mM
67  Na_o =137.0 ;// mM
68 
69  /* Nernst parameters */
70  R = 8314.4 ;// pJ/nmol/K
71  T = 310.0 ;// degK
72  F = 96484.6;// nC/nmol
73  FoRT = 0.03743;// 1/mV
74  RToF = 26.7137;// mV
75 
76  Cm = 25.0*1e-6;// 25 pF --> microF
77 
79  Asurf = Asurf_in_cm_square / 0.01;//cm2 --> mm2
80 
81  Cl_i = 88.0 ;// mM
82  K_i = 120.0 ;// mM
83  Na_i = 30.0 ;// mM
84  P_cyto = 0.7;// dim
85  Vol = 1.0e-6 ;// mm3
86  fc = 0.01 ;// dim
87  fe = 0.01 ;// dim
88  fm = 0.0003 ;// dim
89  Q10Ca = 2.1;// dim
90  Q10K = 1.5;// dim
91  Q10Na = 2.45 ;// dim
92  T_exp = 297.0 ;// degK
93 
94  G_max_BK = 23.0 * 1e-6 / Asurf;// 9.2e-3 mS/mm2 (23.0 nS) * 1e-6 (mS/nS) / Asurf (mm2) = mS/mm2
95  G_max_CaCl = 10.1 * 1e-6 / Asurf; //4.04e-3 mS/mm2 (10.1 nS) * 1e-6 (mS/nS) / Asurf (mm2) = mS/mm2
96  G_max_ERG = 2.5 * 1e-6 / Asurf; //1.0e-3 mS/mm2 ( 2.5 nS) * 1e-6 (mS/nS) / Asurf (mm2) = mS/mm2
97  G_max_Ltype = 2.0 * 1e-6 / Asurf;//0.8e-3 mS/mm2 ( 2.0 nS) * 1e-6 (mS/nS) / Asurf (mm2) = mS/mm2
98  G_max_NSCC = 12.15 * 1e-6 / Asurf;//4.86e-3 mS/mm2 (12.15nS) * 1e-6 (mS/nS) / Asurf (mm2) = mS/mm2
99  G_max_Na = 20.0 * 1e-6 / Asurf;//8.0e-3 mS/mm2 (20.0 nS) * 1e-6 (mS/nS) / Asurf (mm2) = mS/mm2
100  G_max_VDDR = 3.0 * 1e-6 / Asurf;//1.2e-3 mS/mm2 ( 3.0 nS) * 1e-6 (mS/nS) / Asurf (mm2) = mS/mm2
101  G_max_bk = 0.15 * 1e-6 / Asurf;//0.06e-3 mS/mm2 (0.15 nS) * 1e-6 (mS/nS) / Asurf (mm2) = mS/mm2
102  G_max_kv11 = 6.3 * 1e-6 / Asurf;//2.52e-3 mS/mm2 ( 6.3 nS) * 1e-6 (mS/nS) / Asurf (mm2) = mS/mm2
103 
104  J_max_PMCA = 0.088464e-3 ;// mM/ms (mM/s) * 1/1000 (s/ms) = mM/ms
105  J_max_PMCA_PU = 0.33e-3;// mM/ms (mM/s) * 1/1000 (s/ms) = mM/ms
106  J_ERleak = 1.666667e-3 ;// 1/ms (1/s) * 1/1000 (ms/s) = 1/ms
107  J_max_leak = 0.0;// 1/ms (1/s) * 1/1000 (ms/s) = 1/ms
108  Jmax_IP3 = 50000.0e-3 ;// 1/ms (1/s) * 1/1000 (ms/s) = 1/ms
109  Jmax_NaCa = 0.05e-3;// mM/ms (mM/s) * 1/1000 (s/ms) = mM/ms
110  Jmax_serca = 1.8333e-3 ;// mM/ms (mM/s) * 1/1000 (s/ms) = mM/ms
111  Jmax_uni = 5000.0e-3 ;// 1/ms (1/s) * 1/1000 (ms/s) = 1/ms
112 
113  NaPerm_o_Kperm = 1.056075 ;// dim
114  L = 50.0 ;// dim
115  P_ER = 0.1;// dim
116  P_PU = 0.001 ;// dim
117  P_mito = 0.12871;// dim
118  b = 0.5;// dim
119  na = 2.8;// dim
120 
121  K_Ca = 0.003 ;// mM
122  K_Na = 9.4;// mM
123  K_act = 0.00038;// mM
124  K_trans = 0.006 ;// mM
125  k_serca = 0.00042;// mM
126  conc = 0.001 ;// mM
127  d_ACT = 0.001 ;// mM
128  d_IP3 = 0.00025;// mM
129  d_INH = 0.0014 ;// mM
130 
131  tau_d_CaCl = 0.03e3 ;// ms(s) * 1000 (ms/s) = ms
132  tau_d_NSCC = 0.35e3 ;// ms(s) * 1000 (ms/s) = ms
133  tauh = 4.0e3 ;// ms(s ) * 1000 (ms/s) = ms
134 
135  deltaPsi_B = 50.0 ;// mV
136  deltaPsi_star = 91.0 ;// mV
137  deltaPsi = 164.000044 ;// mV
138 
140  //Calculated constants
142 
143  /* Volumes */
144  V_cyto = Vol*P_cyto;
145  V_MITO = Vol*P_mito;
146  V_PU = Vol*P_PU;
147  V_ER = Vol*P_ER;
148 
149  /* Temperature corrections */
150  T_correction_Ca = pow(Q10Ca, (T-T_exp)/10.0);
151  T_correction_K = pow(Q10K, (T-T_exp)/10.0);
152  T_correction_Na = pow(Q10Na, (T-T_exp)/10.0);
153  T_correction_BK = 1.1*(T-T_exp)*1e-6/Asurf; //(nS) * 1e-6 (mS/nS) / Asurf (mm2) = mS/mm2
154 
155  /* Nernst potentials */
156  E_Na = RToF*log(Na_o/Na_i);
157  E_K = RToF*log(K_o/K_i);
158  E_Cl = RToF*log(Cl_i/Cl_o);
159  E_NSCC = RToF*log((K_o+Na_o*NaPerm_o_Kperm)/(K_i+Na_i*NaPerm_o_Kperm));
160 
161  /* Activation gate time constants s->ms */
162  tau_d_ERG = T_correction_K*0.003*1000.0;
163  tau_d_Ltype = T_correction_Ca*0.001*1000.0;
164  tau_d_Na = T_correction_Na*0.003*1000.0;
165  tau_d_VDDR = T_correction_Ca*0.006*1000.0;
166  tau_d_kv11 = T_correction_K*0.005*1000.0;
167 
168  /* Inactivation gate time constants s->ms */
169  tau_f_Ltype = T_correction_Ca*0.086*1000.0;
170  tau_f_Na = T_correction_Na*0.0016*1000.0;
171  tau_f_VDDR = T_correction_Ca*0.04*1000.0;
172  tau_f_ca_Ltype = T_correction_Ca*0.002*1000.0;
173  tau_f_kv11 = T_correction_K*0.005*1000.0;
174 
175  /* Speed ups */
178 
179 
180  Init();
181 
182  }
183 
185  {
186  }
187 
189  {}
190 
192  {
193  mScaleFactorSerca = scaleFactor;
194  }
195 
197  {
198  mFractionOfVDDRInPU = fraction;
199  }
200 
202  {
203  mIP3Concentration = concentration;
204  }
205 
207  {
208  mScaleFactorCarbonMonoxide = scaleFactor;
209  }
210 
212  {
214  }
215 
216  double CorriasBuistICCModified::GetIIonic(const std::vector<double>* pStateVariables)
217  {
218  if (!pStateVariables) pStateVariables = &rGetStateVariables();
219  const std::vector<double>& rY = *pStateVariables;
220 
221  // index 0: Vm (mV)
222  // index 1: Ca_i (mM)
223  // index 2: Ca_ER (mM)
224  // index 3: Ca_PU (mM)
225  // index 4: Ca_m (mM)
226  // index 5: h (dim)
227  // index 6: d_CaCl (dim)
228  // index 7: d_ERG (dim)
229  // index 8: d_Ltype (dim)
230  // index 9: d_NSCC (dim)
231  // index 10: d_Na (dim)
232  // index 11: d_VDDR (dim)
233  // index 12: d_kv11 (dim)
234  // index 13: f_Ltype (dim)
235  // index 14: f_Na (dim)
236  // index 15: f_VDDR (dim)
237  // index 16: f_ca_Ltype (dim)
238  // index 17: f_kv11 (dim)
239 
240  double E_Ca = 0.5*RToF*log(Ca_o/rY[1]);
241  /* --- INa --- */
242  double I_Na = G_max_Na*rY[14]*rY[10]*(rY[0]-E_Na);
243  /* --- ILtype --- */
244  double I_Ltype = G_max_Ltype*rY[13]*rY[8]*rY[16]*(rY[0]-E_Ca);
245  /* --- IVDDR --- */
246  double I_VDDR = G_max_VDDR*rY[15]*rY[11]*(rY[0]-E_Ca);
247  /* --- IKv1.1 --- */
248  double I_kv11 = mScaleFactorCarbonMonoxide*G_max_kv11*rY[17]*rY[12]*(rY[0]-E_K);
249  /* --- IERG --- */
250  double I_ERG = mScaleFactorCarbonMonoxide*G_max_ERG*rY[7]*(rY[0]-E_K);
251  /* --- IBK --- */
252  double d_BK = 1.0/(1.0+((exp(rY[0]/-17.0))/((rY[1]/0.001)*(rY[1]/0.001))));
253  double I_BK = (G_max_BK+T_correction_BK)*d_BK*(rY[0]-E_K);
254  /* --- IKb --- */
255  double I_bk = mScaleFactorCarbonMonoxide*G_max_bk*(rY[0]-E_K);
256  /* --- ICaCL --- */
257  double I_CaCl = G_max_CaCl*rY[6]*(rY[0]-E_Cl);
258  /* --- INSCC --- */
259  double I_NSCC = G_max_NSCC*rY[9]*(rY[0]-E_NSCC);
260  /* --- JpmCa --- */
261  double J_PMCA = J_max_PMCA*1.0/(1.0+(0.000298/rY[1]));
262 
263  //i_ionic_in microA/mm2
264  double i_ionic = (I_Na+I_Ltype+I_VDDR+I_kv11+I_ERG+I_BK+I_CaCl+I_NSCC+I_bk+(J_PMCA*2.0*F*V_cyto/Asurf));
265  assert(!std::isnan(i_ionic));
269  return i_ionic / 0.01;
270  }
271 
272  void CorriasBuistICCModified::EvaluateYDerivatives(double time, const std::vector<double>& rY, std::vector<double>& rDY)
273  {
274  // index 0: Vm (mV)
275  // index 1: Ca_i (mM)
276  // index 2: Ca_ER (mM)
277  // index 3: Ca_PU (mM)
278  // index 4: Ca_m (mM)
279  // index 5: h (dim)
280  // index 6: d_CaCl (dim)
281  // index 7: d_ERG (dim)
282  // index 8: d_Ltype (dim)
283  // index 9: d_NSCC (dim)
284  // index 10: d_Na (dim)
285  // index 11: d_VDDR (dim)
286  // index 12: d_kv11 (dim)
287  // index 13: f_Ltype (dim)
288  // index 14: f_Na (dim)
289  // index 15: f_VDDR (dim)
290  // index 16: f_ca_Ltype (dim)
291  // index 17: f_kv11 (dim)
292 
293  /* ----------------- */
294  /* Membrane currents */
295  /* ----------------- */
296 
297  double E_Ca = 0.5*RToF*log(Ca_o/rY[1]);
298 
299  /* --- INa --- */
300  double d_inf_Na = 1.0/(1.0+exp((rY[0]+47.0)/-4.8));
301  double f_inf_Na = 1.0/(1.0+exp((rY[0]+78.0)/7.0));
302  double I_Na = G_max_Na*rY[14]*rY[10]*(rY[0]-E_Na);
303 
304  /* --- ILtype --- */
305  double d_inf_Ltype = 1.0/(1.0+exp((rY[0]+17.0)/-4.3));
306  double f_inf_Ltype = 1.0/(1.0+exp((rY[0]+43.0)/8.9));
307  double f_ca_inf_Ltype = 1.0-1.0/(1.0+exp((rY[1]-0.0001-0.000214)/-0.0000131));
308  double I_Ltype = G_max_Ltype*rY[13]*rY[8]*rY[16]*(rY[0]-E_Ca);
309 
310  /* --- IVDDR --- */
311  double d_inf_VDDR = 1.0/(1.0+exp((rY[0]+26.0)/-6.0));
312  double f_inf_VDDR = 1.0/(1.0+exp((rY[0]+66.0)/6.0));
313  double I_VDDR = G_max_VDDR*rY[15]*rY[11]*(rY[0]-E_Ca);
314 
315  /* --- IKv1.1 --- */
316  double d_inf_kv11 = 1.0/(1.0+exp((rY[0]+25.0)/-7.7));
317  double f_inf_kv11 = 0.5+0.5/(1.0+exp((rY[0]+44.8)/4.4));
318  double I_kv11 = mScaleFactorCarbonMonoxide*G_max_kv11*rY[17]*rY[12]*(rY[0]-E_K);
319 
320  /* --- IERG --- */
321  double d_inf_ERG = 0.2+0.8/(1.0+exp((rY[0]+20.0)/-1.8));
322  double I_ERG = mScaleFactorCarbonMonoxide*G_max_ERG*rY[7]*(rY[0]-E_K);
323 
324  /* --- IBK --- */
325  //LUT d_BK = 1.0/(1.0+exp((rY[0]/-17.0)-2.0*log(rY[1]/0.001)));
326  double d_BK = 1.0/(1.0+((exp(rY[0]/-17.0))/((rY[1]/0.001)*(rY[1]/0.001))));
327  double I_BK = (G_max_BK+T_correction_BK)*d_BK*(rY[0]-E_K);
328 
329  /* --- IKb --- */
330  double I_bk = mScaleFactorCarbonMonoxide*G_max_bk*(rY[0]-E_K);
331 
332  /* --- ICaCL --- */
333  double tmp1 = 0.00014/rY[1];
334  double d_inf_CaCl = 1.0/(1.0+(tmp1*tmp1*tmp1));
335  double I_CaCl = G_max_CaCl*rY[6]*(rY[0]-E_Cl);
336 
337  /* --- INSCC --- */
338  double d_inf_NSCC = 1.0/(1.0+pow(0.0000745/rY[3], -85.0));
339  double I_NSCC = G_max_NSCC*rY[9]*(rY[0]-E_NSCC);
340 
341  /* --- JpmCa --- */
342  double J_PMCA = J_max_PMCA*1.0/(1.0+(0.000298/rY[1]));
343 
344  /* ----------------- */
345  /* ER fluxes */
346  /* ----------------- */
347 
348  //tmp1 = IP3/(IP3+d_IP3);
350  double tmp2 = rY[3]/(rY[3]+d_ACT);
351  double J_ERout = (Jmax_IP3*tmp1*tmp1*tmp1*tmp2*tmp2*tmp2*rY[5]*rY[5]*rY[5]+J_ERleak)*(rY[2]-rY[3]);
352  double J_SERCA = mScaleFactorSerca*Jmax_serca*rY[3]*rY[3]/(k_serca*k_serca+rY[3]*rY[3]);
353 
354  /* ----------------- */
355  /* Mito fluxes */
356  /* ----------------- */
357 
358  /* Uniporter */
359  tmp1 = 1.0+rY[3]/K_trans;
360  double MWC = conc*(rY[3]/K_trans)*tmp1*tmp1*tmp1/(tmp1*tmp1*tmp1*tmp1+L/pow(1.0+rY[3]/K_act, na));
361  double J_uni = Jmax_uni*(MWC-rY[4]*e2FoRTdPsiMdPsiS)*2.0*FoRT*(deltaPsi-deltaPsi_star)/(1.0-e2FoRTdPsiMdPsiS);
362 
363  /* NaCa Exchanger */
364  double J_NaCa = Jmax_NaCa*ebFoRTdPsiMdPsiS/((1.0+K_Na*K_Na/(Na_i*Na_i))*(1.0+K_Ca/rY[4]));
365 
366  /* ----------------- */
367  /* Cyto fluxes */
368  /* ----------------- */
369 
370  double J_leak = J_max_leak*(rY[3]-rY[1]); /* P.U.->Cai */
371 
372  /* ----------------- */
373  /* Entrainment */
374  /* ----------------- */
375 
376  double E_Ca_PU = 0.5*RToF*log(Ca_o/rY[3]);
377  double I_VDDR_PU = G_max_VDDR*rY[11]*rY[15]*(rY[0]-E_Ca_PU);
378  //J_PMCA_PU = J_max_PMCA_PU*1.0/(1.0+exp(-(rY[3]-0.0001)/0.000015));
379  double J_PMCA_PU = J_max_PMCA_PU*1.0/(1.0+exp(-(rY[3]-0.0001)/0.000015));
380 
381  double i_stim = GetStimulus(time);
382 
383  /* -------------------- */
384  /* Resting Membrane, CO */
385  /* -------------------- */
386 
387  //tmp1 = 2.8*spatVar[1]-0.1;
388  //I_kv11 = I_kv11*tmp1;
389  //I_ERG = I_ERG*tmp1;
390  //I_bk = I_bk*tmp1;
391  double voltage_derivative;
393  {
394  voltage_derivative = 0.0;
395  }
396  else
397  {
398  voltage_derivative = (-1.0 / 0.01) * (i_stim + I_Na+I_Ltype+I_VDDR+I_kv11+I_ERG+I_BK+I_CaCl+I_NSCC+I_bk+(J_PMCA*2.0*F*V_cyto/Asurf));
399  assert(!std::isnan(voltage_derivative));
400  }
401 
402  rDY[0] = voltage_derivative;/* Vm */
403  rDY[1] = fc*((-I_Ltype-I_VDDR)*Asurf/(2.0*F*V_cyto)+J_leak-J_PMCA);
404  rDY[2] = fe*(J_SERCA-J_ERout);
405  rDY[3] = fc*((J_NaCa-J_uni)*V_MITO/V_PU+(J_ERout-J_SERCA)*V_ER/V_PU-J_leak*V_cyto/V_PU);
406  rDY[3]-= fc*(((mFractionOfVDDRInPU*I_VDDR_PU*Asurf)/(2.0*F*V_PU))+J_PMCA_PU); // *** new, 4% IVDDR ***
407  rDY[4] = fm*(J_uni-J_NaCa);
408  rDY[5] = 1.0*(d_INH-rY[5]*(rY[3]+d_INH))/tauh;
409  rDY[6] = (d_inf_CaCl-rY[6])/tau_d_CaCl;
410  rDY[7] = (d_inf_ERG-rY[7])/tau_d_ERG;
411  rDY[8] = (d_inf_Ltype-rY[8])/tau_d_Ltype;
412  rDY[9] = (d_inf_NSCC-rY[9])/tau_d_NSCC;
413  rDY[10] = (d_inf_Na-rY[10])/tau_d_Na;
414  rDY[11] = (d_inf_VDDR-rY[11])/tau_d_VDDR;
415  rDY[12] = (d_inf_kv11-rY[12])/tau_d_kv11;
416  rDY[13] = (f_inf_Ltype-rY[13])/tau_f_Ltype;
417  rDY[14] = (f_inf_Na-rY[14])/tau_f_Na;
418  rDY[15] = (f_inf_VDDR-rY[15])/tau_f_VDDR;
419  rDY[16] = (f_ca_inf_Ltype-rY[16])/tau_f_ca_Ltype;
420  rDY[17] = (f_inf_kv11-rY[17])/tau_f_kv11;
421  }
422 
423 template<>
425 {
426 
427  this->mSystemName = "ICC_model_Martincode";
428 
429  this->mVariableNames.push_back("Vm");
430  this->mVariableUnits.push_back("mV");
431  this->mInitialConditions.push_back(-67.53988); // Vm (mV);
432 
433  this->mVariableNames.push_back("Ca_i");
434  this->mVariableUnits.push_back("mM");
435  this->mInitialConditions.push_back(0.00001); // Ca_i (mM));
436 
437  this->mVariableNames.push_back("Ca_ER");
438  this->mVariableUnits.push_back("mM");
439  this->mInitialConditions.push_back(0.00695); // Ca_ER (mM));
440 
441  this->mVariableNames.push_back("Ca_PU");
442  this->mVariableUnits.push_back("mM");
443  this->mInitialConditions.push_back(0.000095); // Ca_PU (mM));
444 
445  this->mVariableNames.push_back("Ca_m");
446  this->mVariableUnits.push_back("mM");
447  this->mInitialConditions.push_back(0.000138); // Ca_m (mM));
448 
449  this->mVariableNames.push_back("h");
450  this->mVariableUnits.push_back("dimensionless");
451  this->mInitialConditions.push_back(0.939443); // h (dim));
452 
453  this->mVariableNames.push_back("d_CaCl");
454  this->mVariableUnits.push_back("dimensionless");
455  this->mInitialConditions.push_back(0.00038); // d_CaCl (dim));
456 
457  this->mVariableNames.push_back("d_ERG");
458  this->mVariableUnits.push_back("dimensionless");
459  this->mInitialConditions.push_back(0.2); // d_ERG (dim));
460 
461  this->mVariableNames.push_back("d_Ltype");
462  this->mVariableUnits.push_back("dimensionless");
463  this->mInitialConditions.push_back(0.000008); // d_Ltype (dim));
464 
465  this->mVariableNames.push_back("d_NSCC");
466  this->mVariableUnits.push_back("dimensionless");
467  this->mInitialConditions.push_back(0.0); // d_NSCC (dim));
468 
469  this->mVariableNames.push_back("d_Na");
470  this->mVariableUnits.push_back("dimensionless");
471  this->mInitialConditions.push_back(0.013778); // d_Na (dim));
472 
473  this->mVariableNames.push_back("d_VDDR");
474  this->mVariableUnits.push_back("dimensionless");
475  this->mInitialConditions.push_back(0.00099); // d_VDDR (dim));
476 
477  this->mVariableNames.push_back("d_kv11");
478  this->mVariableUnits.push_back("dimensionless");
479  this->mInitialConditions.push_back(0.003992); // d_kv11 (dim));
480 
481  this->mVariableNames.push_back("f_Ltype");
482  this->mVariableUnits.push_back("dimensionless");
483  this->mInitialConditions.push_back( 0.940072); // f_Ltype (dim));
484 
485  this->mVariableNames.push_back("f_Na");
486  this->mVariableUnits.push_back("dimensionless");
487  this->mInitialConditions.push_back(0.182426); // f_Na (dim));
488 
489  this->mVariableNames.push_back("f_VDDR");
490  this->mVariableUnits.push_back("dimensionless");
491  this->mInitialConditions.push_back(0.562177); // f_VDDR (dim));
492 
493  this->mVariableNames.push_back("f_ca_Ltype");
494  this->mVariableUnits.push_back("dimensionless");
495  this->mInitialConditions.push_back(1.0); // f_ca_Ltype (dim));
496 
497  this->mVariableNames.push_back("f_kv11");
498  this->mVariableUnits.push_back("dimensionless");
499  this->mInitialConditions.push_back(0.997143); // f_kv11 (dim));
500 
501  this->mInitialised = true;
502 }
503 
504 
505 // Serialization for Boost >= 1.36
static boost::shared_ptr< OdeSystemInformation< ODE_SYSTEM > > Instance()
void SetIP3Concentration(double concentration)
void SetFractionOfVDDRInPU(double fraction)
double GetIIonic(const std::vector< double > *pStateVariables=NULL)
CorriasBuistICCModified(boost::shared_ptr< AbstractIvpOdeSolver > pSolver, boost::shared_ptr< AbstractStimulusFunction > pIntracellularStimulus)
void SetCarbonMonoxideScaleFactor(double scaleFactor)
void EvaluateYDerivatives(double time, const std::vector< double > &rY, std::vector< double > &rDY)
boost::shared_ptr< AbstractOdeSystemInformation > mpSystemInfo
double GetCapacitance() const
#define CHASTE_CLASS_EXPORT(T)
static HeartConfig * Instance()
void SetSercaPumpScaleFactor(double scaleFactor)