Generated Code

The following is c code generated by the CellML API from this CellML file. (Back to language selection)

The raw code is available.

/*
   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[5] 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[6] 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).
 */
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]);
}
void
computeRates(double VOI, double* CONSTANTS, double* RATES, double* STATES, double* ALGEBRAIC)
{
ALGEBRAIC[0] = (STATES[0]/CONSTANTS[4])/5.25000;
ALGEBRAIC[1] = (ALGEBRAIC[0]>1.00000 ? 114.000+ (ALGEBRAIC[0] - 1.00000)*6667.00 : ALGEBRAIC[0]>0.936000&&ALGEBRAIC[0]<=1.00000 ? 74.0000+ (ALGEBRAIC[0] - 0.936000)*625.000 : ALGEBRAIC[0]>0.800000&&ALGEBRAIC[0]<=0.936000 ? 46.0000+ (ALGEBRAIC[0] - 0.800000)*205.882 :  ALGEBRAIC[0]*57.5000);
ALGEBRAIC[2] = (ALGEBRAIC[1] - 67.0000)/30.0000;
ALGEBRAIC[3] = (ALGEBRAIC[2]>1.00000 ? 1.00000 : ALGEBRAIC[2]<0.600000 ? 0.600000 : ALGEBRAIC[2]);
ALGEBRAIC[4] = 1.00000/ALGEBRAIC[3];
ALGEBRAIC[6] =  ( (ALGEBRAIC[4] - 1.00000)*3.00000 - STATES[1])*0.000500000;
RATES[1] = ALGEBRAIC[6];
ALGEBRAIC[5] = STATES[1]+1.00000;
ALGEBRAIC[7] =  CONSTANTS[9]*CONSTANTS[5]*0.0266670*ALGEBRAIC[4]*ALGEBRAIC[5];
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);
RATES[0] = ALGEBRAIC[10];
}
void
computeVariables(double VOI, double* CONSTANTS, double* RATES, double* STATES, double* ALGEBRAIC)
{
ALGEBRAIC[0] = (STATES[0]/CONSTANTS[4])/5.25000;
ALGEBRAIC[1] = (ALGEBRAIC[0]>1.00000 ? 114.000+ (ALGEBRAIC[0] - 1.00000)*6667.00 : ALGEBRAIC[0]>0.936000&&ALGEBRAIC[0]<=1.00000 ? 74.0000+ (ALGEBRAIC[0] - 0.936000)*625.000 : ALGEBRAIC[0]>0.800000&&ALGEBRAIC[0]<=0.936000 ? 46.0000+ (ALGEBRAIC[0] - 0.800000)*205.882 :  ALGEBRAIC[0]*57.5000);
ALGEBRAIC[2] = (ALGEBRAIC[1] - 67.0000)/30.0000;
ALGEBRAIC[3] = (ALGEBRAIC[2]>1.00000 ? 1.00000 : ALGEBRAIC[2]<0.600000 ? 0.600000 : ALGEBRAIC[2]);
ALGEBRAIC[4] = 1.00000/ALGEBRAIC[3];
ALGEBRAIC[6] =  ( (ALGEBRAIC[4] - 1.00000)*3.00000 - STATES[1])*0.000500000;
ALGEBRAIC[5] = STATES[1]+1.00000;
ALGEBRAIC[7] =  CONSTANTS[9]*CONSTANTS[5]*0.0266670*ALGEBRAIC[4]*ALGEBRAIC[5];
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);
}