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 12 entries in the algebraic variable array.
   There are a total of 7 entries in each of the rate and state variable arrays.
   There are a total of 26 entries in the constant variable array.
 */
/*
 * VOI is time in component environment (hour).
 * STATES[0] is Cgen_pp in component Cgen_pp (micromolar).
 * CONSTANTS[22] is Qpp in component Cgen_pp (litre_hour).
 * CONSTANTS[0] is Ppp in component Cgen_pp (dimensionless).
 * ALGEBRAIC[0] is H_Cgen_pp in component Cgen_pp (dimensionless).
 * CONSTANTS[1] is Vpp in component Cgen_pp (litre).
 * ALGEBRAIC[8] is H_Cgen_B in component Cgen_B (dimensionless).
 * CONSTANTS[19] is Qt in component model_parameters (litre_hour).
 * ALGEBRAIC[7] is Cgen_B in component Cgen_B (micromolar).
 * STATES[1] is Cgen_rp in component Cgen_rp (micromolar).
 * CONSTANTS[2] is Prp in component Cgen_rp (dimensionless).
 * CONSTANTS[23] is Qrp in component Cgen_rp (litre_hour).
 * ALGEBRAIC[1] is H_Cgen_rp in component Cgen_rp (dimensionless).
 * CONSTANTS[3] is Vrp in component Cgen_rp (litre).
 * CONSTANTS[4] is kgen_urine in component Cgen_rp (first_order_rate_constant).
 * STATES[2] is Cgen_l in component Cgen_l (micromolar).
 * CONSTANTS[24] is Ql in component Cgen_l (litre_hour).
 * ALGEBRAIC[2] is H_Cgen_l in component Cgen_l (dimensionless).
 * CONSTANTS[5] is Vl in component Cgen_l (litre).
 * CONSTANTS[6] is Pl in component Cgen_l (dimensionless).
 * CONSTANTS[7] is Vmax in component model_parameters (micromolar_hour).
 * CONSTANTS[8] is Km in component model_parameters (micromolar).
 * ALGEBRAIC[11] is vinf in component model_parameters (micromole_hour).
 * ALGEBRAIC[3] is H_Cgen_GI in component Cgen_GI (dimensionless).
 * CONSTANTS[25] is QGI in component Cgen_GI (litre_hour).
 * STATES[3] is Cgen_GI in component Cgen_GI (micromolar).
 * CONSTANTS[9] is VGI in component Cgen_GI (litre).
 * STATES[4] is Ccon_l in component Ccon_l (micromolar).
 * ALGEBRAIC[4] is H_Ccon_l in component Ccon_l (dimensionless).
 * CONSTANTS[10] is kbile in component model_parameters (first_order_rate_constant).
 * ALGEBRAIC[5] is H_Ccon_ROB in component Ccon_ROB (dimensionless).
 * STATES[5] is Ccon_ROB in component Ccon_ROB (micromolar).
 * CONSTANTS[11] is VROB in component Ccon_ROB (litre).
 * CONSTANTS[12] is kcon_urine in component Ccon_ROB (first_order_rate_constant).
 * STATES[6] is Acon_b in component Acon_b (micromole).
 * ALGEBRAIC[6] is d_t_Cgen_l in component Acon_b (hour).
 * CONSTANTS[13] is tbasal in component Acon_b (hour).
 * CONSTANTS[14] is ct in component Acon_b (hour).
 * CONSTANTS[15] is cgen in component Acon_b (litre_hour_micromole).
 * CONSTANTS[16] is cv in component model_parameters (micromole_hour).
 * ALGEBRAIC[9] is F in component model_parameters (dimensionless).
 * CONSTANTS[20] is G in component model_parameters (dimensionless).
 * ALGEBRAIC[10] is H in component model_parameters (dimensionless).
 * CONSTANTS[21] is I in component model_parameters (dimensionless).
 * CONSTANTS[17] is epsilon in component model_parameters (hour).
 * CONSTANTS[18] is m_rat in component model_parameters (dimensionless).
 * RATES[0] is d/dt Cgen_pp in component Cgen_pp (micromolar).
 * RATES[1] is d/dt Cgen_rp in component Cgen_rp (micromolar).
 * RATES[2] is d/dt Cgen_l in component Cgen_l (micromolar).
 * RATES[3] is d/dt Cgen_GI in component Cgen_GI (micromolar).
 * RATES[4] is d/dt Ccon_l in component Ccon_l (micromolar).
 * RATES[5] is d/dt Ccon_ROB in component Ccon_ROB (micromolar).
 * RATES[6] is d/dt Acon_b in component Acon_b (micromole).
 * There are a total of 15 condition variables.
 */
