/* There are a total of 17 entries in the algebraic variable array. There are a total of 5 entries in each of the rate and state variable arrays. There are a total of 25 entries in the constant variable array. */ /* * VOI is time in component environment (ms). * ALGEBRAIC[1] is Ca_i in component intracellular_ion_concentrations (mM). * ALGEBRAIC[0] is Ca_b in component intracellular_ion_concentrations (mM). * STATES[0] is TRPN in component intracellular_ion_concentrations (mM). * CONSTANTS[0] is Ca_TRPN_Max in component troponin (mM). * ALGEBRAIC[16] is J_TRPN in component troponin (mM_per_ms). * STATES[1] is z in component tropomyosin (dimensionless). * ALGEBRAIC[9] is z_max in component tropomyosin (dimensionless). * CONSTANTS[1] is k_on in component troponin (per_mM_per_ms). * CONSTANTS[2] is k_Ref_off in component troponin (per_ms). * CONSTANTS[3] is gamma_trpn in component troponin (dimensionless). * CONSTANTS[4] is alpha_0 in component tropomyosin (per_ms). * CONSTANTS[5] is alpha_r1 in component tropomyosin (per_ms). * CONSTANTS[6] is alpha_r2 in component tropomyosin (per_ms). * CONSTANTS[7] is n_Rel in component tropomyosin (dimensionless). * CONSTANTS[8] is K_z in component tropomyosin (dimensionless). * CONSTANTS[9] is n_Hill in component tropomyosin (dimensionless). * CONSTANTS[10] is Ca_50ref in component tropomyosin (mM). * CONSTANTS[11] is z_p in component tropomyosin (dimensionless). * CONSTANTS[12] is beta_1 in component tropomyosin (dimensionless). * ALGEBRAIC[6] is Ca_50 in component tropomyosin (mM). * ALGEBRAIC[7] is Ca_TRPN_50 in component tropomyosin (mM). * CONSTANTS[22] is K_2 in component tropomyosin (per_ms). * CONSTANTS[24] is K_1 in component tropomyosin (per_ms). * ALGEBRAIC[8] is alpha_Tm in component tropomyosin (per_ms). * ALGEBRAIC[2] is beta_Tm in component tropomyosin (per_ms). * CONSTANTS[13] is beta_0 in component filament_overlap (dimensionless). * ALGEBRAIC[4] is lambda in component Myofilaments (dimensionless). * ALGEBRAIC[15] is k_off in component troponin (per_ms). * ALGEBRAIC[14] is Tension in component Cross_Bridges (N_per_mm2). * CONSTANTS[14] is T_ref in component length_independent_tension (N_per_mm2). * ALGEBRAIC[3] is ExtensionRatio in component Myofilaments (dimensionless). * CONSTANTS[23] is dExtensionRatiodt in component Myofilaments (per_ms). * ALGEBRAIC[5] is lambda_prev in component Myofilaments (dimensionless). * ALGEBRAIC[10] is overlap in component filament_overlap (dimensionless). * ALGEBRAIC[11] is T_Base in component length_independent_tension (N_per_mm2). * ALGEBRAIC[12] is T_0 in component isometric_tension (N_per_mm2). * ALGEBRAIC[13] is Q in component Cross_Bridges (dimensionless). * CONSTANTS[15] is a in component Cross_Bridges (dimensionless). * STATES[2] is Q_1 in component Cross_Bridges (dimensionless). * STATES[3] is Q_2 in component Cross_Bridges (dimensionless). * STATES[4] is Q_3 in component Cross_Bridges (dimensionless). * CONSTANTS[16] is A_1 in component Cross_Bridges (dimensionless). * CONSTANTS[17] is A_2 in component Cross_Bridges (dimensionless). * CONSTANTS[18] is A_3 in component Cross_Bridges (dimensionless). * CONSTANTS[19] is alpha_1 in component Cross_Bridges (per_ms). * CONSTANTS[20] is alpha_2 in component Cross_Bridges (per_ms). * CONSTANTS[21] is alpha_3 in component Cross_Bridges (per_ms). * RATES[0] is d/dt TRPN in component intracellular_ion_concentrations (mM). * RATES[1] is d/dt z in component tropomyosin (dimensionless). * RATES[2] is d/dt Q_1 in component Cross_Bridges (dimensionless). * RATES[3] is d/dt Q_2 in component Cross_Bridges (dimensionless). * RATES[4] is d/dt Q_3 in component Cross_Bridges (dimensionless). */ void initConsts(double* CONSTANTS, double* RATES, double *STATES) { STATES[0] = 0.067593139865; CONSTANTS[0] = 70e-3; STATES[1] = 0.014417937837; CONSTANTS[1] = 100; CONSTANTS[2] = 0.2; CONSTANTS[3] = 2; CONSTANTS[4] = 8e-3; CONSTANTS[5] = 2e-3; CONSTANTS[6] = 1.75e-3; CONSTANTS[7] = 3; CONSTANTS[8] = 0.15; CONSTANTS[9] = 3; CONSTANTS[10] = 1.05e-3; CONSTANTS[11] = 0.85; CONSTANTS[12] = -4; CONSTANTS[13] = 4.9; CONSTANTS[14] = 56.2; CONSTANTS[15] = 0.35; STATES[2] = 0; STATES[3] = 0; STATES[4] = 0; CONSTANTS[16] = -29; CONSTANTS[17] = 138; CONSTANTS[18] = 129; CONSTANTS[19] = 0.03; CONSTANTS[20] = 0.13; CONSTANTS[21] = 0.625; CONSTANTS[22] = (( CONSTANTS[6]*pow(CONSTANTS[11], CONSTANTS[7]))/(pow(CONSTANTS[11], CONSTANTS[7])+pow(CONSTANTS[8], CONSTANTS[7])))*(1.00000 - ( CONSTANTS[7]*pow(CONSTANTS[8], CONSTANTS[7]))/(pow(CONSTANTS[11], CONSTANTS[7])+pow(CONSTANTS[8], CONSTANTS[7]))); CONSTANTS[23] = 0.00000; CONSTANTS[24] = ( CONSTANTS[6]*pow(CONSTANTS[11], CONSTANTS[7] - 1.00000)*CONSTANTS[7]*pow(CONSTANTS[8], CONSTANTS[7]))/pow(pow(CONSTANTS[11], CONSTANTS[7])+pow(CONSTANTS[8], CONSTANTS[7]), 2.00000); } void computeRates(double VOI, double* CONSTANTS, double* RATES, double* STATES, double* ALGEBRAIC) { RATES[2] = CONSTANTS[16]*CONSTANTS[23] - CONSTANTS[19]*STATES[2]; RATES[3] = CONSTANTS[17]*CONSTANTS[23] - CONSTANTS[20]*STATES[3]; RATES[4] = CONSTANTS[18]*CONSTANTS[23] - CONSTANTS[21]*STATES[4]; ALGEBRAIC[0] = CONSTANTS[0] - STATES[0]; ALGEBRAIC[3] = (VOI>1000.00 ? 1.00000 : 1.00000); ALGEBRAIC[4] = (ALGEBRAIC[3]>0.800000&&ALGEBRAIC[3]<=1.15000 ? ALGEBRAIC[3] : ALGEBRAIC[3]>1.15000 ? 1.15000 : 0.800000); ALGEBRAIC[6] = CONSTANTS[10]*(1.00000+ CONSTANTS[12]*(ALGEBRAIC[4] - 1.00000)); ALGEBRAIC[7] = ( ALGEBRAIC[6]*CONSTANTS[0])/(ALGEBRAIC[6]+ (CONSTANTS[2]/CONSTANTS[1])*(1.00000 - ( (1.00000+ CONSTANTS[13]*(ALGEBRAIC[4] - 1.00000))*0.500000)/CONSTANTS[3])); ALGEBRAIC[8] = CONSTANTS[4]*pow(ALGEBRAIC[0]/ALGEBRAIC[7], CONSTANTS[9]); ALGEBRAIC[2] = CONSTANTS[5]+( CONSTANTS[6]*pow(STATES[1], CONSTANTS[7] - 1.00000))/(pow(STATES[1], CONSTANTS[7])+pow(CONSTANTS[8], CONSTANTS[7])); RATES[1] = ALGEBRAIC[8]*(1.00000 - STATES[1]) - ALGEBRAIC[2]*STATES[1]; ALGEBRAIC[1] = (VOI<1.00000 ? 1000.00*1.84330e-07 : VOI>=10.0000&&VOI<15.0000 ? 1000.00*((( 1.05500*pow(VOI/1000.00, 3.00000) - 0.0350700*pow(VOI/1000.00, 2.00000))+( 0.000399200*VOI)/1000.00) - 1.35600e-06) : VOI>=15.0000&&VOI<55.0000 ? 1000.00*((( 0.0140000*pow(VOI/1000.00, 3.00000) - 0.00255500*pow(VOI/1000.00, 2.00000))+( 0.000149400*VOI)/1000.00) - 1.42800e-06) : VOI>=55.0000&&VOI<250.000 ? 1000.00*((( 1.73900e-05*pow(VOI/1000.00, 3.00000) - 3.20900e-06*pow(VOI/1000.00, 2.00000)) - ( 5.68900e-06*VOI)/1000.00)+1.71900e-06) : VOI>=250.000&&VOI<490.000 ? 1000.00*(((( 0.000132100*pow(VOI/1000.00, 4.00000) - 0.000219700*pow(VOI/1000.00, 3.00000))+ 0.000137400*pow(VOI/1000.00, 2.00000)) - ( 3.89500e-05*VOI)/1000.00)+4.44100e-06) : 1000.00*1.21480e-07); ALGEBRAIC[10] = 1.00000+ CONSTANTS[13]*(ALGEBRAIC[4] - 1.00000); ALGEBRAIC[9] = (CONSTANTS[4]/pow(ALGEBRAIC[7]/CONSTANTS[0], CONSTANTS[9]) - CONSTANTS[22])/(CONSTANTS[5]+CONSTANTS[24]+CONSTANTS[4]/pow(ALGEBRAIC[7]/CONSTANTS[0], CONSTANTS[9])); ALGEBRAIC[11] = ( CONSTANTS[14]*STATES[1])/ALGEBRAIC[9]; ALGEBRAIC[12] = ALGEBRAIC[11]*ALGEBRAIC[10]; ALGEBRAIC[13] = STATES[2]+STATES[3]+STATES[4]; ALGEBRAIC[14] = (ALGEBRAIC[13]<0.00000 ? ( ALGEBRAIC[12]*( CONSTANTS[15]*ALGEBRAIC[13]+1.00000))/(1.00000 - ALGEBRAIC[13]) : ( ALGEBRAIC[12]*(1.00000+ (CONSTANTS[15]+2.00000)*ALGEBRAIC[13]))/(1.00000+ALGEBRAIC[13])); ALGEBRAIC[15] = (1.00000 - ALGEBRAIC[14]/( CONSTANTS[3]*CONSTANTS[14])>0.100000 ? CONSTANTS[2]*(1.00000 - ALGEBRAIC[14]/( CONSTANTS[3]*CONSTANTS[14])) : CONSTANTS[2]*0.100000); ALGEBRAIC[16] = (CONSTANTS[0] - STATES[0])*ALGEBRAIC[15] - ALGEBRAIC[1]*STATES[0]*CONSTANTS[1]; RATES[0] = ALGEBRAIC[16]; } void computeVariables(double VOI, double* CONSTANTS, double* RATES, double* STATES, double* ALGEBRAIC) { ALGEBRAIC[0] = CONSTANTS[0] - STATES[0]; ALGEBRAIC[3] = (VOI>1000.00 ? 1.00000 : 1.00000); ALGEBRAIC[4] = (ALGEBRAIC[3]>0.800000&&ALGEBRAIC[3]<=1.15000 ? ALGEBRAIC[3] : ALGEBRAIC[3]>1.15000 ? 1.15000 : 0.800000); ALGEBRAIC[6] = CONSTANTS[10]*(1.00000+ CONSTANTS[12]*(ALGEBRAIC[4] - 1.00000)); ALGEBRAIC[7] = ( ALGEBRAIC[6]*CONSTANTS[0])/(ALGEBRAIC[6]+ (CONSTANTS[2]/CONSTANTS[1])*(1.00000 - ( (1.00000+ CONSTANTS[13]*(ALGEBRAIC[4] - 1.00000))*0.500000)/CONSTANTS[3])); ALGEBRAIC[8] = CONSTANTS[4]*pow(ALGEBRAIC[0]/ALGEBRAIC[7], CONSTANTS[9]); ALGEBRAIC[2] = CONSTANTS[5]+( CONSTANTS[6]*pow(STATES[1], CONSTANTS[7] - 1.00000))/(pow(STATES[1], CONSTANTS[7])+pow(CONSTANTS[8], CONSTANTS[7])); ALGEBRAIC[1] = (VOI<1.00000 ? 1000.00*1.84330e-07 : VOI>=10.0000&&VOI<15.0000 ? 1000.00*((( 1.05500*pow(VOI/1000.00, 3.00000) - 0.0350700*pow(VOI/1000.00, 2.00000))+( 0.000399200*VOI)/1000.00) - 1.35600e-06) : VOI>=15.0000&&VOI<55.0000 ? 1000.00*((( 0.0140000*pow(VOI/1000.00, 3.00000) - 0.00255500*pow(VOI/1000.00, 2.00000))+( 0.000149400*VOI)/1000.00) - 1.42800e-06) : VOI>=55.0000&&VOI<250.000 ? 1000.00*((( 1.73900e-05*pow(VOI/1000.00, 3.00000) - 3.20900e-06*pow(VOI/1000.00, 2.00000)) - ( 5.68900e-06*VOI)/1000.00)+1.71900e-06) : VOI>=250.000&&VOI<490.000 ? 1000.00*(((( 0.000132100*pow(VOI/1000.00, 4.00000) - 0.000219700*pow(VOI/1000.00, 3.00000))+ 0.000137400*pow(VOI/1000.00, 2.00000)) - ( 3.89500e-05*VOI)/1000.00)+4.44100e-06) : 1000.00*1.21480e-07); ALGEBRAIC[10] = 1.00000+ CONSTANTS[13]*(ALGEBRAIC[4] - 1.00000); ALGEBRAIC[9] = (CONSTANTS[4]/pow(ALGEBRAIC[7]/CONSTANTS[0], CONSTANTS[9]) - CONSTANTS[22])/(CONSTANTS[5]+CONSTANTS[24]+CONSTANTS[4]/pow(ALGEBRAIC[7]/CONSTANTS[0], CONSTANTS[9])); ALGEBRAIC[11] = ( CONSTANTS[14]*STATES[1])/ALGEBRAIC[9]; ALGEBRAIC[12] = ALGEBRAIC[11]*ALGEBRAIC[10]; ALGEBRAIC[13] = STATES[2]+STATES[3]+STATES[4]; ALGEBRAIC[14] = (ALGEBRAIC[13]<0.00000 ? ( ALGEBRAIC[12]*( CONSTANTS[15]*ALGEBRAIC[13]+1.00000))/(1.00000 - ALGEBRAIC[13]) : ( ALGEBRAIC[12]*(1.00000+ (CONSTANTS[15]+2.00000)*ALGEBRAIC[13]))/(1.00000+ALGEBRAIC[13])); ALGEBRAIC[15] = (1.00000 - ALGEBRAIC[14]/( CONSTANTS[3]*CONSTANTS[14])>0.100000 ? CONSTANTS[2]*(1.00000 - ALGEBRAIC[14]/( CONSTANTS[3]*CONSTANTS[14])) : CONSTANTS[2]*0.100000); ALGEBRAIC[16] = (CONSTANTS[0] - STATES[0])*ALGEBRAIC[15] - ALGEBRAIC[1]*STATES[0]*CONSTANTS[1]; ALGEBRAIC[5] = ALGEBRAIC[3]; }