Created
July 28, 2019 16:16
-
-
Save agarny/ccc18a30fcb587dd45418e0591eee893 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <math.h> | |
#include <stdio.h> | |
void initializeConstants(double *states, double *variables) | |
{ | |
states[0] = 0.092361701692; | |
states[1] = 0.015905380261; | |
states[2] = 0.01445216109; | |
states[3] = 0.04804900895; | |
states[4] = 0.48779845203; | |
states[5] = 0.42074047435; | |
states[6] = 0.038968420558; | |
states[7] = 0.29760539675; | |
states[8] = 0.064402950262; | |
states[9] = 0.13034201158; | |
states[10] = 0.46960956028; | |
states[11] = 0.87993375273; | |
states[12] = 0.082293827208; | |
states[13] = 0.03889291759; | |
states[14] = -39.013558536; | |
variables[0] = 46.4; | |
variables[1] = 0.0057938; | |
variables[2] = 0.0082; | |
variables[3] = 0.0058; | |
variables[4] = 0.06588648; | |
variables[5] = 0.0659; | |
variables[6] = 0.0659; | |
variables[7] = 45.0; | |
variables[8] = 0.00427806; | |
variables[9] = 0.0021; | |
variables[10] = 0.0043; | |
variables[11] = 0.0138823; | |
variables[12] = 0.00694; | |
variables[13] = 0.0139; | |
variables[14] = 1.3236e-5; | |
variables[15] = 1.323e-5; | |
variables[16] = 1.32e-5; | |
variables[17] = 4.2952e-5; | |
variables[18] = 4.29e-5; | |
variables[19] = 4.3e-5; | |
variables[20] = 6.645504e-5; | |
variables[21] = 0.000266; | |
variables[22] = 6.65e-5; | |
variables[23] = 0.01138376; | |
variables[24] = 0.0114; | |
variables[25] = 0.0114; | |
variables[26] = 0.004905; | |
variables[27] = 0.004905; | |
variables[28] = 0.00491; | |
variables[29] = 0.036495; | |
variables[30] = 0.0365; | |
variables[31] = 0.03649; | |
variables[32] = 0.0005465; | |
variables[33] = 0.000437; | |
variables[34] = 0.000548; | |
variables[35] = 0.006875; | |
variables[36] = 0.0055; | |
variables[37] = 0.0069; | |
variables[38] = 0.0005465; | |
variables[39] = 0.000437; | |
variables[40] = 0.000548; | |
variables[41] = 0.006875; | |
variables[42] = 0.0055; | |
variables[43] = 0.0069; | |
variables[44] = 0.0001; | |
variables[45] = 2.0; | |
variables[46] = 140.0; | |
variables[47] = 5.4; | |
variables[48] = 8.0; | |
variables[49] = 140.0; | |
variables[50] = 2.0e-5; | |
variables[51] = 6.5e-5; | |
variables[52] = 96845.0; | |
variables[53] = 1.0309347; | |
variables[54] = 8314.0; | |
variables[55] = 310.0; | |
variables[56] = 1.0; | |
variables[57] = 0.0; | |
variables[58] = 0.0; | |
variables[59] = 0.0042; | |
variables[60] = 0.0; | |
variables[61] = 0.0; | |
variables[62] = 0.03339; | |
variables[63] = 0.0; | |
variables[64] = 2.523636e-5; | |
variables[65] = 2.52e-5; | |
variables[66] = 2.52e-5; | |
variables[67] = 8.1892e-5; | |
variables[68] = 8.19e-5; | |
variables[69] = 8.19e-5; | |
variables[70] = 0.00079704; | |
variables[71] = 0.000738; | |
variables[72] = 0.000797; | |
variables[73] = 0.016; | |
variables[74] = 0.0208; | |
variables[75] = 0.016; | |
variables[76] = 0.0003445; | |
variables[77] = 0.000345; | |
variables[78] = 0.000518; | |
variables[79] = 0.0104; | |
variables[80] = 0.0104; | |
variables[81] = 0.0104; | |
variables[82] = 5.81818e-5; | |
variables[83] = 5.8e-5; | |
variables[84] = 5.8e-5; | |
variables[85] = 0.0001888; | |
variables[86] = 0.000189; | |
variables[87] = 0.000189; | |
variables[88] = 0.0001; | |
variables[89] = 0.5; | |
variables[90] = 2.7229e-6; | |
variables[91] = 2.8e-6; | |
variables[92] = 2.7e-6; | |
variables[93] = 8.83584e-6; | |
variables[94] = 8.8e-6; | |
variables[95] = 8.8e-6; | |
variables[96] = 0.0; | |
variables[97] = 0.0; | |
variables[98] = 0.0; | |
variables[99] = 1.204e-6; | |
variables[100] = 3.7e-7; | |
variables[101] = 1.2e-6; | |
variables[102] = 0.621; | |
variables[103] = 5.64; | |
variables[104] = 0.04782545; | |
variables[105] = 0.0478; | |
variables[106] = 0.0478; | |
variables[107] = 0.1551936; | |
variables[108] = 0.16; | |
variables[109] = 0.16; | |
} | |
void computeComputedConstants(double *variables) | |
{ | |
variables[110] = (variables[56] == 0.0)?1.07*(3.0*variables[57]-0.1)/(3.0*(1.0+0.7745*exp(-(3.0*variables[57]-2.05)/0.295))):(variables[56] == 1.0)?variables[53]*variables[57]/(1.0+0.7745*exp(-(3.0*variables[57]-2.05)/0.295)):1.07*29.0*variables[57]/(30.0*(1.0+0.7745*exp(-(29.0*variables[57]-24.5)/1.95))); | |
variables[111] = variables[50]+variables[110]*(variables[51]-variables[50]); | |
variables[112] = (variables[56] == 0.0)?variables[84]+variables[110]*(variables[87]-variables[84]):(variables[56] == 1.0)?variables[82]+variables[110]*(variables[85]-variables[82]):variables[83]+variables[110]*(variables[86]-variables[83]); | |
variables[113] = (variables[56] == 0.0)?variables[66]+variables[110]*(variables[69]-variables[66]):(variables[56] == 1.0)?variables[64]+variables[110]*(variables[67]-variables[64]):variables[65]+variables[110]*(variables[68]-variables[65]); | |
variables[114] = (variables[56] == 0.0)?variables[16]+variables[110]*(variables[19]-variables[16]):(variables[56] == 1.0)?variables[14]+variables[110]*(variables[17]-variables[14]):variables[15]+variables[110]*(variables[18]-variables[15]); | |
variables[115] = (variables[56] == 0.0)?variables[92]+variables[110]*(variables[95]-variables[92]):(variables[56] == 1.0)?variables[90]+variables[110]*(variables[93]-variables[90]):variables[91]+variables[110]*(variables[94]-variables[91]); | |
variables[117] = (variables[56] == 0.0)?variables[106]+variables[110]*(variables[109]-variables[106]):(variables[56] == 1.0)?variables[104]+variables[110]*(variables[107]-variables[104]):variables[105]+variables[110]*(variables[108]-variables[105]); | |
variables[119] = (variables[56] == 0.0)?variables[60]+variables[110]*(variables[63]-variables[60]):(variables[56] == 1.0)?variables[58]+variables[110]*(variables[61]-variables[58]):variables[59]+variables[110]*(variables[62]-variables[59]); | |
variables[120] = variables[119]*variables[44]/(variables[44]+0.0004); | |
variables[121] = variables[54]*variables[55]/variables[52]*log(variables[49]/variables[48]); | |
variables[122] = variables[54]*variables[55]/variables[52]*log(variables[47]/variables[46]); | |
variables[123] = variables[54]*variables[55]/(2.0*variables[52])*log(variables[45]/variables[44]); | |
variables[124] = (variables[56] == 0.0)?variables[54]*variables[55]/variables[52]*log((variables[47]+0.12*variables[49])/(variables[46]+0.12*variables[48])):variables[54]*variables[55]/variables[52]*log((variables[47]+0.03*variables[49])/(variables[46]+0.03*variables[48])); | |
variables[125] = (variables[56] == 0.0)?variables[98]+variables[110]*(variables[101]-variables[98]):(variables[56] == 1.0)?variables[96]+variables[110]*(variables[99]-variables[96]):variables[97]+variables[110]*(variables[100]-variables[97]); | |
variables[134] = (variables[56] == 0.0)?variables[3]+variables[110]*(variables[6]-variables[3]):(variables[56] == 1.0)?variables[1]+variables[110]*(variables[4]-variables[1]):variables[2]+variables[110]*(variables[5]-variables[2]); | |
variables[144] = (variables[56] == 0.0)?variables[10]+variables[110]*(variables[13]-variables[10]):(variables[56] == 1.0)?variables[8]+variables[110]*(variables[11]-variables[8]):variables[9]+variables[110]*(variables[12]-variables[9]); | |
variables[154] = (variables[56] == 0.0)?variables[28]+variables[110]*(variables[31]-variables[28]):(variables[56] == 1.0)?variables[26]+variables[110]*(variables[29]-variables[26]):variables[27]+variables[110]*(variables[30]-variables[27]); | |
variables[155] = (variables[56] == 0.0)?variables[22]+variables[110]*(variables[25]-variables[22]):(variables[56] == 1.0)?variables[20]+variables[110]*(variables[23]-variables[20]):variables[21]+variables[110]*(variables[24]-variables[21]); | |
variables[162] = (variables[56] == 0.0)?variables[72]+variables[110]*(variables[75]-variables[72]):(variables[56] == 1.0)?variables[70]+variables[110]*(variables[73]-variables[70]):variables[71]+variables[110]*(variables[74]-variables[71]); | |
variables[168] = (variables[56] == 0.0)?0.002:(variables[56] == 1.0)?0.002:0.006; | |
variables[170] = (variables[56] == 0.0)?variables[78]+variables[110]*(variables[81]-variables[78]):(variables[56] == 1.0)?variables[76]+variables[110]*(variables[79]-variables[76]):variables[77]+variables[110]*(variables[80]-variables[77]); | |
variables[174] = (variables[56] == 0.0)?variables[40]+variables[110]*(variables[43]-variables[40]):(variables[56] == 1.0)?variables[38]+variables[110]*(variables[41]-variables[38]):variables[39]+variables[110]*(variables[42]-variables[39]); | |
variables[176] = (variables[56] == 0.0)?variables[34]+variables[110]*(variables[37]-variables[34]):(variables[56] == 1.0)?variables[32]+variables[110]*(variables[35]-variables[32]):variables[33]+variables[110]*(variables[36]-variables[33]); | |
} | |
void computeRates(double voi, double *states, double *rates, double *variables) | |
{ | |
variables[126] = (variables[56] == 0.0)?pow(1.0/(1.0+exp(-states[14]/5.46)), 1.0/3.0):pow(1.0/(1.0+exp(-(states[14]+30.32)/5.46)), 1.0/3.0); | |
variables[127] = (variables[56] == 0.0)?0.0006247/(0.832*exp(-0.335*(states[14]+56.7))+0.627*exp(0.082*(states[14]+65.01)))+4.0e-5:0.0006247/(0.8322166*exp(-0.33566*(states[14]+56.7062))+0.6274*exp(0.0823*(states[14]+65.0131)))+4.569e-5; | |
rates[0] = (variables[126]-states[0])/variables[127]; | |
variables[130] = 1.0/(1.0+exp((states[14]+66.1)/6.4)); | |
variables[132] = 3.717e-6*exp(-0.2815*(states[14]+17.11))/(1.0+0.003732*exp(-0.3426*(states[14]+37.76)))+0.0005977; | |
rates[1] = (variables[130]-states[1])/variables[132]; | |
variables[131] = variables[130]; | |
variables[133] = 3.186e-8*exp(-0.6219*(states[14]+18.8))/(1.0+7.189e-5*exp(-0.6683*(states[14]+34.07)))+0.003556; | |
rates[2] = (variables[131]-states[2])/variables[133]; | |
variables[139] = (variables[56] == 0.0)?1.0/(1.0+exp(-(states[14]+23.1)/6.0)):(variables[56] == 1.0)?1.0/(1.0+exp(-(states[14]+22.3+0.8*variables[110])/6.0)):1.0/(1.0+exp(-(states[14]+22.2)/6.0)); | |
variables[136] = (variables[56] == 0.0)?-28.38*(states[14]+35.0)/(exp(-(states[14]+35.0)/2.5)-1.0)-84.9*states[14]/(exp(-0.208*states[14])-1.0):(variables[56] == 1.0)?-28.39*(states[14]+35.0)/(exp(-(states[14]+35.0)/2.5)-1.0)-84.9*states[14]/(exp(-0.208*states[14])-1.0):-28.4*(states[14]+35.0)/(exp(-(states[14]+35.0)/2.5)-1.0)-84.9*states[14]/(exp(-0.208*states[14])-1.0); | |
variables[137] = (variables[56] == 1.0)?11.43*(states[14]-5.0)/(exp(0.4*(states[14]-5.0))-1.0):11.42*(states[14]-5.0)/(exp(0.4*(states[14]-5.0))-1.0); | |
variables[138] = 2.0/(variables[136]+variables[137]); | |
rates[3] = (variables[139]-states[3])/variables[138]; | |
variables[143] = 1.0/(1.0+exp((states[14]+45.0)/5.0)); | |
variables[140] = (variables[56] == 1.0)?3.75*(states[14]+28.0)/(exp((states[14]+28.0)/4.0)-1.0):3.12*(states[14]+28.0)/(exp((states[14]+28.0)/4.0)-1.0); | |
variables[141] = (variables[56] == 1.0)?30.0/(1.0+exp(-(states[14]+28.0)/4.0)):25.0/(1.0+exp(-(states[14]+28.0)/4.0)); | |
variables[142] = (variables[56] == 1.0)?(1.2-0.2*variables[110])/(variables[140]+variables[141]):1.0/(variables[140]+variables[141]); | |
rates[4] = (variables[143]-states[4])/variables[142]; | |
variables[149] = 1.0/(1.0+exp(-(states[14]+37.0)/6.8)); | |
variables[146] = 1068.0*exp((states[14]+26.3)/30.0); | |
variables[147] = 1068.0*exp(-(states[14]+26.3)/30.0); | |
variables[148] = 1.0/(variables[146]+variables[147]); | |
rates[5] = (variables[149]-states[5])/variables[148]; | |
variables[153] = 1.0/(1.0+exp((states[14]+71.0)/9.0)); | |
variables[150] = (variables[56] == 1.0)?15.3*exp(-(states[14]+71.0+0.7*variables[110])/83.3):15.3*exp(-(states[14]+71.7)/83.3); | |
variables[151] = (variables[56] == 1.0)?15.0*exp((states[14]+71.0)/15.38):15.0*exp((states[14]+71.7)/15.38); | |
variables[152] = 1.0/(variables[150]+variables[151]); | |
rates[6] = (variables[153]-states[6])/variables[152]; | |
variables[158] = 1.0/(1.0+exp((states[14]+59.37)/13.1)); | |
variables[159] = (variables[56] == 0.0)?0.0101+0.06517/(0.57*exp(-0.08*(states[14]+49.0)))+2.4e-5*exp(0.1*(states[14]+50.93)):(variables[56] == 1.0)?0.001/3.0*(30.31+195.5/(0.5686*exp(-0.08161*(states[14]+39.0+10.0*variables[110]))+0.7174*exp((0.2719-0.1719*variables[110])*1.0*(states[14]+40.93+10.0*variables[110])))):0.0101+0.06517/(0.5686*exp(-0.08161*(states[14]+39.0))+0.7174*exp(0.2719*(states[14]+40.93))); | |
rates[7] = (variables[158]-states[7])/variables[159]; | |
variables[160] = 1.0/(1.0+exp(-(states[14]-10.93)/19.7)); | |
variables[161] = (variables[56] == 0.0)?0.001*(2.98+15.59/(1.037*exp(0.09*(states[14]+30.61))+0.369*exp(-0.12*(states[14]+23.84)))):(variables[56] == 1.0)?0.0025*(1.191+7.838/(1.037*exp(0.09012*(states[14]+30.61))+0.369*exp(-0.119*(states[14]+23.84)))):0.001*(2.98+19.59/(1.037*exp(0.09012*(states[14]+30.61))+0.369*exp(-0.119*(states[14]+23.84)))); | |
rates[8] = (variables[160]-states[8])/variables[161]; | |
variables[164] = (variables[56] != 2.0)?1.0/(1.0+exp(-(states[14]+14.2)/10.6)):1.0/(1.0+exp(-(states[14]+13.2)/10.6)); | |
variables[165] = (variables[56] != 2.0)?1.0/(37.2*exp((states[14]-9.0)/15.9)+0.96*exp(-(states[14]-9.0)/22.5)):1.0/(37.2*exp((states[14]-10.0)/15.9)+0.96*exp(-(states[14]-10.0)/22.5)); | |
rates[9] = (variables[164]-states[9])/variables[165]; | |
variables[166] = variables[164]; | |
variables[167] = (variables[56] != 2.0)?1.0/(4.2*exp((states[14]-9.0)/17.0)+0.15*exp(-(states[14]-9.0)/21.6)):1.0/(4.2*exp((states[14]-10.0)/17.0)+0.15*exp(-(states[14]-10.0)/21.6)); | |
rates[10] = (variables[166]-states[10])/variables[167]; | |
variables[169] = 1.0/(1.0+exp((states[14]+18.6)/10.1)); | |
rates[11] = (variables[169]-states[11])/variables[168]; | |
variables[172] = 14.0/(1.0+exp(-(states[14]-40.0)/9.0)); | |
variables[173] = 1.0*exp(-states[14]/45.0); | |
rates[12] = variables[172]*(1.0-states[12])-variables[173]*states[12]; | |
variables[178] = (variables[56] == 0.0)?1.0*exp(-(states[14]+78.91)/26.62):1.0*exp(-(states[14]+78.91)/26.63); | |
variables[179] = 1.0*exp((states[14]+75.13)/21.25); | |
rates[13] = variables[178]*(1.0-states[13])-variables[179]*states[13]; | |
variables[118] = variables[117]*pow(variables[48]/(variables[103]+variables[48]), 3.0)*pow(variables[47]/(variables[102]+variables[47]), 2.0)*1.6/(1.5+exp(-(states[14]+60.0)/40.0)); | |
variables[116] = (variables[56] == 0.0)?variables[115]*(pow(variables[48], 3.0)*variables[45]*exp(0.03743*states[14]*variables[89])-pow(variables[49], 3.0)*variables[44]*exp(0.0374*states[14]*(variables[89]-1.0)))/(1.0+variables[88]*(variables[44]*pow(variables[49], 3.0)+variables[45]*pow(variables[48], 3.0))):variables[115]*(pow(variables[48], 3.0)*variables[45]*exp(0.03743*states[14]*variables[89])-pow(variables[49], 3.0)*variables[44]*exp(0.03743*states[14]*(variables[89]-1.0)))/(1.0+variables[88]*(variables[44]*pow(variables[49], 3.0)+variables[45]*pow(variables[48], 3.0))); | |
variables[177] = (variables[56] != 2.0)?variables[176]*states[13]*(states[14]-variables[122]):variables[176]*states[13]*(states[14]+102.0); | |
variables[175] = (variables[56] != 2.0)?variables[174]*states[13]*(states[14]-variables[121]):variables[174]*states[13]*(states[14]-77.6); | |
variables[171] = variables[170]*pow(states[12], 2.0)*(states[14]-variables[124]); | |
variables[157] = variables[155]*states[8]*(states[14]-variables[122]); | |
variables[156] = variables[154]*states[7]*states[8]*(states[14]-variables[122]); | |
variables[145] = variables[144]*states[5]*states[6]*(states[14]-variables[7]); | |
variables[135] = variables[134]*(states[4]*states[3]+0.006/(1.0+exp(-(states[14]+14.1)/6.0)))*(states[14]-variables[0]); | |
variables[128] = (variables[56] == 0.0)?0.0952*exp(-0.063*(states[14]+34.4))/(1.0+1.66*exp(-0.225*(states[14]+63.7)))+0.0869:0.09518*exp(-0.06306*(states[14]+34.4))/(1.0+1.662*exp(-0.2251*(states[14]+63.7)))+0.08693; | |
variables[129] = (1.0-variables[128])*states[1]+variables[128]*states[2]; | |
variables[183] = variables[125]*pow(states[0], 3.0)*variables[129]*variables[49]*pow(variables[52], 2.0)/(variables[54]*variables[55])*(exp((states[14]-variables[121])*variables[52]/(variables[54]*variables[55]))-1.0)/(exp(states[14]*variables[52]/(variables[54]*variables[55]))-1.0)*states[14]; | |
variables[181] = variables[113]*(states[14]-variables[122]); | |
variables[182] = variables[114]*(states[14]-variables[123]); | |
variables[180] = variables[112]*(states[14]-variables[121]); | |
variables[163] = 0.6*states[9]+0.4*states[10]; | |
variables[184] = variables[162]*variables[163]*states[11]*(states[14]-variables[122]); | |
rates[14] = -1.0/variables[111]*(variables[183]+variables[135]+variables[145]+variables[156]+variables[157]+variables[184]+variables[171]+variables[175]+variables[177]+variables[180]+variables[182]+variables[181]+variables[116]+variables[118]+variables[120]); | |
} | |
void computeVariables(double voi, double *states, double *rates, double *variables) | |
{ | |
variables[116] = (variables[56] == 0.0)?variables[115]*(pow(variables[48], 3.0)*variables[45]*exp(0.03743*states[14]*variables[89])-pow(variables[49], 3.0)*variables[44]*exp(0.0374*states[14]*(variables[89]-1.0)))/(1.0+variables[88]*(variables[44]*pow(variables[49], 3.0)+variables[45]*pow(variables[48], 3.0))):variables[115]*(pow(variables[48], 3.0)*variables[45]*exp(0.03743*states[14]*variables[89])-pow(variables[49], 3.0)*variables[44]*exp(0.03743*states[14]*(variables[89]-1.0)))/(1.0+variables[88]*(variables[44]*pow(variables[49], 3.0)+variables[45]*pow(variables[48], 3.0))); | |
variables[118] = variables[117]*pow(variables[48]/(variables[103]+variables[48]), 3.0)*pow(variables[47]/(variables[102]+variables[47]), 2.0)*1.6/(1.5+exp(-(states[14]+60.0)/40.0)); | |
variables[126] = (variables[56] == 0.0)?pow(1.0/(1.0+exp(-states[14]/5.46)), 1.0/3.0):pow(1.0/(1.0+exp(-(states[14]+30.32)/5.46)), 1.0/3.0); | |
variables[127] = (variables[56] == 0.0)?0.0006247/(0.832*exp(-0.335*(states[14]+56.7))+0.627*exp(0.082*(states[14]+65.01)))+4.0e-5:0.0006247/(0.8322166*exp(-0.33566*(states[14]+56.7062))+0.6274*exp(0.0823*(states[14]+65.0131)))+4.569e-5; | |
variables[128] = (variables[56] == 0.0)?0.0952*exp(-0.063*(states[14]+34.4))/(1.0+1.66*exp(-0.225*(states[14]+63.7)))+0.0869:0.09518*exp(-0.06306*(states[14]+34.4))/(1.0+1.662*exp(-0.2251*(states[14]+63.7)))+0.08693; | |
variables[129] = (1.0-variables[128])*states[1]+variables[128]*states[2]; | |
variables[130] = 1.0/(1.0+exp((states[14]+66.1)/6.4)); | |
variables[131] = variables[130]; | |
variables[132] = 3.717e-6*exp(-0.2815*(states[14]+17.11))/(1.0+0.003732*exp(-0.3426*(states[14]+37.76)))+0.0005977; | |
variables[133] = 3.186e-8*exp(-0.6219*(states[14]+18.8))/(1.0+7.189e-5*exp(-0.6683*(states[14]+34.07)))+0.003556; | |
variables[135] = variables[134]*(states[4]*states[3]+0.006/(1.0+exp(-(states[14]+14.1)/6.0)))*(states[14]-variables[0]); | |
variables[136] = (variables[56] == 0.0)?-28.38*(states[14]+35.0)/(exp(-(states[14]+35.0)/2.5)-1.0)-84.9*states[14]/(exp(-0.208*states[14])-1.0):(variables[56] == 1.0)?-28.39*(states[14]+35.0)/(exp(-(states[14]+35.0)/2.5)-1.0)-84.9*states[14]/(exp(-0.208*states[14])-1.0):-28.4*(states[14]+35.0)/(exp(-(states[14]+35.0)/2.5)-1.0)-84.9*states[14]/(exp(-0.208*states[14])-1.0); | |
variables[137] = (variables[56] == 1.0)?11.43*(states[14]-5.0)/(exp(0.4*(states[14]-5.0))-1.0):11.42*(states[14]-5.0)/(exp(0.4*(states[14]-5.0))-1.0); | |
variables[138] = 2.0/(variables[136]+variables[137]); | |
variables[139] = (variables[56] == 0.0)?1.0/(1.0+exp(-(states[14]+23.1)/6.0)):(variables[56] == 1.0)?1.0/(1.0+exp(-(states[14]+22.3+0.8*variables[110])/6.0)):1.0/(1.0+exp(-(states[14]+22.2)/6.0)); | |
variables[140] = (variables[56] == 1.0)?3.75*(states[14]+28.0)/(exp((states[14]+28.0)/4.0)-1.0):3.12*(states[14]+28.0)/(exp((states[14]+28.0)/4.0)-1.0); | |
variables[141] = (variables[56] == 1.0)?30.0/(1.0+exp(-(states[14]+28.0)/4.0)):25.0/(1.0+exp(-(states[14]+28.0)/4.0)); | |
variables[142] = (variables[56] == 1.0)?(1.2-0.2*variables[110])/(variables[140]+variables[141]):1.0/(variables[140]+variables[141]); | |
variables[143] = 1.0/(1.0+exp((states[14]+45.0)/5.0)); | |
variables[145] = variables[144]*states[5]*states[6]*(states[14]-variables[7]); | |
variables[146] = 1068.0*exp((states[14]+26.3)/30.0); | |
variables[147] = 1068.0*exp(-(states[14]+26.3)/30.0); | |
variables[148] = 1.0/(variables[146]+variables[147]); | |
variables[149] = 1.0/(1.0+exp(-(states[14]+37.0)/6.8)); | |
variables[150] = (variables[56] == 1.0)?15.3*exp(-(states[14]+71.0+0.7*variables[110])/83.3):15.3*exp(-(states[14]+71.7)/83.3); | |
variables[151] = (variables[56] == 1.0)?15.0*exp((states[14]+71.0)/15.38):15.0*exp((states[14]+71.7)/15.38); | |
variables[152] = 1.0/(variables[150]+variables[151]); | |
variables[153] = 1.0/(1.0+exp((states[14]+71.0)/9.0)); | |
variables[156] = variables[154]*states[7]*states[8]*(states[14]-variables[122]); | |
variables[157] = variables[155]*states[8]*(states[14]-variables[122]); | |
variables[158] = 1.0/(1.0+exp((states[14]+59.37)/13.1)); | |
variables[159] = (variables[56] == 0.0)?0.0101+0.06517/(0.57*exp(-0.08*(states[14]+49.0)))+2.4e-5*exp(0.1*(states[14]+50.93)):(variables[56] == 1.0)?0.001/3.0*(30.31+195.5/(0.5686*exp(-0.08161*(states[14]+39.0+10.0*variables[110]))+0.7174*exp((0.2719-0.1719*variables[110])*1.0*(states[14]+40.93+10.0*variables[110])))):0.0101+0.06517/(0.5686*exp(-0.08161*(states[14]+39.0))+0.7174*exp(0.2719*(states[14]+40.93))); | |
variables[160] = 1.0/(1.0+exp(-(states[14]-10.93)/19.7)); | |
variables[161] = (variables[56] == 0.0)?0.001*(2.98+15.59/(1.037*exp(0.09*(states[14]+30.61))+0.369*exp(-0.12*(states[14]+23.84)))):(variables[56] == 1.0)?0.0025*(1.191+7.838/(1.037*exp(0.09012*(states[14]+30.61))+0.369*exp(-0.119*(states[14]+23.84)))):0.001*(2.98+19.59/(1.037*exp(0.09012*(states[14]+30.61))+0.369*exp(-0.119*(states[14]+23.84)))); | |
variables[163] = 0.6*states[9]+0.4*states[10]; | |
variables[164] = (variables[56] != 2.0)?1.0/(1.0+exp(-(states[14]+14.2)/10.6)):1.0/(1.0+exp(-(states[14]+13.2)/10.6)); | |
variables[165] = (variables[56] != 2.0)?1.0/(37.2*exp((states[14]-9.0)/15.9)+0.96*exp(-(states[14]-9.0)/22.5)):1.0/(37.2*exp((states[14]-10.0)/15.9)+0.96*exp(-(states[14]-10.0)/22.5)); | |
variables[166] = variables[164]; | |
variables[167] = (variables[56] != 2.0)?1.0/(4.2*exp((states[14]-9.0)/17.0)+0.15*exp(-(states[14]-9.0)/21.6)):1.0/(4.2*exp((states[14]-10.0)/17.0)+0.15*exp(-(states[14]-10.0)/21.6)); | |
variables[169] = 1.0/(1.0+exp((states[14]+18.6)/10.1)); | |
variables[171] = variables[170]*pow(states[12], 2.0)*(states[14]-variables[124]); | |
variables[172] = 14.0/(1.0+exp(-(states[14]-40.0)/9.0)); | |
variables[173] = 1.0*exp(-states[14]/45.0); | |
variables[175] = (variables[56] != 2.0)?variables[174]*states[13]*(states[14]-variables[121]):variables[174]*states[13]*(states[14]-77.6); | |
variables[177] = (variables[56] != 2.0)?variables[176]*states[13]*(states[14]-variables[122]):variables[176]*states[13]*(states[14]+102.0); | |
variables[178] = (variables[56] == 0.0)?1.0*exp(-(states[14]+78.91)/26.62):1.0*exp(-(states[14]+78.91)/26.63); | |
variables[179] = 1.0*exp((states[14]+75.13)/21.25); | |
variables[180] = variables[112]*(states[14]-variables[121]); | |
variables[181] = variables[113]*(states[14]-variables[122]); | |
variables[182] = variables[114]*(states[14]-variables[123]); | |
variables[183] = variables[125]*pow(states[0], 3.0)*variables[129]*variables[49]*pow(variables[52], 2.0)/(variables[54]*variables[55])*(exp((states[14]-variables[121])*variables[52]/(variables[54]*variables[55]))-1.0)/(exp(states[14]*variables[52]/(variables[54]*variables[55]))-1.0)*states[14]; | |
variables[184] = variables[162]*variables[163]*states[11]*(states[14]-variables[122]); | |
} | |
#define NB_OF_STATES 15 | |
#define NB_OF_VARIABLES 185 | |
#define DELTA_T 0.00001 | |
void outputData(double voi, double *states, double *variables) | |
{ | |
printf("%f", voi); | |
for (int i = 0; i < NB_OF_STATES; ++i) { | |
printf (",%f", states[i]); | |
} | |
for (int i = 0; i < NB_OF_VARIABLES; ++i) { | |
printf (",%f", variables[i]); | |
} | |
printf("\n"); | |
} | |
int main() | |
{ | |
double states[NB_OF_STATES]; | |
double rates[NB_OF_STATES]; | |
double variables[NB_OF_VARIABLES]; | |
initializeConstants(states, variables); | |
computeComputedConstants(variables); | |
computeRates(0.0, states, rates, variables); | |
computeVariables(0.0, states, rates, variables); | |
outputData(0.0, states, variables); | |
for (int i = 0; i < 300000; ++i) { | |
double voi = i*DELTA_T; | |
computeRates(voi, states, rates, variables); | |
for (int j = 0; j < NB_OF_STATES; ++j) { | |
states[j] += DELTA_T*rates[j]; | |
} | |
if ((i+1) % 1000 == 0) { | |
computeVariables(voi, states, rates, variables); | |
outputData((i+1)*DELTA_T, states, variables); | |
} | |
} | |
return 0; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment