FaberRudy2000Version3Optimised.hpp

00001 #ifndef _FaberRudy2000Version3Optimised
00002 #define _FaberRudy2000Version3Optimised
00003 
00004 // Model: LR_Dynamic_model_2000
00005 // Processed by pycml - CellML Tools in Python
00006 //     (translate: 1004, pycml: 896)
00007 // on Wed Dec 19 11:02:41 2007
00008 
00009 #include <cmath>
00010 #include <cassert>
00011 #include "AbstractCardiacCell.hpp"
00012 #include "Exception.hpp"
00013 #include "AbstractStimulusFunction.hpp"
00014 #include "OdeSystemInformation.hpp"
00015 
00016 class FaberRudy2000Version3OptimisedLookupTables
00017 {
00018 public:
00019     static FaberRudy2000Version3OptimisedLookupTables* Instance()
00020     {
00021         if (mpInstance == NULL)
00022         {
00023             mpInstance = new FaberRudy2000Version3OptimisedLookupTables;
00024         }
00025         return mpInstance;
00026     }
00027 
00028     // Methods to look up values from lookup tables
00029     // using linear interpolation
00030     inline double _lookup_0(unsigned i, double factor)
00031     {
00032         double y1 = _lookup_table_0[i][0];
00033         double y2 = _lookup_table_0[i+1][0];
00034         return y1 + (y2-y1)*factor;
00035     }
00036 
00037     inline double _lookup_1(unsigned i, double factor)
00038     {
00039         double y1 = _lookup_table_0[i][1];
00040         double y2 = _lookup_table_0[i+1][1];
00041         return y1 + (y2-y1)*factor;
00042     }
00043 
00044     inline double _lookup_2(unsigned i, double factor)
00045     {
00046         double y1 = _lookup_table_0[i][2];
00047         double y2 = _lookup_table_0[i+1][2];
00048         return y1 + (y2-y1)*factor;
00049     }
00050 
00051     inline double _lookup_3(unsigned i, double factor)
00052     {
00053         double y1 = _lookup_table_0[i][3];
00054         double y2 = _lookup_table_0[i+1][3];
00055         return y1 + (y2-y1)*factor;
00056     }
00057 
00058     inline double _lookup_4(unsigned i, double factor)
00059     {
00060         double y1 = _lookup_table_0[i][4];
00061         double y2 = _lookup_table_0[i+1][4];
00062         return y1 + (y2-y1)*factor;
00063     }
00064 
00065     inline double _lookup_5(unsigned i, double factor)
00066     {
00067         double y1 = _lookup_table_0[i][5];
00068         double y2 = _lookup_table_0[i+1][5];
00069         return y1 + (y2-y1)*factor;
00070     }
00071 
00072     inline double _lookup_6(unsigned i, double factor)
00073     {
00074         double y1 = _lookup_table_0[i][6];
00075         double y2 = _lookup_table_0[i+1][6];
00076         return y1 + (y2-y1)*factor;
00077     }
00078 
00079     inline double _lookup_7(unsigned i, double factor)
00080     {
00081         double y1 = _lookup_table_0[i][7];
00082         double y2 = _lookup_table_0[i+1][7];
00083         return y1 + (y2-y1)*factor;
00084     }
00085 
00086     inline double _lookup_8(unsigned i, double factor)
00087     {
00088         double y1 = _lookup_table_0[i][8];
00089         double y2 = _lookup_table_0[i+1][8];
00090         return y1 + (y2-y1)*factor;
00091     }
00092 
00093     inline double _lookup_9(unsigned i, double factor)
00094     {
00095         double y1 = _lookup_table_0[i][9];
00096         double y2 = _lookup_table_0[i+1][9];
00097         return y1 + (y2-y1)*factor;
00098     }
00099 
00100     inline double _lookup_10(unsigned i, double factor)
00101     {
00102         double y1 = _lookup_table_0[i][10];
00103         double y2 = _lookup_table_0[i+1][10];
00104         return y1 + (y2-y1)*factor;
00105     }
00106 
00107     inline double _lookup_11(unsigned i, double factor)
00108     {
00109         double y1 = _lookup_table_0[i][11];
00110         double y2 = _lookup_table_0[i+1][11];
00111         return y1 + (y2-y1)*factor;
00112     }
00113 
00114     inline double _lookup_12(unsigned i, double factor)
00115     {
00116         double y1 = _lookup_table_0[i][12];
00117         double y2 = _lookup_table_0[i+1][12];
00118         return y1 + (y2-y1)*factor;
00119     }
00120 
00121     inline double _lookup_13(unsigned i, double factor)
00122     {
00123         double y1 = _lookup_table_0[i][13];
00124         double y2 = _lookup_table_0[i+1][13];
00125         return y1 + (y2-y1)*factor;
00126     }
00127 
00128     inline double _lookup_14(unsigned i, double factor)
00129     {
00130         double y1 = _lookup_table_0[i][14];
00131         double y2 = _lookup_table_0[i+1][14];
00132         return y1 + (y2-y1)*factor;
00133     }
00134 
00135     inline double _lookup_15(unsigned i, double factor)
00136     {
00137         double y1 = _lookup_table_0[i][15];
00138         double y2 = _lookup_table_0[i+1][15];
00139         return y1 + (y2-y1)*factor;
00140     }
00141 
00142     inline double _lookup_16(unsigned i, double factor)
00143     {
00144         double y1 = _lookup_table_0[i][16];
00145         double y2 = _lookup_table_0[i+1][16];
00146         return y1 + (y2-y1)*factor;
00147     }
00148 
00149     inline double _lookup_17(unsigned i, double factor)
00150     {
00151         double y1 = _lookup_table_0[i][17];
00152         double y2 = _lookup_table_0[i+1][17];
00153         return y1 + (y2-y1)*factor;
00154     }
00155 
00156     inline double _lookup_18(unsigned i, double factor)
00157     {
00158         double y1 = _lookup_table_0[i][18];
00159         double y2 = _lookup_table_0[i+1][18];
00160         return y1 + (y2-y1)*factor;
00161     }
00162 
00163     inline double _lookup_19(unsigned i, double factor)
00164     {
00165         double y1 = _lookup_table_0[i][19];
00166         double y2 = _lookup_table_0[i+1][19];
00167         return y1 + (y2-y1)*factor;
00168     }
00169 
00170     inline double _lookup_20(unsigned i, double factor)
00171     {
00172         double y1 = _lookup_table_0[i][20];
00173         double y2 = _lookup_table_0[i+1][20];
00174         return y1 + (y2-y1)*factor;
00175     }
00176 
00177     inline double _lookup_21(unsigned i, double factor)
00178     {
00179         double y1 = _lookup_table_0[i][21];
00180         double y2 = _lookup_table_0[i+1][21];
00181         return y1 + (y2-y1)*factor;
00182     }
00183 
00184     inline double _lookup_22(unsigned i, double factor)
00185     {
00186         double y1 = _lookup_table_0[i][22];
00187         double y2 = _lookup_table_0[i+1][22];
00188         return y1 + (y2-y1)*factor;
00189     }
00190 
00191     inline double _lookup_23(unsigned i, double factor)
00192     {
00193         double y1 = _lookup_table_0[i][23];
00194         double y2 = _lookup_table_0[i+1][23];
00195         return y1 + (y2-y1)*factor;
00196     }
00197 
00198     inline double _lookup_24(unsigned i, double factor)
00199     {
00200         double y1 = _lookup_table_0[i][24];
00201         double y2 = _lookup_table_0[i+1][24];
00202         return y1 + (y2-y1)*factor;
00203     }
00204 
00205     inline double _lookup_25(unsigned i, double factor)
00206     {
00207         double y1 = _lookup_table_0[i][25];
00208         double y2 = _lookup_table_0[i+1][25];
00209         return y1 + (y2-y1)*factor;
00210     }
00211 
00212     inline double _lookup_26(unsigned i, double factor)
00213     {
00214         double y1 = _lookup_table_0[i][26];
00215         double y2 = _lookup_table_0[i+1][26];
00216         return y1 + (y2-y1)*factor;
00217     }
00218 
00219     inline double _lookup_27(unsigned i, double factor)
00220     {
00221         double y1 = _lookup_table_0[i][27];
00222         double y2 = _lookup_table_0[i+1][27];
00223         return y1 + (y2-y1)*factor;
00224     }
00225 
00226     inline double _lookup_28(unsigned i, double factor)
00227     {
00228         double y1 = _lookup_table_0[i][28];
00229         double y2 = _lookup_table_0[i+1][28];
00230         return y1 + (y2-y1)*factor;
00231     }
00232 
00233     inline double _lookup_29(unsigned i, double factor)
00234     {
00235         double y1 = _lookup_table_0[i][29];
00236         double y2 = _lookup_table_0[i+1][29];
00237         return y1 + (y2-y1)*factor;
00238     }
00239 
00240     inline double _lookup_30(unsigned i, double factor)
00241     {
00242         double y1 = _lookup_table_0[i][30];
00243         double y2 = _lookup_table_0[i+1][30];
00244         return y1 + (y2-y1)*factor;
00245     }
00246 
00247     inline double _lookup_31(unsigned i, double factor)
00248     {
00249         double y1 = _lookup_table_0[i][31];
00250         double y2 = _lookup_table_0[i+1][31];
00251         return y1 + (y2-y1)*factor;
00252     }
00253 
00254     inline double _lookup_32(unsigned i, double factor)
00255     {
00256         double y1 = _lookup_table_0[i][32];
00257         double y2 = _lookup_table_0[i+1][32];
00258         return y1 + (y2-y1)*factor;
00259     }
00260 
00261     inline double _lookup_33(unsigned i, double factor)
00262     {
00263         double y1 = _lookup_table_0[i][33];
00264         double y2 = _lookup_table_0[i+1][33];
00265         return y1 + (y2-y1)*factor;
00266     }
00267 
00268     inline double _lookup_34(unsigned i, double factor)
00269     {
00270         double y1 = _lookup_table_0[i][34];
00271         double y2 = _lookup_table_0[i+1][34];
00272         return y1 + (y2-y1)*factor;
00273     }
00274 
00275     inline double _lookup_35(unsigned i, double factor)
00276     {
00277         double y1 = _lookup_table_0[i][35];
00278         double y2 = _lookup_table_0[i+1][35];
00279         return y1 + (y2-y1)*factor;
00280     }
00281 
00282     inline double _lookup_36(unsigned i, double factor)
00283     {
00284         double y1 = _lookup_table_0[i][36];
00285         double y2 = _lookup_table_0[i+1][36];
00286         return y1 + (y2-y1)*factor;
00287     }
00288 
00289     inline double _lookup_37(unsigned i, double factor)
00290     {
00291         double y1 = _lookup_table_0[i][37];
00292         double y2 = _lookup_table_0[i+1][37];
00293         return y1 + (y2-y1)*factor;
00294     }
00295 
00296     inline double _lookup_38(unsigned i, double factor)
00297     {
00298         double y1 = _lookup_table_0[i][38];
00299         double y2 = _lookup_table_0[i+1][38];
00300         return y1 + (y2-y1)*factor;
00301     }
00302 
00303 
00304 protected:
00305     FaberRudy2000Version3OptimisedLookupTables(const FaberRudy2000Version3OptimisedLookupTables&);
00306     FaberRudy2000Version3OptimisedLookupTables& operator= (const FaberRudy2000Version3OptimisedLookupTables&);
00307     FaberRudy2000Version3OptimisedLookupTables()
00308     {
00309         assert(mpInstance == NULL);
00310         for (int i=0; i<20001; i++)
00311         {
00312             double var_membrane__V = -100.0001 + i*0.01;
00313             _lookup_table_0[i][0] = 80.0 * exp((-var_membrane__V) * 0.0909090909091);
00314         }
00315 
00316         for (int i=0; i<20001; i++)
00317         {
00318             double var_membrane__V = -100.0001 + i*0.01;
00319             _lookup_table_0[i][1] = (var_membrane__V <  -40.0) ? (135.0 * exp((80.0 + var_membrane__V) *  -0.147058823529)) : 0.0;
00320         }
00321 
00322         for (int i=0; i<20001; i++)
00323         {
00324             double var_membrane__V = -100.0001 + i*0.01;
00325             _lookup_table_0[i][2] = (var_membrane__V <  -40.0) ? ((3560.0 * exp(0.079 * var_membrane__V)) + (310000000.0 * exp(0.35 * var_membrane__V))) : (1000.0 / (0.13 * (1.0 + exp((var_membrane__V + 10.66) *  -0.0900900900901))));
00326         }
00327 
00328         for (int i=0; i<20001; i++)
00329         {
00330             double var_membrane__V = -100.0001 + i*0.01;
00331             _lookup_table_0[i][3] = (var_membrane__V <  -40.0) ? ((1000.0 * (-((127140.0 * exp(0.2444 * var_membrane__V)) + (3.474e-05 * exp( -0.04391 * var_membrane__V)))) * (var_membrane__V + 37.78)) / (1.0 + exp(0.311 * (var_membrane__V + 79.23)))) : 0.0;
00332         }
00333 
00334         for (int i=0; i<20001; i++)
00335         {
00336             double var_membrane__V = -100.0001 + i*0.01;
00337             _lookup_table_0[i][4] = (var_membrane__V <  -40.0) ? ((121.2 * exp( -0.01052 * var_membrane__V)) / (1.0 + exp( -0.1378 * (var_membrane__V + 40.14)))) : ((300.0 * exp( -2.535e-07 * var_membrane__V)) / (1.0 + exp( -0.1 * (var_membrane__V + 32.0))));
00338         }
00339 
00340         for (int i=0; i<20001; i++)
00341         {
00342             double var_membrane__V = -100.0001 + i*0.01;
00343             _lookup_table_0[i][5] = exp((2.0 * var_membrane__V * 96485.0) * 3.87996927064e-07);
00344         }
00345 
00346         for (int i=0; i<20001; i++)
00347         {
00348             double var_membrane__V = -100.0001 + i*0.01;
00349             _lookup_table_0[i][6] = exp((2.0 * var_membrane__V * 96485.0) * 3.87996927064e-07) - 1.0;
00350         }
00351 
00352         for (int i=0; i<20001; i++)
00353         {
00354             double var_membrane__V = -100.0001 + i*0.01;
00355             _lookup_table_0[i][7] = exp((1.0 * var_membrane__V * 96485.0) * 3.87996927064e-07);
00356         }
00357 
00358         for (int i=0; i<20001; i++)
00359         {
00360             double var_membrane__V = -100.0001 + i*0.01;
00361             _lookup_table_0[i][8] = exp((1.0 * var_membrane__V * 96485.0) * 3.87996927064e-07) - 1.0;
00362         }
00363 
00364         for (int i=0; i<20001; i++)
00365         {
00366             double var_membrane__V = -100.0001 + i*0.01;
00367             _lookup_table_0[i][9] = exp((1.0 * var_membrane__V * 96485.0) * 3.87996927064e-07);
00368         }
00369 
00370         for (int i=0; i<20001; i++)
00371         {
00372             double var_membrane__V = -100.0001 + i*0.01;
00373             _lookup_table_0[i][10] = exp((1.0 * var_membrane__V * 96485.0) * 3.87996927064e-07) - 1.0;
00374         }
00375 
00376         for (int i=0; i<20001; i++)
00377         {
00378             double var_membrane__V = -100.0001 + i*0.01;
00379             _lookup_table_0[i][11] = (1.0 / (1.0 + exp((var_membrane__V + 32.0) * 0.125))) + (0.6 / (1.0 + exp((50.0 - var_membrane__V) * 0.05)));
00380         }
00381 
00382         for (int i=0; i<20001; i++)
00383         {
00384             double var_membrane__V = -100.0001 + i*0.01;
00385             _lookup_table_0[i][12] = 0.001 / ((0.0197 * exp(-pow(0.0337 * (var_membrane__V + 10.0), 2.0))) + 0.02);
00386         }
00387 
00388         for (int i=0; i<20001; i++)
00389         {
00390             double var_membrane__V = -100.0001 + i*0.01;
00391             _lookup_table_0[i][13] = 1.0 / (1.0 + exp((-(var_membrane__V + 14.0)) * 0.0925925925926));
00392         }
00393 
00394         for (int i=0; i<20001; i++)
00395         {
00396             double var_membrane__V = -100.0001 + i*0.01;
00397             _lookup_table_0[i][14] = 0.0037 + (0.0061 / (1.0 + exp((var_membrane__V + 25.0) * 0.222222222222)));
00398         }
00399 
00400         for (int i=0; i<20001; i++)
00401         {
00402             double var_membrane__V = -100.0001 + i*0.01;
00403             _lookup_table_0[i][15] = 1.0 / (1.0 + exp((var_membrane__V + 60.0) * 0.178571428571));
00404         }
00405 
00406         for (int i=0; i<20001; i++)
00407         {
00408             double var_membrane__V = -100.0001 + i*0.01;
00409             _lookup_table_0[i][16] = 1.0 / (1.0 + exp((var_membrane__V + 9.0) * 0.0446428571429));
00410         }
00411 
00412         for (int i=0; i<20001; i++)
00413         {
00414             double var_membrane__V = -100.0001 + i*0.01;
00415             _lookup_table_0[i][17] = 1.0 / (1.0 + exp((-(var_membrane__V + 21.5)) * 0.133333333333));
00416         }
00417 
00418         for (int i=0; i<20001; i++)
00419         {
00420             double var_membrane__V = -100.0001 + i*0.01;
00421             _lookup_table_0[i][18] = 0.001 / (((0.00138 * (var_membrane__V + 14.2)) / (1.0 - exp( -0.123 * (var_membrane__V + 14.2)))) + ((0.00061 * (var_membrane__V + 38.9)) / (exp(0.145 * (var_membrane__V + 38.9)) - 1.0)));
00422         }
00423 
00424         for (int i=0; i<20001; i++)
00425         {
00426             double var_membrane__V = -100.0001 + i*0.01;
00427             _lookup_table_0[i][19] = 1.0 / (1.0 + exp((-(var_membrane__V - 1.5)) * 0.059880239521));
00428         }
00429 
00430         for (int i=0; i<20001; i++)
00431         {
00432             double var_membrane__V = -100.0001 + i*0.01;
00433             _lookup_table_0[i][20] = 0.001 / (((7.19e-05 * (var_membrane__V + 30.0)) / (1.0 - exp( -0.148 * (var_membrane__V + 30.0)))) + ((0.000131 * (var_membrane__V + 30.0)) / (exp(0.0687 * (var_membrane__V + 30.0)) - 1.0)));
00434         }
00435 
00436         for (int i=0; i<20001; i++)
00437         {
00438             double var_membrane__V = -100.0001 + i*0.01;
00439             _lookup_table_0[i][21] = 1.0 / (1.0 + exp((-(var_membrane__V - 1.5)) * 0.059880239521));
00440         }
00441 
00442         for (int i=0; i<20001; i++)
00443         {
00444             double var_membrane__V = -100.0001 + i*0.01;
00445             _lookup_table_0[i][22] = 0.004 / (((7.19e-05 * (var_membrane__V + 30.0)) / (1.0 - exp( -0.148 * (var_membrane__V + 30.0)))) + ((0.000131 * (var_membrane__V + 30.0)) / (exp(0.0687 * (var_membrane__V + 30.0)) - 1.0)));
00446         }
00447 
00448         for (int i=0; i<20001; i++)
00449         {
00450             double var_membrane__V = -100.0001 + i*0.01;
00451             _lookup_table_0[i][23] = 1.0 / (1.0 + exp((7.488 - var_membrane__V) * 0.167224080268));
00452         }
00453 
00454         for (int i=0; i<20001; i++)
00455         {
00456             double var_membrane__V = -100.0001 + i*0.01;
00457             _lookup_table_0[i][24] = 0.8 - (0.65 / (1.0 + exp((var_membrane__V + 125.0) * 0.0666666666667)));
00458         }
00459 
00460         for (int i=0; i<20001; i++)
00461         {
00462             double var_membrane__V = -100.0001 + i*0.01;
00463             _lookup_table_0[i][25] = exp(var_membrane__V * 0.01);
00464         }
00465 
00466         for (int i=0; i<20001; i++)
00467         {
00468             double var_membrane__V = -100.0001 + i*0.01;
00469             _lookup_table_0[i][26] = (10000.0 * exp((var_membrane__V - 40.0) * 0.04)) / (1.0 + exp((var_membrane__V - 40.0) * 0.04));
00470         }
00471 
00472         for (int i=0; i<20001; i++)
00473         {
00474             double var_membrane__V = -100.0001 + i*0.01;
00475             _lookup_table_0[i][27] = (10000.0 * exp((-(var_membrane__V + 90.0)) * 0.04)) / (1.0 + exp((-(var_membrane__V + 90.0)) * 0.04));
00476         }
00477 
00478         for (int i=0; i<20001; i++)
00479         {
00480             double var_membrane__V = -100.0001 + i*0.01;
00481             _lookup_table_0[i][28] = 15.0 / (1.0 + exp((var_membrane__V + 60.0) * 0.2));
00482         }
00483 
00484         for (int i=0; i<20001; i++)
00485         {
00486             double var_membrane__V = -100.0001 + i*0.01;
00487             _lookup_table_0[i][29] = (100.0 * exp((var_membrane__V + 25.0) * 0.2)) / (1.0 + exp((var_membrane__V + 25.0) * 0.2));
00488         }
00489 
00490         for (int i=0; i<20001; i++)
00491         {
00492             double var_membrane__V = -100.0001 + i*0.01;
00493             _lookup_table_0[i][30] = 2.25 * (1.0 / (1.0 + (0.1245 * exp(( -0.1 * var_membrane__V * 96485.0) * 3.87996927064e-07)) + (0.0365 * 0.872719796652 * exp(((-var_membrane__V) * 96485.0) * 3.87996927064e-07)))) * 1.0;
00494         }
00495 
00496         for (int i=0; i<20001; i++)
00497         {
00498             double var_membrane__V = -100.0001 + i*0.01;
00499             _lookup_table_0[i][31] = exp((1.0 * var_membrane__V * 96485.0) * 3.87996927064e-07);
00500         }
00501 
00502         for (int i=0; i<20001; i++)
00503         {
00504             double var_membrane__V = -100.0001 + i*0.01;
00505             _lookup_table_0[i][32] = exp((1.0 * var_membrane__V * 96485.0) * 3.87996927064e-07) - 1.0;
00506         }
00507 
00508         for (int i=0; i<20001; i++)
00509         {
00510             double var_membrane__V = -100.0001 + i*0.01;
00511             _lookup_table_0[i][33] = exp((1.0 * var_membrane__V * 96485.0) * 3.87996927064e-07);
00512         }
00513 
00514         for (int i=0; i<20001; i++)
00515         {
00516             double var_membrane__V = -100.0001 + i*0.01;
00517             _lookup_table_0[i][34] = exp((1.0 * var_membrane__V * 96485.0) * 3.87996927064e-07) - 1.0;
00518         }
00519 
00520         for (int i=0; i<20001; i++)
00521         {
00522             double var_membrane__V = -100.0001 + i*0.01;
00523             _lookup_table_0[i][35] = exp(( -0.85 * var_membrane__V * 96485.0) * 3.87996927064e-07);
00524         }
00525 
00526         for (int i=0; i<20001; i++)
00527         {
00528             double var_membrane__V = -100.0001 + i*0.01;
00529             _lookup_table_0[i][36] = exp((var_membrane__V * 96485.0) * 3.87996927064e-07);
00530         }
00531 
00532         for (int i=0; i<20001; i++)
00533         {
00534             double var_membrane__V = -100.0001 + i*0.01;
00535             _lookup_table_0[i][37] = exp(( -0.85 * var_membrane__V * 96485.0) * 3.87996927064e-07);
00536         }
00537 
00538         for (int i=0; i<20001; i++)
00539         {
00540             double var_membrane__V = -100.0001 + i*0.01;
00541             _lookup_table_0[i][38] = exp((var_membrane__V * 96485.0) * 3.87996927064e-07);
00542         }
00543 
00544     }
00545 private:
00547     static FaberRudy2000Version3OptimisedLookupTables *mpInstance;
00548     // Lookup tables
00549     double _lookup_table_0[20001][39];
00550 
00551 };
00552 
00553 FaberRudy2000Version3OptimisedLookupTables* FaberRudy2000Version3OptimisedLookupTables::mpInstance = NULL;
00554 
00555 class FaberRudy2000Version3Optimised : public AbstractCardiacCell
00556 {
00557 public:
00558     FaberRudy2000Version3Optimised(AbstractIvpOdeSolver *pSolver,
00559                                      AbstractStimulusFunction *pIntracellularStimulus)
00560         : AbstractCardiacCell(pSolver, 25, 0, pIntracellularStimulus)
00561     {
00562         // Time units: second
00563         mpSystemInfo = OdeSystemInformation<FaberRudy2000Version3Optimised>::Instance();
00564 
00565         Init();
00566 
00567     }
00568 
00569     ~FaberRudy2000Version3Optimised(void)
00570     {
00571     }
00572 
00573     // Lookup table indices
00574     unsigned _table_index_0;
00575     double _factor_0;
00576     
00577     double GetIIonic()
00578     {
00579         std::vector<double>& rY = rGetStateVariables();
00580         double var_membrane__V = rY[0];
00581         // Units: millivolt; Initial value: -90
00582         double var_fast_sodium_current_m_gate__m = rY[1];
00583         // Units: dimensionless; Initial value: 0.0008
00584         double var_fast_sodium_current_h_gate__h = rY[2];
00585         // Units: dimensionless; Initial value: 0.993771
00586         double var_fast_sodium_current_j_gate__j = rY[3];
00587         // Units: dimensionless; Initial value: 0.995727
00588         double var_L_type_Ca_channel_d_gate__d = rY[4];
00589         // Units: dimensionless; Initial value: 3.210618e-6
00590         double var_L_type_Ca_channel_f_gate__f = rY[5];
00591         // Units: dimensionless; Initial value: 0.999837
00592         double var_T_type_Ca_channel_b_gate__b = rY[6];
00593         // Units: dimensionless; Initial value: 0.000970231
00594         double var_T_type_Ca_channel_g_gate__g = rY[7];
00595         // Units: dimensionless; Initial value: 0.994305
00596         double var_rapid_delayed_rectifier_potassium_current_xr_gate__xr = rY[8];
00597         // Units: dimensionless; Initial value: 0.000124042
00598         double var_slow_delayed_rectifier_potassium_current_xs1_gate__xs1 = rY[9];
00599         // Units: dimensionless; Initial value: 0.00445683
00600         double var_slow_delayed_rectifier_potassium_current_xs2_gate__xs2 = rY[10];
00601         // Units: dimensionless; Initial value: 0.00445683
00602         double var_transient_outward_current_zdv_gate__zdv = rY[11];
00603         // Units: dimensionless; Initial value: 0.5
00604         double var_transient_outward_current_ydv_gate__ydv = rY[12];
00605         // Units: dimensionless; Initial value: 0.5
00606         double var_calcium_dynamics__Cai = rY[13];
00607         // Units: millimolar; Initial value: 6e-5
00608         double var_ionic_concentrations__Nai = rY[23];
00609         // Units: millimolar; Initial value: 9
00610         double var_ionic_concentrations__Ki = rY[24];
00611         // Units: millimolar; Initial value: 141.2
00612 
00613         // Lookup table indexing
00614 #define COVERAGE_IGNORE
00615         if (var_membrane__V>99.9999 || var_membrane__V<-100.0001)
00616             EXCEPTION(DumpState("V outside lookup table range"));
00617 #undef COVERAGE_IGNORE
00618         double _offset_0 = var_membrane__V - -100.0001;
00619         double _offset_0_over_table_step = _offset_0 * 100.0;
00620         unsigned _table_index_0 = (unsigned) floor(_offset_0_over_table_step);
00621         double _factor_0 = _offset_0_over_table_step - _table_index_0;
00622 
00623         double var_fast_sodium_current__E_Na = 26.7123387055 * log(132.0 / var_ionic_concentrations__Nai);
00624         double var_fast_sodium_current__i_Na = 16.0 * pow(var_fast_sodium_current_m_gate__m, 3.0) * var_fast_sodium_current_h_gate__h * var_fast_sodium_current_j_gate__j * (var_membrane__V - var_fast_sodium_current__E_Na);
00625         double var_membrane__i_Na = var_fast_sodium_current__i_Na;
00626         double var_L_type_Ca_channel_f_Ca_gate__f_Ca = 1.0 / (1.0 + (var_calcium_dynamics__Cai * 1666.66666667));
00627         double var_L_type_Ca_channel__i_CaCa = var_L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_gate__f * var_L_type_Ca_channel_f_Ca_gate__f_Ca * ((((0.00054 * 4.0 * var_membrane__V * 9309355225.0) * 3.87996927064e-07) * ((1.0 * var_calcium_dynamics__Cai * FaberRudy2000Version3OptimisedLookupTables::Instance()->_lookup_5(_table_index_0, _factor_0)) - 0.6138)) / FaberRudy2000Version3OptimisedLookupTables::Instance()->_lookup_6(_table_index_0, _factor_0));
00628         double var_L_type_Ca_channel__i_CaNa = var_L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_gate__f * var_L_type_Ca_channel_f_Ca_gate__f_Ca * ((((6.75e-07 * 1.0 * var_membrane__V * 9309355225.0) * 3.87996927064e-07) * ((0.75 * var_ionic_concentrations__Nai * FaberRudy2000Version3OptimisedLookupTables::Instance()->_lookup_7(_table_index_0, _factor_0)) - 99.0)) / FaberRudy2000Version3OptimisedLookupTables::Instance()->_lookup_8(_table_index_0, _factor_0));
00629         double var_L_type_Ca_channel__i_CaK = var_L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_gate__f * var_L_type_Ca_channel_f_Ca_gate__f_Ca * ((((1.93e-07 * 1.0 * var_membrane__V * 9309355225.0) * 3.87996927064e-07) * ((0.75 * var_ionic_concentrations__Ki * FaberRudy2000Version3OptimisedLookupTables::Instance()->_lookup_9(_table_index_0, _factor_0)) - 3.375)) / FaberRudy2000Version3OptimisedLookupTables::Instance()->_lookup_10(_table_index_0, _factor_0));
00630         double var_L_type_Ca_channel__i_Ca_L = var_L_type_Ca_channel__i_CaCa + var_L_type_Ca_channel__i_CaK + var_L_type_Ca_channel__i_CaNa;
00631         double var_membrane__i_Ca_L = var_L_type_Ca_channel__i_Ca_L;
00632         double var_calcium_background_current__E_Ca = 13.3561693527 * log(1.8 / var_calcium_dynamics__Cai);
00633         double var_T_type_Ca_channel__i_Ca_T = 0.05 * var_T_type_Ca_channel_b_gate__b * var_T_type_Ca_channel_b_gate__b * var_T_type_Ca_channel_g_gate__g * (var_membrane__V - var_calcium_background_current__E_Ca);
00634         double var_membrane__i_Ca_T = var_T_type_Ca_channel__i_Ca_T;
00635         double var_time_independent_potassium_current__E_K = 26.7123387055 * log(4.5 / var_ionic_concentrations__Ki);
00636         double var_rapid_delayed_rectifier_potassium_current__i_Kr = 0.0238624460886 * var_rapid_delayed_rectifier_potassium_current_xr_gate__xr * FaberRudy2000Version3OptimisedLookupTables::Instance()->_lookup_16(_table_index_0, _factor_0) * (var_membrane__V - var_time_independent_potassium_current__E_K);
00637         double var_membrane__i_Kr = var_rapid_delayed_rectifier_potassium_current__i_Kr;
00638         double var_slow_delayed_rectifier_potassium_current__i_Ks = (0.433 * (1.0 + (0.6 / (1.0 + pow(3.8e-05 / var_calcium_dynamics__Cai, 1.4))))) * var_slow_delayed_rectifier_potassium_current_xs1_gate__xs1 * var_slow_delayed_rectifier_potassium_current_xs2_gate__xs2 * (var_membrane__V - (26.7123387055 * log(6.91956 / (var_ionic_concentrations__Ki + (0.01833 * var_ionic_concentrations__Nai)))));
00639         double var_membrane__i_Ks = var_slow_delayed_rectifier_potassium_current__i_Ks;
00640         double var_sodium_activated_potassium_current__i_K_Na = 0.0 * (0.85 / (1.0 + pow(66.0 / var_ionic_concentrations__Nai, 2.8))) * FaberRudy2000Version3OptimisedLookupTables::Instance()->_lookup_24(_table_index_0, _factor_0) * (var_membrane__V - var_time_independent_potassium_current__E_K);
00641         double var_membrane__i_K_Na = var_sodium_activated_potassium_current__i_K_Na;
00642         double var_ATP_sensitive_potassium_current__i_K_ATP = 2.75741043608e-08 * (var_membrane__V - var_time_independent_potassium_current__E_K);
00643         double var_membrane__i_K_ATP = var_ATP_sensitive_potassium_current__i_K_ATP;
00644         double var_transient_outward_current__i_to = 0.0 * pow(var_transient_outward_current_zdv_gate__zdv, 3.0) * var_transient_outward_current_ydv_gate__ydv * FaberRudy2000Version3OptimisedLookupTables::Instance()->_lookup_25(_table_index_0, _factor_0) * (var_membrane__V - var_time_independent_potassium_current__E_K);
00645         double var_membrane__i_to = var_transient_outward_current__i_to;
00646         double var_Na_Ca_exchanger__i_NaCa = (0.00025 * FaberRudy2000Version3OptimisedLookupTables::Instance()->_lookup_35(_table_index_0, _factor_0) * ((FaberRudy2000Version3OptimisedLookupTables::Instance()->_lookup_36(_table_index_0, _factor_0) * pow(var_ionic_concentrations__Nai, 3.0) * 1.8) - (2299968.0 * var_calcium_dynamics__Cai))) / (1.0 + (0.0001 * FaberRudy2000Version3OptimisedLookupTables::Instance()->_lookup_37(_table_index_0, _factor_0) * ((FaberRudy2000Version3OptimisedLookupTables::Instance()->_lookup_38(_table_index_0, _factor_0) * pow(var_ionic_concentrations__Nai, 3.0) * 1.8) + (2299968.0 * var_calcium_dynamics__Cai))));
00647         double var_membrane__i_NaCa = var_Na_Ca_exchanger__i_NaCa;
00648         double var_time_independent_potassium_current_K1_gate__alpha_K1 = 1020.0 / (1.0 + exp(0.2385 * ((var_membrane__V - var_time_independent_potassium_current__E_K) - 59.215)));
00649         double var_time_independent_potassium_current__i_K1 = 0.684653196881 * (var_time_independent_potassium_current_K1_gate__alpha_K1 / (var_time_independent_potassium_current_K1_gate__alpha_K1 + ((1000.0 * ((0.49124 * exp(0.08032 * ((var_membrane__V - var_time_independent_potassium_current__E_K) + 5.476))) + exp(0.06175 * ((var_membrane__V - var_time_independent_potassium_current__E_K) - 594.31)))) / (1.0 + exp( -0.5143 * ((var_membrane__V - var_time_independent_potassium_current__E_K) + 4.753)))))) * (var_membrane__V - var_time_independent_potassium_current__E_K);
00650         double var_membrane__i_K1 = var_time_independent_potassium_current__i_K1;
00651         double var_plateau_potassium_current__i_Kp = 0.00552 * FaberRudy2000Version3OptimisedLookupTables::Instance()->_lookup_23(_table_index_0, _factor_0) * (var_membrane__V - var_time_independent_potassium_current__E_K);
00652         double var_membrane__i_Kp = var_plateau_potassium_current__i_Kp;
00653         double var_sarcolemmal_calcium_pump__i_p_Ca = (1.15 * var_calcium_dynamics__Cai) / (0.0005 + var_calcium_dynamics__Cai);
00654         double var_membrane__i_p_Ca = var_sarcolemmal_calcium_pump__i_p_Ca;
00655         double var_sodium_background_current__i_Na_b = 0.004 * (var_membrane__V - var_fast_sodium_current__E_Na);
00656         double var_membrane__i_Na_b = var_sodium_background_current__i_Na_b;
00657         double var_calcium_background_current__i_Ca_b = 0.003016 * (var_membrane__V - var_calcium_background_current__E_Ca);
00658         double var_membrane__i_Ca_b = var_calcium_background_current__i_Ca_b;
00659         double var_sodium_potassium_pump__i_NaK = ((FaberRudy2000Version3OptimisedLookupTables::Instance()->_lookup_30(_table_index_0, _factor_0) / (1.0 + pow(10.0 / var_ionic_concentrations__Nai, 2.0))) * 4.5) * 0.166666666667;
00660         double var_membrane__i_NaK = var_sodium_potassium_pump__i_NaK;
00661         double var_non_specific_calcium_activated_current__i_ns_Na = (((((0.0 * 1.0 * var_membrane__V * 9309355225.0) * 3.87996927064e-07) * ((0.75 * var_ionic_concentrations__Nai * FaberRudy2000Version3OptimisedLookupTables::Instance()->_lookup_31(_table_index_0, _factor_0)) - 99.0)) / FaberRudy2000Version3OptimisedLookupTables::Instance()->_lookup_32(_table_index_0, _factor_0)) * 1.0) / (1.0 + pow(0.0012 / var_calcium_dynamics__Cai, 3.0));
00662         double var_non_specific_calcium_activated_current__i_ns_K = (((((0.0 * 1.0 * var_membrane__V * 9309355225.0) * 3.87996927064e-07) * ((0.75 * var_ionic_concentrations__Ki * FaberRudy2000Version3OptimisedLookupTables::Instance()->_lookup_33(_table_index_0, _factor_0)) - 3.375)) / FaberRudy2000Version3OptimisedLookupTables::Instance()->_lookup_34(_table_index_0, _factor_0)) * 1.0) / (1.0 + pow(0.0012 / var_calcium_dynamics__Cai, 3.0));
00663         double var_non_specific_calcium_activated_current__i_ns_Ca = var_non_specific_calcium_activated_current__i_ns_Na + var_non_specific_calcium_activated_current__i_ns_K;
00664         double var_membrane__i_ns_Ca = var_non_specific_calcium_activated_current__i_ns_Ca;
00665 
00666         return var_membrane__i_Na+var_membrane__i_Ca_L+var_membrane__i_Ca_T+var_membrane__i_Kr+var_membrane__i_Ks+var_membrane__i_K_Na+var_membrane__i_K_ATP+var_membrane__i_to+var_membrane__i_NaCa+var_membrane__i_K1+var_membrane__i_Kp+var_membrane__i_p_Ca+var_membrane__i_Na_b+var_membrane__i_Ca_b+var_membrane__i_NaK+var_membrane__i_ns_Ca;
00667     }
00668 
00669     void EvaluateYDerivatives (
00670             double var_environment__time,
00671             const std::vector<double> &rY,
00672             std::vector<double> &rDY)
00673     {
00674         // Inputs:
00675         // Time units: second
00676         var_environment__time *= 1e-3;
00677         double var_membrane__V = rY[0];
00678         // Units: millivolt; Initial value: -90
00679         double var_fast_sodium_current_m_gate__m = rY[1];
00680         // Units: dimensionless; Initial value: 0.0008
00681         double var_fast_sodium_current_h_gate__h = rY[2];
00682         // Units: dimensionless; Initial value: 0.993771
00683         double var_fast_sodium_current_j_gate__j = rY[3];
00684         // Units: dimensionless; Initial value: 0.995727
00685         double var_L_type_Ca_channel_d_gate__d = rY[4];
00686         // Units: dimensionless; Initial value: 3.210618e-6
00687         double var_L_type_Ca_channel_f_gate__f = rY[5];
00688         // Units: dimensionless; Initial value: 0.999837
00689         double var_T_type_Ca_channel_b_gate__b = rY[6];
00690         // Units: dimensionless; Initial value: 0.000970231
00691         double var_T_type_Ca_channel_g_gate__g = rY[7];
00692         // Units: dimensionless; Initial value: 0.994305
00693         double var_rapid_delayed_rectifier_potassium_current_xr_gate__xr = rY[8];
00694         // Units: dimensionless; Initial value: 0.000124042
00695         double var_slow_delayed_rectifier_potassium_current_xs1_gate__xs1 = rY[9];
00696         // Units: dimensionless; Initial value: 0.00445683
00697         double var_slow_delayed_rectifier_potassium_current_xs2_gate__xs2 = rY[10];
00698         // Units: dimensionless; Initial value: 0.00445683
00699         double var_transient_outward_current_zdv_gate__zdv = rY[11];
00700         // Units: dimensionless; Initial value: 0.5
00701         double var_transient_outward_current_ydv_gate__ydv = rY[12];
00702         // Units: dimensionless; Initial value: 0.5
00703         double var_calcium_dynamics__Cai = rY[13];
00704         // Units: millimolar; Initial value: 6e-5
00705         double var_calcium_dynamics__Ca_JSR = rY[14];
00706         // Units: millimolar; Initial value: 1.8
00707         double var_calcium_dynamics__Ca_NSR = rY[15];
00708         // Units: millimolar; Initial value: 1.8
00709         double var_calcium_dynamics__APtrack = rY[16];
00710         // Units: dimensionless; Initial value: 0
00711         double var_calcium_dynamics__APtrack2 = rY[17];
00712         // Units: dimensionless; Initial value: 0
00713         double var_calcium_dynamics__APtrack3 = rY[18];
00714         // Units: dimensionless; Initial value: 0
00715         double var_calcium_dynamics__Cainfluxtrack = rY[19];
00716         // Units: dimensionless; Initial value: 0
00717         double var_calcium_dynamics__OVRLDtrack = rY[20];
00718         // Units: dimensionless; Initial value: 0
00719         double var_calcium_dynamics__OVRLDtrack2 = rY[21];
00720         // Units: dimensionless; Initial value: 0
00721         double var_calcium_dynamics__OVRLDtrack3 = rY[22];
00722         // Units: dimensionless; Initial value: 0
00723         double var_ionic_concentrations__Nai = rY[23];
00724         // Units: millimolar; Initial value: 9
00725         double var_ionic_concentrations__Ki = rY[24];
00726         // Units: millimolar; Initial value: 141.2
00727 
00728 
00729         // Lookup table indexing
00730 #define COVERAGE_IGNORE
00731         if (var_membrane__V>99.9999 || var_membrane__V<-100.0001)
00732             EXCEPTION(DumpState("V outside lookup table range"));
00733 #undef COVERAGE_IGNORE
00734         double _offset_0 = var_membrane__V - -100.0001;
00735         double _offset_0_over_table_step = _offset_0 * 100.0;
00736         unsigned _table_index_0 = (unsigned) floor(_offset_0_over_table_step);
00737         double _factor_0 = _offset_0_over_table_step - _table_index_0;
00738 
00739         // Mathematics
00740         double var_membrane__I_st = GetStimulus(var_environment__time*1000);
00741         double var_fast_sodium_current__E_Na = 26.7123387055 * log(132.0 / var_ionic_concentrations__Nai);
00742         double var_fast_sodium_current__i_Na = 16.0 * pow(var_fast_sodium_current_m_gate__m, 3.0) * var_fast_sodium_current_h_gate__h * var_fast_sodium_current_j_gate__j * (var_membrane__V - var_fast_sodium_current__E_Na);
00743         double var_membrane__i_Na = var_fast_sodium_current__i_Na;
00744         double var_L_type_Ca_channel_f_Ca_gate__f_Ca = 1.0 / (1.0 + (var_calcium_dynamics__Cai * 1666.66666667));
00745         double var_L_type_Ca_channel__i_CaCa = var_L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_gate__f * var_L_type_Ca_channel_f_Ca_gate__f_Ca * ((((0.00054 * 4.0 * var_membrane__V * 9309355225.0) * 3.87996927064e-07) * ((1.0 * var_calcium_dynamics__Cai * FaberRudy2000Version3OptimisedLookupTables::Instance()->_lookup_5(_table_index_0, _factor_0)) - 0.6138)) / FaberRudy2000Version3OptimisedLookupTables::Instance()->_lookup_6(_table_index_0, _factor_0));
00746         double var_L_type_Ca_channel__i_CaNa = var_L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_gate__f * var_L_type_Ca_channel_f_Ca_gate__f_Ca * ((((6.75e-07 * 1.0 * var_membrane__V * 9309355225.0) * 3.87996927064e-07) * ((0.75 * var_ionic_concentrations__Nai * FaberRudy2000Version3OptimisedLookupTables::Instance()->_lookup_7(_table_index_0, _factor_0)) - 99.0)) / FaberRudy2000Version3OptimisedLookupTables::Instance()->_lookup_8(_table_index_0, _factor_0));
00747         double var_L_type_Ca_channel__i_CaK = var_L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_gate__f * var_L_type_Ca_channel_f_Ca_gate__f_Ca * ((((1.93e-07 * 1.0 * var_membrane__V * 9309355225.0) * 3.87996927064e-07) * ((0.75 * var_ionic_concentrations__Ki * FaberRudy2000Version3OptimisedLookupTables::Instance()->_lookup_9(_table_index_0, _factor_0)) - 3.375)) / FaberRudy2000Version3OptimisedLookupTables::Instance()->_lookup_10(_table_index_0, _factor_0));
00748         double var_L_type_Ca_channel__i_Ca_L = var_L_type_Ca_channel__i_CaCa + var_L_type_Ca_channel__i_CaK + var_L_type_Ca_channel__i_CaNa;
00749         double var_membrane__i_Ca_L = var_L_type_Ca_channel__i_Ca_L;
00750         double var_calcium_background_current__E_Ca = 13.3561693527 * log(1.8 / var_calcium_dynamics__Cai);
00751         double var_T_type_Ca_channel__i_Ca_T = 0.05 * var_T_type_Ca_channel_b_gate__b * var_T_type_Ca_channel_b_gate__b * var_T_type_Ca_channel_g_gate__g * (var_membrane__V - var_calcium_background_current__E_Ca);
00752         double var_membrane__i_Ca_T = var_T_type_Ca_channel__i_Ca_T;
00753         double var_time_independent_potassium_current__E_K = 26.7123387055 * log(4.5 / var_ionic_concentrations__Ki);
00754         double var_rapid_delayed_rectifier_potassium_current__i_Kr = 0.0238624460886 * var_rapid_delayed_rectifier_potassium_current_xr_gate__xr * FaberRudy2000Version3OptimisedLookupTables::Instance()->_lookup_16(_table_index_0, _factor_0) * (var_membrane__V - var_time_independent_potassium_current__E_K);
00755         double var_membrane__i_Kr = var_rapid_delayed_rectifier_potassium_current__i_Kr;
00756         double var_slow_delayed_rectifier_potassium_current__i_Ks = (0.433 * (1.0 + (0.6 / (1.0 + pow(3.8e-05 / var_calcium_dynamics__Cai, 1.4))))) * var_slow_delayed_rectifier_potassium_current_xs1_gate__xs1 * var_slow_delayed_rectifier_potassium_current_xs2_gate__xs2 * (var_membrane__V - (26.7123387055 * log(6.91956 / (var_ionic_concentrations__Ki + (0.01833 * var_ionic_concentrations__Nai)))));
00757         double var_membrane__i_Ks = var_slow_delayed_rectifier_potassium_current__i_Ks;
00758         double var_sodium_activated_potassium_current__i_K_Na = 0.0 * (0.85 / (1.0 + pow(66.0 / var_ionic_concentrations__Nai, 2.8))) * FaberRudy2000Version3OptimisedLookupTables::Instance()->_lookup_24(_table_index_0, _factor_0) * (var_membrane__V - var_time_independent_potassium_current__E_K);
00759         double var_membrane__i_K_Na = var_sodium_activated_potassium_current__i_K_Na;
00760         double var_ATP_sensitive_potassium_current__i_K_ATP = 2.75741043608e-08 * (var_membrane__V - var_time_independent_potassium_current__E_K);
00761         double var_membrane__i_K_ATP = var_ATP_sensitive_potassium_current__i_K_ATP;
00762         double var_transient_outward_current__i_to = 0.0 * pow(var_transient_outward_current_zdv_gate__zdv, 3.0) * var_transient_outward_current_ydv_gate__ydv * FaberRudy2000Version3OptimisedLookupTables::Instance()->_lookup_25(_table_index_0, _factor_0) * (var_membrane__V - var_time_independent_potassium_current__E_K);
00763         double var_membrane__i_to = var_transient_outward_current__i_to;
00764         double var_Na_Ca_exchanger__i_NaCa = (0.00025 * FaberRudy2000Version3OptimisedLookupTables::Instance()->_lookup_35(_table_index_0, _factor_0) * ((FaberRudy2000Version3OptimisedLookupTables::Instance()->_lookup_36(_table_index_0, _factor_0) * pow(var_ionic_concentrations__Nai, 3.0) * 1.8) - (2299968.0 * var_calcium_dynamics__Cai))) / (1.0 + (0.0001 * FaberRudy2000Version3OptimisedLookupTables::Instance()->_lookup_37(_table_index_0, _factor_0) * ((FaberRudy2000Version3OptimisedLookupTables::Instance()->_lookup_38(_table_index_0, _factor_0) * pow(var_ionic_concentrations__Nai, 3.0) * 1.8) + (2299968.0 * var_calcium_dynamics__Cai))));
00765         double var_membrane__i_NaCa = var_Na_Ca_exchanger__i_NaCa;
00766         double var_time_independent_potassium_current_K1_gate__alpha_K1 = 1020.0 / (1.0 + exp(0.2385 * ((var_membrane__V - var_time_independent_potassium_current__E_K) - 59.215)));
00767         double var_time_independent_potassium_current__i_K1 = 0.684653196881 * (var_time_independent_potassium_current_K1_gate__alpha_K1 / (var_time_independent_potassium_current_K1_gate__alpha_K1 + ((1000.0 * ((0.49124 * exp(0.08032 * ((var_membrane__V - var_time_independent_potassium_current__E_K) + 5.476))) + exp(0.06175 * ((var_membrane__V - var_time_independent_potassium_current__E_K) - 594.31)))) / (1.0 + exp( -0.5143 * ((var_membrane__V - var_time_independent_potassium_current__E_K) + 4.753)))))) * (var_membrane__V - var_time_independent_potassium_current__E_K);
00768         double var_membrane__i_K1 = var_time_independent_potassium_current__i_K1;
00769         double var_plateau_potassium_current__i_Kp = 0.00552 * FaberRudy2000Version3OptimisedLookupTables::Instance()->_lookup_23(_table_index_0, _factor_0) * (var_membrane__V - var_time_independent_potassium_current__E_K);
00770         double var_membrane__i_Kp = var_plateau_potassium_current__i_Kp;
00771         double var_sarcolemmal_calcium_pump__i_p_Ca = (1.15 * var_calcium_dynamics__Cai) / (0.0005 + var_calcium_dynamics__Cai);
00772         double var_membrane__i_p_Ca = var_sarcolemmal_calcium_pump__i_p_Ca;
00773         double var_sodium_background_current__i_Na_b = 0.004 * (var_membrane__V - var_fast_sodium_current__E_Na);
00774         double var_membrane__i_Na_b = var_sodium_background_current__i_Na_b;
00775         double var_calcium_background_current__i_Ca_b = 0.003016 * (var_membrane__V - var_calcium_background_current__E_Ca);
00776         double var_membrane__i_Ca_b = var_calcium_background_current__i_Ca_b;
00777         double var_sodium_potassium_pump__i_NaK = ((FaberRudy2000Version3OptimisedLookupTables::Instance()->_lookup_30(_table_index_0, _factor_0) / (1.0 + pow(10.0 / var_ionic_concentrations__Nai, 2.0))) * 4.5) * 0.166666666667;
00778         double var_membrane__i_NaK = var_sodium_potassium_pump__i_NaK;
00779         double var_non_specific_calcium_activated_current__i_ns_Na = (((((0.0 * 1.0 * var_membrane__V * 9309355225.0) * 3.87996927064e-07) * ((0.75 * var_ionic_concentrations__Nai * FaberRudy2000Version3OptimisedLookupTables::Instance()->_lookup_31(_table_index_0, _factor_0)) - 99.0)) / FaberRudy2000Version3OptimisedLookupTables::Instance()->_lookup_32(_table_index_0, _factor_0)) * 1.0) / (1.0 + pow(0.0012 / var_calcium_dynamics__Cai, 3.0));
00780         double var_non_specific_calcium_activated_current__i_ns_K = (((((0.0 * 1.0 * var_membrane__V * 9309355225.0) * 3.87996927064e-07) * ((0.75 * var_ionic_concentrations__Ki * FaberRudy2000Version3OptimisedLookupTables::Instance()->_lookup_33(_table_index_0, _factor_0)) - 3.375)) / FaberRudy2000Version3OptimisedLookupTables::Instance()->_lookup_34(_table_index_0, _factor_0)) * 1.0) / (1.0 + pow(0.0012 / var_calcium_dynamics__Cai, 3.0));
00781         double var_non_specific_calcium_activated_current__i_ns_Ca = var_non_specific_calcium_activated_current__i_ns_Na + var_non_specific_calcium_activated_current__i_ns_K;
00782         double var_membrane__i_ns_Ca = var_non_specific_calcium_activated_current__i_ns_Ca;
00783         double var_fast_sodium_current_m_gate__E0_m = var_membrane__V + 47.13;
00784         double var_L_type_Ca_channel_d_gate__E0_d = var_membrane__V + 10.0;
00785         double var_L_type_Ca_channel_d_gate__d_infinity = 1.0 / (1.0 + exp((-var_L_type_Ca_channel_d_gate__E0_d) * 0.160256410256));
00786         double var_L_type_Ca_channel_d_gate__tau_d = (fabs(var_L_type_Ca_channel_d_gate__E0_d) < 1e-05) ? 0.00457875457875 : ((0.001 * var_L_type_Ca_channel_d_gate__d_infinity * (1.0 - exp((-var_L_type_Ca_channel_d_gate__E0_d) * 0.160256410256))) / (0.035 * var_L_type_Ca_channel_d_gate__E0_d));
00787         double var_L_type_Ca_channel_f_gate__f_infinity = FaberRudy2000Version3OptimisedLookupTables::Instance()->_lookup_11(_table_index_0, _factor_0);
00788         double var_L_type_Ca_channel_f_gate__tau_f = FaberRudy2000Version3OptimisedLookupTables::Instance()->_lookup_12(_table_index_0, _factor_0);
00789         double var_transient_outward_current_zdv_gate__alpha_zdv = FaberRudy2000Version3OptimisedLookupTables::Instance()->_lookup_26(_table_index_0, _factor_0);
00790         double var_transient_outward_current_zdv_gate__beta_zdv = FaberRudy2000Version3OptimisedLookupTables::Instance()->_lookup_27(_table_index_0, _factor_0);
00791         double var_transient_outward_current_ydv_gate__alpha_ydv = FaberRudy2000Version3OptimisedLookupTables::Instance()->_lookup_28(_table_index_0, _factor_0);
00792         double var_transient_outward_current_ydv_gate__beta_ydv = FaberRudy2000Version3OptimisedLookupTables::Instance()->_lookup_29(_table_index_0, _factor_0);
00793         double var_calcium_dynamics__i_rel = ((var_calcium_dynamics__Cainfluxtrack > 0.00018) ? (((60000.0 * (var_calcium_dynamics__Cainfluxtrack - 0.00018)) / ((0.0008 + var_calcium_dynamics__Cainfluxtrack) - 0.00018)) * (1.0 - var_calcium_dynamics__APtrack2) * var_calcium_dynamics__APtrack2) : ((var_calcium_dynamics__Cainfluxtrack <= 0.00018) && (var_calcium_dynamics__OVRLDtrack2 > 0.0)) ? (4000.0 * (1.0 - var_calcium_dynamics__OVRLDtrack2) * var_calcium_dynamics__OVRLDtrack2) : 0.0) * (var_calcium_dynamics__Ca_JSR - var_calcium_dynamics__Cai);
00794         double var_calcium_dynamics__i_up = (8.75 * var_calcium_dynamics__Cai) / (var_calcium_dynamics__Cai + 0.00092);
00795         double var_calcium_dynamics__i_leak = 0.583333333333 * var_calcium_dynamics__Ca_NSR;
00796         double var_calcium_dynamics__i_tr = (var_calcium_dynamics__Ca_NSR - var_calcium_dynamics__Ca_JSR) * 5.55555555556;
00797         double d_dt_membrane__V;
00798         if (mSetVoltageDerivativeToZero)
00799         {
00800             d_dt_membrane__V = 0.0;
00801         }
00802         else
00803         {
00804             d_dt_membrane__V =  -1000.0 * (var_membrane__i_Na + var_membrane__i_Ca_L + var_membrane__i_Ca_T + var_membrane__i_Kr + var_membrane__i_Ks + var_membrane__i_K_Na + var_membrane__i_K_ATP + var_membrane__i_to + var_membrane__i_K1 + var_membrane__i_Kp + var_membrane__i_NaCa + var_membrane__i_p_Ca + var_membrane__i_Na_b + var_membrane__i_Ca_b + var_membrane__i_NaK + var_membrane__i_ns_Ca + var_membrane__I_st);
00805         }
00806         double d_dt_fast_sodium_current_m_gate__m = (((fabs(var_fast_sodium_current_m_gate__E0_m) >= 1e-05) ? ((320.0 * var_fast_sodium_current_m_gate__E0_m) / (1.0 - exp( -0.1 * var_fast_sodium_current_m_gate__E0_m))) : 3200.0) * (1.0 - var_fast_sodium_current_m_gate__m)) - (FaberRudy2000Version3OptimisedLookupTables::Instance()->_lookup_0(_table_index_0, _factor_0) * var_fast_sodium_current_m_gate__m);
00807         double d_dt_fast_sodium_current_h_gate__h = (FaberRudy2000Version3OptimisedLookupTables::Instance()->_lookup_1(_table_index_0, _factor_0) * (1.0 - var_fast_sodium_current_h_gate__h)) - (FaberRudy2000Version3OptimisedLookupTables::Instance()->_lookup_2(_table_index_0, _factor_0) * var_fast_sodium_current_h_gate__h);
00808         double d_dt_fast_sodium_current_j_gate__j = (FaberRudy2000Version3OptimisedLookupTables::Instance()->_lookup_3(_table_index_0, _factor_0) * (1.0 - var_fast_sodium_current_j_gate__j)) - (FaberRudy2000Version3OptimisedLookupTables::Instance()->_lookup_4(_table_index_0, _factor_0) * var_fast_sodium_current_j_gate__j);
00809         double d_dt_L_type_Ca_channel_d_gate__d = ((var_L_type_Ca_channel_d_gate__d_infinity / var_L_type_Ca_channel_d_gate__tau_d) * (1.0 - var_L_type_Ca_channel_d_gate__d)) - (((1.0 - var_L_type_Ca_channel_d_gate__d_infinity) / var_L_type_Ca_channel_d_gate__tau_d) * var_L_type_Ca_channel_d_gate__d);
00810         double d_dt_L_type_Ca_channel_f_gate__f = ((var_L_type_Ca_channel_f_gate__f_infinity / var_L_type_Ca_channel_f_gate__tau_f) * (1.0 - var_L_type_Ca_channel_f_gate__f)) - (((1.0 - var_L_type_Ca_channel_f_gate__f_infinity) / var_L_type_Ca_channel_f_gate__tau_f) * var_L_type_Ca_channel_f_gate__f);
00811         double d_dt_T_type_Ca_channel_b_gate__b = (FaberRudy2000Version3OptimisedLookupTables::Instance()->_lookup_13(_table_index_0, _factor_0) - var_T_type_Ca_channel_b_gate__b) / FaberRudy2000Version3OptimisedLookupTables::Instance()->_lookup_14(_table_index_0, _factor_0);
00812         double d_dt_T_type_Ca_channel_g_gate__g = (FaberRudy2000Version3OptimisedLookupTables::Instance()->_lookup_15(_table_index_0, _factor_0) - var_T_type_Ca_channel_g_gate__g) / ((var_membrane__V <= 0.0) ? (( -0.000875 * var_membrane__V) + 0.012) : 0.012);
00813         double d_dt_rapid_delayed_rectifier_potassium_current_xr_gate__xr = (FaberRudy2000Version3OptimisedLookupTables::Instance()->_lookup_17(_table_index_0, _factor_0) - var_rapid_delayed_rectifier_potassium_current_xr_gate__xr) / FaberRudy2000Version3OptimisedLookupTables::Instance()->_lookup_18(_table_index_0, _factor_0);
00814         double d_dt_slow_delayed_rectifier_potassium_current_xs1_gate__xs1 = (FaberRudy2000Version3OptimisedLookupTables::Instance()->_lookup_19(_table_index_0, _factor_0) - var_slow_delayed_rectifier_potassium_current_xs1_gate__xs1) / FaberRudy2000Version3OptimisedLookupTables::Instance()->_lookup_20(_table_index_0, _factor_0);
00815         double d_dt_slow_delayed_rectifier_potassium_current_xs2_gate__xs2 = (FaberRudy2000Version3OptimisedLookupTables::Instance()->_lookup_21(_table_index_0, _factor_0) - var_slow_delayed_rectifier_potassium_current_xs2_gate__xs2) / FaberRudy2000Version3OptimisedLookupTables::Instance()->_lookup_22(_table_index_0, _factor_0);
00816         double d_dt_transient_outward_current_zdv_gate__zdv = ((var_transient_outward_current_zdv_gate__alpha_zdv / (var_transient_outward_current_zdv_gate__alpha_zdv + var_transient_outward_current_zdv_gate__beta_zdv)) - var_transient_outward_current_zdv_gate__zdv) / (1.0 / (var_transient_outward_current_zdv_gate__alpha_zdv + var_transient_outward_current_zdv_gate__beta_zdv));
00817         double d_dt_transient_outward_current_ydv_gate__ydv = ((var_transient_outward_current_ydv_gate__alpha_ydv / (var_transient_outward_current_ydv_gate__alpha_ydv + var_transient_outward_current_ydv_gate__beta_ydv)) - var_transient_outward_current_ydv_gate__ydv) / (1.0 / (var_transient_outward_current_ydv_gate__alpha_ydv + var_transient_outward_current_ydv_gate__beta_ydv));
00818         double d_dt_calcium_dynamics__APtrack = (( -1000.0 * (var_membrane__i_Na + var_membrane__i_Ca_L + var_membrane__i_Ca_T + var_membrane__i_Kr + var_membrane__i_Ks + var_membrane__i_K_Na + var_membrane__i_K_ATP + var_membrane__i_to + var_membrane__i_K1 + var_membrane__i_Kp + var_membrane__i_NaCa + var_membrane__i_p_Ca + var_membrane__i_Na_b + var_membrane__i_Ca_b + var_membrane__i_NaK + var_membrane__i_ns_Ca + var_membrane__I_st)) > 150000.0) ? ((100000.0 * (1.0 - var_calcium_dynamics__APtrack)) - (500.0 * var_calcium_dynamics__APtrack)) : ( -500.0 * var_calcium_dynamics__APtrack);
00819         double d_dt_calcium_dynamics__APtrack2 = ((var_calcium_dynamics__APtrack < 0.2) && (var_calcium_dynamics__APtrack > 0.18)) ? ((100000.0 * (1.0 - var_calcium_dynamics__APtrack2)) - (500.0 * var_calcium_dynamics__APtrack2)) : ( -500.0 * var_calcium_dynamics__APtrack2);
00820         double d_dt_calcium_dynamics__APtrack3 = ((var_calcium_dynamics__APtrack < 0.2) && (var_calcium_dynamics__APtrack > 0.18)) ? ((100000.0 * (1.0 - var_calcium_dynamics__APtrack3)) - (500.0 * var_calcium_dynamics__APtrack3)) : ( -10.0 * var_calcium_dynamics__APtrack3);
00821         double d_dt_calcium_dynamics__Cainfluxtrack = (var_calcium_dynamics__APtrack > 0.2) ? (( -1.434e-07 * (((var_L_type_Ca_channel__i_CaCa + var_T_type_Ca_channel__i_Ca_T) - var_Na_Ca_exchanger__i_NaCa) + var_sarcolemmal_calcium_pump__i_p_Ca + var_calcium_background_current__i_Ca_b)) * 200477.689034) : ((var_calcium_dynamics__APtrack2 > 0.01) && (var_calcium_dynamics__APtrack <= 0.2)) ? 0.0 : ( -500.0 * var_calcium_dynamics__Cainfluxtrack);
00822         double d_dt_calcium_dynamics__OVRLDtrack = (((1.0 / (1.0 + (0.8 / var_calcium_dynamics__Ca_JSR))) > 0.7) && (var_calcium_dynamics__OVRLDtrack3 < 0.37) && (var_calcium_dynamics__APtrack3 < 0.37)) ? (50000.0 * (1.0 - var_calcium_dynamics__OVRLDtrack)) : ( -500.0 * var_calcium_dynamics__OVRLDtrack);
00823         double d_dt_calcium_dynamics__OVRLDtrack2 = ((var_calcium_dynamics__OVRLDtrack > 0.98) && (var_calcium_dynamics__OVRLDtrack2 < 0.98)) ? (50000.0 * (1.0 - var_calcium_dynamics__OVRLDtrack2)) : ( -500.0 * var_calcium_dynamics__OVRLDtrack2);
00824         double d_dt_calcium_dynamics__OVRLDtrack3 = ((var_calcium_dynamics__OVRLDtrack > 0.98) && (var_calcium_dynamics__OVRLDtrack3 < 0.98)) ? (50000.0 * (1.0 - var_calcium_dynamics__OVRLDtrack3)) : ( -10.0 * var_calcium_dynamics__OVRLDtrack3);
00825         double d_dt_calcium_dynamics__Ca_JSR = (1.0 / (1.0 + (8.0 / pow(0.8 + var_calcium_dynamics__Ca_JSR, 2.0)))) * (var_calcium_dynamics__i_tr - var_calcium_dynamics__i_rel);
00826         double d_dt_calcium_dynamics__Ca_NSR = ((((-var_calcium_dynamics__i_tr) * 1.8246370132e-13) * 476568879782.0) - var_calcium_dynamics__i_leak) + var_calcium_dynamics__i_up;
00827         double d_dt_calcium_dynamics__Cai = (1.0 / (1.0 + (0.000119 / pow(0.00238 + var_calcium_dynamics__Cai, 2.0)) + (3.5e-05 / pow(0.0005 + var_calcium_dynamics__Cai, 2.0)))) * ((( -1.434e-07 * (((var_L_type_Ca_channel__i_CaCa + var_T_type_Ca_channel__i_Ca_T) - (2.0 * var_Na_Ca_exchanger__i_NaCa)) + var_sarcolemmal_calcium_pump__i_p_Ca + var_calcium_background_current__i_Ca_b)) * 200477.689034) + ((var_calcium_dynamics__i_rel * 1.8246370132e-13) * 38686179652.9) + (((var_calcium_dynamics__i_leak - var_calcium_dynamics__i_up) * 2.09833256519e-12) * 38686179652.9));
00828         double d_dt_ionic_concentrations__Nai = ((-(var_fast_sodium_current__i_Na + var_L_type_Ca_channel__i_CaNa + var_sodium_background_current__i_Na_b + var_non_specific_calcium_activated_current__i_ns_Na + (var_Na_Ca_exchanger__i_NaCa * 3.0) + (var_sodium_potassium_pump__i_NaK * 3.0))) * 1.434e-07) * 400955.378068;
00829         double d_dt_ionic_concentrations__Ki = ((-(var_L_type_Ca_channel__i_CaK + var_rapid_delayed_rectifier_potassium_current__i_Kr + var_slow_delayed_rectifier_potassium_current__i_Ks + var_time_independent_potassium_current__i_K1 + var_plateau_potassium_current__i_Kp + var_sodium_activated_potassium_current__i_K_Na + var_ATP_sensitive_potassium_current__i_K_ATP + var_transient_outward_current__i_to + var_non_specific_calcium_activated_current__i_ns_K + ((-var_sodium_potassium_pump__i_NaK) * 2.0))) * 1.434e-07) * 400955.378068;
00830 
00831         rDY[0] = d_dt_membrane__V*1e-3;
00832         rDY[1] = d_dt_fast_sodium_current_m_gate__m*1e-3;
00833         rDY[2] = d_dt_fast_sodium_current_h_gate__h*1e-3;
00834         rDY[3] = d_dt_fast_sodium_current_j_gate__j*1e-3;
00835         rDY[4] = d_dt_L_type_Ca_channel_d_gate__d*1e-3;
00836         rDY[5] = d_dt_L_type_Ca_channel_f_gate__f*1e-3;
00837         rDY[6] = d_dt_T_type_Ca_channel_b_gate__b*1e-3;
00838         rDY[7] = d_dt_T_type_Ca_channel_g_gate__g*1e-3;
00839         rDY[8] = d_dt_rapid_delayed_rectifier_potassium_current_xr_gate__xr*1e-3;
00840         rDY[9] = d_dt_slow_delayed_rectifier_potassium_current_xs1_gate__xs1*1e-3;
00841         rDY[10] = d_dt_slow_delayed_rectifier_potassium_current_xs2_gate__xs2*1e-3;
00842         rDY[11] = d_dt_transient_outward_current_zdv_gate__zdv*1e-3;
00843         rDY[12] = d_dt_transient_outward_current_ydv_gate__ydv*1e-3;
00844         rDY[13] = d_dt_calcium_dynamics__Cai*1e-3;
00845         rDY[14] = d_dt_calcium_dynamics__Ca_JSR*1e-3;
00846         rDY[15] = d_dt_calcium_dynamics__Ca_NSR*1e-3;
00847         rDY[16] = d_dt_calcium_dynamics__APtrack*1e-3;
00848         rDY[17] = d_dt_calcium_dynamics__APtrack2*1e-3;
00849         rDY[18] = d_dt_calcium_dynamics__APtrack3*1e-3;
00850         rDY[19] = d_dt_calcium_dynamics__Cainfluxtrack*1e-3;
00851         rDY[20] = d_dt_calcium_dynamics__OVRLDtrack*1e-3;
00852         rDY[21] = d_dt_calcium_dynamics__OVRLDtrack2*1e-3;
00853         rDY[22] = d_dt_calcium_dynamics__OVRLDtrack3*1e-3;
00854         rDY[23] = d_dt_ionic_concentrations__Nai*1e-3;
00855         rDY[24] = d_dt_ionic_concentrations__Ki*1e-3;
00856     }
00857 
00858 };
00859 
00860 
00861 template<>
00862 void OdeSystemInformation<FaberRudy2000Version3Optimised>::Initialise(void)
00863 {
00864     this->mVariableNames.push_back("V");
00865     this->mVariableUnits.push_back("millivolt");
00866     this->mInitialConditions.push_back(-90);
00867 
00868     this->mVariableNames.push_back("m");
00869     this->mVariableUnits.push_back("dimensionless");
00870     this->mInitialConditions.push_back(0.0008);
00871 
00872     this->mVariableNames.push_back("h");
00873     this->mVariableUnits.push_back("dimensionless");
00874     this->mInitialConditions.push_back(0.993771);
00875 
00876     this->mVariableNames.push_back("j");
00877     this->mVariableUnits.push_back("dimensionless");
00878     this->mInitialConditions.push_back(0.995727);
00879 
00880     this->mVariableNames.push_back("d");
00881     this->mVariableUnits.push_back("dimensionless");
00882     this->mInitialConditions.push_back(3.210618e-6);
00883 
00884     this->mVariableNames.push_back("f");
00885     this->mVariableUnits.push_back("dimensionless");
00886     this->mInitialConditions.push_back(0.999837);
00887 
00888     this->mVariableNames.push_back("b");
00889     this->mVariableUnits.push_back("dimensionless");
00890     this->mInitialConditions.push_back(0.000970231);
00891 
00892     this->mVariableNames.push_back("g");
00893     this->mVariableUnits.push_back("dimensionless");
00894     this->mInitialConditions.push_back(0.994305);
00895 
00896     this->mVariableNames.push_back("xr");
00897     this->mVariableUnits.push_back("dimensionless");
00898     this->mInitialConditions.push_back(0.000124042);
00899 
00900     this->mVariableNames.push_back("xs1");
00901     this->mVariableUnits.push_back("dimensionless");
00902     this->mInitialConditions.push_back(0.00445683);
00903 
00904     this->mVariableNames.push_back("xs2");
00905     this->mVariableUnits.push_back("dimensionless");
00906     this->mInitialConditions.push_back(0.00445683);
00907 
00908     this->mVariableNames.push_back("zdv");
00909     this->mVariableUnits.push_back("dimensionless");
00910     this->mInitialConditions.push_back(0.5);
00911 
00912     this->mVariableNames.push_back("ydv");
00913     this->mVariableUnits.push_back("dimensionless");
00914     this->mInitialConditions.push_back(0.5);
00915 
00916     this->mVariableNames.push_back("CaI");
00917     this->mVariableUnits.push_back("millimolar");
00918     this->mInitialConditions.push_back(6e-5);
00919 
00920     this->mVariableNames.push_back("Ca_JSR");
00921     this->mVariableUnits.push_back("millimolar");
00922     this->mInitialConditions.push_back(1.8);
00923 
00924     this->mVariableNames.push_back("Ca_NSR");
00925     this->mVariableUnits.push_back("millimolar");
00926     this->mInitialConditions.push_back(1.8);
00927 
00928     this->mVariableNames.push_back("APtrack");
00929     this->mVariableUnits.push_back("dimensionless");
00930     this->mInitialConditions.push_back(0);
00931 
00932     this->mVariableNames.push_back("APtrack2");
00933     this->mVariableUnits.push_back("dimensionless");
00934     this->mInitialConditions.push_back(0);
00935 
00936     this->mVariableNames.push_back("APtrack3");
00937     this->mVariableUnits.push_back("dimensionless");
00938     this->mInitialConditions.push_back(0);
00939 
00940     this->mVariableNames.push_back("Cainfluxtrack");
00941     this->mVariableUnits.push_back("dimensionless");
00942     this->mInitialConditions.push_back(0);
00943 
00944     this->mVariableNames.push_back("OVRLDtrack");
00945     this->mVariableUnits.push_back("dimensionless");
00946     this->mInitialConditions.push_back(0);
00947 
00948     this->mVariableNames.push_back("OVRLDtrack2");
00949     this->mVariableUnits.push_back("dimensionless");
00950     this->mInitialConditions.push_back(0);
00951 
00952     this->mVariableNames.push_back("OVRLDtrack3");
00953     this->mVariableUnits.push_back("dimensionless");
00954     this->mInitialConditions.push_back(0);
00955 
00956     this->mVariableNames.push_back("Nai");
00957     this->mVariableUnits.push_back("millimolar");
00958     this->mInitialConditions.push_back(9);
00959 
00960     this->mVariableNames.push_back("Ki");
00961     this->mVariableUnits.push_back("millimolar");
00962     this->mInitialConditions.push_back(141.2);
00963 
00964     this->mInitialised = true;
00965 }
00966 
00967 #endif

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