Mahajan2008OdeSystem.cpp

00001 // Model: mahajan_shiferaw_2008_version01
00002 // Processed by pycml - CellML Tools in Python
00003 //     (translate: 5150, pycml: 5150)
00004 // on Tue Mar 10 16:09:35 2009
00005 
00006 #include <cmath>
00007 #include <cassert>
00008 #include "AbstractCardiacCell.hpp"
00009 #include "Exception.hpp"
00010 #include "OdeSystemInformation.hpp"
00011 #include "AbstractStimulusFunction.hpp"
00012 #include "Mahajan2008OdeSystem.hpp"
00013 
00014 Mahajan2008OdeSystem::Mahajan2008OdeSystem(AbstractIvpOdeSolver *pSolver, 
00015                                         AbstractStimulusFunction* pIntracellularStimulus)
00016         : AbstractCardiacCell(pSolver, 26, 0, pIntracellularStimulus)
00017     {
00018         // Time units: ms
00019         // 
00020         mpSystemInfo = OdeSystemInformation<Mahajan2008OdeSystem>::Instance();
00021         Init();
00022     }
00023     
00024     Mahajan2008OdeSystem::~Mahajan2008OdeSystem(void)
00025     {
00026     }
00027     
00028  //   void Mahajan2008OdeSystem::VerifyGatingVariables()
00029  //   {}
00030 
00031     double Mahajan2008OdeSystem::GetIIonic()
00032     {
00033         std::vector<double>& rY = rGetStateVariables();
00034         double var_cell__V = rY[0];
00035         // Units: mV; Initial value: -87.169816169406
00036         double var_INa__xm = rY[1];
00037         // Units: dimensionless; Initial value: 0.001075453357
00038         double var_INa__xh = rY[2];
00039         // Units: dimensionless; Initial value: 0.990691306716
00040         double var_INa__xj = rY[3];
00041         // Units: dimensionless; Initial value: 0.993888937283
00042         double var_ICaL__c1 = rY[4];
00043         // Units: dimensionless; Initial value: 0.000018211252
00044         double var_ICaL__c2 = rY[5];
00045         // Units: dimensionless; Initial value: 0.979322592773
00046         double var_ICaL__xi1ca = rY[6];
00047         // Units: dimensionless; Initial value: 0.001208153482
00048         double var_ICaL__xi1ba = rY[7];
00049         // Units: dimensionless; Initial value: 0.000033616596
00050         double var_ICaL__xi2ca = rY[8];
00051         // Units: dimensionless; Initial value: 0.004173008466
00052         double var_ICaL__xi2ba = rY[9];
00053         // Units: dimensionless; Initial value: 0.015242594688
00054         double var_IKr__xr = rY[10];
00055         // Units: dimensionless; Initial value: 0.007074239331
00056         double var_IKs__xs1 = rY[11];
00057         // Units: dimensionless; Initial value: 0.048267587131
00058         double var_IKs__xs2 = rY[12];
00059         // Units: dimensionless; Initial value: 0.105468807033
00060         double var_Ito__xtos = rY[13];
00061         // Units: dimensionless; Initial value: 0.00364776906
00062         double var_Ito__ytos = rY[14];
00063         // Units: dimensionless; Initial value: 0.174403618112
00064         double var_Ito__xtof = rY[15];
00065         // Units: dimensionless; Initial value: 0.003643592594
00066         double var_Ito__ytof = rY[16];
00067         // Units: dimensionless; Initial value: 0.993331326442
00068         double var_Na__Na_i = rY[19];
00069         // Units: mM; Initial value: 11.441712311614
00070         double var_Ca__Ca_submem = rY[21];
00071         // Units: uM; Initial value: 0.226941113355
00072         double var_Ca__Ca_i = rY[22];
00073         // Units: uM; Initial value: 0.256752008084
00074         
00075         const double var_Environment__R = 8.314472;
00076         const double var_Environment__T = 308.0;
00077         const double var_Environment__F = 96.4853415;
00078         const double var_Environment__K_o = 5.4;
00079         const double var_Environment__Ca_o = 1.8;
00080         const double var_Environment__Na_o = 136.0;
00081         double var_Environment__FonRT = var_Environment__F / (var_Environment__R * var_Environment__T);
00082         const double var_reversal_potentials__K_i = 140.0;
00083         double var_reversal_potentials__FonRT = var_Environment__FonRT;
00084         double var_reversal_potentials__K_o = var_Environment__K_o;
00085         double var_reversal_potentials__ek = (1.0 / var_reversal_potentials__FonRT) * log(var_reversal_potentials__K_o / var_reversal_potentials__K_i);
00086         double var_IK1__ek = var_reversal_potentials__ek;
00087         double var_IK1__V = var_cell__V;
00088         double var_IK1__aki = 1.02 / (1.0 + exp(0.2385 * ((var_IK1__V - var_IK1__ek) - 59.215)));
00089         double var_IK1__bki = ((0.49124 * exp(0.08032 * ((var_IK1__V - var_IK1__ek) + 5.476))) + (1.0 * exp(0.06175 * ((var_IK1__V - var_IK1__ek) - 594.31)))) / (1.0 + exp((-0.5143) * ((var_IK1__V - var_IK1__ek) + 4.753)));
00090         double var_IK1__xkin = var_IK1__aki / (var_IK1__aki + var_IK1__bki);
00091         double var_IK1__K_o = var_Environment__K_o;
00092         const double var_IK1__gkix = 0.3;
00093         double var_IK1__xik1 = var_IK1__gkix * sqrt(var_IK1__K_o / 5.4) * var_IK1__xkin * (var_IK1__V - var_IK1__ek);
00094         double var_cell__xik1 = var_IK1__xik1;
00095         double var_Ito__ek = var_reversal_potentials__ek;
00096         const double var_Ito__gtos = 0.04;
00097         double var_Ito__V = var_cell__V;
00098         double var_Ito__rt2 = (var_Ito__V + 33.5) / 10.0;
00099         double var_Ito__rs_inf = 1.0 / (1.0 + exp(var_Ito__rt2));
00100         double var_Ito__xitos = var_Ito__gtos * var_Ito__xtos * (var_Ito__ytos + (0.5 * var_Ito__rs_inf)) * (var_Ito__V - var_Ito__ek);
00101         const double var_Ito__gtof = 0.11;
00102         double var_Ito__xitof = var_Ito__gtof * var_Ito__xtof * var_Ito__ytof * (var_Ito__V - var_Ito__ek);
00103         double var_Ito__xito = var_Ito__xitos + var_Ito__xitof;
00104         double var_cell__xito = var_Ito__xito;
00105         const double var_INaK__xkmko = 1.5;
00106         double var_INaK__V = var_cell__V;
00107         double var_INaK__FonRT = var_Environment__FonRT;
00108         double var_INaK__Na_o = var_Environment__Na_o;
00109         double var_INaK__sigma = (exp(var_INaK__Na_o / 67.3) - 1.0) / 7.0;
00110         double var_INaK__fNaK = 1.0 / (1.0 + (0.1245 * exp((-0.1) * var_INaK__V * var_INaK__FonRT)) + (0.0365 * var_INaK__sigma * exp((-var_INaK__V) * var_INaK__FonRT)));
00111         double var_INaK__Na_i = var_Na__Na_i;
00112         double var_INaK__K_o = var_Environment__K_o;
00113         const double var_INaK__xkmnai = 12.0;
00114         const double var_INaK__gNaK = 1.5;
00115         double var_INaK__xiNaK = (((var_INaK__gNaK * var_INaK__fNaK * var_INaK__Na_i) / (var_INaK__Na_i + var_INaK__xkmnai)) * var_INaK__K_o) / (var_INaK__K_o + var_INaK__xkmko);
00116         double var_cell__xiNaK = var_INaK__xiNaK;
00117         const double var_cell__wca = 8.0;
00118         const double var_INaCa__gNaCa = 0.84;
00119         double var_INaCa__V = var_cell__V;
00120         double var_INaCa__FonRT = var_Environment__FonRT;
00121         double var_INaCa__zw4 = 1.0 + (0.2 * exp(var_INaCa__V * (0.35 - 1.0) * var_INaCa__FonRT));
00122         const double var_INaCa__xkdna = 0.3;
00123         double var_INaCa__Ca_submem = var_Ca__Ca_submem;
00124         double var_INaCa__aloss = 1.0 / (1.0 + pow(var_INaCa__xkdna / var_INaCa__Ca_submem, 3.0));
00125         double var_INaCa__Na_o = var_Environment__Na_o;
00126         double var_INaCa__Na_i = var_Na__Na_i;
00127         double var_INaCa__Ca_o = var_Environment__Ca_o;
00128         double var_Ca__csm = var_Ca__Ca_submem / 1000.0;
00129         double var_INaCa__csm = var_Ca__csm;
00130         double var_INaCa__yz4 = (pow(var_INaCa__Na_i, 3.0) * var_INaCa__Ca_o) + (pow(var_INaCa__Na_o, 3.0) * var_INaCa__csm);
00131         const double var_INaCa__xmcao = 1.3;
00132         const double var_INaCa__xmnao = 87.5;
00133         double var_INaCa__yz1 = (var_INaCa__xmcao * pow(var_INaCa__Na_i, 3.0)) + (pow(var_INaCa__xmnao, 3.0) * var_INaCa__csm);
00134         const double var_INaCa__xmcai = 0.0036;
00135         const double var_INaCa__xmnai = 12.3;
00136         double var_INaCa__yz3 = var_INaCa__xmcai * pow(var_INaCa__Na_o, 3.0) * (1.0 + pow(var_INaCa__Na_i / var_INaCa__xmnai, 3.0));
00137         double var_INaCa__yz2 = pow(var_INaCa__xmnai, 3.0) * var_INaCa__Ca_o * (1.0 + (var_INaCa__csm / var_INaCa__xmcai));
00138         double var_INaCa__zw8 = var_INaCa__yz1 + var_INaCa__yz2 + var_INaCa__yz3 + var_INaCa__yz4;
00139         double var_INaCa__zw3 = (pow(var_INaCa__Na_i, 3.0) * var_INaCa__Ca_o * exp(var_INaCa__V * 0.35 * var_INaCa__FonRT)) - (pow(var_INaCa__Na_o, 3.0) * var_INaCa__csm * exp(var_INaCa__V * (0.35 - 1.0) * var_INaCa__FonRT));
00140         double var_INaCa__jNaCa = (var_INaCa__gNaCa * var_INaCa__aloss * var_INaCa__zw3) / (var_INaCa__zw4 * var_INaCa__zw8);
00141         double var_INaCa__wca = var_cell__wca;
00142         double var_INaCa__xiNaCa = var_INaCa__wca * var_INaCa__jNaCa;
00143         double var_cell__xiNaCa = var_INaCa__xiNaCa;
00144         double var_ICaL__Ca_o = var_Environment__Ca_o;
00145         double var_ICaL__V = var_cell__V;
00146         const double var_ICaL__pca = 0.00054;
00147         double var_ICaL__FonRT = var_Environment__FonRT;
00148         double var_ICaL__F = var_Environment__F;
00149         double var_ICaL__za = var_ICaL__V * 2.0 * var_ICaL__FonRT;
00150         double var_ICaL__csm = var_Ca__csm;
00151         double var_ICaL__rxa = (fabs(var_ICaL__za) < 0.001) ? ((4.0 * var_ICaL__pca * var_ICaL__F * var_ICaL__FonRT * ((var_ICaL__csm * exp(var_ICaL__za)) - (0.341 * var_ICaL__Ca_o))) / (2.0 * var_ICaL__FonRT)) : ((4.0 * var_ICaL__pca * var_ICaL__V * var_ICaL__F * var_ICaL__FonRT * ((var_ICaL__csm * exp(var_ICaL__za)) - (0.341 * var_ICaL__Ca_o))) / (exp(var_ICaL__za) - 1.0));
00152         const double var_ICaL__gca = 182.0;
00153         double var_ICaL__po = (((((1.0 - var_ICaL__xi1ca) - var_ICaL__xi2ca) - var_ICaL__xi1ba) - var_ICaL__xi2ba) - var_ICaL__c1) - var_ICaL__c2;
00154         double var_ICaL__jca = var_ICaL__gca * var_ICaL__po * var_ICaL__rxa;
00155         double var_ICaL__wca = var_cell__wca;
00156         double var_ICaL__xica = 2.0 * var_ICaL__wca * var_ICaL__jca;
00157         double var_cell__xica = var_ICaL__xica;
00158         const double var_IKr__gkr = 0.0125;
00159         double var_IKr__K_o = var_Environment__K_o;
00160         double var_IKr__V = var_cell__V;
00161         double var_IKr__rg = 1.0 / (1.0 + exp((var_IKr__V + 33.0) / 22.4));
00162         double var_IKr__ek = var_reversal_potentials__ek;
00163         double var_IKr__xikr = var_IKr__gkr * sqrt(var_IKr__K_o / 5.4) * var_IKr__xr * var_IKr__rg * (var_IKr__V - var_IKr__ek);
00164         double var_cell__xikr = var_IKr__xikr;
00165         double var_IKs__Ca_i = var_Ca__Ca_i;
00166         double var_IKs__gksx = 1.0 + (0.8 / (1.0 + pow(0.5 / var_IKs__Ca_i, 3.0)));
00167         const double var_IKs__gks = 0.1386;
00168         double var_IKs__V = var_cell__V;
00169         const double var_reversal_potentials__prNaK = 0.01833;
00170         double var_reversal_potentials__Na_o = var_Environment__Na_o;
00171         double var_reversal_potentials__Na_i = var_Na__Na_i;
00172         double var_reversal_potentials__eks = (1.0 / var_reversal_potentials__FonRT) * log((var_reversal_potentials__K_o + (var_reversal_potentials__prNaK * var_reversal_potentials__Na_o)) / (var_reversal_potentials__K_i + (var_reversal_potentials__prNaK * var_reversal_potentials__Na_i)));
00173         double var_IKs__eks = var_reversal_potentials__eks;
00174         double var_IKs__xiks = var_IKs__gks * var_IKs__gksx * var_IKs__xs1 * var_IKs__xs2 * (var_IKs__V - var_IKs__eks);
00175         double var_cell__xiks = var_IKs__xiks;
00176         double var_INa__V = var_cell__V;
00177         const double var_INa__gna = 12.0;
00178         double var_reversal_potentials__ena = (1.0 / var_reversal_potentials__FonRT) * log(var_reversal_potentials__Na_o / var_reversal_potentials__Na_i);
00179         double var_INa__ena = var_reversal_potentials__ena;
00180         double var_INa__xina = var_INa__gna * var_INa__xh * var_INa__xj * var_INa__xm * var_INa__xm * var_INa__xm * (var_INa__V - var_INa__ena);
00181         double var_cell__xina = var_INa__xina;
00182         
00183         return var_cell__xik1+var_cell__xito+var_cell__xiNaK+var_cell__xiNaCa+var_cell__xica+var_cell__xina+var_cell__xikr+var_cell__xiks;
00184     }
00185     
00186     void Mahajan2008OdeSystem::EvaluateYDerivatives(
00187             double var_Environment__time,
00188             const std::vector<double> &rY,
00189             std::vector<double> &rDY)
00190     {
00191         // Inputs:
00192         // Time units: ms
00193         var_Environment__time *= 1.0;
00194         double var_cell__V = rY[0];
00195         // Units: mV; Initial value: -87.169816169406
00196         double var_INa__xm = rY[1];
00197         // Units: dimensionless; Initial value: 0.001075453357
00198         double var_INa__xh = rY[2];
00199         // Units: dimensionless; Initial value: 0.990691306716
00200         double var_INa__xj = rY[3];
00201         // Units: dimensionless; Initial value: 0.993888937283
00202         double var_ICaL__c1 = rY[4];
00203         // Units: dimensionless; Initial value: 0.000018211252
00204         double var_ICaL__c2 = rY[5];
00205         // Units: dimensionless; Initial value: 0.979322592773
00206         double var_ICaL__xi1ca = rY[6];
00207         // Units: dimensionless; Initial value: 0.001208153482
00208         double var_ICaL__xi1ba = rY[7];
00209         // Units: dimensionless; Initial value: 0.000033616596
00210         double var_ICaL__xi2ca = rY[8];
00211         // Units: dimensionless; Initial value: 0.004173008466
00212         double var_ICaL__xi2ba = rY[9];
00213         // Units: dimensionless; Initial value: 0.015242594688
00214         double var_IKr__xr = rY[10];
00215         // Units: dimensionless; Initial value: 0.007074239331
00216         double var_IKs__xs1 = rY[11];
00217         // Units: dimensionless; Initial value: 0.048267587131
00218         double var_IKs__xs2 = rY[12];
00219         // Units: dimensionless; Initial value: 0.105468807033
00220         double var_Ito__xtos = rY[13];
00221         // Units: dimensionless; Initial value: 0.00364776906
00222         double var_Ito__ytos = rY[14];
00223         // Units: dimensionless; Initial value: 0.174403618112
00224         double var_Ito__xtof = rY[15];
00225         // Units: dimensionless; Initial value: 0.003643592594
00226         double var_Ito__ytof = rY[16];
00227         // Units: dimensionless; Initial value: 0.993331326442
00228         double var_Irel__Ca_JSR = rY[17];
00229         // Units: uM; Initial value: 97.505463697266
00230         double var_Irel__xir = rY[18];
00231         // Units: uM_per_ms; Initial value: 0.006679257264
00232         double var_Na__Na_i = rY[19];
00233         // Units: mM; Initial value: 11.441712311614
00234         double var_Ca__Ca_dyad = rY[20];
00235         // Units: uM; Initial value: 1.716573130685
00236         double var_Ca__Ca_submem = rY[21];
00237         // Units: uM; Initial value: 0.226941113355
00238         double var_Ca__Ca_i = rY[22];
00239         // Units: uM; Initial value: 0.256752008084
00240         double var_Ca__Ca_NSR = rY[23];
00241         // Units: uM; Initial value: 104.450004990523
00242         double var_Ca__tropi = rY[24];
00243         // Units: uM; Initial value: 22.171689894953
00244         double var_Ca__trops = rY[25];
00245         // Units: uM; Initial value: 19.864701949854
00246         
00247         
00248         // Mathematics
00249         const double var_Environment__R = 8.314472;
00250         const double var_Environment__T = 308.0;
00251         const double var_Environment__F = 96.4853415;
00252         const double var_Environment__K_o = 5.4;
00253         const double var_Environment__Ca_o = 1.8;
00254         const double var_Environment__Na_o = 136.0;
00255         double var_Environment__FonRT = var_Environment__F / (var_Environment__R * var_Environment__T);
00256         const double var_reversal_potentials__K_i = 140.0;
00257         double var_reversal_potentials__FonRT = var_Environment__FonRT;
00258         double var_reversal_potentials__K_o = var_Environment__K_o;
00259         double var_reversal_potentials__ek = (1.0 / var_reversal_potentials__FonRT) * log(var_reversal_potentials__K_o / var_reversal_potentials__K_i);
00260         double var_IK1__ek = var_reversal_potentials__ek;
00261         double var_IK1__V = var_cell__V;
00262         double var_IK1__aki = 1.02 / (1.0 + exp(0.2385 * ((var_IK1__V - var_IK1__ek) - 59.215)));
00263         double var_IK1__bki = ((0.49124 * exp(0.08032 * ((var_IK1__V - var_IK1__ek) + 5.476))) + (1.0 * exp(0.06175 * ((var_IK1__V - var_IK1__ek) - 594.31)))) / (1.0 + exp((-0.5143) * ((var_IK1__V - var_IK1__ek) + 4.753)));
00264         double var_IK1__xkin = var_IK1__aki / (var_IK1__aki + var_IK1__bki);
00265         double var_IK1__K_o = var_Environment__K_o;
00266         const double var_IK1__gkix = 0.3;
00267         double var_IK1__xik1 = var_IK1__gkix * sqrt(var_IK1__K_o / 5.4) * var_IK1__xkin * (var_IK1__V - var_IK1__ek);
00268         double var_cell__xik1 = var_IK1__xik1;
00269         double var_Ito__ek = var_reversal_potentials__ek;
00270         const double var_Ito__gtos = 0.04;
00271         double var_Ito__V = var_cell__V;
00272         double var_Ito__rt2 = (var_Ito__V + 33.5) / 10.0;
00273         double var_Ito__rs_inf = 1.0 / (1.0 + exp(var_Ito__rt2));
00274         double var_Ito__xitos = var_Ito__gtos * var_Ito__xtos * (var_Ito__ytos + (0.5 * var_Ito__rs_inf)) * (var_Ito__V - var_Ito__ek);
00275         const double var_Ito__gtof = 0.11;
00276         double var_Ito__xitof = var_Ito__gtof * var_Ito__xtof * var_Ito__ytof * (var_Ito__V - var_Ito__ek);
00277         double var_Ito__xito = var_Ito__xitos + var_Ito__xitof;
00278         double var_cell__xito = var_Ito__xito;
00279         const double var_INaK__xkmko = 1.5;
00280         double var_INaK__V = var_cell__V;
00281         double var_INaK__FonRT = var_Environment__FonRT;
00282         double var_INaK__Na_o = var_Environment__Na_o;
00283         double var_INaK__sigma = (exp(var_INaK__Na_o / 67.3) - 1.0) / 7.0;
00284         double var_INaK__fNaK = 1.0 / (1.0 + (0.1245 * exp((-0.1) * var_INaK__V * var_INaK__FonRT)) + (0.0365 * var_INaK__sigma * exp((-var_INaK__V) * var_INaK__FonRT)));
00285         double var_INaK__Na_i = var_Na__Na_i;
00286         double var_INaK__K_o = var_Environment__K_o;
00287         const double var_INaK__xkmnai = 12.0;
00288         const double var_INaK__gNaK = 1.5;
00289         double var_INaK__xiNaK = (((var_INaK__gNaK * var_INaK__fNaK * var_INaK__Na_i) / (var_INaK__Na_i + var_INaK__xkmnai)) * var_INaK__K_o) / (var_INaK__K_o + var_INaK__xkmko);
00290         double var_cell__xiNaK = var_INaK__xiNaK;
00291         const double var_cell__wca = 8.0;
00292         const double var_INaCa__gNaCa = 0.84;
00293         double var_INaCa__V = var_cell__V;
00294         double var_INaCa__FonRT = var_Environment__FonRT;
00295         double var_INaCa__zw4 = 1.0 + (0.2 * exp(var_INaCa__V * (0.35 - 1.0) * var_INaCa__FonRT));
00296         const double var_INaCa__xkdna = 0.3;
00297         double var_INaCa__Ca_submem = var_Ca__Ca_submem;
00298         double var_INaCa__aloss = 1.0 / (1.0 + pow(var_INaCa__xkdna / var_INaCa__Ca_submem, 3.0));
00299         double var_INaCa__Na_o = var_Environment__Na_o;
00300         double var_INaCa__Na_i = var_Na__Na_i;
00301         double var_INaCa__Ca_o = var_Environment__Ca_o;
00302         double var_Ca__csm = var_Ca__Ca_submem / 1000.0;
00303         double var_INaCa__csm = var_Ca__csm;
00304         double var_INaCa__yz4 = (pow(var_INaCa__Na_i, 3.0) * var_INaCa__Ca_o) + (pow(var_INaCa__Na_o, 3.0) * var_INaCa__csm);
00305         const double var_INaCa__xmcao = 1.3;
00306         const double var_INaCa__xmnao = 87.5;
00307         double var_INaCa__yz1 = (var_INaCa__xmcao * pow(var_INaCa__Na_i, 3.0)) + (pow(var_INaCa__xmnao, 3.0) * var_INaCa__csm);
00308         const double var_INaCa__xmcai = 0.0036;
00309         const double var_INaCa__xmnai = 12.3;
00310         double var_INaCa__yz3 = var_INaCa__xmcai * pow(var_INaCa__Na_o, 3.0) * (1.0 + pow(var_INaCa__Na_i / var_INaCa__xmnai, 3.0));
00311         double var_INaCa__yz2 = pow(var_INaCa__xmnai, 3.0) * var_INaCa__Ca_o * (1.0 + (var_INaCa__csm / var_INaCa__xmcai));
00312         double var_INaCa__zw8 = var_INaCa__yz1 + var_INaCa__yz2 + var_INaCa__yz3 + var_INaCa__yz4;
00313         double var_INaCa__zw3 = (pow(var_INaCa__Na_i, 3.0) * var_INaCa__Ca_o * exp(var_INaCa__V * 0.35 * var_INaCa__FonRT)) - (pow(var_INaCa__Na_o, 3.0) * var_INaCa__csm * exp(var_INaCa__V * (0.35 - 1.0) * var_INaCa__FonRT));
00314         double var_INaCa__jNaCa = (var_INaCa__gNaCa * var_INaCa__aloss * var_INaCa__zw3) / (var_INaCa__zw4 * var_INaCa__zw8);
00315         double var_INaCa__wca = var_cell__wca;
00316         double var_INaCa__xiNaCa = var_INaCa__wca * var_INaCa__jNaCa;
00317         double var_cell__xiNaCa = var_INaCa__xiNaCa;
00318         double var_ICaL__Ca_o = var_Environment__Ca_o;
00319         double var_ICaL__V = var_cell__V;
00320         const double var_ICaL__pca = 0.00054;
00321         double var_ICaL__FonRT = var_Environment__FonRT;
00322         double var_ICaL__F = var_Environment__F;
00323         double var_ICaL__za = var_ICaL__V * 2.0 * var_ICaL__FonRT;
00324         double var_ICaL__csm = var_Ca__csm;
00325         double var_ICaL__rxa = (fabs(var_ICaL__za) < 0.001) ? ((4.0 * var_ICaL__pca * var_ICaL__F * var_ICaL__FonRT * ((var_ICaL__csm * exp(var_ICaL__za)) - (0.341 * var_ICaL__Ca_o))) / (2.0 * var_ICaL__FonRT)) : ((4.0 * var_ICaL__pca * var_ICaL__V * var_ICaL__F * var_ICaL__FonRT * ((var_ICaL__csm * exp(var_ICaL__za)) - (0.341 * var_ICaL__Ca_o))) / (exp(var_ICaL__za) - 1.0));
00326         const double var_ICaL__gca = 182.0;
00327         double var_ICaL__po = (((((1.0 - var_ICaL__xi1ca) - var_ICaL__xi2ca) - var_ICaL__xi1ba) - var_ICaL__xi2ba) - var_ICaL__c1) - var_ICaL__c2;
00328         double var_ICaL__jca = var_ICaL__gca * var_ICaL__po * var_ICaL__rxa;
00329         double var_ICaL__wca = var_cell__wca;
00330         double var_ICaL__xica = 2.0 * var_ICaL__wca * var_ICaL__jca;
00331         double var_cell__xica = var_ICaL__xica;
00332         const double var_IKr__gkr = 0.0125;
00333         double var_IKr__K_o = var_Environment__K_o;
00334         double var_IKr__V = var_cell__V;
00335         double var_IKr__rg = 1.0 / (1.0 + exp((var_IKr__V + 33.0) / 22.4));
00336         double var_IKr__ek = var_reversal_potentials__ek;
00337         double var_IKr__xikr = var_IKr__gkr * sqrt(var_IKr__K_o / 5.4) * var_IKr__xr * var_IKr__rg * (var_IKr__V - var_IKr__ek);
00338         double var_cell__xikr = var_IKr__xikr;
00339         double var_IKs__Ca_i = var_Ca__Ca_i;
00340         double var_IKs__gksx = 1.0 + (0.8 / (1.0 + pow(0.5 / var_IKs__Ca_i, 3.0)));
00341         const double var_IKs__gks = 0.1386;
00342         double var_IKs__V = var_cell__V;
00343         const double var_reversal_potentials__prNaK = 0.01833;
00344         double var_reversal_potentials__Na_o = var_Environment__Na_o;
00345         double var_reversal_potentials__Na_i = var_Na__Na_i;
00346         double var_reversal_potentials__eks = (1.0 / var_reversal_potentials__FonRT) * log((var_reversal_potentials__K_o + (var_reversal_potentials__prNaK * var_reversal_potentials__Na_o)) / (var_reversal_potentials__K_i + (var_reversal_potentials__prNaK * var_reversal_potentials__Na_i)));
00347         double var_IKs__eks = var_reversal_potentials__eks;
00348         double var_IKs__xiks = var_IKs__gks * var_IKs__gksx * var_IKs__xs1 * var_IKs__xs2 * (var_IKs__V - var_IKs__eks);
00349         double var_cell__xiks = var_IKs__xiks;
00350         double var_cell__i_Stim = GetStimulus((1.0/1)*var_Environment__time);
00351         double var_INa__V = var_cell__V;
00352         const double var_INa__gna = 12.0;
00353         double var_reversal_potentials__ena = (1.0 / var_reversal_potentials__FonRT) * log(var_reversal_potentials__Na_o / var_reversal_potentials__Na_i);
00354         double var_INa__ena = var_reversal_potentials__ena;
00355         double var_INa__xina = var_INa__gna * var_INa__xh * var_INa__xj * var_INa__xm * var_INa__xm * var_INa__xm * (var_INa__V - var_INa__ena);
00356         double var_cell__xina = var_INa__xina;
00357         double var_cell__Itotal = -(var_cell__xina + var_cell__xik1 + var_cell__xikr + var_cell__xiks + var_cell__xito + var_cell__xiNaCa + var_cell__xica + var_cell__xiNaK + var_cell__i_Stim);
00358         double var_INa__am = (fabs(var_INa__V + 47.13) > 0.001) ? ((0.32 * 1.0 * (var_INa__V + 47.13)) / (1.0 - exp((-0.1) * (var_INa__V + 47.13)))) : 3.2;
00359         double var_INa__bm = 0.08 * exp((-var_INa__V) / 11.0);
00360         double var_INa__ah = (var_INa__V < (-40.0)) ? (0.135 * exp((80.0 + var_INa__V) / (-6.8))) : 0.0;
00361         double var_INa__bh = (var_INa__V < (-40.0)) ? ((3.56 * exp(0.079 * var_INa__V)) + (310000.0 * exp(0.35 * var_INa__V))) : (1.0 / (0.13 * (1.0 + exp((var_INa__V + 10.66) / (-11.1)))));
00362         double var_INa__aj = (var_INa__V < (-40.0)) ? (((((-127140.0) * exp(0.2444 * var_INa__V)) - (3.474e-05 * exp((-0.04391) * var_INa__V))) * 1.0 * (var_INa__V + 37.78)) / (1.0 + exp(0.311 * (var_INa__V + 79.23)))) : 0.0;
00363         double var_INa__bj = (var_INa__V < (-40.0)) ? ((0.1212 * exp((-0.01052) * var_INa__V)) / (1.0 + exp((-0.1378) * (var_INa__V + 40.14)))) : ((0.3 * exp((-2.535e-07) * var_INa__V)) / (1.0 + exp((-0.1) * (var_INa__V + 32.0))));
00364         double var_ICaL__Ca_dyad = var_Ca__Ca_dyad;
00365         const double var_ICaL__vth = 0.0;
00366         const double var_ICaL__s6 = 8.0;
00367         double var_ICaL__poinf = 1.0 / (1.0 + exp((-(var_ICaL__V - var_ICaL__vth)) / var_ICaL__s6));
00368         const double var_ICaL__cat = 3.0;
00369         double var_ICaL__fca = 1.0 / (1.0 + pow(var_ICaL__cat / var_ICaL__Ca_dyad, 3.0));
00370         const double var_ICaL__vx =  -40.0;
00371         const double var_ICaL__sx = 3.0;
00372         const double var_ICaL__vy =  -40.0;
00373         const double var_ICaL__sy = 4.0;
00374         const double var_ICaL__vyr =  -40.0;
00375         const double var_ICaL__syr = 11.32;
00376         const double var_ICaL__cpt = 6.09365;
00377         const double var_ICaL__taupo = 1.0;
00378         double var_ICaL__alpha = var_ICaL__poinf / var_ICaL__taupo;
00379         double var_ICaL__beta = (1.0 - var_ICaL__poinf) / var_ICaL__taupo;
00380         double var_ICaL__k1 = 0.024168 * var_ICaL__fca;
00381         const double var_ICaL__k2 = 0.000103615;
00382         const double var_ICaL__k1t = 0.00413;
00383         const double var_ICaL__k2t = 0.00224;
00384         double var_ICaL__poi = 1.0 / (1.0 + exp((-(var_ICaL__V - var_ICaL__vx)) / var_ICaL__sx));
00385         const double var_ICaL__tau3 = 3.0;
00386         double var_ICaL__k3 = (1.0 - var_ICaL__poi) / var_ICaL__tau3;
00387         double var_ICaL__k3t = var_ICaL__k3;
00388         double var_ICaL__Ps = 1.0 / (1.0 + exp((-(var_ICaL__V - var_ICaL__vyr)) / var_ICaL__syr));
00389         const double var_ICaL__tca = 78.0329;
00390         double var_ICaL__tau_ca = (var_ICaL__tca / (1.0 + pow(var_ICaL__Ca_dyad / var_ICaL__cpt, 4.0))) + 0.1;
00391         double var_ICaL__recov = 10.0 + (4954.0 * exp(var_ICaL__V / 15.6));
00392         double var_ICaL__Pr = 1.0 - (1.0 / (1.0 + exp((-(var_ICaL__V - var_ICaL__vy)) / var_ICaL__sy)));
00393         double var_ICaL__tauca = ((var_ICaL__recov - var_ICaL__tau_ca) * var_ICaL__Pr) + var_ICaL__tau_ca;
00394         double var_ICaL__k6 = (var_ICaL__fca * var_ICaL__Ps) / var_ICaL__tauca;
00395         double var_ICaL__k5 = (1.0 - var_ICaL__Ps) / var_ICaL__tauca;
00396         double var_ICaL__tauba = ((var_ICaL__recov - 450.0) * var_ICaL__Pr) + 450.0;
00397         double var_ICaL__k6t = var_ICaL__Ps / var_ICaL__tauba;
00398         double var_ICaL__k5t = (1.0 - var_ICaL__Ps) / var_ICaL__tauba;
00399         double var_ICaL__k4 = (((((var_ICaL__k3 * var_ICaL__alpha) / var_ICaL__beta) * var_ICaL__k1) / var_ICaL__k2) * var_ICaL__k5) / var_ICaL__k6;
00400         double var_ICaL__k4t = (((((var_ICaL__k3t * var_ICaL__alpha) / var_ICaL__beta) * var_ICaL__k1t) / var_ICaL__k2t) * var_ICaL__k5t) / var_ICaL__k6t;
00401         const double var_ICaL__r1 = 0.3;
00402         const double var_ICaL__r2 = 3.0;
00403         double var_ICaL__s1 = 0.0182688 * var_ICaL__fca;
00404         const double var_ICaL__s1t = 0.00195;
00405         double var_ICaL__s2 = (((var_ICaL__s1 * var_ICaL__r1) / var_ICaL__r2) * var_ICaL__k2) / var_ICaL__k1;
00406         double var_ICaL__s2t = (((var_ICaL__s1t * var_ICaL__r1) / var_ICaL__r2) * var_ICaL__k2t) / var_ICaL__k1t;
00407         double var_IKr__xkrv1 = (fabs(var_IKr__V + 7.0) > 0.001) ? ((0.00138 * 1.0 * (var_IKr__V + 7.0)) / (1.0 - exp((-0.123) * (var_IKr__V + 7.0)))) : (0.00138 / 0.123);
00408         double var_IKr__xkrv2 = (fabs(var_IKr__V + 10.0) > 0.001) ? ((0.00061 * 1.0 * (var_IKr__V + 10.0)) / (exp(0.145 * (var_IKr__V + 10.0)) - 1.0)) : (0.00061 / 0.145);
00409         double var_IKr__taukr = 1.0 / (var_IKr__xkrv1 + var_IKr__xkrv2);
00410         double var_IKr__xkrinf = 1.0 / (1.0 + exp((-(var_IKr__V + 50.0)) / 7.5));
00411         double var_IKs__xs1ss = 1.0 / (1.0 + exp((-(var_IKs__V - 1.5)) / 16.7));
00412         double var_IKs__xs2ss = var_IKs__xs1ss;
00413         double var_IKs__tauxs1 = (fabs(var_IKs__V + 30.0) < (0.001 / 0.0687)) ? (1.0 / ((7.19e-05 / 0.148) + (0.000131 / 0.0687))) : (1.0 / (((7.19e-05 * (var_IKs__V + 30.0)) / (1.0 - exp((-0.148) * (var_IKs__V + 30.0)))) + ((0.000131 * (var_IKs__V + 30.0)) / (exp(0.0687 * (var_IKs__V + 30.0)) - 1.0))));
00414         double var_IKs__tauxs2 = 4.0 * var_IKs__tauxs1;
00415         double var_Ito__rt1 = (-(var_Ito__V + 3.0)) / 15.0;
00416         double var_Ito__rt3 = (var_Ito__V + 60.0) / 10.0;
00417         double var_Ito__rt4 = (((-var_Ito__V) / 30.0) * var_Ito__V) / 30.0;
00418         double var_Ito__rt5 = (var_Ito__V + 33.5) / 10.0;
00419         double var_Ito__xtos_inf = 1.0 / (1.0 + exp(var_Ito__rt1));
00420         double var_Ito__ytos_inf = 1.0 / (1.0 + exp(var_Ito__rt2));
00421         double var_Ito__xtof_inf = var_Ito__xtos_inf;
00422         double var_Ito__ytof_inf = var_Ito__ytos_inf;
00423         double var_Ito__txs = (9.0 / (1.0 + exp(-var_Ito__rt1))) + 0.5;
00424         double var_Ito__tys = (3000.0 / (1.0 + exp(var_Ito__rt3))) + 30.0;
00425         double var_Ito__txf = (3.5 * exp(var_Ito__rt4)) + 1.5;
00426         double var_Ito__tyf = (20.0 / (1.0 + exp(var_Ito__rt5))) + 20.0;
00427         double var_Irel__V = var_cell__V;
00428         double var_Irel__Ca_NSR = var_Ca__Ca_NSR;
00429         double var_Ileak_Iup_Ixfer__Ca_NSR = var_Ca__Ca_NSR;
00430         const double var_Ileak_Iup_Ixfer__gleak = 2.069e-05;
00431         const double var_Ileak_Iup_Ixfer__kj = 50.0;
00432         double var_Ileak_Iup_Ixfer__Ca_i = var_Ca__Ca_i;
00433         double var_Ileak_Iup_Ixfer__jleak = ((var_Ileak_Iup_Ixfer__gleak * var_Ileak_Iup_Ixfer__Ca_NSR * var_Ileak_Iup_Ixfer__Ca_NSR) / ((var_Ileak_Iup_Ixfer__Ca_NSR * var_Ileak_Iup_Ixfer__Ca_NSR) + (var_Ileak_Iup_Ixfer__kj * var_Ileak_Iup_Ixfer__kj))) * ((var_Ileak_Iup_Ixfer__Ca_NSR * 16.667) - var_Ileak_Iup_Ixfer__Ca_i);
00434         double var_Ca__jleak = var_Ileak_Iup_Ixfer__jleak;
00435         const double var_Ileak_Iup_Ixfer__cup = 0.5;
00436         const double var_Ileak_Iup_Ixfer__vup = 0.4;
00437         double var_Ileak_Iup_Ixfer__jup = (var_Ileak_Iup_Ixfer__vup * var_Ileak_Iup_Ixfer__Ca_i * var_Ileak_Iup_Ixfer__Ca_i) / ((var_Ileak_Iup_Ixfer__Ca_i * var_Ileak_Iup_Ixfer__Ca_i) + (var_Ileak_Iup_Ixfer__cup * var_Ileak_Iup_Ixfer__cup));
00438         double var_Ca__jup = var_Ileak_Iup_Ixfer__jup;
00439         double var_Ca__xir = var_Irel__xir;
00440         double var_Ca__dCa_JSR = ((-var_Ca__xir) + var_Ca__jup) - var_Ca__jleak;
00441         double var_Irel__dCa_JSR = var_Ca__dCa_JSR;
00442         double var_Irel__po = var_ICaL__po;
00443         double var_Irel__rxa = var_ICaL__rxa;
00444         const double var_Irel__cstar = 90.0;
00445         const double var_Irel__gryr = 2.58079;
00446         const double var_Irel__gbarsr = 26841.8;
00447         const double var_Irel__gdyad = 9000.0;
00448         const double var_Irel__ax = 0.3576;
00449         const double var_Irel__ay = 0.05;
00450         const double var_Irel__av = 11.3;
00451         double var_Irel__bv = ((1.0 - var_Irel__av) * var_Irel__cstar) - 50.0;
00452         double var_Irel__Qr0 = ((var_Irel__Ca_JSR > 50.0) && (var_Irel__Ca_JSR < var_Irel__cstar)) ? ((var_Irel__Ca_JSR - 50.0) / 1.0) : (var_Irel__Ca_JSR >= var_Irel__cstar) ? ((var_Irel__av * var_Irel__Ca_JSR) + var_Irel__bv) : 0.0;
00453         double var_Irel__Qr = (var_Irel__Ca_NSR * var_Irel__Qr0) / var_Irel__cstar;
00454         double var_Irel__sparkV = exp((-var_Irel__ay) * (var_Irel__V + 30.0)) / (1.0 + exp((-var_Irel__ay) * (var_Irel__V + 30.0)));
00455         double var_Irel__spark_rate = (var_Irel__gryr / 1.0) * var_Irel__po * fabs(var_Irel__rxa) * var_Irel__sparkV;
00456         const double var_Irel__taua = 100.0;
00457         const double var_Irel__taur = 30.0;
00458         double var_Irel__xirp = (((var_Irel__po * var_Irel__Qr * fabs(var_Irel__rxa) * var_Irel__gbarsr) / 1.0) * exp((-var_Irel__ax) * (var_Irel__V + 30.0))) / (1.0 + exp((-var_Irel__ax) * (var_Irel__V + 30.0)));
00459         double var_Irel__xicap = var_Irel__po * var_Irel__gdyad * fabs(var_Irel__rxa);
00460         double var_Irel__xiryr = var_Irel__xirp + var_Irel__xicap;
00461         double var_Na__wca = var_cell__wca;
00462         double var_Na__xina = var_INa__xina;
00463         double var_Na__xiNaK = var_INaK__xiNaK;
00464         double var_Na__xiNaCa = var_INaCa__xiNaCa;
00465         double var_Ca__xiryr = var_Irel__xiryr;
00466         const double var_Ca__bcal = 24.0;
00467         const double var_Ca__xkcal = 7.0;
00468         const double var_Ca__srmax = 47.0;
00469         const double var_Ca__srkd = 0.6;
00470         const double var_Ca__bmem = 15.0;
00471         const double var_Ca__kmem = 0.3;
00472         const double var_Ca__bsar = 42.0;
00473         const double var_Ca__ksar = 13.0;
00474         double var_Ca__bpxs = (var_Ca__bcal * var_Ca__xkcal) / ((var_Ca__xkcal + var_Ca__Ca_submem) * (var_Ca__xkcal + var_Ca__Ca_submem));
00475         double var_Ca__spxs = (var_Ca__srmax * var_Ca__srkd) / ((var_Ca__srkd + var_Ca__Ca_submem) * (var_Ca__srkd + var_Ca__Ca_submem));
00476         double var_Ca__mempxs = (var_Ca__bmem * var_Ca__kmem) / ((var_Ca__kmem + var_Ca__Ca_submem) * (var_Ca__kmem + var_Ca__Ca_submem));
00477         double var_Ca__sarpxs = (var_Ca__bsar * var_Ca__ksar) / ((var_Ca__ksar + var_Ca__Ca_submem) * (var_Ca__ksar + var_Ca__Ca_submem));
00478         double var_Ca__dcsib = 1.0 / (1.0 + var_Ca__bpxs + var_Ca__spxs + var_Ca__mempxs + var_Ca__sarpxs);
00479         double var_Ca__bpxi = (var_Ca__bcal * var_Ca__xkcal) / ((var_Ca__xkcal + var_Ca__Ca_i) * (var_Ca__xkcal + var_Ca__Ca_i));
00480         double var_Ca__spxi = (var_Ca__srmax * var_Ca__srkd) / ((var_Ca__srkd + var_Ca__Ca_i) * (var_Ca__srkd + var_Ca__Ca_i));
00481         double var_Ca__mempxi = (var_Ca__bmem * var_Ca__kmem) / ((var_Ca__kmem + var_Ca__Ca_i) * (var_Ca__kmem + var_Ca__Ca_i));
00482         double var_Ca__sarpxi = (var_Ca__bsar * var_Ca__ksar) / ((var_Ca__ksar + var_Ca__Ca_i) * (var_Ca__ksar + var_Ca__Ca_i));
00483         double var_Ca__dciib = 1.0 / (1.0 + var_Ca__bpxi + var_Ca__spxi + var_Ca__mempxi + var_Ca__sarpxi);
00484         const double var_Ca__xkon = 0.0327;
00485         const double var_Ca__xkoff = 0.0196;
00486         const double var_Ca__btrop = 70.0;
00487         double var_Ca__xbi = (var_Ca__xkon * var_Ca__Ca_i * (var_Ca__btrop - var_Ca__tropi)) - (var_Ca__xkoff * var_Ca__tropi);
00488         double var_Ca__xbs = (var_Ca__xkon * var_Ca__Ca_submem * (var_Ca__btrop - var_Ca__trops)) - (var_Ca__xkoff * var_Ca__trops);
00489         const double var_Ca__taud = 4.0;
00490         const double var_Ca__taups = 0.5;
00491         double var_Ca__jd = (var_Ca__Ca_submem - var_Ca__Ca_i) / var_Ca__taud;
00492         double var_Ca__jNaCa = var_INaCa__jNaCa;
00493         double var_Ca__jca = var_ICaL__jca;
00494         
00495         double d_dt_cell__V;
00496         if (mSetVoltageDerivativeToZero)
00497         {
00498             d_dt_cell__V = 0.0;
00499         }
00500         else
00501         {
00502             d_dt_cell__V = var_cell__Itotal;
00503         }
00504         
00505         double d_dt_INa__xh = (var_INa__ah * (1.0 - var_INa__xh)) - (var_INa__bh * var_INa__xh);
00506         double d_dt_INa__xj = (var_INa__aj * (1.0 - var_INa__xj)) - (var_INa__bj * var_INa__xj);
00507         double d_dt_INa__xm = (var_INa__am * (1.0 - var_INa__xm)) - (var_INa__bm * var_INa__xm);
00508         double d_dt_ICaL__c1 = ((var_ICaL__alpha * var_ICaL__c2) + (var_ICaL__k2 * var_ICaL__xi1ca) + (var_ICaL__k2t * var_ICaL__xi1ba) + (var_ICaL__r2 * var_ICaL__po)) - ((var_ICaL__beta + var_ICaL__r1 + var_ICaL__k1t + var_ICaL__k1) * var_ICaL__c1);
00509         double d_dt_ICaL__c2 = ((var_ICaL__beta * var_ICaL__c1) + (var_ICaL__k5 * var_ICaL__xi2ca) + (var_ICaL__k5t * var_ICaL__xi2ba)) - ((var_ICaL__k6 + var_ICaL__k6t + var_ICaL__alpha) * var_ICaL__c2);
00510         double d_dt_ICaL__xi1ca = ((var_ICaL__k1 * var_ICaL__c1) + (var_ICaL__k4 * var_ICaL__xi2ca) + (var_ICaL__s1 * var_ICaL__po)) - ((var_ICaL__k3 + var_ICaL__k2 + var_ICaL__s2) * var_ICaL__xi1ca);
00511         double d_dt_ICaL__xi1ba = ((var_ICaL__k1t * var_ICaL__c1) + (var_ICaL__k4t * var_ICaL__xi2ba) + (var_ICaL__s1t * var_ICaL__po)) - ((var_ICaL__k3t + var_ICaL__k2t + var_ICaL__s2t) * var_ICaL__xi1ba);
00512         double d_dt_ICaL__xi2ca = ((var_ICaL__k3 * var_ICaL__xi1ca) + (var_ICaL__k6 * var_ICaL__c2)) - ((var_ICaL__k5 + var_ICaL__k4) * var_ICaL__xi2ca);
00513         double d_dt_ICaL__xi2ba = ((var_ICaL__k3t * var_ICaL__xi1ba) + (var_ICaL__k6t * var_ICaL__c2)) - ((var_ICaL__k5t + var_ICaL__k4t) * var_ICaL__xi2ba);
00514         double d_dt_IKr__xr = (var_IKr__xkrinf - var_IKr__xr) / var_IKr__taukr;
00515         double d_dt_IKs__xs1 = (var_IKs__xs1ss - var_IKs__xs1) / var_IKs__tauxs1;
00516         double d_dt_IKs__xs2 = (var_IKs__xs2ss - var_IKs__xs2) / var_IKs__tauxs2;
00517         double d_dt_Ito__xtos = (var_Ito__xtos_inf - var_Ito__xtos) / var_Ito__txs;
00518         double d_dt_Ito__ytos = (var_Ito__ytos_inf - var_Ito__ytos) / var_Ito__tys;
00519         double d_dt_Ito__xtof = (var_Ito__xtof_inf - var_Ito__xtof) / var_Ito__txf;
00520         double d_dt_Ito__ytof = (var_Ito__ytof_inf - var_Ito__ytof) / var_Ito__tyf;
00521         double d_dt_Irel__Ca_JSR = (var_Irel__Ca_NSR - var_Irel__Ca_JSR) / var_Irel__taua;
00522         double d_dt_Irel__xir = (var_Irel__spark_rate * var_Irel__Qr) - ((var_Irel__xir * (1.0 - ((var_Irel__taur * var_Irel__dCa_JSR) / var_Irel__Ca_NSR))) / var_Irel__taur);
00523         double d_dt_Na__Na_i = (-(var_Na__xina + (3.0 * var_Na__xiNaK) + (3.0 * var_Na__xiNaCa))) / (var_Na__wca * 1000.0);
00524         double d_dt_Ca__Ca_dyad = var_Ca__xiryr - ((var_Ca__Ca_dyad - var_Ca__Ca_submem) / var_Ca__taups);
00525         double d_dt_Ca__Ca_submem = var_Ca__dcsib * ((50.0 * (((var_Ca__xir - var_Ca__jd) - var_Ca__jca) + var_Ca__jNaCa)) - var_Ca__xbs);
00526         double d_dt_Ca__Ca_i = var_Ca__dciib * (((var_Ca__jd - var_Ca__jup) + var_Ca__jleak) - var_Ca__xbi);
00527         double d_dt_Ca__Ca_NSR = var_Ca__dCa_JSR;
00528         double d_dt_Ca__tropi = var_Ca__xbi;
00529         double d_dt_Ca__trops = var_Ca__xbs;
00530         
00531         rDY[0] = 1.0*d_dt_cell__V;
00532         rDY[1] = 1.0*d_dt_INa__xm;
00533         rDY[2] = 1.0*d_dt_INa__xh;
00534         rDY[3] = 1.0*d_dt_INa__xj;
00535         rDY[4] = 1.0*d_dt_ICaL__c1;
00536         rDY[5] = 1.0*d_dt_ICaL__c2;
00537         rDY[6] = 1.0*d_dt_ICaL__xi1ca;
00538         rDY[7] = 1.0*d_dt_ICaL__xi1ba;
00539         rDY[8] = 1.0*d_dt_ICaL__xi2ca;
00540         rDY[9] = 1.0*d_dt_ICaL__xi2ba;
00541         rDY[10] = 1.0*d_dt_IKr__xr;
00542         rDY[11] = 1.0*d_dt_IKs__xs1;
00543         rDY[12] = 1.0*d_dt_IKs__xs2;
00544         rDY[13] = 1.0*d_dt_Ito__xtos;
00545         rDY[14] = 1.0*d_dt_Ito__ytos;
00546         rDY[15] = 1.0*d_dt_Ito__xtof;
00547         rDY[16] = 1.0*d_dt_Ito__ytof;
00548         rDY[17] = 1.0*d_dt_Irel__Ca_JSR;
00549         rDY[18] = 1.0*d_dt_Irel__xir;
00550         rDY[19] = 1.0*d_dt_Na__Na_i;
00551         rDY[20] = 1.0*d_dt_Ca__Ca_dyad;
00552         rDY[21] = 1.0*d_dt_Ca__Ca_submem;
00553         rDY[22] = 1.0*d_dt_Ca__Ca_i;
00554         rDY[23] = 1.0*d_dt_Ca__Ca_NSR;
00555         rDY[24] = 1.0*d_dt_Ca__tropi;
00556         rDY[25] = 1.0*d_dt_Ca__trops;
00557     }
00558     
00559 
00560 
00561 template<>
00562 void OdeSystemInformation<Mahajan2008OdeSystem>::Initialise(void)
00563 {
00564     // Time units: ms
00565     // 
00566     this->mVariableNames.push_back("V");
00567     this->mVariableUnits.push_back("mV");
00568     this->mInitialConditions.push_back(-87.169816169406);
00569 
00570     this->mVariableNames.push_back("xm");
00571     this->mVariableUnits.push_back("dimensionless");
00572     this->mInitialConditions.push_back(0.001075453357);
00573 
00574     this->mVariableNames.push_back("xh");
00575     this->mVariableUnits.push_back("dimensionless");
00576     this->mInitialConditions.push_back(0.990691306716);
00577 
00578     this->mVariableNames.push_back("xj");
00579     this->mVariableUnits.push_back("dimensionless");
00580     this->mInitialConditions.push_back(0.993888937283);
00581 
00582     this->mVariableNames.push_back("c1");
00583     this->mVariableUnits.push_back("dimensionless");
00584     this->mInitialConditions.push_back(0.000018211252);
00585 
00586     this->mVariableNames.push_back("c2");
00587     this->mVariableUnits.push_back("dimensionless");
00588     this->mInitialConditions.push_back(0.979322592773);
00589 
00590     this->mVariableNames.push_back("xi1ca");
00591     this->mVariableUnits.push_back("dimensionless");
00592     this->mInitialConditions.push_back(0.001208153482);
00593 
00594     this->mVariableNames.push_back("xi1ba");
00595     this->mVariableUnits.push_back("dimensionless");
00596     this->mInitialConditions.push_back(0.000033616596);
00597 
00598     this->mVariableNames.push_back("xi2ca");
00599     this->mVariableUnits.push_back("dimensionless");
00600     this->mInitialConditions.push_back(0.004173008466);
00601 
00602     this->mVariableNames.push_back("xi2ba");
00603     this->mVariableUnits.push_back("dimensionless");
00604     this->mInitialConditions.push_back(0.015242594688);
00605 
00606     this->mVariableNames.push_back("xr");
00607     this->mVariableUnits.push_back("dimensionless");
00608     this->mInitialConditions.push_back(0.007074239331);
00609 
00610     this->mVariableNames.push_back("xs1");
00611     this->mVariableUnits.push_back("dimensionless");
00612     this->mInitialConditions.push_back(0.048267587131);
00613 
00614     this->mVariableNames.push_back("xs2");
00615     this->mVariableUnits.push_back("dimensionless");
00616     this->mInitialConditions.push_back(0.105468807033);
00617 
00618     this->mVariableNames.push_back("xtos");
00619     this->mVariableUnits.push_back("dimensionless");
00620     this->mInitialConditions.push_back(0.00364776906);
00621 
00622     this->mVariableNames.push_back("ytos");
00623     this->mVariableUnits.push_back("dimensionless");
00624     this->mInitialConditions.push_back(0.174403618112);
00625 
00626     this->mVariableNames.push_back("xtof");
00627     this->mVariableUnits.push_back("dimensionless");
00628     this->mInitialConditions.push_back(0.003643592594);
00629 
00630     this->mVariableNames.push_back("ytof");
00631     this->mVariableUnits.push_back("dimensionless");
00632     this->mInitialConditions.push_back(0.993331326442);
00633 
00634     this->mVariableNames.push_back("Ca_JSR");
00635     this->mVariableUnits.push_back("uM");
00636     this->mInitialConditions.push_back(97.505463697266);
00637 
00638     this->mVariableNames.push_back("xir");
00639     this->mVariableUnits.push_back("uM_per_ms");
00640     this->mInitialConditions.push_back(0.006679257264);
00641 
00642     this->mVariableNames.push_back("Na_i");
00643     this->mVariableUnits.push_back("mM");
00644     this->mInitialConditions.push_back(11.441712311614);
00645 
00646     this->mVariableNames.push_back("Ca_dyad");
00647     this->mVariableUnits.push_back("uM");
00648     this->mInitialConditions.push_back(1.716573130685);
00649 
00650     this->mVariableNames.push_back("Ca_submem");
00651     this->mVariableUnits.push_back("uM");
00652     this->mInitialConditions.push_back(0.226941113355);
00653 
00654     this->mVariableNames.push_back("Ca_i");
00655     this->mVariableUnits.push_back("uM");
00656     this->mInitialConditions.push_back(0.256752008084);
00657 
00658     this->mVariableNames.push_back("Ca_NSR");
00659     this->mVariableUnits.push_back("uM");
00660     this->mInitialConditions.push_back(104.450004990523);
00661 
00662     this->mVariableNames.push_back("tropi");
00663     this->mVariableUnits.push_back("uM");
00664     this->mInitialConditions.push_back(22.171689894953);
00665 
00666     this->mVariableNames.push_back("trops");
00667     this->mVariableUnits.push_back("uM");
00668     this->mInitialConditions.push_back(19.864701949854);
00669 
00670     this->mInitialised = true;
00671 }

Generated on Wed Mar 18 12:51:51 2009 for Chaste by  doxygen 1.5.5