/* There are a total of 12 entries in the algebraic variable array. There are a total of 7 entries in each of the rate and state variable arrays. There are a total of 26 entries in the constant variable array. */ /* * VOI is time in component environment (hour). * STATES[0] is Cgen_pp in component Cgen_pp (micromolar). * CONSTANTS[22] is Qpp in component Cgen_pp (litre_hour). * CONSTANTS[0] is Ppp in component Cgen_pp (dimensionless). * ALGEBRAIC[0] is H_Cgen_pp in component Cgen_pp (dimensionless). * CONSTANTS[1] is Vpp in component Cgen_pp (litre). * ALGEBRAIC[8] is H_Cgen_B in component Cgen_B (dimensionless). * CONSTANTS[19] is Qt in component model_parameters (litre_hour). * ALGEBRAIC[6] is Cgen_B in component Cgen_B (micromolar). * STATES[1] is Cgen_rp in component Cgen_rp (micromolar). * CONSTANTS[2] is Prp in component Cgen_rp (dimensionless). * CONSTANTS[23] is Qrp in component Cgen_rp (litre_hour). * ALGEBRAIC[1] is H_Cgen_rp in component Cgen_rp (dimensionless). * CONSTANTS[3] is Vrp in component Cgen_rp (litre). * CONSTANTS[4] is kgen_urine in component Cgen_rp (first_order_rate_constant). * STATES[2] is Cgen_l in component Cgen_l (micromolar). * CONSTANTS[24] is Ql in component Cgen_l (litre_hour). * ALGEBRAIC[2] is H_Cgen_l in component Cgen_l (dimensionless). * CONSTANTS[5] is Vl in component Cgen_l (litre). * CONSTANTS[6] is Pl in component Cgen_l (dimensionless). * CONSTANTS[7] is Vmax in component model_parameters (micromolar_hour). * CONSTANTS[8] is Km in component model_parameters (micromolar). * ALGEBRAIC[11] is vinf in component model_parameters (micromole_hour). * ALGEBRAIC[3] is H_Cgen_GI in component Cgen_GI (dimensionless). * CONSTANTS[25] is QGI in component Cgen_GI (litre_hour). * STATES[3] is Cgen_GI in component Cgen_GI (micromolar). * CONSTANTS[9] is VGI in component Cgen_GI (litre). * STATES[4] is Ccon_l in component Ccon_l (micromolar). * ALGEBRAIC[4] is H_Ccon_l in component Ccon_l (dimensionless). * CONSTANTS[10] is kbile in component model_parameters (first_order_rate_constant). * ALGEBRAIC[7] is H_Ccon_ROB in component Ccon_ROB (dimensionless). * STATES[5] is Ccon_ROB in component Ccon_ROB (micromolar). * CONSTANTS[11] is VROB in component Ccon_ROB (litre). * CONSTANTS[12] is kcon_urine in component Ccon_ROB (first_order_rate_constant). * STATES[6] is Acon_b in component Acon_b (micromole). * ALGEBRAIC[5] is d_t_Cgen_l in component Acon_b (hour). * CONSTANTS[13] is tbasal in component Acon_b (hour). * CONSTANTS[14] is ct in component Acon_b (hour). * CONSTANTS[15] is cgen in component Acon_b (litre_hour_micromole). * CONSTANTS[16] is cv in component model_parameters (micromole_hour). * ALGEBRAIC[9] is F in component model_parameters (dimensionless). * CONSTANTS[20] is G in component model_parameters (dimensionless). * ALGEBRAIC[10] is H in component model_parameters (dimensionless). * CONSTANTS[21] is I in component model_parameters (dimensionless). * CONSTANTS[17] is epsilon in component model_parameters (hour). * CONSTANTS[18] is m_rat in component model_parameters (dimensionless). * RATES[0] is d/dt Cgen_pp in component Cgen_pp (micromolar). * RATES[1] is d/dt Cgen_rp in component Cgen_rp (micromolar). * RATES[2] is d/dt Cgen_l in component Cgen_l (micromolar). * RATES[3] is d/dt Cgen_GI in component Cgen_GI (micromolar). * RATES[4] is d/dt Ccon_l in component Ccon_l (micromolar). * RATES[5] is d/dt Ccon_ROB in component Ccon_ROB (micromolar). * RATES[6] is d/dt Acon_b in component Acon_b (micromole). */ void initConsts(double* CONSTANTS, double* RATES, double *STATES) { STATES[0] = 0; CONSTANTS[0] = 0.59; CONSTANTS[1] = 0.188; STATES[1] = 0; CONSTANTS[2] = 1.94; CONSTANTS[3] = 0.012; CONSTANTS[4] = 9.5; STATES[2] = 0; CONSTANTS[5] = 0.0092; CONSTANTS[6] = 3.61; CONSTANTS[7] = 25.25; CONSTANTS[8] = 0.6231; STATES[3] = 0; CONSTANTS[9] = 0.011; STATES[4] = 0; CONSTANTS[10] = 111.72; STATES[5] = 0; CONSTANTS[11] = 0.2408; CONSTANTS[12] = 0.0; STATES[6] = 0; CONSTANTS[13] = 0.0865; CONSTANTS[14] = 1.0107; CONSTANTS[15] = 0.06561; CONSTANTS[16] = 1.0; CONSTANTS[17] = 0.1; CONSTANTS[18] = 0.25; CONSTANTS[19] = 14.1000*pow(CONSTANTS[18], 0.750000); CONSTANTS[20] = 1.00000; CONSTANTS[21] = 0.00000; CONSTANTS[22] = 0.528000*CONSTANTS[19]; CONSTANTS[23] = 0.289000*CONSTANTS[19]; CONSTANTS[24] = 0.0300000*CONSTANTS[19]; CONSTANTS[25] = 0.153000*CONSTANTS[19]; } void computeRates(double VOI, double* CONSTANTS, double* RATES, double* STATES, double* ALGEBRAIC) { ALGEBRAIC[4] = (STATES[4]<0.00000 ? 0.00000 : 1.00000); RATES[6] = CONSTANTS[10]*ALGEBRAIC[4]*STATES[4]*CONSTANTS[5]; ALGEBRAIC[2] = (STATES[2]<0.00000 ? 0.00000 : 1.00000); ALGEBRAIC[7] = (STATES[5]<0.00000 ? 0.00000 : 1.00000); RATES[4] = ( CONSTANTS[7]*ALGEBRAIC[2]*STATES[2])/(CONSTANTS[8]+ ALGEBRAIC[2]*STATES[2]) - ( CONSTANTS[10]*ALGEBRAIC[4]*STATES[4]+( (CONSTANTS[24]+CONSTANTS[25])*( ALGEBRAIC[4]*STATES[4] - ALGEBRAIC[7]*STATES[5]))/CONSTANTS[5]); RATES[5] = ( (CONSTANTS[24]+CONSTANTS[25])*( ALGEBRAIC[4]*STATES[4] - ALGEBRAIC[7]*STATES[5]))/CONSTANTS[11] - CONSTANTS[12]*ALGEBRAIC[7]*STATES[5]; ALGEBRAIC[0] = (STATES[0]<0.00000 ? 0.00000 : 1.00000); ALGEBRAIC[1] = (STATES[1]<0.00000 ? 0.00000 : 1.00000); ALGEBRAIC[6] = (( CONSTANTS[23]*ALGEBRAIC[1]*STATES[1])/CONSTANTS[2]+( CONSTANTS[22]*ALGEBRAIC[0]*STATES[0])/CONSTANTS[0]+( (CONSTANTS[24]+CONSTANTS[25])*ALGEBRAIC[2]*STATES[2])/CONSTANTS[6])/CONSTANTS[19]; ALGEBRAIC[8] = (ALGEBRAIC[6]<0.00000 ? 0.00000 : 1.00000); RATES[0] = ( CONSTANTS[22]*ALGEBRAIC[8]*ALGEBRAIC[6] - ( CONSTANTS[22]*ALGEBRAIC[0]*STATES[0])/CONSTANTS[0])/CONSTANTS[1]; RATES[1] = ( CONSTANTS[23]*ALGEBRAIC[8]*ALGEBRAIC[6] - ( CONSTANTS[23]*ALGEBRAIC[1]*STATES[1])/CONSTANTS[2])/CONSTANTS[3] - CONSTANTS[4]*ALGEBRAIC[1]*STATES[1]; ALGEBRAIC[3] = (STATES[3]<0.00000 ? 0.00000 : 1.00000); RATES[3] = ( CONSTANTS[25]*ALGEBRAIC[8]*ALGEBRAIC[6] - ( CONSTANTS[25]*ALGEBRAIC[3]*STATES[3])/CONSTANTS[2])/CONSTANTS[9]; ALGEBRAIC[9] = (-2.00000/pow(CONSTANTS[17], 3.00000))*pow(VOI, 3.00000)+ (3.00000/pow(CONSTANTS[17], 2.00000))*pow(VOI, 2.00000); ALGEBRAIC[10] = ( 3.00000*pow(1.00000 - VOI, 2.00000))/pow(CONSTANTS[17], 2.00000) - ( 2.00000*pow(1.00000 - VOI, 3.00000))/pow(CONSTANTS[17], 3.00000); ALGEBRAIC[11] = (VOI=0.00000 ? CONSTANTS[16]*ALGEBRAIC[9] : VOI<=1.00000 - CONSTANTS[17]&&VOI>=CONSTANTS[17] ? CONSTANTS[16]*CONSTANTS[20] : VOI<=1.00000&&VOI>1.00000 - CONSTANTS[17] ? CONSTANTS[16]*ALGEBRAIC[10] : VOI<=1.00000+5.00000/60.0000&&VOI>1.00000 ? CONSTANTS[16]*CONSTANTS[21] : 0.0/0.0); RATES[2] = (( CONSTANTS[24]*ALGEBRAIC[8]*ALGEBRAIC[6] - ( (CONSTANTS[24]+CONSTANTS[25])*ALGEBRAIC[2]*STATES[2])/CONSTANTS[6])+ALGEBRAIC[11]+( CONSTANTS[25]*ALGEBRAIC[3]*STATES[3])/CONSTANTS[2])/CONSTANTS[5] - ( CONSTANTS[7]*ALGEBRAIC[2]*STATES[2])/(CONSTANTS[8]+ ALGEBRAIC[2]*STATES[2]); } void computeVariables(double VOI, double* CONSTANTS, double* RATES, double* STATES, double* ALGEBRAIC) { ALGEBRAIC[4] = (STATES[4]<0.00000 ? 0.00000 : 1.00000); ALGEBRAIC[2] = (STATES[2]<0.00000 ? 0.00000 : 1.00000); ALGEBRAIC[7] = (STATES[5]<0.00000 ? 0.00000 : 1.00000); ALGEBRAIC[0] = (STATES[0]<0.00000 ? 0.00000 : 1.00000); ALGEBRAIC[1] = (STATES[1]<0.00000 ? 0.00000 : 1.00000); ALGEBRAIC[6] = (( CONSTANTS[23]*ALGEBRAIC[1]*STATES[1])/CONSTANTS[2]+( CONSTANTS[22]*ALGEBRAIC[0]*STATES[0])/CONSTANTS[0]+( (CONSTANTS[24]+CONSTANTS[25])*ALGEBRAIC[2]*STATES[2])/CONSTANTS[6])/CONSTANTS[19]; ALGEBRAIC[8] = (ALGEBRAIC[6]<0.00000 ? 0.00000 : 1.00000); ALGEBRAIC[3] = (STATES[3]<0.00000 ? 0.00000 : 1.00000); ALGEBRAIC[9] = (-2.00000/pow(CONSTANTS[17], 3.00000))*pow(VOI, 3.00000)+ (3.00000/pow(CONSTANTS[17], 2.00000))*pow(VOI, 2.00000); ALGEBRAIC[10] = ( 3.00000*pow(1.00000 - VOI, 2.00000))/pow(CONSTANTS[17], 2.00000) - ( 2.00000*pow(1.00000 - VOI, 3.00000))/pow(CONSTANTS[17], 3.00000); ALGEBRAIC[11] = (VOI=0.00000 ? CONSTANTS[16]*ALGEBRAIC[9] : VOI<=1.00000 - CONSTANTS[17]&&VOI>=CONSTANTS[17] ? CONSTANTS[16]*CONSTANTS[20] : VOI<=1.00000&&VOI>1.00000 - CONSTANTS[17] ? CONSTANTS[16]*ALGEBRAIC[10] : VOI<=1.00000+5.00000/60.0000&&VOI>1.00000 ? CONSTANTS[16]*CONSTANTS[21] : 0.0/0.0); ALGEBRAIC[5] = CONSTANTS[13]+ CONSTANTS[15]*ALGEBRAIC[2]*STATES[2]*exp(- (VOI/CONSTANTS[14])); }