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;
}
