/* 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[10] 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[21] 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[20] 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[6] is CPI in component interstitial_protein_concentration (gram_per_L). * ALGEBRAIC[14] 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[7] is PTCPR in component interstitial_colloid_osmotic_pressure (mmHg). * ALGEBRAIC[11] is PTT in component total_tissue_pressure (mmHg). * ALGEBRAIC[8] 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[9] 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[16] is PIF in component interstial_free_fluid_pressure (mmHg). * ALGEBRAIC[17] 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[19] is PLD in component lymph_flow (mmHg). * ALGEBRAIC[12] is VG in component interstitial_gel_volume (litre). * ALGEBRAIC[13] 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). * There are a total of 14 condition variables. */ 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]); RATES[0] = 0.1001; RATES[1] = 0.1001; RATES[2] = 0.1001; RATES[3] = 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[22]; resid[1] = RATES[1] - ALGEBRAIC[24]; resid[2] = RATES[2] - ( (ALGEBRAIC[4] - 12.0000)*CONSTANTS[16] - STATES[2])*CONSTANTS[17]; resid[3] = RATES[3] - ALGEBRAIC[25]; } void computeVariables(double VOI, double* CONSTANTS, double* RATES, double* STATES, double* ALGEBRAIC) { ALGEBRAIC[12] = (CONDVAR[3]<=0.00000 ? 0.00000 : CONDVAR[4]>0.00000&&CONDVAR[5]<=0.00000 ? 0.00000+( (11.4000 - 0.00000)*(ALGEBRAIC[4] - 0.00000))/(12.0000 - 0.00000) : CONDVAR[6]>0.00000&&CONDVAR[7]<=0.00000 ? 11.4000+( (14.0000 - 11.4000)*(ALGEBRAIC[4] - 12.0000))/(15.0000 - 12.0000) : CONDVAR[8]>0.00000&&CONDVAR[9]<=0.00000 ? 14.0000+( (16.0000 - 14.0000)*(ALGEBRAIC[4] - 15.0000))/(18.0000 - 15.0000) : CONDVAR[10]>0.00000&&CONDVAR[11]<=0.00000 ? 16.0000+( (17.3000 - 16.0000)*(ALGEBRAIC[4] - 18.0000))/(21.0000 - 18.0000) : CONDVAR[12]>0.00000&&CONDVAR[13]<=0.00000 ? 17.3000+( (18.0000 - 17.3000)*(ALGEBRAIC[4] - 21.0000))/(24.0000 - 21.0000) : 18.0000); ALGEBRAIC[13] = ALGEBRAIC[4] - ALGEBRAIC[12]; ALGEBRAIC[17] = ALGEBRAIC[11] - ALGEBRAIC[16]; } void computeEssentialVariables(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[11] = pow((ALGEBRAIC[5] - CONSTANTS[22])/CONSTANTS[22], 2.00000)*1.00000; ALGEBRAIC[8] = pow((CONSTANTS[18]/ALGEBRAIC[4])/5.00000, CONSTANTS[19]); ALGEBRAIC[15] = ALGEBRAIC[8]*CONSTANTS[20]+ALGEBRAIC[11]; ALGEBRAIC[6] = STATES[3]/ALGEBRAIC[4]; ALGEBRAIC[7] = 0.280000*ALGEBRAIC[6]+ 0.00190000*pow(ALGEBRAIC[6], 2.00000); ALGEBRAIC[9] = ALGEBRAIC[8]*2.00000; ALGEBRAIC[10] = ALGEBRAIC[9]*ALGEBRAIC[7]*CONSTANTS[21]; ALGEBRAIC[0] = STATES[1]/STATES[0]; ALGEBRAIC[3] = 0.280000*ALGEBRAIC[0]+ 0.00190000*pow(ALGEBRAIC[0], 2.00000); ALGEBRAIC[21] = (((CONSTANTS[24] - ALGEBRAIC[3]) - ALGEBRAIC[15])+ALGEBRAIC[10])*CONSTANTS[7]+CONSTANTS[26]; ALGEBRAIC[16] = ALGEBRAIC[15] - ALGEBRAIC[9]; ALGEBRAIC[18] = (ALGEBRAIC[16]+CONSTANTS[23]) - ALGEBRAIC[11]; ALGEBRAIC[19] = (CONDVAR[1]>0.00000 ? 7.00000 : ALGEBRAIC[18]); ALGEBRAIC[20] = (CONDVAR[2]<0.00000 ? 0.00000 : ALGEBRAIC[19]*0.0200000); ALGEBRAIC[22] = ((ALGEBRAIC[20] - ALGEBRAIC[21]) - CONSTANTS[3])+CONSTANTS[8]; ALGEBRAIC[1] = (CONDVAR[0]<0.00000 ? 0.00000 : ALGEBRAIC[0] - CONSTANTS[9]); ALGEBRAIC[2] = CONSTANTS[10] - pow(ALGEBRAIC[1], CONSTANTS[11])*CONSTANTS[12]; ALGEBRAIC[14] = CONSTANTS[26]*ALGEBRAIC[0]+ (ALGEBRAIC[0] - ALGEBRAIC[6])*0.00104000; ALGEBRAIC[23] = ALGEBRAIC[6]*ALGEBRAIC[20]; ALGEBRAIC[24] = (((ALGEBRAIC[2]+ALGEBRAIC[23]) - ALGEBRAIC[14]) - CONSTANTS[1])+ CONSTANTS[8]*72.0000; ALGEBRAIC[25] = ALGEBRAIC[14] - ALGEBRAIC[23]; } 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] - CONSTANTS[9]) - 0.00000; CONDVAR[1] = ALGEBRAIC[18] - 7.00000; CONDVAR[2] = ALGEBRAIC[19] - 0.00000; CONDVAR[3] = ALGEBRAIC[4] - 0.00000; CONDVAR[4] = ALGEBRAIC[4] - 0.00000; CONDVAR[5] = ALGEBRAIC[4] - 12.0000; CONDVAR[6] = ALGEBRAIC[4] - 12.0000; CONDVAR[7] = ALGEBRAIC[4] - 15.0000; CONDVAR[8] = ALGEBRAIC[4] - 15.0000; CONDVAR[9] = ALGEBRAIC[4] - 18.0000; CONDVAR[10] = ALGEBRAIC[4] - 18.0000; CONDVAR[11] = ALGEBRAIC[4] - 21.0000; CONDVAR[12] = ALGEBRAIC[4] - 21.0000; CONDVAR[13] = ALGEBRAIC[4] - 24.0000; }