void
initConsts(double* CONSTANTS, double* RATES, double *STATES)
{
STATES[0] = 0;
CONSTANTS[0] = 0.59;
CONSTANTS[1] = 0.188;
STATES[1] = 0;
CONSTANTS[2] = 1.94;
CONSTANTS[3] = 0.012;
CONSTANTS[4] = 9.5;
STATES[2] = 0;
CONSTANTS[5] = 0.0092;
CONSTANTS[6] = 3.61;
CONSTANTS[7] = 25.25;
CONSTANTS[8] = 0.6231;
STATES[3] = 0;
CONSTANTS[9] = 0.011;
STATES[4] = 0;
CONSTANTS[10] = 111.72;
STATES[5] = 0;
CONSTANTS[11] = 0.2408;
CONSTANTS[12] = 0.0;
STATES[6] = 0;
CONSTANTS[13] = 0.0865;
CONSTANTS[14] = 1.0107;
CONSTANTS[15] = 0.06561;
CONSTANTS[16] = 1.0;
CONSTANTS[17] = 0.1;
CONSTANTS[18] = 0.25;
CONSTANTS[19] =  14.1000*pow(CONSTANTS[18], 0.750000);
CONSTANTS[20] = 1.00000;
CONSTANTS[21] = 0.00000;
CONSTANTS[22] =  0.528000*CONSTANTS[19];
CONSTANTS[23] =  0.289000*CONSTANTS[19];
CONSTANTS[24] =  0.0300000*CONSTANTS[19];
CONSTANTS[25] =  0.153000*CONSTANTS[19];
RATES[0] = 0.1001;
RATES[1] = 0.1001;
RATES[2] = 0.1001;
RATES[3] = 0.1001;
RATES[4] = 0.1001;
RATES[5] = 0.1001;
RATES[6] = 0.1001;
}
void
computeResiduals(double VOI, double* CONSTANTS, double* RATES, double* OLDRATES, double* STATES,
                 double* OLDSTATES, double* ALGEBRAIC, double* CONDVARS)
{
resid[0] = RATES[0] - ( CONSTANTS[22]*ALGEBRAIC[8]*ALGEBRAIC[7] - ( CONSTANTS[22]*ALGEBRAIC[0]*STATES[0])/CONSTANTS[0])/CONSTANTS[1];
resid[1] = RATES[1] - ( CONSTANTS[23]*ALGEBRAIC[8]*ALGEBRAIC[7] - ( CONSTANTS[23]*ALGEBRAIC[1]*STATES[1])/CONSTANTS[2])/CONSTANTS[3] -  CONSTANTS[4]*ALGEBRAIC[1]*STATES[1];
resid[2] = RATES[2] - (( CONSTANTS[24]*ALGEBRAIC[8]*ALGEBRAIC[7] - ( (CONSTANTS[24]+CONSTANTS[25])*ALGEBRAIC[2]*STATES[2])/CONSTANTS[6])+ALGEBRAIC[11]+( CONSTANTS[25]*ALGEBRAIC[3]*STATES[3])/CONSTANTS[2])/CONSTANTS[5] - ( CONSTANTS[7]*ALGEBRAIC[2]*STATES[2])/(CONSTANTS[8]+ ALGEBRAIC[2]*STATES[2]);
resid[3] = RATES[3] - ( CONSTANTS[25]*ALGEBRAIC[8]*ALGEBRAIC[7] - ( CONSTANTS[25]*ALGEBRAIC[3]*STATES[3])/CONSTANTS[2])/CONSTANTS[9];
resid[4] = RATES[4] - ( CONSTANTS[7]*ALGEBRAIC[2]*STATES[2])/(CONSTANTS[8]+ ALGEBRAIC[2]*STATES[2]) - ( CONSTANTS[10]*ALGEBRAIC[4]*STATES[4]+( (CONSTANTS[24]+CONSTANTS[25])*( ALGEBRAIC[4]*STATES[4] -  ALGEBRAIC[5]*STATES[5]))/CONSTANTS[5]);
resid[5] = RATES[5] - ( (CONSTANTS[24]+CONSTANTS[25])*( ALGEBRAIC[4]*STATES[4] -  ALGEBRAIC[5]*STATES[5]))/CONSTANTS[11] -  CONSTANTS[12]*ALGEBRAIC[5]*STATES[5];
resid[6] = RATES[6] -  CONSTANTS[10]*ALGEBRAIC[4]*STATES[4]*CONSTANTS[5];
}
void
computeVariables(double VOI, double* CONSTANTS, double* RATES, double* STATES, double* ALGEBRAIC)
{
ALGEBRAIC[6] = CONSTANTS[13]+ CONSTANTS[15]*ALGEBRAIC[2]*STATES[2]*exp(- (VOI/CONSTANTS[14]));
}
void
computeEssentialVariables(double VOI, double* CONSTANTS, double* RATES, double* STATES, double* ALGEBRAIC)
{
ALGEBRAIC[0] = (CONDVAR[0]<0.00000 ? 0.00000 : 1.00000);
ALGEBRAIC[1] = (CONDVAR[1]<0.00000 ? 0.00000 : 1.00000);
ALGEBRAIC[2] = (CONDVAR[2]<0.00000 ? 0.00000 : 1.00000);
ALGEBRAIC[3] = (CONDVAR[3]<0.00000 ? 0.00000 : 1.00000);
ALGEBRAIC[4] = (CONDVAR[4]<0.00000 ? 0.00000 : 1.00000);
ALGEBRAIC[5] = (CONDVAR[5]<0.00000 ? 0.00000 : 1.00000);
ALGEBRAIC[7] = (( CONSTANTS[23]*ALGEBRAIC[1]*STATES[1])/CONSTANTS[2]+( CONSTANTS[22]*ALGEBRAIC[0]*STATES[0])/CONSTANTS[0]+( (CONSTANTS[24]+CONSTANTS[25])*ALGEBRAIC[2]*STATES[2])/CONSTANTS[6])/CONSTANTS[19];
ALGEBRAIC[8] = (CONDVAR[6]<0.00000 ? 0.00000 : 1.00000);
ALGEBRAIC[9] =  (-2.00000/pow(CONSTANTS[17], 3.00000))*pow(VOI, 3.00000)+ (3.00000/pow(CONSTANTS[17], 2.00000))*pow(VOI, 2.00000);
ALGEBRAIC[10] = ( 3.00000*pow(1.00000 - VOI, 2.00000))/pow(CONSTANTS[17], 2.00000) - ( 2.00000*pow(1.00000 - VOI, 3.00000))/pow(CONSTANTS[17], 3.00000);
ALGEBRAIC[11] = (CONDVAR[7]<0.00000&&CONDVAR[8]>=0.00000 ?  CONSTANTS[16]*ALGEBRAIC[9] : CONDVAR[9]<=0.00000&&CONDVAR[10]>=0.00000 ?  CONSTANTS[16]*CONSTANTS[20] : CONDVAR[11]<=0.00000&&CONDVAR[12]>0.00000 ?  CONSTANTS[16]*ALGEBRAIC[10] : CONDVAR[13]<=0.00000&&CONDVAR[14]>0.00000 ?  CONSTANTS[16]*CONSTANTS[21] : 0.0/0.0);
}
void
getStateInformation(double* SI)
{
SI[0] = 1.0;
SI[1] = 1.0;
SI[2] = 1.0;
SI[3] = 1.0;
SI[4] = 1.0;
SI[5] = 1.0;
SI[6] = 1.0;
}
void
computeRoots(double VOI, double* CONSTANTS, double* RATES, double* OLDRATES, double* STATES,
             double* OLDSTATES, double* ALGEBRAIC, double* CONDVARS)
{
CONDVAR[0] = STATES[0] - 0.00000;
CONDVAR[1] = STATES[1] - 0.00000;
CONDVAR[2] = STATES[2] - 0.00000;
CONDVAR[3] = STATES[3] - 0.00000;
CONDVAR[4] = STATES[4] - 0.00000;
CONDVAR[5] = STATES[5] - 0.00000;
CONDVAR[6] = ALGEBRAIC[7] - 0.00000;
CONDVAR[7] = VOI - CONSTANTS[17];
CONDVAR[8] = VOI - 0.00000;
CONDVAR[9] = VOI - (1.00000 - CONSTANTS[17]);
CONDVAR[10] = VOI - CONSTANTS[17];
CONDVAR[11] = VOI - 1.00000;
CONDVAR[12] = VOI - (1.00000 - CONSTANTS[17]);
CONDVAR[13] = VOI - (1.00000+5.00000/60.0000);
CONDVAR[14] = VOI - 1.00000;
}