/* There are a total of 51 entries in the algebraic variable array. There are a total of 23 entries in each of the rate and state variable arrays. There are a total of 69 entries in the constant variable array. */ /* * VOI is time in component environment (second). * CONSTANTS[0] is R in component cell_parameters (millijoule_per_mole_kelvin). * CONSTANTS[1] is T in component cell_parameters (kelvin). * CONSTANTS[2] is F in component cell_parameters (coulomb_per_mole). * CONSTANTS[3] is Cm in component cell_parameters (microF). * CONSTANTS[4] is v_i in component cell_parameters (microlitre). * CONSTANTS[5] is v_SR in component cell_parameters (microlitre). * CONSTANTS[6] is Na_o in component cell_parameters (millimolar). * CONSTANTS[7] is K_o in component cell_parameters (millimolar). * CONSTANTS[8] is Ca_o in component cell_parameters (millimolar). * STATES[0] is V in component membrane_potential (millivolt). * ALGEBRAIC[5] is i_Na in component fast_sodium_current (nanoA). * ALGEBRAIC[14] is i_K1 in component time_independent_potassium_current (nanoA). * ALGEBRAIC[15] is i_to in component transient_outward_current (nanoA). * ALGEBRAIC[11] is i_K in component time_dependent_rectifier_potassium_current (nanoA). * ALGEBRAIC[21] is i_Ca_L in component L_type_Ca_channel (nanoA). * ALGEBRAIC[29] is i_NaK in component sodium_potassium_pump (nanoA). * ALGEBRAIC[28] is i_NaCa in component sodium_calcium_exchanger (nanoA). * ALGEBRAIC[32] is i_b_Na in component sodium_background_current (nanoA). * ALGEBRAIC[31] is i_b_K in component potassium_background_current (nanoA). * ALGEBRAIC[30] is i_b_Ca in component calcium_background_current (nanoA). * ALGEBRAIC[0] is i_Stim in component membrane_potential (nanoA). * CONSTANTS[9] is stim_start in component membrane_potential (second). * CONSTANTS[10] is stim_end in component membrane_potential (second). * CONSTANTS[11] is stim_period in component membrane_potential (second). * CONSTANTS[12] is stim_duration in component membrane_potential (second). * CONSTANTS[13] is stim_amplitude in component membrane_potential (nanoA). * ALGEBRAIC[1] is E_Na in component reversal_potentials (millivolt). * ALGEBRAIC[2] is E_K in component reversal_potentials (millivolt). * ALGEBRAIC[3] is E_Ca in component reversal_potentials (millivolt). * ALGEBRAIC[4] is E_mh in component reversal_potentials (millivolt). * STATES[1] is K_i in component intracellular_potassium_concentration (millimolar). * STATES[2] is Na_i in component intracellular_sodium_concentration (millimolar). * STATES[3] is Ca_i in component intracellular_calcium_concentration (millimolar). * CONSTANTS[14] is g_Na in component fast_sodium_current (microS). * STATES[4] is m in component fast_sodium_current_m_gate (dimensionless). * STATES[5] is h in component fast_sodium_current_h_gate (dimensionless). * ALGEBRAIC[7] is alpha_m in component fast_sodium_current_m_gate (per_second). * ALGEBRAIC[8] is beta_m in component fast_sodium_current_m_gate (per_second). * CONSTANTS[15] is delta_m in component fast_sodium_current_m_gate (millivolt). * ALGEBRAIC[6] is E0_m in component fast_sodium_current_m_gate (millivolt). * ALGEBRAIC[9] is alpha_h in component fast_sodium_current_h_gate (per_second). * ALGEBRAIC[10] is beta_h in component fast_sodium_current_h_gate (per_second). * CONSTANTS[16] is shift_h in component fast_sodium_current_h_gate (millivolt). * CONSTANTS[17] is i_Kmax in component time_dependent_rectifier_potassium_current (nanoA). * STATES[6] is x in component time_dependent_rectifier_potassium_current_x_gate (dimensionless). * ALGEBRAIC[12] is alpha_x in component time_dependent_rectifier_potassium_current_x_gate (per_second). * ALGEBRAIC[13] is beta_x in component time_dependent_rectifier_potassium_current_x_gate (per_second). * CONSTANTS[18] is K_mk1 in component time_independent_potassium_current (millimolar). * CONSTANTS[19] is g_K1 in component time_independent_potassium_current (microS). * CONSTANTS[20] is g_to in component transient_outward_current (microS). * STATES[7] is s in component transient_outward_current_s_gate (dimensionless). * STATES[8] is r in component transient_outward_current_r_gate (dimensionless). * ALGEBRAIC[16] is alpha_s in component transient_outward_current_s_gate (per_second). * ALGEBRAIC[17] is beta_s in component transient_outward_current_s_gate (per_second). * ALGEBRAIC[20] is i_Ca_L_Na in component L_type_Ca_channel (nanoA). * ALGEBRAIC[19] is i_Ca_L_K in component L_type_Ca_channel (nanoA). * ALGEBRAIC[18] is i_Ca_L_Ca in component L_type_Ca_channel (nanoA). * CONSTANTS[21] is P_Ca_L_Ca in component L_type_Ca_channel (nanoA_per_millimolar). * STATES[9] is d in component L_type_Ca_channel_d_gate (dimensionless). * STATES[10] is f in component L_type_Ca_channel_f_gate (dimensionless). * ALGEBRAIC[23] is alpha_d in component L_type_Ca_channel_d_gate (per_second). * ALGEBRAIC[24] is beta_d in component L_type_Ca_channel_d_gate (per_second). * ALGEBRAIC[22] is E0_d in component L_type_Ca_channel_d_gate (millivolt). * CONSTANTS[22] is speed_d in component L_type_Ca_channel_d_gate (dimensionless). * ALGEBRAIC[26] is alpha_f in component L_type_Ca_channel_f_gate (per_second). * ALGEBRAIC[27] is beta_f in component L_type_Ca_channel_f_gate (per_second). * CONSTANTS[23] is speed_f in component L_type_Ca_channel_f_gate (dimensionless). * ALGEBRAIC[25] is E0_f in component L_type_Ca_channel_f_gate (millivolt). * CONSTANTS[24] is i_NaCa_max in component sodium_calcium_exchanger (nanoA_per_millimolar4). * CONSTANTS[25] is gamma in component sodium_calcium_exchanger (dimensionless). * CONSTANTS[26] is i_NaK_max in component sodium_potassium_pump (nanoA). * CONSTANTS[27] is K_mK in component sodium_potassium_pump (millimolar). * CONSTANTS[28] is K_mNa in component sodium_potassium_pump (millimolar). * CONSTANTS[29] is g_b_Ca in component calcium_background_current (microS). * CONSTANTS[30] is g_b_K in component potassium_background_current (microS). * CONSTANTS[31] is g_b_Na in component sodium_background_current (microS). * STATES[11] is F_CaMK in component CaMKII_factor (dimensionless). * ALGEBRAIC[33] is Inf_CaMK in component CaMKII_factor (dimensionless). * CONSTANTS[32] is Tau_CaMK in component CaMKII_factor (second). * STATES[12] is Cmdn_Ca in component calmodulin (millimolar). * ALGEBRAIC[41] is j_rel in component RyR (millimolar_per_second). * ALGEBRAIC[40] is K_rel in component RyR (per_second). * ALGEBRAIC[39] is F_rel in component RyR (dimensionless). * STATES[13] is Ca_SR in component SR_calcium_concentration (millimolar). * CONSTANTS[33] is K_rel_max in component RyR (per_second). * STATES[14] is F_SRCa_RyR in component RyR (millimolar). * CONSTANTS[34] is Tau_SRCa_RyR in component RyR (second). * ALGEBRAIC[34] is N_CaMK in component RyR (dimensionless). * CONSTANTS[35] is gain_k1 in component RyR (dimensionless). * CONSTANTS[36] is gain_k2 in component RyR (dimensionless). * CONSTANTS[37] is gain_k3 in component RyR (dimensionless). * CONSTANTS[38] is gain_k4 in component RyR (dimensionless). * ALGEBRAIC[35] is k_1 in component RyR (per_second). * ALGEBRAIC[36] is k_2 in component RyR (per_second). * ALGEBRAIC[37] is k_3 in component RyR (per_second). * CONSTANTS[53] is k_4 in component RyR (per_second). * STATES[15] is F_1 in component RyR (dimensionless). * STATES[16] is F_2 in component RyR (dimensionless). * ALGEBRAIC[38] is F_3 in component RyR (dimensionless). * CONSTANTS[39] is K_leak_rate in component RyR (per_second). * ALGEBRAIC[44] is j_up in component SERCA (millimolar_per_second). * CONSTANTS[40] is V_max_f in component SERCA (millimolar_per_second). * CONSTANTS[41] is V_max_r in component SERCA (millimolar_per_second). * ALGEBRAIC[42] is f_b in component SERCA (dimensionless). * ALGEBRAIC[43] is r_b in component SERCA (dimensionless). * CONSTANTS[42] is Cmdn_tot in component calmodulin (millimolar). * CONSTANTS[43] is alpha_cmdn in component calmodulin (per_millimolar_per_second). * CONSTANTS[44] is beta_cmdn in component calmodulin (per_second). * ALGEBRAIC[45] is dCmdn_Ca_dtime in component calmodulin (millimolar_per_second). * STATES[17] is Trpn_Ca in component troponin (millimolar). * CONSTANTS[45] is Trpn_tot in component troponin (millimolar). * CONSTANTS[46] is alpha_trpn in component troponin (per_millimolar_per_second). * CONSTANTS[47] is beta_trpn in component troponin (per_second). * ALGEBRAIC[48] is Force_norm in component Force (dimensionless). * ALGEBRAIC[50] is dTrpn_Ca_dtime in component troponin (millimolar_per_second). * ALGEBRAIC[49] is Force in component Force (N_per_mm2). * CONSTANTS[48] is zeta in component Force (N_per_mm2). * CONSTANTS[68] is Force_max in component Force (dimensionless). * CONSTANTS[54] is phi_SL in component Force (dimensionless). * CONSTANTS[65] is P_1_max in component Force (dimensionless). * CONSTANTS[66] is P_2_max in component Force (dimensionless). * CONSTANTS[67] is P_3_max in component Force (dimensionless). * CONSTANTS[64] is sigma_paths in component Force (dimensionless). * STATES[18] is N_0 in component Force (dimensionless). * STATES[19] is P_0 in component Force (dimensionless). * STATES[20] is P_1 in component Force (dimensionless). * STATES[21] is P_2 in component Force (dimensionless). * STATES[22] is P_3 in component Force (dimensionless). * ALGEBRAIC[47] is N_1 in component Force (dimensionless). * ALGEBRAIC[46] is alpha_tm in component Force (per_second). * CONSTANTS[49] is beta_tm in component Force (per_second). * CONSTANTS[57] is K_tm in component Force (dimensionless). * CONSTANTS[58] is N_tm in component Force (dimensionless). * CONSTANTS[50] is SL in component Force (micrometre). * CONSTANTS[55] is SL_norm in component Force (dimensionless). * CONSTANTS[56] is f_01 in component Force (per_second). * CONSTANTS[59] is f_12 in component Force (per_second). * CONSTANTS[63] is f_23 in component Force (per_second). * CONSTANTS[60] is g_01 in component Force (per_second). * CONSTANTS[61] is g_12 in component Force (per_second). * CONSTANTS[62] is g_23 in component Force (per_second). * CONSTANTS[51] is f_XB in component Force (per_second). * CONSTANTS[52] is g_XB in component Force (per_second). * RATES[0] is d/dt V in component membrane_potential (millivolt). * RATES[4] is d/dt m in component fast_sodium_current_m_gate (dimensionless). * RATES[5] is d/dt h in component fast_sodium_current_h_gate (dimensionless). * RATES[6] is d/dt x in component time_dependent_rectifier_potassium_current_x_gate (dimensionless). * RATES[7] is d/dt s in component transient_outward_current_s_gate (dimensionless). * RATES[8] is d/dt r in component transient_outward_current_r_gate (dimensionless). * RATES[9] is d/dt d in component L_type_Ca_channel_d_gate (dimensionless). * RATES[10] is d/dt f in component L_type_Ca_channel_f_gate (dimensionless). * RATES[11] is d/dt F_CaMK in component CaMKII_factor (dimensionless). * RATES[15] is d/dt F_1 in component RyR (dimensionless). * RATES[16] is d/dt F_2 in component RyR (dimensionless). * RATES[14] is d/dt F_SRCa_RyR in component RyR (millimolar). * RATES[12] is d/dt Cmdn_Ca in component calmodulin (millimolar). * RATES[17] is d/dt Trpn_Ca in component troponin (millimolar). * RATES[3] is d/dt Ca_i in component intracellular_calcium_concentration (millimolar). * RATES[13] is d/dt Ca_SR in component SR_calcium_concentration (millimolar). * RATES[2] is d/dt Na_i in component intracellular_sodium_concentration (millimolar). * RATES[1] is d/dt K_i in component intracellular_potassium_concentration (millimolar). * RATES[18] is d/dt N_0 in component Force (dimensionless). * RATES[19] is d/dt P_0 in component Force (dimensionless). * RATES[20] is d/dt P_1 in component Force (dimensionless). * RATES[21] is d/dt P_2 in component Force (dimensionless). * RATES[22] is d/dt P_3 in component Force (dimensionless). * There are a total of 7 condition variables. */ void initConsts(double* CONSTANTS, double* RATES, double *STATES) { CONSTANTS[0] = 8314.472; CONSTANTS[1] = 310; CONSTANTS[2] = 96485.3415; CONSTANTS[3] = 9.5e-5; CONSTANTS[4] = 1.6404e-5; CONSTANTS[5] = 3.3477e-6; CONSTANTS[6] = 140; CONSTANTS[7] = 4; CONSTANTS[8] = 2; STATES[0] = -92.849333; CONSTANTS[9] = 0; CONSTANTS[10] = 1000; CONSTANTS[11] = 0.5; CONSTANTS[12] = 0.002; CONSTANTS[13] = -4; STATES[1] = 138.22; STATES[2] = 5.8041; STATES[3] = 9.91e-6; CONSTANTS[14] = 2.5; STATES[4] = 0.0013809; STATES[5] = 0.99569; CONSTANTS[15] = 1e-5; CONSTANTS[16] = 0; CONSTANTS[17] = 1; STATES[6] = 5.1127e-2; CONSTANTS[18] = 10; CONSTANTS[19] = 1; CONSTANTS[20] = 0.005; STATES[7] = 0.95854; STATES[8] = 1.5185e-8; CONSTANTS[21] = 0.25; STATES[9] = 1.7908e-8; STATES[10] = 1; CONSTANTS[22] = 3; CONSTANTS[23] = 0.5; CONSTANTS[24] = 0.0005; CONSTANTS[25] = 0.5; CONSTANTS[26] = 1.36; CONSTANTS[27] = 1; CONSTANTS[28] = 21.7; CONSTANTS[29] = 0.00025; CONSTANTS[30] = 0.0006; CONSTANTS[31] = 0.0006; STATES[11] = 1.028; CONSTANTS[32] = 0.8; STATES[12] = 3.9636e-6; STATES[13] = 0.24886; CONSTANTS[33] = 500; STATES[14] = 0.25089; CONSTANTS[34] = 0.05; CONSTANTS[35] = 1; CONSTANTS[36] = 1; CONSTANTS[37] = 1; CONSTANTS[38] = 1; STATES[15] = 0.5268; STATES[16] = 8.7508e-6; CONSTANTS[39] = 0; CONSTANTS[40] = 0.292; CONSTANTS[41] = 0.391; CONSTANTS[42] = 0.02; CONSTANTS[43] = 10000; CONSTANTS[44] = 500; STATES[17] = 2.7661e-4; CONSTANTS[45] = 0.07; CONSTANTS[46] = 80000; CONSTANTS[47] = 200; CONSTANTS[48] = 0.1; STATES[18] = 0.99917; STATES[19] = 9.8593e-5; STATES[20] = 1.3331e-4; STATES[21] = 2.3505e-4; STATES[22] = 1.5349e-4; CONSTANTS[49] = 40; CONSTANTS[50] = 2.15; CONSTANTS[51] = 10; CONSTANTS[52] = 30; CONSTANTS[53] = CONSTANTS[38]*1.80000; CONSTANTS[54] = (CONSTANTS[50]>=1.70000&&CONSTANTS[50]<=2.00000 ? (CONSTANTS[50] - 0.600000)/1.40000 : CONSTANTS[50]>2.00000&&CONSTANTS[50]<=2.20000 ? 1.00000 : CONSTANTS[50]>2.20000&&CONSTANTS[50]<=2.30000 ? (3.60000 - CONSTANTS[50])/1.40000 : 0.0/0.0); CONSTANTS[55] = (CONSTANTS[50] - 1.70000)/0.700000; CONSTANTS[56] = 3.00000*CONSTANTS[51]; CONSTANTS[57] = 1.00000/(1.00000+(CONSTANTS[47]/CONSTANTS[46])/(0.00170000 - 0.000900000*CONSTANTS[55])); CONSTANTS[58] = 3.50000+ 2.50000*CONSTANTS[55]; CONSTANTS[59] = 10.0000*CONSTANTS[51]; CONSTANTS[60] = CONSTANTS[52]*(2.00000 - CONSTANTS[55]); CONSTANTS[61] = 2.00000*CONSTANTS[52]*(2.00000 - CONSTANTS[55]); CONSTANTS[62] = 3.00000*CONSTANTS[52]*(2.00000 - CONSTANTS[55]); CONSTANTS[63] = 7.00000*CONSTANTS[51]; CONSTANTS[64] = 1.00000*CONSTANTS[52]*2.00000*CONSTANTS[52]*3.00000*CONSTANTS[52]+ 1.00000*CONSTANTS[56]*2.00000*CONSTANTS[52]*3.00000*CONSTANTS[52]+ 1.00000*CONSTANTS[56]*1.00000*CONSTANTS[59]*3.00000*CONSTANTS[52]+ 1.00000*CONSTANTS[56]*1.00000*CONSTANTS[59]*1.00000*CONSTANTS[63]; CONSTANTS[65] = ( 1.00000*CONSTANTS[56]*2.00000*CONSTANTS[52]*3.00000*CONSTANTS[52])/CONSTANTS[64]; CONSTANTS[66] = ( 1.00000*CONSTANTS[56]*1.00000*CONSTANTS[59]*3.00000*CONSTANTS[52])/CONSTANTS[64]; CONSTANTS[67] = ( 1.00000*CONSTANTS[56]*1.00000*CONSTANTS[59]*1.00000*CONSTANTS[63])/CONSTANTS[64]; CONSTANTS[68] = CONSTANTS[65]+ 2.00000*CONSTANTS[66]+ 3.00000*CONSTANTS[67]; RATES[0] = 0.1001; RATES[4] = 0.1001; RATES[5] = 0.1001; RATES[6] = 0.1001; RATES[7] = 0.1001; RATES[8] = 0.1001; RATES[9] = 0.1001; RATES[10] = 0.1001; RATES[11] = 0.1001; RATES[15] = 0.1001; RATES[16] = 0.1001; RATES[14] = 0.1001; RATES[12] = 0.1001; RATES[17] = 0.1001; RATES[3] = 0.1001; RATES[13] = 0.1001; RATES[2] = 0.1001; RATES[1] = 0.1001; RATES[18] = 0.1001; RATES[19] = 0.1001; RATES[20] = 0.1001; RATES[21] = 0.1001; RATES[22] = 0.1001; } void computeResiduals(double VOI, double* CONSTANTS, double* RATES, double* OLDRATES, double* STATES, double* OLDSTATES, double* ALGEBRAIC, double* CONDVARS) { resid[0] = RATES[0] - (- 1.00000/CONSTANTS[3])*(ALGEBRAIC[5]+ALGEBRAIC[32]+ALGEBRAIC[14]+ALGEBRAIC[11]+ALGEBRAIC[15]+ALGEBRAIC[31]+ALGEBRAIC[21]+ALGEBRAIC[30]+ALGEBRAIC[28]+ALGEBRAIC[29]+ALGEBRAIC[0]); resid[1] = RATES[4] - ALGEBRAIC[7]*(1.00000 - STATES[4]) - ALGEBRAIC[8]*STATES[4]; resid[2] = RATES[5] - ALGEBRAIC[9]*(1.00000 - STATES[5]) - ALGEBRAIC[10]*STATES[5]; resid[3] = RATES[6] - ALGEBRAIC[12]*(1.00000 - STATES[6]) - ALGEBRAIC[13]*STATES[6]; resid[4] = RATES[7] - ALGEBRAIC[16]*(1.00000 - STATES[7]) - ALGEBRAIC[17]*STATES[7]; resid[5] = RATES[8] - 333.000*(1.00000/(1.00000+exp(- (STATES[0]+4.00000)/5.00000)) - STATES[8]); resid[6] = RATES[9] - ALGEBRAIC[23]*(1.00000 - STATES[9]) - ALGEBRAIC[24]*STATES[9]; resid[7] = RATES[10] - ALGEBRAIC[26]*(1.00000 - STATES[10]) - ALGEBRAIC[27]*STATES[10]; resid[8] = RATES[11] - (ALGEBRAIC[33] - STATES[11])/CONSTANTS[32]; resid[9] = RATES[15] - ( ALGEBRAIC[37]*ALGEBRAIC[38] - CONSTANTS[53]*STATES[15]) - ALGEBRAIC[35]*STATES[15]; resid[10] = RATES[16] - ALGEBRAIC[35]*STATES[15] - ALGEBRAIC[36]*STATES[16]; resid[11] = RATES[14] - (STATES[13] - STATES[14])/CONSTANTS[34]; resid[12] = RATES[12] - CONSTANTS[43]*(CONSTANTS[42] - STATES[12])*STATES[3] - CONSTANTS[44]*STATES[12]; resid[13] = RATES[17] - CONSTANTS[46]*(CONSTANTS[45] - STATES[17])*STATES[3] - (( CONSTANTS[47]*(1.00000+ 2.00000*(1.00000 - ALGEBRAIC[48])))/3.00000)*STATES[17]; resid[14] = RATES[3] - (((- ((ALGEBRAIC[18]+ALGEBRAIC[30]) - 2.00000*ALGEBRAIC[28])/( 2.00000*CONSTANTS[4]*CONSTANTS[2]) - ALGEBRAIC[44])+( ALGEBRAIC[41]*CONSTANTS[5])/CONSTANTS[4]) - ALGEBRAIC[45]) - ALGEBRAIC[50]; resid[15] = RATES[13] - ( ALGEBRAIC[44]*CONSTANTS[4])/CONSTANTS[5] - ALGEBRAIC[41]; resid[16] = RATES[2] - - (ALGEBRAIC[5]+ALGEBRAIC[32]+ALGEBRAIC[20]+ 3.00000*ALGEBRAIC[28]+ 3.00000*ALGEBRAIC[29])/( CONSTANTS[4]*CONSTANTS[2]); resid[17] = RATES[1] - - ((ALGEBRAIC[14]+ALGEBRAIC[11]+ALGEBRAIC[15]+ALGEBRAIC[31]+ALGEBRAIC[19]) - 2.00000*ALGEBRAIC[29])/( CONSTANTS[4]*CONSTANTS[2]); resid[18] = RATES[18] - ( CONSTANTS[49]*STATES[19] - ALGEBRAIC[46]*STATES[18])+ CONSTANTS[60]*ALGEBRAIC[47]; resid[19] = RATES[19] - - (CONSTANTS[49]+CONSTANTS[56])*STATES[19]+ ALGEBRAIC[46]*STATES[18]+ CONSTANTS[60]*STATES[20]; resid[20] = RATES[20] - - (CONSTANTS[49]+CONSTANTS[59]+CONSTANTS[60])*STATES[20]+ ALGEBRAIC[46]*ALGEBRAIC[47]+ CONSTANTS[56]*STATES[19]+ CONSTANTS[61]*STATES[21]; resid[21] = RATES[21] - - (CONSTANTS[63]+CONSTANTS[61])*STATES[21]+ CONSTANTS[59]*STATES[20]+ CONSTANTS[62]*STATES[22]; resid[22] = RATES[22] - - CONSTANTS[62]*STATES[22]+ CONSTANTS[63]*STATES[21]; } void computeVariables(double VOI, double* CONSTANTS, double* RATES, double* STATES, double* ALGEBRAIC) { ALGEBRAIC[49] = CONSTANTS[48]*ALGEBRAIC[48]; } void computeEssentialVariables(double VOI, double* CONSTANTS, double* RATES, double* STATES, double* ALGEBRAIC) { ALGEBRAIC[0] = (CONDVAR[0]>=0.00000&&CONDVAR[1]<=0.00000&&CONDVAR[2]<=0.00000 ? CONSTANTS[13] : 0.00000); ALGEBRAIC[4] = (( CONSTANTS[0]*CONSTANTS[1])/CONSTANTS[2])*log((CONSTANTS[6]+ 0.120000*CONSTANTS[7])/(STATES[2]+ 0.120000*STATES[1])); ALGEBRAIC[5] = CONSTANTS[14]*pow(STATES[4], 3.00000)*STATES[5]*(STATES[0] - ALGEBRAIC[4]); ALGEBRAIC[6] = STATES[0]+41.0000; ALGEBRAIC[7] = (CONDVAR[3]<0.00000 ? 2000.00 : ( 200.000*ALGEBRAIC[6])/(1.00000 - exp( - 0.100000*ALGEBRAIC[6]))); ALGEBRAIC[8] = 8000.00*exp( - 0.0560000*(STATES[0]+66.0000)); ALGEBRAIC[9] = 20.0000*exp( - 0.125000*((STATES[0]+75.0000) - CONSTANTS[16])); ALGEBRAIC[10] = 2000.00/(1.00000+ 320.000*exp( - 0.100000*((STATES[0]+75.0000) - CONSTANTS[16]))); ALGEBRAIC[11] = ( CONSTANTS[17]*STATES[6]*(STATES[1] - CONSTANTS[7]*exp(( - STATES[0]*CONSTANTS[2])/( CONSTANTS[0]*CONSTANTS[1]))))/140.000; ALGEBRAIC[12] = ( 0.500000*exp( 0.0826000*(STATES[0]+50.0000)))/(1.00000+exp( 0.0570000*(STATES[0]+50.0000))); ALGEBRAIC[13] = ( 1.30000*exp( - 0.0600000*(STATES[0]+20.0000)))/(1.00000+exp( - 0.0400000*(STATES[0]+20.0000))); ALGEBRAIC[2] = (( CONSTANTS[0]*CONSTANTS[1])/CONSTANTS[2])*log(CONSTANTS[7]/STATES[1]); ALGEBRAIC[14] = ( (( CONSTANTS[19]*CONSTANTS[7])/(CONSTANTS[7]+CONSTANTS[18]))*(STATES[0] - ALGEBRAIC[2]))/(1.00000+exp(( 2.00000*CONSTANTS[2]*((STATES[0] - ALGEBRAIC[2]) - 10.0000))/( CONSTANTS[0]*CONSTANTS[1]))); ALGEBRAIC[15] = CONSTANTS[20]*STATES[7]*STATES[8]*(STATES[0] - ALGEBRAIC[2]); ALGEBRAIC[16] = 0.0330000*exp(- STATES[0]/17.0000); ALGEBRAIC[17] = 33.0000/(1.00000+exp( - 0.125000*(STATES[0]+10.0000))); ALGEBRAIC[18] = (( 4.00000*STATES[9]*STATES[10]*CONSTANTS[21]*(STATES[0] - 50.0000)*CONSTANTS[2])/( CONSTANTS[0]*CONSTANTS[1]*(1.00000 - exp(( - 2.00000*(STATES[0] - 50.0000)*CONSTANTS[2])/( CONSTANTS[0]*CONSTANTS[1])))))*( STATES[3]*exp(( 100.000*CONSTANTS[2])/( CONSTANTS[0]*CONSTANTS[1])) - CONSTANTS[8]*exp(( - 2.00000*(STATES[0] - 50.0000)*CONSTANTS[2])/( CONSTANTS[0]*CONSTANTS[1]))); ALGEBRAIC[19] = (( 0.00200000*STATES[9]*STATES[10]*CONSTANTS[21]*(STATES[0] - 50.0000)*CONSTANTS[2])/( CONSTANTS[0]*CONSTANTS[1]*(1.00000 - exp(( - (STATES[0] - 50.0000)*CONSTANTS[2])/( CONSTANTS[0]*CONSTANTS[1])))))*( STATES[1]*exp(( 50.0000*CONSTANTS[2])/( CONSTANTS[0]*CONSTANTS[1])) - CONSTANTS[7]*exp(( - (STATES[0] - 50.0000)*CONSTANTS[2])/( CONSTANTS[0]*CONSTANTS[1]))); ALGEBRAIC[20] = (( 0.0100000*STATES[9]*STATES[10]*CONSTANTS[21]*(STATES[0] - 50.0000)*CONSTANTS[2])/( CONSTANTS[0]*CONSTANTS[1]*(1.00000 - exp(( - (STATES[0] - 50.0000)*CONSTANTS[2])/( CONSTANTS[0]*CONSTANTS[1])))))*( STATES[2]*exp(( 50.0000*CONSTANTS[2])/( CONSTANTS[0]*CONSTANTS[1])) - CONSTANTS[6]*exp(( - (STATES[0] - 50.0000)*CONSTANTS[2])/( CONSTANTS[0]*CONSTANTS[1]))); ALGEBRAIC[21] = ALGEBRAIC[18]+ALGEBRAIC[19]+ALGEBRAIC[20]; ALGEBRAIC[22] = (STATES[0]+24.0000) - 5.00000; ALGEBRAIC[23] = (CONDVAR[4]<0.00000 ? CONSTANTS[22]*120.000 : ( CONSTANTS[22]*30.0000*ALGEBRAIC[22])/(1.00000 - exp(- ALGEBRAIC[22]/4.00000))); ALGEBRAIC[24] = (CONDVAR[5]<0.00000 ? CONSTANTS[22]*120.000 : ( CONSTANTS[22]*- 12.0000*ALGEBRAIC[22])/(1.00000 - exp(ALGEBRAIC[22]/10.0000))); ALGEBRAIC[25] = STATES[0]+34.0000; ALGEBRAIC[26] = (CONDVAR[6]<0.00000 ? CONSTANTS[23]*25.0000 : ( CONSTANTS[23]*6.25000*ALGEBRAIC[25])/(- 1.00000+exp(ALGEBRAIC[25]/4.00000))); ALGEBRAIC[27] = ( CONSTANTS[23]*50.0000)/(1.00000+exp(- ALGEBRAIC[25]/4.00000)); ALGEBRAIC[28] = ( CONSTANTS[24]*( exp(( CONSTANTS[25]*STATES[0]*CONSTANTS[2])/( CONSTANTS[0]*CONSTANTS[1]))*pow(STATES[2], 3.00000)*CONSTANTS[8] - exp(( (CONSTANTS[25] - 1.00000)*STATES[0]*CONSTANTS[2])/( CONSTANTS[0]*CONSTANTS[1]))*pow(CONSTANTS[6], 3.00000)*STATES[3]))/(1.00000+STATES[3]/0.00690000); ALGEBRAIC[29] = ( (( (( CONSTANTS[26]*CONSTANTS[7])/(CONSTANTS[27]+CONSTANTS[7]))*STATES[2])/(CONSTANTS[28]+STATES[2]))*1.00000)/(1.00000+ 0.124500*exp(( - 0.100000*STATES[0]*CONSTANTS[2])/( CONSTANTS[0]*CONSTANTS[1]))+ 0.0353000*exp(( - STATES[0]*CONSTANTS[2])/( CONSTANTS[0]*CONSTANTS[1]))); ALGEBRAIC[3] = (( 0.500000*CONSTANTS[0]*CONSTANTS[1])/CONSTANTS[2])*log(CONSTANTS[8]/STATES[3]); ALGEBRAIC[30] = CONSTANTS[29]*(STATES[0] - ALGEBRAIC[3]); ALGEBRAIC[31] = CONSTANTS[30]*(STATES[0] - ALGEBRAIC[2]); ALGEBRAIC[1] = (( CONSTANTS[0]*CONSTANTS[1])/CONSTANTS[2])*log(CONSTANTS[6]/STATES[2]); ALGEBRAIC[32] = CONSTANTS[31]*(STATES[0] - ALGEBRAIC[1]); ALGEBRAIC[33] = STATES[12]/5.00000e-05; ALGEBRAIC[35] = CONSTANTS[35]*( 3.06250e+07*pow(STATES[3], 2.00000) - 245.000*ALGEBRAIC[21]); ALGEBRAIC[36] = ( CONSTANTS[36]*450.000)/(1.00000+0.360000/STATES[13]); ALGEBRAIC[34] = pow(STATES[11]/0.700000, 2.00000); ALGEBRAIC[37] = CONSTANTS[37]*1.88500*pow(STATES[14]/0.220000, ALGEBRAIC[34]); ALGEBRAIC[38] = 1.00000 - (STATES[15]+STATES[16]); ALGEBRAIC[40] = ( CONSTANTS[33]*STATES[14])/(STATES[14]+0.200000); ALGEBRAIC[39] = pow(STATES[16]/(STATES[16]+0.250000), 2.00000); ALGEBRAIC[41] = ( ALGEBRAIC[40]*ALGEBRAIC[39]+CONSTANTS[39])*(STATES[13] - STATES[3]); ALGEBRAIC[42] = pow(STATES[3]/0.000240000, 2.00000); ALGEBRAIC[43] = pow(STATES[13]/1.64000, 2.00000); ALGEBRAIC[44] = ( STATES[11]*CONSTANTS[40]*ALGEBRAIC[42] - CONSTANTS[41]*ALGEBRAIC[43])/(1.00000+ALGEBRAIC[42]+ALGEBRAIC[43]); ALGEBRAIC[45] = CONSTANTS[43]*(CONSTANTS[42] - STATES[12])*STATES[3] - CONSTANTS[44]*STATES[12]; ALGEBRAIC[46] = CONSTANTS[49]*pow(STATES[17]/( CONSTANTS[45]*CONSTANTS[57]), CONSTANTS[58]); ALGEBRAIC[47] = 1.00000 - (STATES[18]+STATES[19]+STATES[20]+STATES[21]+STATES[22]); ALGEBRAIC[48] = ( CONSTANTS[54]*(STATES[20]+ALGEBRAIC[47]+ 2.00000*STATES[21]+ 3.00000*STATES[22]))/CONSTANTS[68]; ALGEBRAIC[50] = CONSTANTS[46]*(CONSTANTS[45] - STATES[17])*STATES[3] - (( CONSTANTS[47]*(1.00000+ 2.00000*(1.00000 - ALGEBRAIC[48])))/3.00000)*STATES[17]; } void getStateInformation(double* SI) { SI[0] = 1.0; SI[1] = 1.0; SI[2] = 1.0; SI[3] = 1.0; SI[4] = 1.0; SI[5] = 1.0; SI[6] = 1.0; SI[7] = 1.0; SI[8] = 1.0; SI[9] = 1.0; SI[10] = 1.0; SI[11] = 1.0; SI[12] = 1.0; SI[13] = 1.0; SI[14] = 1.0; SI[15] = 1.0; SI[16] = 1.0; SI[17] = 1.0; SI[18] = 1.0; SI[19] = 1.0; SI[20] = 1.0; SI[21] = 1.0; SI[22] = 1.0; } void computeRoots(double VOI, double* CONSTANTS, double* RATES, double* OLDRATES, double* STATES, double* OLDSTATES, double* ALGEBRAIC, double* CONDVARS) { CONDVAR[0] = VOI - CONSTANTS[9]; CONDVAR[1] = VOI - CONSTANTS[10]; CONDVAR[2] = ((VOI - CONSTANTS[9]) - floor((VOI - CONSTANTS[9])/CONSTANTS[11])*CONSTANTS[11]) - CONSTANTS[12]; CONDVAR[3] = fabs(ALGEBRAIC[6]) - CONSTANTS[15]; CONDVAR[4] = fabs(ALGEBRAIC[22]) - 1.00000e-05; CONDVAR[5] = fabs(ALGEBRAIC[22]) - 1.00000e-05; CONDVAR[6] = fabs(ALGEBRAIC[25]) - 1.00000e-05; }