/* There are a total of 26 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 27 entries in the constant variable array. */ /* * VOI is time in component environment (minute). * CONSTANTS[0] is VEC in component capillary_dynamics (litre). * CONSTANTS[1] is PPD in component capillary_dynamics (gram_per_minute). * CONSTANTS[2] is RVS in component capillary_dynamics (mmHg_minute_per_L). * CONSTANTS[3] is DFP in component capillary_dynamics (L_per_minute). * CONSTANTS[4] is VPF in component capillary_dynamics (litre). * CONSTANTS[5] is BFN in component capillary_dynamics (L_per_minute). * CONSTANTS[6] is PVS in component capillary_dynamics (mmHg). * CONSTANTS[24] is PC in component capillary_pressure (mmHg). * ALGEBRAIC[15] is PGH in component hydrostatic_pressure_of_tissue_gel (mmHg). * ALGEBRAIC[13] is PTC in component total_osmotic_pressure_of_tissue_gel (mmHg). * ALGEBRAIC[3] is PPC in component plasma_colloid_osmotic_pressure (mmHg). * CONSTANTS[26] is VTCPL in component plasma_leakage (L_per_minute). * ALGEBRAIC[16] is VTC in component rate_of_fluid_out_of_capillaries (L_per_minute). * CONSTANTS[7] is CFC in component parameter_values (L_per_minute_per_mmHg). * ALGEBRAIC[21] is VTL in component lymph_flow (L_per_minute). * STATES[0] is VP in component plasma_volume (litre). * CONSTANTS[8] is TRPL in component parameter_values (L_per_minute). * ALGEBRAIC[22] is VPD in component plasma_volume (L_per_minute). * STATES[1] is PRP in component total_plasma_protein (gram). * ALGEBRAIC[0] is CPP in component plasma_protein_concentration (gram_per_L). * ALGEBRAIC[2] is DLP in component protein_destruction_and_formation (gram_per_minute). * CONSTANTS[9] is CPR in component parameter_values (gram_per_L). * CONSTANTS[10] is LPPR in component parameter_values (gram_per_minute). * CONSTANTS[11] is LPDE in component parameter_values (dimensionless). * CONSTANTS[12] is LPK in component parameter_values (L_per_minute). * ALGEBRAIC[1] is CPPD in component protein_destruction_and_formation (gram_per_L). * CONSTANTS[13] is PCR in component parameter_values (mmHg). * CONSTANTS[14] is CPK in component parameter_values (L_per_minute_per_mmHg). * CONSTANTS[15] is PCE in component parameter_values (dimensionless). * CONSTANTS[25] is PRCD in component plasma_leakage (mmHg). * ALGEBRAIC[7] is CPI in component interstitial_protein_concentration (gram_per_L). * ALGEBRAIC[9] is DPC in component protein_influx_into_interstitium (gram_per_minute). * ALGEBRAIC[23] is DPL in component lymph_protein_flow (gram_per_minute). * ALGEBRAIC[24] is DPP in component total_plasma_protein (gram_per_minute). * ALGEBRAIC[4] is VTS in component total_systemic_fluid_volume (litre). * ALGEBRAIC[5] is VTS1 in component interstitial_fluid_volume (litre). * CONSTANTS[16] is TSSLML in component parameter_values (dimensionless). * CONSTANTS[17] is TSSLTC in component parameter_values (per_minute). * STATES[2] is VTS2 in component interstitial_fluid_volume (litre). * STATES[3] is TSP in component total_interstitial_protein (gram). * ALGEBRAIC[25] is DPI in component total_interstitial_protein (gram_per_minute). * ALGEBRAIC[10] is PTCPR in component interstitial_colloid_osmotic_pressure (mmHg). * ALGEBRAIC[14] is PTT in component total_tissue_pressure (mmHg). * ALGEBRAIC[11] is CHY in component hydrostatic_pressure_of_tissue_gel (gram_per_L). * CONSTANTS[18] is HYL in component parameter_values (gram). * CONSTANTS[19] is CMPTSS in component parameter_values (dimensionless). * CONSTANTS[20] is PGHF in component parameter_values (L_mmHg_per_gram). * ALGEBRAIC[12] is POSHYL in component total_osmotic_pressure_of_tissue_gel (mmHg). * CONSTANTS[21] is GCOPF in component parameter_values (per_mmHg). * CONSTANTS[22] is VTSF in component parameter_values (litre). * ALGEBRAIC[17] is PIF in component interstial_free_fluid_pressure (mmHg). * ALGEBRAIC[19] is PTS in component interstitial_solid_tissue_pressure (mmHg). * CONSTANTS[23] is PLDF in component parameter_values (mmHg). * ALGEBRAIC[18] is PLD1 in component lymph_flow (mmHg). * ALGEBRAIC[20] is PLD in component lymph_flow (mmHg). * ALGEBRAIC[6] is VG in component interstitial_gel_volume (litre). * ALGEBRAIC[8] is VIF in component interstitial_free_fluid_volume (litre). * RATES[0] is d/dt VP in component plasma_volume (litre). * RATES[1] is d/dt PRP in component total_plasma_protein (gram). * RATES[2] is d/dt VTS2 in component interstitial_fluid_volume (litre). * RATES[3] is d/dt TSP in component total_interstitial_protein (gram). */ void initConsts(double* CONSTANTS, double* RATES, double *STATES) { CONSTANTS[0] = 14.8548; CONSTANTS[1] = 4.4805e-06; CONSTANTS[2] = 2.77751; CONSTANTS[3] = -4.078e-07; CONSTANTS[4] = 0.0123238; CONSTANTS[5] = 2.79521; CONSTANTS[6] = 3.71612; CONSTANTS[7] = 0.01167; STATES[0] = 3.00449; CONSTANTS[8] = 0; STATES[1] = 216.243; CONSTANTS[9] = 40; CONSTANTS[10] = 0.03; CONSTANTS[11] = 8; CONSTANTS[12] = 2.728e-14; CONSTANTS[13] = 15; CONSTANTS[14] = 0.000253; CONSTANTS[15] = 1; CONSTANTS[16] = 0.15; CONSTANTS[17] = 0.005; STATES[2] = 0.0; STATES[3] = 279.945; CONSTANTS[18] = 60; CONSTANTS[19] = 2; CONSTANTS[20] = -2; CONSTANTS[21] = 0.8092; CONSTANTS[22] = 6; CONSTANTS[23] = 4.2; CONSTANTS[24] = CONSTANTS[2]*1.70000*CONSTANTS[5]+CONSTANTS[6]; CONSTANTS[25] = (CONSTANTS[24] - CONSTANTS[13]<0.00000 ? 0.00000 : CONSTANTS[24] - CONSTANTS[13]); CONSTANTS[26] = pow( CONSTANTS[25]*CONSTANTS[14], CONSTANTS[15]); } void computeRates(double VOI, double* CONSTANTS, double* RATES, double* STATES, double* ALGEBRAIC) { ALGEBRAIC[4] = (CONSTANTS[0] - STATES[0]) - CONSTANTS[4]; RATES[2] = ( (ALGEBRAIC[4] - 12.0000)*CONSTANTS[16] - STATES[2])*CONSTANTS[17]; ALGEBRAIC[5] = ALGEBRAIC[4] - STATES[2]; ALGEBRAIC[14] = pow((ALGEBRAIC[5] - CONSTANTS[22])/CONSTANTS[22], 2.00000)*1.00000; ALGEBRAIC[11] = pow((CONSTANTS[18]/ALGEBRAIC[4])/5.00000, CONSTANTS[19]); ALGEBRAIC[15] = ALGEBRAIC[11]*CONSTANTS[20]+ALGEBRAIC[14]; ALGEBRAIC[7] = STATES[3]/ALGEBRAIC[4]; ALGEBRAIC[10] = 0.280000*ALGEBRAIC[7]+ 0.00190000*pow(ALGEBRAIC[7], 2.00000); ALGEBRAIC[12] = ALGEBRAIC[11]*2.00000; ALGEBRAIC[13] = ALGEBRAIC[12]*ALGEBRAIC[10]*CONSTANTS[21]; ALGEBRAIC[0] = STATES[1]/STATES[0]; ALGEBRAIC[3] = 0.280000*ALGEBRAIC[0]+ 0.00190000*pow(ALGEBRAIC[0], 2.00000); ALGEBRAIC[16] = (((CONSTANTS[24] - ALGEBRAIC[3]) - ALGEBRAIC[15])+ALGEBRAIC[13])*CONSTANTS[7]+CONSTANTS[26]; ALGEBRAIC[17] = ALGEBRAIC[15] - ALGEBRAIC[12]; ALGEBRAIC[18] = (ALGEBRAIC[17]+CONSTANTS[23]) - ALGEBRAIC[14]; ALGEBRAIC[20] = (ALGEBRAIC[18]>7.00000 ? 7.00000 : ALGEBRAIC[18]); ALGEBRAIC[21] = (ALGEBRAIC[20]<0.00000 ? 0.00000 : ALGEBRAIC[20]*0.0200000); ALGEBRAIC[22] = ((ALGEBRAIC[21] - ALGEBRAIC[16]) - CONSTANTS[3])+CONSTANTS[8]; RATES[0] = ALGEBRAIC[22]; ALGEBRAIC[1] = (ALGEBRAIC[0] - CONSTANTS[9]<0.00000 ? 0.00000 : ALGEBRAIC[0] - CONSTANTS[9]); ALGEBRAIC[2] = CONSTANTS[10] - pow(ALGEBRAIC[1], CONSTANTS[11])*CONSTANTS[12]; ALGEBRAIC[9] = CONSTANTS[26]*ALGEBRAIC[0]+ (ALGEBRAIC[0] - ALGEBRAIC[7])*0.00104000; ALGEBRAIC[23] = ALGEBRAIC[7]*ALGEBRAIC[21]; ALGEBRAIC[24] = (((ALGEBRAIC[2]+ALGEBRAIC[23]) - ALGEBRAIC[9]) - CONSTANTS[1])+ CONSTANTS[8]*72.0000; RATES[1] = ALGEBRAIC[24]; ALGEBRAIC[25] = ALGEBRAIC[9] - ALGEBRAIC[23]; RATES[3] = ALGEBRAIC[25]; } void computeVariables(double VOI, double* CONSTANTS, double* RATES, double* STATES, double* ALGEBRAIC) { ALGEBRAIC[4] = (CONSTANTS[0] - STATES[0]) - CONSTANTS[4]; ALGEBRAIC[5] = ALGEBRAIC[4] - STATES[2]; ALGEBRAIC[14] = pow((ALGEBRAIC[5] - CONSTANTS[22])/CONSTANTS[22], 2.00000)*1.00000; ALGEBRAIC[11] = pow((CONSTANTS[18]/ALGEBRAIC[4])/5.00000, CONSTANTS[19]); ALGEBRAIC[15] = ALGEBRAIC[11]*CONSTANTS[20]+ALGEBRAIC[14]; ALGEBRAIC[7] = STATES[3]/ALGEBRAIC[4]; ALGEBRAIC[10] = 0.280000*ALGEBRAIC[7]+ 0.00190000*pow(ALGEBRAIC[7], 2.00000); ALGEBRAIC[12] = ALGEBRAIC[11]*2.00000; ALGEBRAIC[13] = ALGEBRAIC[12]*ALGEBRAIC[10]*CONSTANTS[21]; ALGEBRAIC[0] = STATES[1]/STATES[0]; ALGEBRAIC[3] = 0.280000*ALGEBRAIC[0]+ 0.00190000*pow(ALGEBRAIC[0], 2.00000); ALGEBRAIC[16] = (((CONSTANTS[24] - ALGEBRAIC[3]) - ALGEBRAIC[15])+ALGEBRAIC[13])*CONSTANTS[7]+CONSTANTS[26]; ALGEBRAIC[17] = ALGEBRAIC[15] - ALGEBRAIC[12]; ALGEBRAIC[18] = (ALGEBRAIC[17]+CONSTANTS[23]) - ALGEBRAIC[14]; ALGEBRAIC[20] = (ALGEBRAIC[18]>7.00000 ? 7.00000 : ALGEBRAIC[18]); ALGEBRAIC[21] = (ALGEBRAIC[20]<0.00000 ? 0.00000 : ALGEBRAIC[20]*0.0200000); ALGEBRAIC[22] = ((ALGEBRAIC[21] - ALGEBRAIC[16]) - CONSTANTS[3])+CONSTANTS[8]; ALGEBRAIC[1] = (ALGEBRAIC[0] - CONSTANTS[9]<0.00000 ? 0.00000 : ALGEBRAIC[0] - CONSTANTS[9]); ALGEBRAIC[2] = CONSTANTS[10] - pow(ALGEBRAIC[1], CONSTANTS[11])*CONSTANTS[12]; ALGEBRAIC[9] = CONSTANTS[26]*ALGEBRAIC[0]+ (ALGEBRAIC[0] - ALGEBRAIC[7])*0.00104000; ALGEBRAIC[23] = ALGEBRAIC[7]*ALGEBRAIC[21]; ALGEBRAIC[24] = (((ALGEBRAIC[2]+ALGEBRAIC[23]) - ALGEBRAIC[9]) - CONSTANTS[1])+ CONSTANTS[8]*72.0000; ALGEBRAIC[25] = ALGEBRAIC[9] - ALGEBRAIC[23]; ALGEBRAIC[6] = (ALGEBRAIC[4]<=0.00000 ? 0.00000 : ALGEBRAIC[4]>0.00000&&ALGEBRAIC[4]<=12.0000 ? 0.00000+( (11.4000 - 0.00000)*(ALGEBRAIC[4] - 0.00000))/(12.0000 - 0.00000) : ALGEBRAIC[4]>12.0000&&ALGEBRAIC[4]<=15.0000 ? 11.4000+( (14.0000 - 11.4000)*(ALGEBRAIC[4] - 12.0000))/(15.0000 - 12.0000) : ALGEBRAIC[4]>15.0000&&ALGEBRAIC[4]<=18.0000 ? 14.0000+( (16.0000 - 14.0000)*(ALGEBRAIC[4] - 15.0000))/(18.0000 - 15.0000) : ALGEBRAIC[4]>18.0000&&ALGEBRAIC[4]<=21.0000 ? 16.0000+( (17.3000 - 16.0000)*(ALGEBRAIC[4] - 18.0000))/(21.0000 - 18.0000) : ALGEBRAIC[4]>21.0000&&ALGEBRAIC[4]<=24.0000 ? 17.3000+( (18.0000 - 17.3000)*(ALGEBRAIC[4] - 21.0000))/(24.0000 - 21.0000) : 18.0000); ALGEBRAIC[8] = ALGEBRAIC[4] - ALGEBRAIC[6]; ALGEBRAIC[19] = ALGEBRAIC[14] - ALGEBRAIC[17]; }