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 15 entries in the algebraic variable array.
   There are a total of 5 entries in each of the rate and state variable arrays.
   There are a total of 24 entries in the constant variable array.
 */
/*
 * VOI is time in component environment (minute).
 * STATES[0] is y0 in component y0 (dimensionless).
 * ALGEBRAIC[10] is g0 in component y0 (dimensionless).
 * ALGEBRAIC[5] is r0 in component y0 (dimensionless).
 * ALGEBRAIC[0] is h0 in component y0 (dimensionless).
 * CONSTANTS[0] is S0 in component y0 (dimensionless).
 * STATES[1] is y2 in component y2 (dimensionless).
 * CONSTANTS[1] is a00 in component model_parameters (dimensionless).
 * CONSTANTS[2] is a02 in component model_parameters (dimensionless).
 * CONSTANTS[3] is c0 in component model_parameters (first_order_rate_constant).
 * CONSTANTS[4] is e0 in component model_parameters (first_order_rate_constant).
 * CONSTANTS[5] is epsilon in component model_parameters (dimensionless).
 * STATES[2] is y1 in component y1 (dimensionless).
 * ALGEBRAIC[11] is g1 in component y1 (dimensionless).
 * ALGEBRAIC[6] is r1 in component y1 (dimensionless).
 * ALGEBRAIC[1] is h1 in component y1 (dimensionless).
 * CONSTANTS[6] is S1 in component y1 (dimensionless).
 * CONSTANTS[7] is a10 in component model_parameters (dimensionless).
 * CONSTANTS[8] is a12 in component model_parameters (dimensionless).
 * CONSTANTS[9] is a11 in component model_parameters (dimensionless).
 * CONSTANTS[10] is e1 in component model_parameters (first_order_rate_constant).
 * ALGEBRAIC[12] is g2 in component y2 (dimensionless).
 * ALGEBRAIC[7] is r2 in component y2 (dimensionless).
 * ALGEBRAIC[2] is h2 in component y2 (dimensionless).
 * CONSTANTS[11] is S2 in component y2 (dimensionless).
 * STATES[3] is y3 in component y3 (dimensionless).
 * STATES[4] is y4 in component y4 (dimensionless).
 * CONSTANTS[12] is a23 in component model_parameters (dimensionless).
 * CONSTANTS[13] is a24 in component model_parameters (dimensionless).
 * CONSTANTS[14] is a20 in component model_parameters (dimensionless).
 * CONSTANTS[15] is a21 in component model_parameters (dimensionless).
 * CONSTANTS[16] is a22 in component model_parameters (dimensionless).
 * CONSTANTS[17] is e2 in component model_parameters (first_order_rate_constant).
 * ALGEBRAIC[13] is g3 in component y3 (dimensionless).
 * ALGEBRAIC[8] is r3 in component y3 (dimensionless).
 * ALGEBRAIC[3] is h3 in component y3 (dimensionless).
 * CONSTANTS[18] is S3 in component y3 (dimensionless).
 * CONSTANTS[19] is a32 in component model_parameters (dimensionless).
 * CONSTANTS[20] is a33 in component model_parameters (dimensionless).
 * ALGEBRAIC[14] is g4 in component y4 (dimensionless).
 * ALGEBRAIC[9] is r4 in component y4 (dimensionless).
 * ALGEBRAIC[4] is h4 in component y4 (dimensionless).
 * CONSTANTS[21] is S4 in component y4 (dimensionless).
 * CONSTANTS[22] is a42 in component model_parameters (dimensionless).
 * CONSTANTS[23] is a44 in component model_parameters (dimensionless).
 * RATES[0] is d/dt y0 in component y0 (dimensionless).
 * RATES[2] is d/dt y1 in component y1 (dimensionless).
 * RATES[1] is d/dt y2 in component y2 (dimensionless).
 * RATES[3] is d/dt y3 in component y3 (dimensionless).
 * RATES[4] is d/dt y4 in component y4 (dimensionless).
 */
