Generated Code

The following is c_ida 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[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;
}