/* There are a total of 11 entries in the algebraic variable array. There are a total of 2 entries in each of the rate and state variable arrays. There are a total of 11 entries in the constant variable array. */ /* * VOI is time in component environment (minute). * CONSTANTS[0] is VPF in component pulmonary_O2_uptake (litre). * CONSTANTS[1] is DOB in component pulmonary_O2_uptake (mL_per_minute). * CONSTANTS[2] is QRO in component pulmonary_O2_uptake (L_per_minute). * CONSTANTS[3] is RMO in component pulmonary_O2_uptake (mL_per_minute). * CONSTANTS[4] is HM in component pulmonary_O2_uptake (dimensionless). * CONSTANTS[9] is O2UTIL in component total_O2_utilization (mL_per_minute). * ALGEBRAIC[6] is O2VAD2 in component progressive_chemoreceptor_adaptation_of_alveolar_ventilation (dimensionless). * ALGEBRAIC[4] is O2VTS2 in component acute_chemoreceptor_adaptation_of_alveolar_ventilation (dimensionless). * ALGEBRAIC[7] is ALVENT in component alveolar_ventilation (L_per_minute). * CONSTANTS[5] is VNTSTM in component parameter_values (dimensionless). * ALGEBRAIC[8] is PO2ALV in component alveolar_PO2 (mmHg). * CONSTANTS[6] is PO2AMB in component parameter_values (mmHg). * ALGEBRAIC[1] is PO2ART in component arterial_PO2 (mmHg). * ALGEBRAIC[9] is O2DFS in component respiratory_O2_diffusion_into_capillaries (mL_per_minute). * CONSTANTS[7] is PL2 in component parameter_values (L_mL_per_minute_per_mmHg). * CONSTANTS[8] is VPTISS in component parameter_values (litre). * CONSTANTS[10] is RSPDFC in component respiratory_O2_diffusion_into_capillaries (mL_per_minute_per_mmHg). * STATES[0] is OVA in component O2_volume_of_arterial_blood (mL_per_L). * ALGEBRAIC[10] is DOVA in component O2_volume_of_arterial_blood (mL_per_L_per_minute). * ALGEBRAIC[0] is OSA in component arterial_PO2 (dimensionless). * ALGEBRAIC[3] is O2VTST in component acute_chemoreceptor_adaptation_of_alveolar_ventilation (dimensionless). * ALGEBRAIC[2] is O2VTST1 in component acute_chemoreceptor_adaptation_of_alveolar_ventilation (dimensionless). * ALGEBRAIC[5] is DO2VAD in component progressive_chemoreceptor_adaptation_of_alveolar_ventilation (per_minute). * STATES[1] is O2VAD1 in component progressive_chemoreceptor_adaptation_of_alveolar_ventilation (dimensionless). * RATES[0] is d/dt OVA in component O2_volume_of_arterial_blood (mL_per_L). * RATES[1] is d/dt O2VAD1 in component progressive_chemoreceptor_adaptation_of_alveolar_ventilation (dimensionless). * There are a total of 7 condition variables. */ void initConsts(double* CONSTANTS, double* RATES, double *STATES) { CONSTANTS[0] = 0.0123238; CONSTANTS[1] = 163.508; CONSTANTS[2] = 4.97838; CONSTANTS[3] = 56.8057; CONSTANTS[4] = 40.0381; CONSTANTS[5] = 1; CONSTANTS[6] = 150; CONSTANTS[7] = 1.8; CONSTANTS[8] = 0.0175; STATES[0] = 204.497; STATES[1] = 2.368e-07; CONSTANTS[9] = CONSTANTS[1]+CONSTANTS[3]; CONSTANTS[10] = CONSTANTS[7]/(CONSTANTS[8]+CONSTANTS[0]); RATES[0] = 0.1001; RATES[1] = 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[10]; resid[1] = RATES[1] - ALGEBRAIC[5]; } void computeVariables(double VOI, double* CONSTANTS, double* RATES, double* STATES, double* ALGEBRAIC) { } void computeEssentialVariables(double VOI, double* CONSTANTS, double* RATES, double* STATES, double* ALGEBRAIC) { ALGEBRAIC[0] = (STATES[0]/CONSTANTS[4])/5.25000; ALGEBRAIC[1] = (CONDVAR[0]>0.00000 ? 114.000+ (ALGEBRAIC[0] - 1.00000)*6667.00 : CONDVAR[1]>0.00000&&CONDVAR[2]<=0.00000 ? 74.0000+ (ALGEBRAIC[0] - 0.936000)*625.000 : CONDVAR[3]>0.00000&&CONDVAR[4]<=0.00000 ? 46.0000+ (ALGEBRAIC[0] - 0.800000)*205.882 : ALGEBRAIC[0]*57.5000); ALGEBRAIC[2] = (ALGEBRAIC[1] - 67.0000)/30.0000; ALGEBRAIC[3] = (CONDVAR[5]>0.00000 ? 1.00000 : CONDVAR[6]<0.00000 ? 0.600000 : ALGEBRAIC[2]); ALGEBRAIC[4] = 1.00000/ALGEBRAIC[3]; ALGEBRAIC[5] = ( (ALGEBRAIC[4] - 1.00000)*3.00000 - STATES[1])*0.000500000; ALGEBRAIC[6] = STATES[1]+1.00000; ALGEBRAIC[7] = CONSTANTS[9]*CONSTANTS[5]*0.0266670*ALGEBRAIC[4]*ALGEBRAIC[6]; ALGEBRAIC[8] = CONSTANTS[6] - (CONSTANTS[9]/ALGEBRAIC[7])/0.761000; ALGEBRAIC[9] = (ALGEBRAIC[8] - ALGEBRAIC[1])*CONSTANTS[10]; ALGEBRAIC[10] = (ALGEBRAIC[9] - CONSTANTS[9])/( CONSTANTS[2]*1.00000); } void getStateInformation(double* SI) { SI[0] = 1.0; SI[1] = 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.00000; CONDVAR[1] = ALGEBRAIC[0] - 0.936000; CONDVAR[2] = ALGEBRAIC[0] - 1.00000; CONDVAR[3] = ALGEBRAIC[0] - 0.800000; CONDVAR[4] = ALGEBRAIC[0] - 0.936000; CONDVAR[5] = ALGEBRAIC[2] - 1.00000; CONDVAR[6] = ALGEBRAIC[2] - 0.600000; }