Generated Code
The following is python code generated by the CellML API from this CellML file. (Back to language selection)
The raw code is available.
# Size of variable arrays: sizeAlgebraic = 98 sizeStates = 30 sizeConstants = 108 from math import * from numpy import * def createLegends(): legend_states = [""] * sizeStates legend_rates = [""] * sizeStates legend_algebraic = [""] * sizeAlgebraic legend_voi = "" legend_constants = [""] * sizeConstants legend_voi = "t in component lpc (s)" legend_constants[0] = "Vlvrd in component lpc (mL)" legend_constants[1] = "Vlvrs in component lpc (mL)" legend_constants[2] = "Vrvrd in component lpc (mL)" legend_constants[3] = "Vrvrs in component lpc (mL)" legend_constants[4] = "Vlard in component lpc (mL)" legend_constants[5] = "Vlars in component lpc (mL)" legend_constants[6] = "Vrard in component lpc (mL)" legend_constants[7] = "Vrars in component lpc (mL)" legend_constants[8] = "Rra in component lpc (resistance)" legend_constants[9] = "Rla in component lpc (resistance)" legend_constants[10] = "PRint in component lpc (s)" legend_constants[11] = "Emaxlv in component lpc (elastance)" legend_constants[12] = "Eminlv in component lpc (elastance)" legend_constants[13] = "Emaxrv in component lpc (elastance)" legend_constants[14] = "Eminrv in component lpc (elastance)" legend_constants[15] = "Emaxra in component lpc (elastance)" legend_constants[16] = "Eminra in component lpc (elastance)" legend_constants[17] = "Emaxla in component lpc (elastance)" legend_constants[18] = "Eminla in component lpc (elastance)" legend_constants[19] = "Pbs in component lpc (mmHg)" legend_constants[20] = "Vmyo in component lpc (mL)" legend_constants[21] = "TsvK in component lpc (s)" legend_constants[22] = "TsaK in component lpc (s)" legend_constants[23] = "HR in component lpc (ratepm)" legend_algebraic[17] = "Elv in component lpc (elastance)" legend_algebraic[15] = "Erv in component lpc (elastance)" legend_algebraic[14] = "Era in component lpc (elastance)" legend_algebraic[16] = "Ela in component lpc (elastance)" legend_algebraic[58] = "Vlvr in component lpc (mL)" legend_algebraic[81] = "Vrvr in component lpc (mL)" legend_algebraic[55] = "Vlar in component lpc (mL)" legend_algebraic[70] = "Vrar in component lpc (mL)" legend_algebraic[88] = "Fra in component lpc (flow)" legend_algebraic[94] = "Frv in component lpc (flow)" legend_algebraic[80] = "Fla in component lpc (flow)" legend_algebraic[83] = "Flv in component lpc (flow)" legend_algebraic[72] = "Pra in component lpc (mmHg)" legend_algebraic[74] = "Prac in component lpc (mmHg)" legend_algebraic[84] = "Prv in component lpc (mmHg)" legend_algebraic[86] = "Prvc in component lpc (mmHg)" legend_algebraic[57] = "Pla in component lpc (mmHg)" legend_algebraic[75] = "Plac in component lpc (mmHg)" legend_algebraic[59] = "Plv in component lpc (mmHg)" legend_algebraic[79] = "Plvc in component lpc (mmHg)" legend_states[0] = "Vra in component lpc (mL)" legend_states[1] = "Vrv in component lpc (mL)" legend_states[2] = "Vla in component lpc (mL)" legend_states[3] = "Vlv in component lpc (mL)" legend_constants[24] = "COutput in component lpc (flow)" legend_constants[103] = "SV in component lpc (mL)" legend_algebraic[6] = "P_QRSwave in component lpc (mV)" legend_constants[105] = "Tsv in component lpc (s)" legend_constants[107] = "Tsa in component lpc (s)" legend_algebraic[9] = "trela in component lpc (s)" legend_algebraic[7] = "trelv in component lpc (s)" legend_constants[25] = "Rav in component lpc (resistance)" legend_constants[26] = "Raop in component lpc (resistance)" legend_constants[27] = "Rcrb in component lpc (resistance)" legend_constants[28] = "Raod in component lpc (resistance)" legend_constants[29] = "Rtaop in component lpc (resistance)" legend_constants[30] = "Rtaod in component lpc (resistance)" legend_constants[31] = "Rsap in component lpc (resistance)" legend_constants[32] = "Rsc in component lpc (resistance)" legend_constants[33] = "Rsv in component lpc (resistance)" legend_constants[34] = "Rsao in component lpc (resistance)" legend_constants[35] = "Caop in component lpc (capacitance)" legend_constants[36] = "Caod in component lpc (capacitance)" legend_constants[37] = "Csap in component lpc (capacitance)" legend_constants[38] = "Csc in component lpc (capacitance)" legend_constants[39] = "Laop in component lpc (inductance)" legend_constants[40] = "Laod in component lpc (inductance)" legend_constants[41] = "Kc in component lpc (mmHg)" legend_constants[42] = "Do in component lpc (mL)" legend_constants[43] = "Vsa_o in component lpc (mL)" legend_constants[44] = "Vsa_max in component lpc (mL)" legend_constants[45] = "Kp1 in component lpc (mmHg)" legend_constants[46] = "Kp2 in component lpc (mmHgmlm2)" legend_constants[47] = "Kr in component lpc (resistance)" legend_constants[48] = "tau_p in component lpc (perml)" legend_constants[49] = "Kv in component lpc (mmHg)" legend_constants[50] = "Vmax_sv in component lpc (mL)" legend_constants[51] = "D2 in component lpc (mmHg)" legend_constants[52] = "K1 in component lpc (dimensionless)" legend_constants[53] = "K2 in component lpc (mmHg)" legend_constants[54] = "KR in component lpc (resistance)" legend_constants[55] = "Ro in component lpc (resistance)" legend_constants[56] = "Vo in component lpc (mL)" legend_constants[57] = "Vmax_vc in component lpc (mL)" legend_constants[58] = "Vmin_vc in component lpc (mL)" legend_constants[59] = "COtau in component lpc (s)" legend_constants[60] = "Pplc in component lpc (mmHg)" legend_constants[61] = "Px2 in component lpc (mmHg)" legend_constants[62] = "Vx8 in component lpc (mL)" legend_constants[63] = "Vx75 in component lpc (mL)" legend_constants[64] = "Vx1 in component lpc (mL)" legend_constants[65] = "Px1 in component lpc (mmHg)" legend_constants[66] = "F_vaso in component lpc (dimensionless)" legend_algebraic[52] = "Rvc in component lpc (resistance)" legend_algebraic[44] = "Rsa in component lpc (resistance)" legend_algebraic[0] = "Paop in component lpc (mmHg)" legend_states[4] = "Paopc in component lpc (mmHg)" legend_algebraic[50] = "Paod in component lpc (mmHg)" legend_algebraic[49] = "Paodc in component lpc (mmHg)" legend_algebraic[36] = "Psa_a in component lpc (mmHg)" legend_algebraic[37] = "Psa_p in component lpc (mmHg)" legend_algebraic[38] = "Psa in component lpc (mmHg)" legend_algebraic[39] = "Psap in component lpc (mmHg)" legend_algebraic[41] = "Psc in component lpc (mmHg)" legend_algebraic[42] = "Psv in component lpc (mmHg)" legend_algebraic[45] = "Pvc in component lpc (mmHg)" legend_algebraic[47] = "Pvcc in component lpc (mmHg)" legend_states[5] = "MAP in component lpc (mmHg)" legend_states[6] = "Faop in component lpc (flowLm)" legend_states[7] = "Faod in component lpc (flow)" legend_algebraic[40] = "Fsap in component lpc (flow)" legend_algebraic[46] = "Fsa in component lpc (flow)" legend_algebraic[43] = "Fsc in component lpc (flow)" legend_algebraic[48] = "Fsv in component lpc (flow)" legend_algebraic[78] = "Fvc in component lpc (flow)" legend_algebraic[51] = "Fcrb in component lpc (flow)" legend_states[8] = "Vaop in component lpc (mL)" legend_states[9] = "Vaod in component lpc (mL)" legend_states[10] = "Vsa in component lpc (mL)" legend_states[11] = "Vsap in component lpc (mL)" legend_states[12] = "Vsc in component lpc (mL)" legend_states[13] = "Vsv in component lpc (mL)" legend_states[14] = "Vvc in component lpc (mL)" legend_algebraic[54] = "Vtot in component lpc (mL)" legend_algebraic[1] = "SysArtVol in component lpc (mL)" legend_algebraic[2] = "SysVenVol in component lpc (mL)" legend_algebraic[3] = "PulArtVol in component lpc (mL)" legend_algebraic[4] = "PulVenVol in component lpc (mL)" legend_algebraic[56] = "VBcirc in component lpc (mL)" legend_constants[104] = "Ppl in component lpc (mmHg)" legend_constants[67] = "Rpuv in component lpc (resistance)" legend_constants[68] = "Rtpap in component lpc (resistance)" legend_constants[69] = "Rtpad in component lpc (resistance)" legend_constants[70] = "Rpap in component lpc (resistance)" legend_constants[71] = "Rpad in component lpc (resistance)" legend_constants[72] = "Rps in component lpc (resistance)" legend_constants[73] = "Rpa in component lpc (resistance)" legend_constants[74] = "Rpc in component lpc (resistance)" legend_constants[75] = "Rpv in component lpc (resistance)" legend_constants[76] = "Ctpap in component lpc (capacitance)" legend_constants[77] = "Ctpad in component lpc (capacitance)" legend_constants[78] = "Cpa in component lpc (capacitance)" legend_constants[79] = "Cpc in component lpc (capacitance)" legend_constants[80] = "Cpv in component lpc (capacitance)" legend_constants[81] = "Lpa in component lpc (inductance)" legend_constants[82] = "Lpad in component lpc (inductance)" legend_algebraic[92] = "Ppapc in component lpc (mmHg)" legend_algebraic[90] = "Ppapc1 in component lpc (mmHg)" legend_algebraic[28] = "Ppapc2 in component lpc (mmHg)" legend_algebraic[95] = "Ppap in component lpc (mmHg)" legend_algebraic[61] = "Ppad in component lpc (mmHg)" legend_algebraic[60] = "Ppadc in component lpc (mmHg)" legend_algebraic[26] = "Ppa in component lpc (mmHg)" legend_algebraic[27] = "Ppac in component lpc (mmHg)" legend_algebraic[29] = "Ppc in component lpc (mmHg)" legend_algebraic[30] = "Ppcc in component lpc (mmHg)" legend_algebraic[32] = "Ppv in component lpc (mmHg)" legend_algebraic[33] = "Ppvc in component lpc (mmHg)" legend_states[15] = "Vpap in component lpc (mL)" legend_states[16] = "Vpad in component lpc (mL)" legend_states[17] = "Vpa in component lpc (mL)" legend_states[18] = "Vpc in component lpc (mL)" legend_states[19] = "Vpv in component lpc (mL)" legend_states[20] = "Fpap in component lpc (flowLm)" legend_states[21] = "Fpad in component lpc (flow)" legend_algebraic[35] = "Fps in component lpc (flow)" legend_algebraic[31] = "Fpa in component lpc (flow)" legend_algebraic[34] = "Fpc in component lpc (flow)" legend_algebraic[77] = "Fpv in component lpc (flow)" legend_constants[83] = "K_pcd in component lpc (mmHg)" legend_constants[84] = "phi_pcd in component lpc (mL)" legend_constants[85] = "Vpcd_o in component lpc (mL)" legend_constants[86] = "perifl in component lpc (mL)" legend_algebraic[63] = "Ppcd in component lpc (mmHg)" legend_algebraic[64] = "Ppcdc in component lpc (mmHg)" legend_algebraic[62] = "Vpcd in component lpc (mL)" legend_constants[87] = "Rcorao in component lpc (resistance)" legend_constants[88] = "Rcorea in component lpc (resistance)" legend_constants[89] = "Rcorla in component lpc (resistance)" legend_constants[90] = "Rcorsa in component lpc (resistance)" legend_constants[91] = "Rcorcap in component lpc (resistance)" legend_constants[92] = "Rcorsv in component lpc (resistance)" legend_constants[93] = "Rcorlv in component lpc (resistance)" legend_constants[94] = "Rcorev in component lpc (resistance)" legend_constants[95] = "Ccorao in component lpc (capacitance)" legend_constants[96] = "Ccorea in component lpc (capacitance)" legend_constants[97] = "Ccorla in component lpc (capacitance)" legend_constants[98] = "Ccorsa in component lpc (capacitance)" legend_constants[99] = "Ccorcap in component lpc (capacitance)" legend_constants[100] = "Ccorsv in component lpc (capacitance)" legend_constants[101] = "Ccorlv in component lpc (capacitance)" legend_constants[102] = "Ccorev in component lpc (capacitance)" legend_algebraic[82] = "Pcorisfc in component lpc (mmHg)" legend_algebraic[18] = "Pcoraoc in component lpc (mmHg)" legend_algebraic[65] = "Pcoreac in component lpc (mmHg)" legend_algebraic[89] = "Pcorlac in component lpc (mmHg)" legend_algebraic[93] = "Pcorsac in component lpc (mmHg)" legend_algebraic[85] = "Pcorcapc in component lpc (mmHg)" legend_algebraic[71] = "Pcorsvc in component lpc (mmHg)" legend_algebraic[68] = "Pcorlvc in component lpc (mmHg)" legend_algebraic[67] = "Pcorevc in component lpc (mmHg)" legend_algebraic[8] = "Pcorao in component lpc (mmHg)" legend_algebraic[20] = "Pcorea in component lpc (mmHg)" legend_algebraic[22] = "Pcorla in component lpc (mmHg)" legend_algebraic[24] = "Pcorsa in component lpc (mmHg)" legend_algebraic[19] = "Pcorcap in component lpc (mmHg)" legend_algebraic[25] = "Pcorsv in component lpc (mmHg)" legend_algebraic[23] = "Pcorlv in component lpc (mmHg)" legend_algebraic[21] = "Pcorev in component lpc (mmHg)" legend_states[22] = "Vcorao in component lpc (mL)" legend_states[23] = "Vcorea in component lpc (mL)" legend_states[24] = "Vcorla in component lpc (mL)" legend_states[25] = "Vcorsa in component lpc (mL)" legend_states[26] = "Vcorcap in component lpc (mL)" legend_states[27] = "Vcorsv in component lpc (mL)" legend_states[28] = "Vcorlv in component lpc (mL)" legend_states[29] = "Vcorev in component lpc (mL)" legend_algebraic[53] = "Vcorcirc in component lpc (mL)" legend_algebraic[66] = "Fcorao in component lpc (flow)" legend_algebraic[91] = "Fcorea in component lpc (flow)" legend_algebraic[96] = "Fcorla in component lpc (flow)" legend_algebraic[97] = "Fcorsa in component lpc (flow)" legend_algebraic[87] = "Fcorcap in component lpc (flow)" legend_algebraic[73] = "Fcorsv in component lpc (flow)" legend_algebraic[69] = "Fcorlv in component lpc (flow)" legend_algebraic[76] = "Fcorev in component lpc (flow)" legend_algebraic[5] = "beattime in component lpc (s)" legend_algebraic[10] = "yla in component lpc (dimensionless)" legend_algebraic[11] = "yra in component lpc (dimensionless)" legend_algebraic[12] = "ylv in component lpc (dimensionless)" legend_algebraic[13] = "yrv in component lpc (dimensionless)" legend_constants[106] = "hrf in component lpc (Hz)" legend_rates[7] = "d/dt Faod in component lpc (flow)" legend_rates[6] = "d/dt Faop in component lpc (flowLm)" legend_rates[21] = "d/dt Fpad in component lpc (flow)" legend_rates[20] = "d/dt Fpap in component lpc (flowLm)" legend_rates[5] = "d/dt MAP in component lpc (mmHg)" legend_rates[4] = "d/dt Paopc in component lpc (mmHg)" legend_rates[8] = "d/dt Vaop in component lpc (mL)" legend_rates[16] = "d/dt Vpad in component lpc (mL)" legend_rates[9] = "d/dt Vaod in component lpc (mL)" legend_rates[22] = "d/dt Vcorao in component lpc (mL)" legend_rates[26] = "d/dt Vcorcap in component lpc (mL)" legend_rates[23] = "d/dt Vcorea in component lpc (mL)" legend_rates[29] = "d/dt Vcorev in component lpc (mL)" legend_rates[24] = "d/dt Vcorla in component lpc (mL)" legend_rates[28] = "d/dt Vcorlv in component lpc (mL)" legend_rates[25] = "d/dt Vcorsa in component lpc (mL)" legend_rates[27] = "d/dt Vcorsv in component lpc (mL)" legend_rates[2] = "d/dt Vla in component lpc (mL)" legend_rates[3] = "d/dt Vlv in component lpc (mL)" legend_rates[17] = "d/dt Vpa in component lpc (mL)" legend_rates[15] = "d/dt Vpap in component lpc (mL)" legend_rates[18] = "d/dt Vpc in component lpc (mL)" legend_rates[19] = "d/dt Vpv in component lpc (mL)" legend_rates[0] = "d/dt Vra in component lpc (mL)" legend_rates[1] = "d/dt Vrv in component lpc (mL)" legend_rates[10] = "d/dt Vsa in component lpc (mL)" legend_rates[11] = "d/dt Vsap in component lpc (mL)" legend_rates[12] = "d/dt Vsc in component lpc (mL)" legend_rates[13] = "d/dt Vsv in component lpc (mL)" legend_rates[14] = "d/dt Vvc in component lpc (mL)" return (legend_states, legend_algebraic, legend_voi, legend_constants) def initConsts(): constants = [0.0] * sizeConstants; states = [0.0] * sizeStates; constants[0] = 72 constants[1] = 23 constants[2] = 103 constants[3] = 53 constants[4] = 10 constants[5] = 8 constants[6] = 10 constants[7] = 8 constants[8] = 0.001 constants[9] = 0.001 constants[10] = 0.12 constants[11] = 5.6 constants[12] = 0.186874659 constants[13] = 0.67 constants[14] = 0.1041640922 constants[15] = 0.1091675077 constants[16] = 0.0992431888 constants[17] = 0.1446191772 constants[18] = 0.1314719793 constants[19] = 0 constants[20] = 238 constants[21] = 0.35 constants[22] = 0.2 constants[23] = 77 states[0] = 78.2537 states[1] = 167.4806 states[2] = 85.9126 states[3] = 125.360568 constants[24] = 108.56912706 constants[25] = 1e-4 constants[26] = 1e-4 constants[27] = 6.8284472205 constants[28] = 0.025 constants[29] = 0.2 constants[30] = 0.3 constants[31] = 0.025 constants[32] = 0.1545054945 constants[33] = 0.1381298227 constants[34] = 0.5508058134 constants[35] = 0.3445734208 constants[36] = 1.4544677036 constants[37] = 1.4843409851 constants[38] = 7.9822364317 constants[39] = 3.5e-4 constants[40] = 3.5e-4 constants[41] = 497.7852450367 constants[42] = 50 constants[43] = 485.7624931891 constants[44] = 577.7106000108 constants[45] = 0.03 constants[46] = 0.05 constants[47] = 0.01 constants[48] = 0.1 constants[49] = 21.83 constants[50] = 3379.545 constants[51] = -5 constants[52] = 0.0968305478 constants[53] = 0.4 constants[54] = 0.001 constants[55] = 0.025 constants[56] = 129.6486 constants[57] = 350.5314 constants[58] = 50.010747 constants[59] = 15 constants[60] = -5.6 constants[61] = 2 constants[62] = 8 constants[63] = 75 constants[64] = 1 constants[65] = 1 constants[66] = 0.5 states[4] = 87.93968 states[5] = 90.6179 states[6] = 0.698577 states[7] = 23.5957 states[8] = 31.1705 states[9] = 138.4476 states[10] = 519.7915 states[11] = 129.6439 states[12] = 256.8555 states[13] = 2961.6507 states[14] = 232.46638962 constants[67] = 1e-4 constants[68] = 0.05 constants[69] = 0.05 constants[70] = 1e-4 constants[71] = 0.03 constants[72] = 4.2958026137 constants[73] = 0.0565149137 constants[74] = 0.0309026688 constants[75] = 1e-4 constants[76] = 1.5365929068 constants[77] = 2.6893667388 constants[78] = 3.1321449506 constants[79] = 7.7147 constants[80] = 27.87028922 constants[81] = 1.801907e-4 constants[82] = 1.932239e-4 states[15] = 33.1398 states[16] = 60.11203897 states[17] = 58.926 states[18] = 107.57022 states[19] = 293.0398 states[20] = 1.2282 states[21] = 57.1876 constants[83] = 1 constants[84] = 40 constants[85] = 785 constants[86] = 15 constants[87] = 2.642367 constants[88] = 2.642367 constants[89] = 5.073345 constants[90] = 5.073345 constants[91] = 4.227788 constants[92] = 0.4932479 constants[93] = 0.4932479 constants[94] = 0.4932479 constants[95] = 0.13 constants[96] = 0.05507 constants[97] = 0.09129 constants[98] = 0.15602 constants[99] = 1.8 constants[100] = 0.58155 constants[101] = 0.68372 constants[102] = 0.832299 states[22] = 2.76087 states[23] = 4.41135 states[24] = 4.992799 states[25] = 4.22047 states[26] = 8.55228 states[27] = 7.8362 states[28] = 8.213955 states[29] = 8.76758 constants[103] = (constants[24]/constants[23])*60.0000 constants[104] = constants[60]-constants[19] constants[105] = constants[21]*(power((1.00000*1.00000)/constants[23], 1.0/2))*7.74597 constants[106] = 60.0000/constants[23] constants[107] = constants[22]*(power(1.00000/constants[23], 1.0/2))*7.74597 return (states, constants) def computeRates(voi, states, constants): rates = [0.0] * sizeStates; algebraic = [0.0] * sizeAlgebraic algebraic[26] = states[17]/constants[78]-(constants[61]*1.00000)/(exp(states[17]/constants[62])-1.00000) algebraic[27] = algebraic[26]+constants[60] algebraic[29] = states[18]/constants[79]-(constants[61]*1.00000)/(exp(states[18]/constants[62])-1.00000) algebraic[30] = algebraic[29]+constants[60] algebraic[31] = (algebraic[27]-algebraic[30])/constants[73] algebraic[32] = states[19]/constants[80]-(constants[61]*1.00000)/(exp(states[19]/constants[62])-1.00000) algebraic[33] = algebraic[32]+constants[60] algebraic[34] = (algebraic[30]-algebraic[33])/constants[74] rates[18] = algebraic[31]-algebraic[34] algebraic[35] = (algebraic[27]-algebraic[33])/constants[72] rates[17] = (states[21]-algebraic[35])-algebraic[31] algebraic[36] = constants[41]*log((states[10]-constants[43])/constants[42]+1.00000, 10) algebraic[37] = constants[45]*exp(constants[48]*(states[10]-constants[43]))+constants[46]*(power(states[10]-constants[43], 2.00000)) algebraic[38] = constants[66]*algebraic[36]+(1.00000-constants[66])*algebraic[37] rates[5] = (algebraic[38]-states[5])/constants[59] algebraic[39] = states[11]/constants[37]-(constants[61]*1.00000)/(exp(states[11]/constants[62])-1.00000) algebraic[40] = (algebraic[39]-algebraic[38])/constants[31] rates[11] = states[7]-algebraic[40] algebraic[44] = constants[34]+constants[47]*exp(4.00000*constants[66])+constants[47]*(power(constants[44]/states[10], 2.00000)) algebraic[41] = states[12]/constants[38]-(constants[61]*1.00000)/(exp(states[12]/constants[62])-1.00000) algebraic[46] = (algebraic[38]-algebraic[41])/algebraic[44] rates[10] = algebraic[40]-algebraic[46] algebraic[42] = constants[49]*log(constants[50]/states[13]-0.990000, 10)*-1.00000 algebraic[43] = (algebraic[41]-algebraic[42])/constants[32] rates[12] = algebraic[46]-algebraic[43] algebraic[45] = custom_piecewise([greater(states[14] , constants[56]), (constants[51]+constants[53]*exp(constants[56]/constants[58])+(constants[52]*(states[14]-constants[56]))/1.00000)-constants[61]/(exp(states[14]/constants[62])-1.00000) , True, (constants[51]+constants[53]*exp(states[14]/constants[58]))-constants[61]/(exp(states[14]/constants[62])-1.00000)]) algebraic[47] = algebraic[45]+constants[60] algebraic[48] = (algebraic[42]-algebraic[47])/constants[33] rates[13] = algebraic[43]-algebraic[48] algebraic[49] = (((((constants[30]*constants[27]*states[6]-constants[30]*constants[27]*states[7]*0.0600000)+((states[9]*constants[27])/constants[36])*0.0600000)-((constants[27]*constants[61])/(exp(states[9]/constants[62])-1.00000))*0.0600000)+algebraic[47]*constants[30]*0.0600000)/(constants[27]+constants[30]))*16.6667 rates[7] = ((algebraic[49]-states[7]*constants[28])-algebraic[39])/constants[40] rates[6] = (((states[4]-states[6]*constants[26]*16.6667)-algebraic[49])/constants[39])*0.0600000 algebraic[51] = (algebraic[49]-algebraic[47])/constants[27] rates[9] = ((states[6]-states[7]*0.0600000)-algebraic[51]*0.0600000)*16.6667 rates[8] = ((states[4]-states[8]/constants[35])+(constants[61]*1.00000)/(exp(states[8]/constants[62])-1.00000))/constants[29] rates[16] = (states[20]-states[21]*0.0600000)*16.6667 algebraic[60] = (rates[16]*constants[69]+constants[60]+states[16]/constants[77])-(constants[61]*1.00000)/(exp(states[16]/constants[62])-1.00000) rates[21] = ((algebraic[60]-algebraic[27])-states[21]*constants[71])/constants[82] algebraic[53] = states[22]+states[23]+states[24]+states[25]+states[26]+states[27]+states[28]+states[29] algebraic[62] = states[1]+states[0]+states[3]+states[2]+constants[86]+constants[20]+algebraic[53] algebraic[63] = constants[83]*exp((algebraic[62]-constants[85])/constants[84])-(constants[61]*1.00000)/(exp(algebraic[62]/constants[63])-1.00000) algebraic[64] = algebraic[63]+constants[60] algebraic[25] = states[27]/constants[100]-(constants[65]*1.00000)/(exp(states[27]/constants[64])-1.00000) algebraic[71] = algebraic[25]+algebraic[64] algebraic[23] = states[28]/constants[101]-(constants[65]*1.00000)/(exp(states[28]/constants[64])-1.00000) algebraic[68] = algebraic[23]+algebraic[64] algebraic[73] = (algebraic[71]-algebraic[68])/constants[92] algebraic[21] = states[29]/constants[102]-(constants[61]*1.00000)/(exp(states[29]/constants[62])-1.00000) algebraic[67] = algebraic[21]+algebraic[64] algebraic[69] = (algebraic[68]-algebraic[67])/constants[93] rates[28] = algebraic[73]-algebraic[69] algebraic[5] = voi-floor(voi/constants[106])*constants[106] algebraic[9] = algebraic[5] algebraic[10] = custom_piecewise([greater_equal(algebraic[9] , 0.00000) & less_equal(algebraic[9] , constants[107]), (1.00000-cos(( pi*algebraic[9])/constants[107]))/2.00000 , less(algebraic[9] , 1.50000*constants[107]) & greater_equal(algebraic[9] , constants[107]), (1.00000+cos((2.00000* pi*(algebraic[9]-constants[107]))/constants[107]))/2.00000 , True, 0.00000]) algebraic[11] = algebraic[10] algebraic[14] = (constants[15]-constants[16])*algebraic[11]+constants[16] algebraic[70] = (1.00000-algebraic[11])*(constants[6]-constants[7])+constants[7] algebraic[72] = (states[0]-algebraic[70])*algebraic[14]-(constants[61]*1.00000)/(exp(states[0]/constants[62])-1.00000) algebraic[74] = algebraic[72]+algebraic[64] algebraic[76] = (algebraic[67]-algebraic[74])/constants[94] rates[29] = algebraic[69]-algebraic[76] algebraic[16] = (constants[17]-constants[18])*algebraic[10]+constants[18] algebraic[55] = (1.00000-algebraic[10])*(constants[4]-constants[5])+constants[5] algebraic[57] = (states[2]-algebraic[55])*algebraic[16]-(constants[61]*1.00000)/(exp(states[2]/constants[62])-1.00000) algebraic[75] = algebraic[57]+algebraic[64] algebraic[77] = (algebraic[33]-algebraic[75])/constants[75] rates[19] = (algebraic[34]+algebraic[35])-algebraic[77] algebraic[52] = constants[54]*(power(constants[57]/states[14], 2.00000))+constants[55] algebraic[78] = (algebraic[47]-algebraic[74])/algebraic[52] rates[14] = (algebraic[48]+algebraic[51])-algebraic[78] algebraic[7] = algebraic[5]-constants[10] algebraic[12] = custom_piecewise([greater_equal(algebraic[7] , 0.00000) & less_equal(algebraic[7] , constants[105]), (1.00000-cos(( pi*algebraic[7])/constants[105]))/2.00000 , less(algebraic[7] , 1.50000*constants[105]) & greater_equal(algebraic[7] , constants[105]), (1.00000+cos((2.00000* pi*(algebraic[7]-constants[105]))/constants[105]))/2.00000 , True, 0.00000]) algebraic[17] = (constants[11]-constants[12])*algebraic[12]+constants[12] algebraic[58] = (1.00000-algebraic[12])*(constants[0]-constants[1])+constants[1] algebraic[59] = (states[3]-algebraic[58])*algebraic[17]-(constants[61]*1.00000)/(exp(states[3]/constants[62])-1.00000) algebraic[79] = algebraic[59]+algebraic[64] algebraic[80] = custom_piecewise([greater(algebraic[75] , algebraic[79]), (algebraic[75]-algebraic[79])/constants[9] , True, 0.00000]) rates[2] = algebraic[77]-algebraic[80] algebraic[83] = custom_piecewise([greater(algebraic[79] , states[4]), (algebraic[79]-states[4])/constants[25] , True, 0.00000]) algebraic[18] = states[4] algebraic[20] = states[23]/constants[96]-(constants[65]*1.00000)/(exp(states[23]/constants[64])-1.00000) algebraic[65] = algebraic[20]+algebraic[64] algebraic[66] = (algebraic[18]-algebraic[65])/constants[87] rates[4] = (((algebraic[83]-rates[8])-states[6]*16.6667)-algebraic[66])*(1.00000/constants[95]+((constants[61]/1.00000)*exp(states[22]/constants[64]))/(power(exp(states[22]/constants[64])-1.00000, 2.00000))) rates[22] = ((algebraic[83]-rates[8])-states[6]*16.6667)-algebraic[66] rates[3] = algebraic[80]-algebraic[83] algebraic[82] = fabs((algebraic[79]-algebraic[64])/2.00000) algebraic[19] = states[26]/constants[99]-(constants[65]*1.00000)/(exp(states[26]/constants[64])-1.00000) algebraic[85] = algebraic[19]+algebraic[82] algebraic[87] = (algebraic[85]-algebraic[71])/constants[91] rates[27] = algebraic[87]-algebraic[73] algebraic[13] = algebraic[12] algebraic[15] = (constants[13]-constants[14])*algebraic[13]+constants[14] algebraic[81] = (1.00000-algebraic[13])*(constants[2]-constants[3])+constants[3] algebraic[84] = (states[1]-algebraic[81])*algebraic[15]-(constants[61]*1.00000)/(exp(states[1]/constants[62])-1.00000) algebraic[86] = algebraic[84]+algebraic[64] algebraic[88] = custom_piecewise([greater(algebraic[74] , algebraic[86]), (algebraic[74]-algebraic[86])/constants[8] , True, 0.00000]) rates[0] = (algebraic[78]-algebraic[88])+algebraic[76] algebraic[22] = states[24]/constants[97]-(constants[65]*1.00000)/(exp(states[24]/constants[64])-1.00000) algebraic[89] = algebraic[22]+algebraic[82] algebraic[91] = (algebraic[65]-algebraic[89])/constants[88] rates[23] = algebraic[66]-algebraic[91] algebraic[90] = (((((constants[67]*states[15])/constants[76]-(constants[67]*constants[61]*1.00000)/(exp(states[15]/constants[62])-1.00000))+algebraic[86]*constants[68])-constants[67]*constants[68]*states[20]*16.6667)+constants[60]*constants[67])/(constants[68]+constants[67]) algebraic[28] = ((states[15]/constants[76]+constants[60])-constants[68]*states[20]*16.6667)-(constants[61]*1.00000)/(exp(states[15]/constants[62])-1.00000) algebraic[92] = custom_piecewise([greater(algebraic[86] , algebraic[90]), algebraic[90] , True, algebraic[28]]) rates[20] = (((algebraic[92]-algebraic[60])-states[20]*constants[70]*16.6667)/constants[81])*0.0600000 algebraic[24] = states[25]/constants[98]-(constants[65]*1.00000)/(exp(states[25]/constants[64])-1.00000) algebraic[93] = algebraic[24]+algebraic[82] algebraic[96] = (algebraic[89]-algebraic[93])/constants[89] rates[24] = algebraic[91]-algebraic[96] algebraic[94] = custom_piecewise([greater(algebraic[86] , algebraic[92]), (algebraic[86]-algebraic[92])/constants[67] , True, 0.00000]) rates[15] = algebraic[94]-states[20]*16.6667 rates[1] = algebraic[88]-algebraic[94] algebraic[97] = (algebraic[93]-algebraic[85])/constants[90] rates[26] = algebraic[97]-algebraic[87] rates[25] = algebraic[96]-algebraic[97] return(rates) def computeAlgebraic(constants, states, voi): algebraic = array([[0.0] * len(voi)] * sizeAlgebraic) states = array(states) voi = array(voi) algebraic[26] = states[17]/constants[78]-(constants[61]*1.00000)/(exp(states[17]/constants[62])-1.00000) algebraic[27] = algebraic[26]+constants[60] algebraic[29] = states[18]/constants[79]-(constants[61]*1.00000)/(exp(states[18]/constants[62])-1.00000) algebraic[30] = algebraic[29]+constants[60] algebraic[31] = (algebraic[27]-algebraic[30])/constants[73] algebraic[32] = states[19]/constants[80]-(constants[61]*1.00000)/(exp(states[19]/constants[62])-1.00000) algebraic[33] = algebraic[32]+constants[60] algebraic[34] = (algebraic[30]-algebraic[33])/constants[74] algebraic[35] = (algebraic[27]-algebraic[33])/constants[72] algebraic[36] = constants[41]*log((states[10]-constants[43])/constants[42]+1.00000, 10) algebraic[37] = constants[45]*exp(constants[48]*(states[10]-constants[43]))+constants[46]*(power(states[10]-constants[43], 2.00000)) algebraic[38] = constants[66]*algebraic[36]+(1.00000-constants[66])*algebraic[37] algebraic[39] = states[11]/constants[37]-(constants[61]*1.00000)/(exp(states[11]/constants[62])-1.00000) algebraic[40] = (algebraic[39]-algebraic[38])/constants[31] algebraic[44] = constants[34]+constants[47]*exp(4.00000*constants[66])+constants[47]*(power(constants[44]/states[10], 2.00000)) algebraic[41] = states[12]/constants[38]-(constants[61]*1.00000)/(exp(states[12]/constants[62])-1.00000) algebraic[46] = (algebraic[38]-algebraic[41])/algebraic[44] algebraic[42] = constants[49]*log(constants[50]/states[13]-0.990000, 10)*-1.00000 algebraic[43] = (algebraic[41]-algebraic[42])/constants[32] algebraic[45] = custom_piecewise([greater(states[14] , constants[56]), (constants[51]+constants[53]*exp(constants[56]/constants[58])+(constants[52]*(states[14]-constants[56]))/1.00000)-constants[61]/(exp(states[14]/constants[62])-1.00000) , True, (constants[51]+constants[53]*exp(states[14]/constants[58]))-constants[61]/(exp(states[14]/constants[62])-1.00000)]) algebraic[47] = algebraic[45]+constants[60] algebraic[48] = (algebraic[42]-algebraic[47])/constants[33] algebraic[49] = (((((constants[30]*constants[27]*states[6]-constants[30]*constants[27]*states[7]*0.0600000)+((states[9]*constants[27])/constants[36])*0.0600000)-((constants[27]*constants[61])/(exp(states[9]/constants[62])-1.00000))*0.0600000)+algebraic[47]*constants[30]*0.0600000)/(constants[27]+constants[30]))*16.6667 algebraic[51] = (algebraic[49]-algebraic[47])/constants[27] algebraic[60] = (rates[16]*constants[69]+constants[60]+states[16]/constants[77])-(constants[61]*1.00000)/(exp(states[16]/constants[62])-1.00000) algebraic[53] = states[22]+states[23]+states[24]+states[25]+states[26]+states[27]+states[28]+states[29] algebraic[62] = states[1]+states[0]+states[3]+states[2]+constants[86]+constants[20]+algebraic[53] algebraic[63] = constants[83]*exp((algebraic[62]-constants[85])/constants[84])-(constants[61]*1.00000)/(exp(algebraic[62]/constants[63])-1.00000) algebraic[64] = algebraic[63]+constants[60] algebraic[25] = states[27]/constants[100]-(constants[65]*1.00000)/(exp(states[27]/constants[64])-1.00000) algebraic[71] = algebraic[25]+algebraic[64] algebraic[23] = states[28]/constants[101]-(constants[65]*1.00000)/(exp(states[28]/constants[64])-1.00000) algebraic[68] = algebraic[23]+algebraic[64] algebraic[73] = (algebraic[71]-algebraic[68])/constants[92] algebraic[21] = states[29]/constants[102]-(constants[61]*1.00000)/(exp(states[29]/constants[62])-1.00000) algebraic[67] = algebraic[21]+algebraic[64] algebraic[69] = (algebraic[68]-algebraic[67])/constants[93] algebraic[5] = voi-floor(voi/constants[106])*constants[106] algebraic[9] = algebraic[5] algebraic[10] = custom_piecewise([greater_equal(algebraic[9] , 0.00000) & less_equal(algebraic[9] , constants[107]), (1.00000-cos(( pi*algebraic[9])/constants[107]))/2.00000 , less(algebraic[9] , 1.50000*constants[107]) & greater_equal(algebraic[9] , constants[107]), (1.00000+cos((2.00000* pi*(algebraic[9]-constants[107]))/constants[107]))/2.00000 , True, 0.00000]) algebraic[11] = algebraic[10] algebraic[14] = (constants[15]-constants[16])*algebraic[11]+constants[16] algebraic[70] = (1.00000-algebraic[11])*(constants[6]-constants[7])+constants[7] algebraic[72] = (states[0]-algebraic[70])*algebraic[14]-(constants[61]*1.00000)/(exp(states[0]/constants[62])-1.00000) algebraic[74] = algebraic[72]+algebraic[64] algebraic[76] = (algebraic[67]-algebraic[74])/constants[94] algebraic[16] = (constants[17]-constants[18])*algebraic[10]+constants[18] algebraic[55] = (1.00000-algebraic[10])*(constants[4]-constants[5])+constants[5] algebraic[57] = (states[2]-algebraic[55])*algebraic[16]-(constants[61]*1.00000)/(exp(states[2]/constants[62])-1.00000) algebraic[75] = algebraic[57]+algebraic[64] algebraic[77] = (algebraic[33]-algebraic[75])/constants[75] algebraic[52] = constants[54]*(power(constants[57]/states[14], 2.00000))+constants[55] algebraic[78] = (algebraic[47]-algebraic[74])/algebraic[52] algebraic[7] = algebraic[5]-constants[10] algebraic[12] = custom_piecewise([greater_equal(algebraic[7] , 0.00000) & less_equal(algebraic[7] , constants[105]), (1.00000-cos(( pi*algebraic[7])/constants[105]))/2.00000 , less(algebraic[7] , 1.50000*constants[105]) & greater_equal(algebraic[7] , constants[105]), (1.00000+cos((2.00000* pi*(algebraic[7]-constants[105]))/constants[105]))/2.00000 , True, 0.00000]) algebraic[17] = (constants[11]-constants[12])*algebraic[12]+constants[12] algebraic[58] = (1.00000-algebraic[12])*(constants[0]-constants[1])+constants[1] algebraic[59] = (states[3]-algebraic[58])*algebraic[17]-(constants[61]*1.00000)/(exp(states[3]/constants[62])-1.00000) algebraic[79] = algebraic[59]+algebraic[64] algebraic[80] = custom_piecewise([greater(algebraic[75] , algebraic[79]), (algebraic[75]-algebraic[79])/constants[9] , True, 0.00000]) algebraic[83] = custom_piecewise([greater(algebraic[79] , states[4]), (algebraic[79]-states[4])/constants[25] , True, 0.00000]) algebraic[18] = states[4] algebraic[20] = states[23]/constants[96]-(constants[65]*1.00000)/(exp(states[23]/constants[64])-1.00000) algebraic[65] = algebraic[20]+algebraic[64] algebraic[66] = (algebraic[18]-algebraic[65])/constants[87] algebraic[82] = fabs((algebraic[79]-algebraic[64])/2.00000) algebraic[19] = states[26]/constants[99]-(constants[65]*1.00000)/(exp(states[26]/constants[64])-1.00000) algebraic[85] = algebraic[19]+algebraic[82] algebraic[87] = (algebraic[85]-algebraic[71])/constants[91] algebraic[13] = algebraic[12] algebraic[15] = (constants[13]-constants[14])*algebraic[13]+constants[14] algebraic[81] = (1.00000-algebraic[13])*(constants[2]-constants[3])+constants[3] algebraic[84] = (states[1]-algebraic[81])*algebraic[15]-(constants[61]*1.00000)/(exp(states[1]/constants[62])-1.00000) algebraic[86] = algebraic[84]+algebraic[64] algebraic[88] = custom_piecewise([greater(algebraic[74] , algebraic[86]), (algebraic[74]-algebraic[86])/constants[8] , True, 0.00000]) algebraic[22] = states[24]/constants[97]-(constants[65]*1.00000)/(exp(states[24]/constants[64])-1.00000) algebraic[89] = algebraic[22]+algebraic[82] algebraic[91] = (algebraic[65]-algebraic[89])/constants[88] algebraic[90] = (((((constants[67]*states[15])/constants[76]-(constants[67]*constants[61]*1.00000)/(exp(states[15]/constants[62])-1.00000))+algebraic[86]*constants[68])-constants[67]*constants[68]*states[20]*16.6667)+constants[60]*constants[67])/(constants[68]+constants[67]) algebraic[28] = ((states[15]/constants[76]+constants[60])-constants[68]*states[20]*16.6667)-(constants[61]*1.00000)/(exp(states[15]/constants[62])-1.00000) algebraic[92] = custom_piecewise([greater(algebraic[86] , algebraic[90]), algebraic[90] , True, algebraic[28]]) algebraic[24] = states[25]/constants[98]-(constants[65]*1.00000)/(exp(states[25]/constants[64])-1.00000) algebraic[93] = algebraic[24]+algebraic[82] algebraic[96] = (algebraic[89]-algebraic[93])/constants[89] algebraic[94] = custom_piecewise([greater(algebraic[86] , algebraic[92]), (algebraic[86]-algebraic[92])/constants[67] , True, 0.00000]) algebraic[97] = (algebraic[93]-algebraic[85])/constants[90] algebraic[0] = states[4]-constants[60] algebraic[1] = states[8]+states[9]+states[10]+states[11] algebraic[2] = states[13]+states[14] algebraic[3] = states[15]+states[16]+states[17] algebraic[4] = states[19] algebraic[6] = custom_piecewise([greater(voi , algebraic[5]) & less(voi , algebraic[5]+0.0200000), 5.00000 , greater(voi , algebraic[5]+constants[10]) & less(voi , algebraic[5]+constants[10]+0.0200000), 10.0000 , True, 0.00000]) algebraic[8] = algebraic[0] algebraic[50] = algebraic[49]-constants[19] algebraic[54] = states[0]+states[1]+states[15]+states[16]+states[17]+states[18]+states[19]+states[2]+states[3]+states[8]+states[9]+states[10]+states[11]+states[12]+states[13]+states[14]+constants[86]+algebraic[53] algebraic[56] = algebraic[54]-constants[86] algebraic[61] = algebraic[60]-constants[60] algebraic[95] = algebraic[92]-constants[60] return algebraic def custom_piecewise(cases): """Compute result of a piecewise function""" return select(cases[0::2],cases[1::2]) def solve_model(): """Solve model with ODE solver""" from scipy.integrate import ode # Initialise constants and state variables (init_states, constants) = initConsts() # Set timespan to solve over voi = linspace(0, 10, 500) # Construct ODE object to solve r = ode(computeRates) r.set_integrator('vode', method='bdf', atol=1e-06, rtol=1e-06, max_step=1) r.set_initial_value(init_states, voi[0]) r.set_f_params(constants) # Solve model states = array([[0.0] * len(voi)] * sizeStates) states[:,0] = init_states for (i,t) in enumerate(voi[1:]): if r.successful(): r.integrate(t) states[:,i+1] = r.y else: break # Compute algebraic variables algebraic = computeAlgebraic(constants, states, voi) return (voi, states, algebraic) def plot_model(voi, states, algebraic): """Plot variables against variable of integration""" import pylab (legend_states, legend_algebraic, legend_voi, legend_constants) = createLegends() pylab.figure(1) pylab.plot(voi,vstack((states,algebraic)).T) pylab.xlabel(legend_voi) pylab.legend(legend_states + legend_algebraic, loc='best') pylab.show() if __name__ == "__main__": (voi, states, algebraic) = solve_model() plot_model(voi, states, algebraic)