/* 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 45 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 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[17] is Ca_tau1 in component calcium_input (msec). * CONSTANTS[18] is Ca_tau2 in component calcium_input (msec). * CONSTANTS[19] is Ca_pow in component calcium_input (dimensionless). * CONSTANTS[20] is Ca_amp in component calcium_input (uM_per_msec). * ALGEBRAIC[4] is INaCa in component NCX_current (uA_per_uF). * CONSTANTS[21] is Na_i in component NCX_current (uM). * CONSTANTS[22] is KmNa in component NCX_current (uM). * CONSTANTS[23] is KmCa in component NCX_current (uM). * CONSTANTS[24] is ksat in component NCX_current (dimensionless). * CONSTANTS[25] is eta in component NCX_current (dimensionless). * CONSTANTS[41] is kNaCa in component NCX_current (uA_per_uF). * STATES[0] is Ca_cyt in component differential_equations (uM). * CONSTANTS[26] is SERCA_TOT in component serca_parameters (uM). * CONSTANTS[27] is CaMKII_reg in component serca_parameters (dimensionless). * CONSTANTS[28] is PKA_reg in component serca_parameters (dimensionless). * CONSTANTS[29] is PSR in component serca_parameters (dimensionless). * CONSTANTS[30] is Kmf_PLBKO in component serca_parameters (uM). * CONSTANTS[31] is Kmf_PLB in component serca_parameters (uM). * CONSTANTS[32] is Kmr_PLBKO in component serca_parameters (uM). * CONSTANTS[33] is Kmr_PLB in component serca_parameters (uM). * CONSTANTS[34] is PLB_tot in component serca_parameters (uM). * CONSTANTS[35] is kplb_pos in component serca_parameters (per_msec). * CONSTANTS[36] 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[44] 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[42] 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[43] is br_cyt_serca in component transition_parameters (per_uM2_per_msec). * CONSTANTS[37] is br_serca_sr in component transition_parameters (per_msec). * ALGEBRAIC[11] 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[38] is LTRPN_tot in component calcium_buffering (uM). * CONSTANTS[39] is kltrpn_pos in component calcium_buffering (per_uM_per_msec). * CONSTANTS[40] is kltrpn_neg in component calcium_buffering (per_msec). * ALGEBRAIC[13] is J_LTRPN in component calcium_buffering (uM_per_msec). * ALGEBRAIC[12] 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). * There are a total of 1 condition variables. */ 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] = 8; CONSTANTS[14] = 2; CONSTANTS[15] = 150; CONSTANTS[16] = -80; CONSTANTS[17] = 1.5; CONSTANTS[18] = 14; CONSTANTS[19] = 2; CONSTANTS[20] = 2.9; CONSTANTS[21] = 14000; CONSTANTS[22] = 87500; CONSTANTS[23] = 1380; CONSTANTS[24] = 0.1; CONSTANTS[25] = 0.35; STATES[0] = 0.1; CONSTANTS[26] = 47; CONSTANTS[27] = 0.1; CONSTANTS[28] = 0.1; CONSTANTS[29] = 1; CONSTANTS[30] = 0.15; CONSTANTS[31] = 0.15; CONSTANTS[32] = 2500; CONSTANTS[33] = 1110; CONSTANTS[34] = 1; CONSTANTS[35] = 1; CONSTANTS[36] = 6.8; STATES[1] = 0.1; CONSTANTS[37] = 0.00625; STATES[2] = 5; CONSTANTS[38] = 70; CONSTANTS[39] = 0.1; CONSTANTS[40] = 0.06; STATES[3] = 11; CONSTANTS[41] = 125.000*2.50000; CONSTANTS[42] = CONSTANTS[37]*(1.00000+ 0.700000*CONSTANTS[27]); CONSTANTS[43] = 1000.00*CONSTANTS[37]; CONSTANTS[44] = CONSTANTS[43]*(1.00000+ 0.700000*CONSTANTS[27]); RATES[0] = 0.1001; RATES[3] = 0.1001; RATES[1] = 0.1001; RATES[2] = 0.1001; } void computeResiduals(double VOI, double* CONSTANTS, double* RATES, double* OLDRATES, double* STATES, double* OLDSTATES, double* ALGEBRAIC, double* CONDVARS) { resid[0] = RATES[0] - ALGEBRAIC[12]*(((( ALGEBRAIC[4]*CONSTANTS[0]*CONSTANTS[2])/( 2.00000*CONSTANTS[1]*CONSTANTS[3]) - ALGEBRAIC[9])+CONSTANTS[11]+ALGEBRAIC[3]) - ALGEBRAIC[13]); resid[1] = RATES[3] - CONSTANTS[39]*STATES[0]*(CONSTANTS[38] - STATES[3]) - CONSTANTS[40]*STATES[3]; resid[2] = RATES[1] - CONSTANTS[35]*(CONSTANTS[34] - STATES[1]) - CONSTANTS[36]*pow(CONSTANTS[27]+CONSTANTS[28], 2.00000)*STATES[1]; resid[3] = RATES[2] - ALGEBRAIC[9] - ALGEBRAIC[10]; } void computeVariables(double VOI, double* CONSTANTS, double* RATES, double* STATES, double* ALGEBRAIC) { ALGEBRAIC[11] = ALGEBRAIC[9] - ALGEBRAIC[10]; } void computeEssentialVariables(double VOI, double* CONSTANTS, double* RATES, double* STATES, double* ALGEBRAIC) { ALGEBRAIC[0] = (int)(VOI) % (int)(1000.00); ALGEBRAIC[2] = (CONDVAR[0]<=0.00000 ? 0.00000 : ALGEBRAIC[0] - 1.20000); ALGEBRAIC[3] = CONSTANTS[20]*pow(1.00000 - exp(- ALGEBRAIC[2]/CONSTANTS[17]), CONSTANTS[19])*exp(- ALGEBRAIC[2]/CONSTANTS[18]); ALGEBRAIC[1] = CONSTANTS[16]+ CONSTANTS[15]*pow(1.00000 - exp(- ALGEBRAIC[0]/CONSTANTS[12]), CONSTANTS[14])*exp(- ALGEBRAIC[0]/CONSTANTS[13]); ALGEBRAIC[4] = (CONSTANTS[41]/( (pow(CONSTANTS[22], 3.00000)+pow(CONSTANTS[9], 3.00000))*(CONSTANTS[23]+CONSTANTS[8])*(1.00000+ CONSTANTS[24]*exp(( (CONSTANTS[25] - 1.00000)*ALGEBRAIC[1]*CONSTANTS[3])/( CONSTANTS[5]*CONSTANTS[4])))))*( exp(( CONSTANTS[25]*ALGEBRAIC[1]*CONSTANTS[3])/( CONSTANTS[5]*CONSTANTS[4]))*pow(CONSTANTS[21], 3.00000)*CONSTANTS[8] - exp(( (CONSTANTS[25] - 1.00000)*ALGEBRAIC[1]*CONSTANTS[3])/( CONSTANTS[5]*CONSTANTS[4]))*pow(CONSTANTS[9], 3.00000)*STATES[0]); ALGEBRAIC[5] = (CONSTANTS[30]+( CONSTANTS[31]*CONSTANTS[29]*STATES[1])/1.00000)*(1.00000+ 0.270000*CONSTANTS[27]); ALGEBRAIC[7] = pow(ALGEBRAIC[5], 2.00000)*CONSTANTS[43]; ALGEBRAIC[9] = CONSTANTS[44]*pow(STATES[0], 2.00000)*(CONSTANTS[26] - STATES[2]) - ALGEBRAIC[7]*STATES[2]; ALGEBRAIC[6] = CONSTANTS[32] - ( CONSTANTS[33]*CONSTANTS[29]*STATES[1])/1.00000; ALGEBRAIC[8] = CONSTANTS[37]/pow(ALGEBRAIC[6], 2.00000); ALGEBRAIC[10] = CONSTANTS[42]*STATES[2] - ALGEBRAIC[8]*pow(CONSTANTS[10], 2.00000)*(CONSTANTS[26] - STATES[2]); ALGEBRAIC[12] = pow(1.00000+( CONSTANTS[6]*CONSTANTS[7])/pow(CONSTANTS[7]+STATES[0], 2.00000), - 1.00000); ALGEBRAIC[13] = CONSTANTS[39]*STATES[0]*(CONSTANTS[38] - STATES[3]) - CONSTANTS[40]*STATES[3]; } void getStateInformation(double* SI) { SI[0] = 1.0; SI[1] = 1.0; SI[2] = 1.0; SI[3] = 1.0; } void computeRoots(double VOI, double* CONSTANTS, double* RATES, double* OLDRATES, double* STATES, double* OLDSTATES, double* ALGEBRAIC, double* CONDVARS) { CONDVAR[0] = (ALGEBRAIC[0] - 1.20000) - 0.00000; }