void
initConsts(double* CONSTANTS, double* RATES, double *STATES)
{
STATES[0] = 0.4;
CONSTANTS[0] = 0.010;
STATES[1] = 1.17;
CONSTANTS[1] = -0.00843;
CONSTANTS[2] = -0.440;
CONSTANTS[3] = 0.443;
CONSTANTS[4] = 0.0;
CONSTANTS[5] = 0.50;
STATES[2] = 1.4;
CONSTANTS[6] = 0.010;
CONSTANTS[7] = 0.082;
CONSTANTS[8] = -0.0668;
CONSTANTS[9] = -0.0040;
CONSTANTS[10] = 0.0;
CONSTANTS[11] = 0.010;
STATES[3] = 0.95;
STATES[4] = 0.65;
CONSTANTS[12] = 0.0576;
CONSTANTS[13] = 3.25E-4;
CONSTANTS[14] = 0.0;
CONSTANTS[15] = 0.0310;
CONSTANTS[16] = -0.0957;
CONSTANTS[17] = 0.0;
CONSTANTS[18] = 0.010;
CONSTANTS[19] = 0.00869;
CONSTANTS[20] = -0.00857;
CONSTANTS[21] = 0.010;
CONSTANTS[22] = 1.39E-4;
CONSTANTS[23] = -1.43E-4;
}
void
computeRates(double VOI, double* CONSTANTS, double* RATES, double* STATES, double* ALGEBRAIC)
{
ALGEBRAIC[5] = (STATES[0]<CONSTANTS[5]&& CONSTANTS[1]*STATES[0]+ CONSTANTS[2]*STATES[1]<0.00000 ? 1.00000 - exp(( CONSTANTS[0]*pow(STATES[0], 2.00000))/( ( CONSTANTS[1]*STATES[0]+ CONSTANTS[2]*STATES[1])*pow(CONSTANTS[5] - STATES[0], 2.00000))) : 1.00000);
ALGEBRAIC[0] = ( CONSTANTS[1]*STATES[0]+ CONSTANTS[2]*STATES[1]>0.00000 ? ( CONSTANTS[1]*STATES[0]+ CONSTANTS[2]*STATES[1])/(1.00000+ (( CONSTANTS[1]*STATES[0]+ CONSTANTS[2]*STATES[1])/CONSTANTS[0])*(1.00000 - exp(- (( CONSTANTS[1]*STATES[0]+ CONSTANTS[2]*STATES[1])/CONSTANTS[0])))) :  CONSTANTS[1]*STATES[0]+ CONSTANTS[2]*STATES[1]<=0.00000 ?  CONSTANTS[1]*STATES[0]+ CONSTANTS[2]*STATES[1] : 0.0/0.0);
ALGEBRAIC[10] =  ALGEBRAIC[0]*ALGEBRAIC[5];
RATES[0] =  1.00000*ALGEBRAIC[10]+CONSTANTS[3]+CONSTANTS[4];
ALGEBRAIC[6] = (STATES[2]<CONSTANTS[5]&& CONSTANTS[7]*STATES[0]+ CONSTANTS[9]*STATES[2]+ CONSTANTS[8]*STATES[1]<0.00000 ? 1.00000 - exp(( CONSTANTS[6]*pow(STATES[2], 2.00000))/( ( CONSTANTS[7]*STATES[0]+ CONSTANTS[9]*STATES[2]+ CONSTANTS[8]*STATES[1])*pow(CONSTANTS[5] - STATES[2], 2.00000))) : 1.00000);
ALGEBRAIC[1] = ( CONSTANTS[7]*STATES[0]+ CONSTANTS[9]*STATES[2]+ CONSTANTS[8]*STATES[1]>0.00000 ? ( CONSTANTS[7]*STATES[0]+ CONSTANTS[9]*STATES[2]+ CONSTANTS[8]*STATES[1])/(1.00000+ (( CONSTANTS[7]*STATES[0]+ CONSTANTS[9]*STATES[2]+ CONSTANTS[8]*STATES[1])/CONSTANTS[6])*(1.00000 - exp(- (( CONSTANTS[7]*STATES[0]+ CONSTANTS[9]*STATES[2]+ CONSTANTS[8]*STATES[1])/CONSTANTS[6])))) :  CONSTANTS[7]*STATES[0]+ CONSTANTS[9]*STATES[2]+ CONSTANTS[8]*STATES[1]<=0.00000 ?  CONSTANTS[7]*STATES[0]+ CONSTANTS[9]*STATES[2]+ CONSTANTS[8]*STATES[1] : 0.0/0.0);
ALGEBRAIC[11] =  ALGEBRAIC[1]*ALGEBRAIC[6];
RATES[2] =  1.00000*ALGEBRAIC[11]+CONSTANTS[10];
ALGEBRAIC[7] = (STATES[1]<CONSTANTS[5]&& CONSTANTS[14]*STATES[0]+ CONSTANTS[15]*STATES[2]+ CONSTANTS[16]*STATES[1]+ CONSTANTS[12]*STATES[3]+ CONSTANTS[13]*STATES[4]<0.00000 ? 1.00000 - exp(( CONSTANTS[11]*pow(STATES[1], 2.00000))/( ( CONSTANTS[14]*STATES[0]+ CONSTANTS[15]*STATES[2]+ CONSTANTS[16]*STATES[1]+ CONSTANTS[12]*STATES[3]+ CONSTANTS[13]*STATES[4])*pow(CONSTANTS[5] - STATES[1], 2.00000))) : 1.00000);
ALGEBRAIC[2] = ( CONSTANTS[14]*STATES[0]+ CONSTANTS[15]*STATES[2]+ CONSTANTS[16]*STATES[1]+ CONSTANTS[12]*STATES[3]+ CONSTANTS[13]*STATES[4]>0.00000 ? ( CONSTANTS[14]*STATES[0]+ CONSTANTS[15]*STATES[2]+ CONSTANTS[16]*STATES[1]+ CONSTANTS[12]*STATES[3]+ CONSTANTS[13]*STATES[4])/(1.00000+ (( CONSTANTS[14]*STATES[0]+ CONSTANTS[15]*STATES[2]+ CONSTANTS[16]*STATES[1]+ CONSTANTS[12]*STATES[3]+ CONSTANTS[13]*STATES[4])/CONSTANTS[11])*(1.00000 - exp(- (( CONSTANTS[14]*STATES[0]+ CONSTANTS[15]*STATES[2]+ CONSTANTS[16]*STATES[1]+ CONSTANTS[12]*STATES[3]+ CONSTANTS[13]*STATES[4])/CONSTANTS[11])))) :  CONSTANTS[14]*STATES[0]+ CONSTANTS[15]*STATES[2]+ CONSTANTS[16]*STATES[1]+ CONSTANTS[12]*STATES[3]+ CONSTANTS[13]*STATES[4]<=0.00000 ?  CONSTANTS[14]*STATES[0]+ CONSTANTS[15]*STATES[2]+ CONSTANTS[16]*STATES[1]+ CONSTANTS[12]*STATES[3]+ CONSTANTS[13]*STATES[4] : 0.0/0.0);
ALGEBRAIC[12] =  ALGEBRAIC[2]*ALGEBRAIC[7];
RATES[1] =  1.00000*ALGEBRAIC[12]+CONSTANTS[17];
ALGEBRAIC[8] = (STATES[3]<CONSTANTS[5]&& CONSTANTS[19]*STATES[1]+ CONSTANTS[20]*STATES[3]<0.00000 ? 1.00000 - exp(( CONSTANTS[18]*pow(STATES[3], 2.00000))/( ( CONSTANTS[19]*STATES[1]+ CONSTANTS[20]*STATES[3])*pow(CONSTANTS[5] - STATES[3], 2.00000))) : 1.00000);
ALGEBRAIC[3] = ( CONSTANTS[19]*STATES[1]+ CONSTANTS[20]*STATES[3]>0.00000 ? ( CONSTANTS[19]*STATES[1]+ CONSTANTS[20]*STATES[3])/(1.00000+ (( CONSTANTS[19]*STATES[1]+ CONSTANTS[20]*STATES[3])/CONSTANTS[18])*(1.00000 - exp(- (( CONSTANTS[19]*STATES[1]+ CONSTANTS[20]*STATES[3])/CONSTANTS[18])))) :  CONSTANTS[19]*STATES[1]+ CONSTANTS[20]*STATES[3]<=0.00000 ?  CONSTANTS[19]*STATES[1]+ CONSTANTS[20]*STATES[3] : 0.0/0.0);
ALGEBRAIC[13] =  ALGEBRAIC[3]*ALGEBRAIC[8];
RATES[3] =  1.00000*ALGEBRAIC[13];
ALGEBRAIC[9] = (STATES[4]<CONSTANTS[5]&& CONSTANTS[22]*STATES[1]+ CONSTANTS[23]*STATES[4]<0.00000 ? 1.00000 - exp(( CONSTANTS[21]*pow(STATES[4], 2.00000))/( ( CONSTANTS[22]*STATES[1]+ CONSTANTS[23]*STATES[4])*pow(CONSTANTS[5] - STATES[4], 2.00000))) : 1.00000);
ALGEBRAIC[4] = ( CONSTANTS[22]*STATES[1]+ CONSTANTS[23]*STATES[4]>0.00000 ? ( CONSTANTS[22]*STATES[1]+ CONSTANTS[23]*STATES[4])/(1.00000+ (( CONSTANTS[22]*STATES[1]+ CONSTANTS[23]*STATES[4])/CONSTANTS[21])*(1.00000 - exp(- (( CONSTANTS[22]*STATES[1]+ CONSTANTS[23]*STATES[4])/CONSTANTS[21])))) :  CONSTANTS[22]*STATES[1]+ CONSTANTS[23]*STATES[4]<=0.00000 ?  CONSTANTS[22]*STATES[1]+ CONSTANTS[23]*STATES[4] : 0.0/0.0);
ALGEBRAIC[14] =  ALGEBRAIC[4]*ALGEBRAIC[9];
RATES[4] =  1.00000*ALGEBRAIC[14];
}
void
computeVariables(double VOI, double* CONSTANTS, double* RATES, double* STATES, double* ALGEBRAIC)
{
ALGEBRAIC[5] = (STATES[0]<CONSTANTS[5]&& CONSTANTS[1]*STATES[0]+ CONSTANTS[2]*STATES[1]<0.00000 ? 1.00000 - exp(( CONSTANTS[0]*pow(STATES[0], 2.00000))/( ( CONSTANTS[1]*STATES[0]+ CONSTANTS[2]*STATES[1])*pow(CONSTANTS[5] - STATES[0], 2.00000))) : 1.00000);
ALGEBRAIC[0] = ( CONSTANTS[1]*STATES[0]+ CONSTANTS[2]*STATES[1]>0.00000 ? ( CONSTANTS[1]*STATES[0]+ CONSTANTS[2]*STATES[1])/(1.00000+ (( CONSTANTS[1]*STATES[0]+ CONSTANTS[2]*STATES[1])/CONSTANTS[0])*(1.00000 - exp(- (( CONSTANTS[1]*STATES[0]+ CONSTANTS[2]*STATES[1])/CONSTANTS[0])))) :  CONSTANTS[1]*STATES[0]+ CONSTANTS[2]*STATES[1]<=0.00000 ?  CONSTANTS[1]*STATES[0]+ CONSTANTS[2]*STATES[1] : 0.0/0.0);
ALGEBRAIC[10] =  ALGEBRAIC[0]*ALGEBRAIC[5];
ALGEBRAIC[6] = (STATES[2]<CONSTANTS[5]&& CONSTANTS[7]*STATES[0]+ CONSTANTS[9]*STATES[2]+ CONSTANTS[8]*STATES[1]<0.00000 ? 1.00000 - exp(( CONSTANTS[6]*pow(STATES[2], 2.00000))/( ( CONSTANTS[7]*STATES[0]+ CONSTANTS[9]*STATES[2]+ CONSTANTS[8]*STATES[1])*pow(CONSTANTS[5] - STATES[2], 2.00000))) : 1.00000);
ALGEBRAIC[1] = ( CONSTANTS[7]*STATES[0]+ CONSTANTS[9]*STATES[2]+ CONSTANTS[8]*STATES[1]>0.00000 ? ( CONSTANTS[7]*STATES[0]+ CONSTANTS[9]*STATES[2]+ CONSTANTS[8]*STATES[1])/(1.00000+ (( CONSTANTS[7]*STATES[0]+ CONSTANTS[9]*STATES[2]+ CONSTANTS[8]*STATES[1])/CONSTANTS[6])*(1.00000 - exp(- (( CONSTANTS[7]*STATES[0]+ CONSTANTS[9]*STATES[2]+ CONSTANTS[8]*STATES[1])/CONSTANTS[6])))) :  CONSTANTS[7]*STATES[0]+ CONSTANTS[9]*STATES[2]+ CONSTANTS[8]*STATES[1]<=0.00000 ?  CONSTANTS[7]*STATES[0]+ CONSTANTS[9]*STATES[2]+ CONSTANTS[8]*STATES[1] : 0.0/0.0);
ALGEBRAIC[11] =  ALGEBRAIC[1]*ALGEBRAIC[6];
ALGEBRAIC[7] = (STATES[1]<CONSTANTS[5]&& CONSTANTS[14]*STATES[0]+ CONSTANTS[15]*STATES[2]+ CONSTANTS[16]*STATES[1]+ CONSTANTS[12]*STATES[3]+ CONSTANTS[13]*STATES[4]<0.00000 ? 1.00000 - exp(( CONSTANTS[11]*pow(STATES[1], 2.00000))/( ( CONSTANTS[14]*STATES[0]+ CONSTANTS[15]*STATES[2]+ CONSTANTS[16]*STATES[1]+ CONSTANTS[12]*STATES[3]+ CONSTANTS[13]*STATES[4])*pow(CONSTANTS[5] - STATES[1], 2.00000))) : 1.00000);
ALGEBRAIC[2] = ( CONSTANTS[14]*STATES[0]+ CONSTANTS[15]*STATES[2]+ CONSTANTS[16]*STATES[1]+ CONSTANTS[12]*STATES[3]+ CONSTANTS[13]*STATES[4]>0.00000 ? ( CONSTANTS[14]*STATES[0]+ CONSTANTS[15]*STATES[2]+ CONSTANTS[16]*STATES[1]+ CONSTANTS[12]*STATES[3]+ CONSTANTS[13]*STATES[4])/(1.00000+ (( CONSTANTS[14]*STATES[0]+ CONSTANTS[15]*STATES[2]+ CONSTANTS[16]*STATES[1]+ CONSTANTS[12]*STATES[3]+ CONSTANTS[13]*STATES[4])/CONSTANTS[11])*(1.00000 - exp(- (( CONSTANTS[14]*STATES[0]+ CONSTANTS[15]*STATES[2]+ CONSTANTS[16]*STATES[1]+ CONSTANTS[12]*STATES[3]+ CONSTANTS[13]*STATES[4])/CONSTANTS[11])))) :  CONSTANTS[14]*STATES[0]+ CONSTANTS[15]*STATES[2]+ CONSTANTS[16]*STATES[1]+ CONSTANTS[12]*STATES[3]+ CONSTANTS[13]*STATES[4]<=0.00000 ?  CONSTANTS[14]*STATES[0]+ CONSTANTS[15]*STATES[2]+ CONSTANTS[16]*STATES[1]+ CONSTANTS[12]*STATES[3]+ CONSTANTS[13]*STATES[4] : 0.0/0.0);
ALGEBRAIC[12] =  ALGEBRAIC[2]*ALGEBRAIC[7];
ALGEBRAIC[8] = (STATES[3]<CONSTANTS[5]&& CONSTANTS[19]*STATES[1]+ CONSTANTS[20]*STATES[3]<0.00000 ? 1.00000 - exp(( CONSTANTS[18]*pow(STATES[3], 2.00000))/( ( CONSTANTS[19]*STATES[1]+ CONSTANTS[20]*STATES[3])*pow(CONSTANTS[5] - STATES[3], 2.00000))) : 1.00000);
ALGEBRAIC[3] = ( CONSTANTS[19]*STATES[1]+ CONSTANTS[20]*STATES[3]>0.00000 ? ( CONSTANTS[19]*STATES[1]+ CONSTANTS[20]*STATES[3])/(1.00000+ (( CONSTANTS[19]*STATES[1]+ CONSTANTS[20]*STATES[3])/CONSTANTS[18])*(1.00000 - exp(- (( CONSTANTS[19]*STATES[1]+ CONSTANTS[20]*STATES[3])/CONSTANTS[18])))) :  CONSTANTS[19]*STATES[1]+ CONSTANTS[20]*STATES[3]<=0.00000 ?  CONSTANTS[19]*STATES[1]+ CONSTANTS[20]*STATES[3] : 0.0/0.0);
ALGEBRAIC[13] =  ALGEBRAIC[3]*ALGEBRAIC[8];
ALGEBRAIC[9] = (STATES[4]<CONSTANTS[5]&& CONSTANTS[22]*STATES[1]+ CONSTANTS[23]*STATES[4]<0.00000 ? 1.00000 - exp(( CONSTANTS[21]*pow(STATES[4], 2.00000))/( ( CONSTANTS[22]*STATES[1]+ CONSTANTS[23]*STATES[4])*pow(CONSTANTS[5] - STATES[4], 2.00000))) : 1.00000);
ALGEBRAIC[4] = ( CONSTANTS[22]*STATES[1]+ CONSTANTS[23]*STATES[4]>0.00000 ? ( CONSTANTS[22]*STATES[1]+ CONSTANTS[23]*STATES[4])/(1.00000+ (( CONSTANTS[22]*STATES[1]+ CONSTANTS[23]*STATES[4])/CONSTANTS[21])*(1.00000 - exp(- (( CONSTANTS[22]*STATES[1]+ CONSTANTS[23]*STATES[4])/CONSTANTS[21])))) :  CONSTANTS[22]*STATES[1]+ CONSTANTS[23]*STATES[4]<=0.00000 ?  CONSTANTS[22]*STATES[1]+ CONSTANTS[23]*STATES[4] : 0.0/0.0);
ALGEBRAIC[14] =  ALGEBRAIC[4]*ALGEBRAIC[9];
}