/* There are a total of 14 entries in the algebraic variable array. There are a total of 4 entries in each of the rate and state variable arrays. There are a total of 46 entries in the constant variable array. */ /* * VOI is time in component environment (msec). * ALGEBRAIC[0] is t_modulo in component environment (msec). * CONSTANTS[0] is Acap in component general_parameters (cm2). * CONSTANTS[1] is V_myo in component general_parameters (uL). * CONSTANTS[2] is C_m in component general_parameters (uF_per_cm2). * CONSTANTS[3] is F in component general_parameters (C_per_mmole). * CONSTANTS[4] is T in component general_parameters (kelvin). * CONSTANTS[5] is R in component general_parameters (J_per_K_per_mol). * CONSTANTS[6] is CaM_tot in component general_parameters (uM). * CONSTANTS[7] is Km_CaM in component general_parameters (uM). * CONSTANTS[8] is Ca_o in component general_parameters (uM). * CONSTANTS[9] is Na_o in component general_parameters (uM). * CONSTANTS[10] is Ca_NSR in component general_parameters (uM). * CONSTANTS[11] is J_leak in component general_parameters (uM_per_msec). * ALGEBRAIC[1] is V in component action_potential (mV). * CONSTANTS[12] is t1 in component action_potential (msec). * CONSTANTS[13] is t2 in component action_potential (msec). * CONSTANTS[14] is p in component action_potential (dimensionless). * CONSTANTS[15] is A in component action_potential (mV). * CONSTANTS[16] is A1 in component action_potential (msec). * CONSTANTS[17] is rest in component action_potential (mV). * ALGEBRAIC[3] is Ca_input in component calcium_input (uM_per_msec). * ALGEBRAIC[2] is tcalcium in component calcium_input (msec). * CONSTANTS[18] is Ca_tau1 in component calcium_input (msec). * CONSTANTS[19] is Ca_tau2 in component calcium_input (msec). * CONSTANTS[20] is Ca_pow in component calcium_input (dimensionless). * CONSTANTS[21] is Ca_amp in component calcium_input (uM_per_msec). * ALGEBRAIC[4] is INaCa in component NCX_current (uA_per_uF). * CONSTANTS[22] is Na_i in component NCX_current (uM). * CONSTANTS[23] is KmNa in component NCX_current (uM). * CONSTANTS[24] is KmCa in component NCX_current (uM). * CONSTANTS[25] is ksat in component NCX_current (dimensionless). * CONSTANTS[26] is eta in component NCX_current (dimensionless). * CONSTANTS[27] is kNaCa in component NCX_current (uA_per_uF). * STATES[0] is Ca_cyt in component differential_equations (uM). * CONSTANTS[28] is SERCA_TOT in component serca_parameters (uM). * CONSTANTS[29] is CaMKII_reg in component serca_parameters (dimensionless). * CONSTANTS[30] is PKA_reg in component serca_parameters (dimensionless). * CONSTANTS[31] is PSR in component serca_parameters (dimensionless). * CONSTANTS[32] is Kmf_PLBKO in component serca_parameters (uM). * CONSTANTS[33] is Kmf_PLB in component serca_parameters (uM). * CONSTANTS[34] is Kmr_PLBKO in component serca_parameters (uM). * CONSTANTS[35] is Kmr_PLB in component serca_parameters (uM). * CONSTANTS[36] is PLB_tot in component serca_parameters (uM). * CONSTANTS[37] is kplb_pos in component serca_parameters (per_msec). * CONSTANTS[38] is kplb_neg in component serca_parameters (per_msec). * ALGEBRAIC[5] is EC_50_fwd in component serca_parameters (uM). * ALGEBRAIC[6] is EC_50_rev in component serca_parameters (uM). * STATES[1] is PLB_dephosph in component differential_equations (uM). * CONSTANTS[45] is k_cyt_serca in component transition_parameters (per_uM2_per_msec). * ALGEBRAIC[7] is k_serca_cyt in component transition_parameters (per_msec). * CONSTANTS[43] is k_serca_sr in component transition_parameters (per_msec). * ALGEBRAIC[8] is k_sr_serca in component transition_parameters (per_uM2_per_msec). * CONSTANTS[44] is br_cyt_serca in component transition_parameters (per_uM2_per_msec). * CONSTANTS[39] is br_serca_sr in component transition_parameters (per_msec). * ALGEBRAIC[12] is J_up in component calcium_fluxes (uM_per_msec). * ALGEBRAIC[9] is J_cyt_serca in component calcium_fluxes (uM_per_msec). * ALGEBRAIC[10] is J_serca_sr in component calcium_fluxes (uM_per_msec). * STATES[2] is Ca_serca in component differential_equations (uM). * CONSTANTS[40] is LTRPN_tot in component calcium_buffering (uM). * CONSTANTS[41] is kltrpn_pos in component calcium_buffering (per_uM_per_msec). * CONSTANTS[42] is kltrpn_neg in component calcium_buffering (per_msec). * ALGEBRAIC[13] is J_LTRPN in component calcium_buffering (uM_per_msec). * ALGEBRAIC[11] is B_i in component calcium_buffering (dimensionless). * STATES[3] is LTRPN in component differential_equations (uM). * RATES[0] is d/dt Ca_cyt in component differential_equations (uM). * RATES[3] is d/dt LTRPN in component differential_equations (uM). * RATES[1] is d/dt PLB_dephosph in component differential_equations (uM). * RATES[2] is d/dt Ca_serca in component differential_equations (uM). */ void initConsts(double* CONSTANTS, double* RATES, double *STATES) { CONSTANTS[0] = 1.534e-4; CONSTANTS[1] = 25.84e-6; CONSTANTS[2] = 1; CONSTANTS[3] = 96.5; CONSTANTS[4] = 298; CONSTANTS[5] = 8.314; CONSTANTS[6] = 24; CONSTANTS[7] = 2.38; CONSTANTS[8] = 1000; CONSTANTS[9] = 140000; CONSTANTS[10] = 760; CONSTANTS[11] = 0.0003; CONSTANTS[12] = 0.5; CONSTANTS[13] = 200; CONSTANTS[14] = 2; CONSTANTS[15] = 135; CONSTANTS[16] = 110; CONSTANTS[17] = -90; CONSTANTS[18] = 1.5; CONSTANTS[19] = 7.5; CONSTANTS[20] = 2; CONSTANTS[21] = 10; CONSTANTS[22] = 10000; CONSTANTS[23] = 87500; CONSTANTS[24] = 1380; CONSTANTS[25] = 0.1; CONSTANTS[26] = 0.35; CONSTANTS[27] = 950; STATES[0] = 0.1; CONSTANTS[28] = 20; CONSTANTS[29] = 0.1; CONSTANTS[30] = 0.1; CONSTANTS[31] = 1; CONSTANTS[32] = 0.15; CONSTANTS[33] = 0.15; CONSTANTS[34] = 2500; CONSTANTS[35] = 1110; CONSTANTS[36] = 1; CONSTANTS[37] = 1; CONSTANTS[38] = 6.8; STATES[1] = 0.1; CONSTANTS[39] = 0.00625; STATES[2] = 5; CONSTANTS[40] = 70; CONSTANTS[41] = 0.1; CONSTANTS[42] = 0.06; STATES[3] = 11; CONSTANTS[43] = CONSTANTS[39]*(1.00000+ 0.700000*CONSTANTS[29]); CONSTANTS[44] = 1000.00*CONSTANTS[39]; CONSTANTS[45] = CONSTANTS[44]*(1.00000+ 0.700000*CONSTANTS[29]); } void computeRates(double VOI, double* CONSTANTS, double* RATES, double* STATES, double* ALGEBRAIC) { RATES[3] = CONSTANTS[41]*STATES[0]*(CONSTANTS[40] - STATES[3]) - CONSTANTS[42]*STATES[3]; RATES[1] = CONSTANTS[37]*(CONSTANTS[36] - STATES[1]) - CONSTANTS[38]*pow(CONSTANTS[29]+CONSTANTS[30], 2.00000)*STATES[1]; ALGEBRAIC[5] = (CONSTANTS[32]+( CONSTANTS[33]*CONSTANTS[31]*STATES[1])/1.00000)*(1.00000+ 0.270000*CONSTANTS[29]); ALGEBRAIC[7] = pow(ALGEBRAIC[5], 2.00000)*CONSTANTS[44]; ALGEBRAIC[9] = CONSTANTS[45]*pow(STATES[0], 2.00000)*(CONSTANTS[28] - STATES[2]) - ALGEBRAIC[7]*STATES[2]; ALGEBRAIC[6] = CONSTANTS[34] - ( CONSTANTS[35]*CONSTANTS[31]*STATES[1])/1.00000; ALGEBRAIC[8] = CONSTANTS[39]/pow(ALGEBRAIC[6], 2.00000); ALGEBRAIC[10] = CONSTANTS[43]*STATES[2] - ALGEBRAIC[8]*pow(CONSTANTS[10], 2.00000)*(CONSTANTS[28] - STATES[2]); RATES[2] = ALGEBRAIC[9] - ALGEBRAIC[10]; ALGEBRAIC[0] = (int)(VOI) % (int)(1000.00); ALGEBRAIC[2] = (ALGEBRAIC[0] - 1.20000<=0.00000 ? 0.00000 : ALGEBRAIC[0] - 1.20000); ALGEBRAIC[3] = CONSTANTS[21]*pow(1.00000 - exp(- ALGEBRAIC[2]/CONSTANTS[18]), CONSTANTS[20])*exp(- ALGEBRAIC[2]/CONSTANTS[19]); ALGEBRAIC[1] = CONSTANTS[17]+ CONSTANTS[15]*pow(1.00000 - exp(- ALGEBRAIC[0]/CONSTANTS[12]), CONSTANTS[14])*exp(- ALGEBRAIC[0]/CONSTANTS[13])*(1.00000 - pow(ALGEBRAIC[0], 10.0000)/(pow(CONSTANTS[16], 10.0000)+pow(ALGEBRAIC[0], 10.0000))); ALGEBRAIC[4] = (CONSTANTS[27]/( (pow(CONSTANTS[23], 3.00000)+pow(CONSTANTS[9], 3.00000))*(CONSTANTS[24]+CONSTANTS[8])*(1.00000+ CONSTANTS[25]*exp(( (CONSTANTS[26] - 1.00000)*ALGEBRAIC[1]*CONSTANTS[3])/( CONSTANTS[5]*CONSTANTS[4])))))*( exp(( CONSTANTS[26]*ALGEBRAIC[1]*CONSTANTS[3])/( CONSTANTS[5]*CONSTANTS[4]))*pow(CONSTANTS[22], 3.00000)*CONSTANTS[8] - exp(( (CONSTANTS[26] - 1.00000)*ALGEBRAIC[1]*CONSTANTS[3])/( CONSTANTS[5]*CONSTANTS[4]))*pow(CONSTANTS[9], 3.00000)*STATES[0]); ALGEBRAIC[13] = CONSTANTS[41]*STATES[0]*(CONSTANTS[40] - STATES[3]) - CONSTANTS[42]*STATES[3]; ALGEBRAIC[11] = pow(1.00000+( CONSTANTS[6]*CONSTANTS[7])/pow(CONSTANTS[7]+STATES[0], 2.00000), - 1.00000); RATES[0] = ALGEBRAIC[11]*(((( ALGEBRAIC[4]*CONSTANTS[0]*CONSTANTS[2])/( 2.00000*CONSTANTS[1]*CONSTANTS[3]) - ALGEBRAIC[9])+CONSTANTS[11]+ALGEBRAIC[3]) - ALGEBRAIC[13]); } void computeVariables(double VOI, double* CONSTANTS, double* RATES, double* STATES, double* ALGEBRAIC) { ALGEBRAIC[5] = (CONSTANTS[32]+( CONSTANTS[33]*CONSTANTS[31]*STATES[1])/1.00000)*(1.00000+ 0.270000*CONSTANTS[29]); ALGEBRAIC[7] = pow(ALGEBRAIC[5], 2.00000)*CONSTANTS[44]; ALGEBRAIC[9] = CONSTANTS[45]*pow(STATES[0], 2.00000)*(CONSTANTS[28] - STATES[2]) - ALGEBRAIC[7]*STATES[2]; ALGEBRAIC[6] = CONSTANTS[34] - ( CONSTANTS[35]*CONSTANTS[31]*STATES[1])/1.00000; ALGEBRAIC[8] = CONSTANTS[39]/pow(ALGEBRAIC[6], 2.00000); ALGEBRAIC[10] = CONSTANTS[43]*STATES[2] - ALGEBRAIC[8]*pow(CONSTANTS[10], 2.00000)*(CONSTANTS[28] - STATES[2]); ALGEBRAIC[0] = (int)(VOI) % (int)(1000.00); ALGEBRAIC[2] = (ALGEBRAIC[0] - 1.20000<=0.00000 ? 0.00000 : ALGEBRAIC[0] - 1.20000); ALGEBRAIC[3] = CONSTANTS[21]*pow(1.00000 - exp(- ALGEBRAIC[2]/CONSTANTS[18]), CONSTANTS[20])*exp(- ALGEBRAIC[2]/CONSTANTS[19]); ALGEBRAIC[1] = CONSTANTS[17]+ CONSTANTS[15]*pow(1.00000 - exp(- ALGEBRAIC[0]/CONSTANTS[12]), CONSTANTS[14])*exp(- ALGEBRAIC[0]/CONSTANTS[13])*(1.00000 - pow(ALGEBRAIC[0], 10.0000)/(pow(CONSTANTS[16], 10.0000)+pow(ALGEBRAIC[0], 10.0000))); ALGEBRAIC[4] = (CONSTANTS[27]/( (pow(CONSTANTS[23], 3.00000)+pow(CONSTANTS[9], 3.00000))*(CONSTANTS[24]+CONSTANTS[8])*(1.00000+ CONSTANTS[25]*exp(( (CONSTANTS[26] - 1.00000)*ALGEBRAIC[1]*CONSTANTS[3])/( CONSTANTS[5]*CONSTANTS[4])))))*( exp(( CONSTANTS[26]*ALGEBRAIC[1]*CONSTANTS[3])/( CONSTANTS[5]*CONSTANTS[4]))*pow(CONSTANTS[22], 3.00000)*CONSTANTS[8] - exp(( (CONSTANTS[26] - 1.00000)*ALGEBRAIC[1]*CONSTANTS[3])/( CONSTANTS[5]*CONSTANTS[4]))*pow(CONSTANTS[9], 3.00000)*STATES[0]); ALGEBRAIC[13] = CONSTANTS[41]*STATES[0]*(CONSTANTS[40] - STATES[3]) - CONSTANTS[42]*STATES[3]; ALGEBRAIC[11] = pow(1.00000+( CONSTANTS[6]*CONSTANTS[7])/pow(CONSTANTS[7]+STATES[0], 2.00000), - 1.00000); ALGEBRAIC[12] = ALGEBRAIC[9] - ALGEBRAIC[10]; }