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 3 entries in the algebraic variable array.
   There are a total of 10 entries in each of the rate and state variable arrays.
   There are a total of 40 entries in the constant variable array.
 */
/*
 * VOI is time in component environment (hour).
 * CONSTANTS[0] is v_sP in component nucleus (nanomolar_hour).
 * CONSTANTS[1] is v_mP in component nucleus (nanomolar_hour).
 * CONSTANTS[2] is K_IP in component nucleus (nanomolar).
 * CONSTANTS[3] is K_mP in component nucleus (nanomolar).
 * CONSTANTS[4] is v_sT in component nucleus (nanomolar_hour).
 * CONSTANTS[5] is v_mT in component nucleus (nanomolar_hour).
 * CONSTANTS[6] is K_IT in component nucleus (nanomolar).
 * CONSTANTS[7] is K_mT in component nucleus (nanomolar).
 * CONSTANTS[8] is k_d in component cytosol (per_hour).
 * CONSTANTS[9] is n in component nucleus (dimensionless).
 * CONSTANTS[10] is k_1 in component cytosol (per_hour).
 * CONSTANTS[11] is k_2 in component cytosol (per_hour).
 * CONSTANTS[12] is k_dN in component nucleus (per_hour).
 * STATES[0] is C in component cytosol (nanomolar).
 * STATES[1] is M_P in component nucleus (nanomolar).
 * STATES[2] is M_T in component nucleus (nanomolar).
 * STATES[3] is C_N in component nucleus (nanomolar).
 * CONSTANTS[13] is k_3 in component cytosol (per_nanomolar_hour).
 * CONSTANTS[14] is k_4 in component cytosol (per_hour).
 * CONSTANTS[15] is k_dC in component cytosol (per_hour).
 * STATES[4] is P_0 in component PER (nanomolar).
 * STATES[5] is P_1 in component PER (nanomolar).
 * STATES[6] is P_2 in component PER (nanomolar).
 * STATES[7] is T_0 in component TIM (nanomolar).
 * STATES[8] is T_1 in component TIM (nanomolar).
 * STATES[9] is T_2 in component TIM (nanomolar).
 * CONSTANTS[16] is V_1P in component PER (nanomolar_hour).
 * CONSTANTS[17] is V_2P in component PER (nanomolar_hour).
 * CONSTANTS[18] is V_3P in component PER (nanomolar_hour).
 * CONSTANTS[19] is V_4P in component PER (nanomolar_hour).
 * CONSTANTS[20] is K_1P in component PER (nanomolar).
 * CONSTANTS[21] is K_2P in component PER (nanomolar).
 * CONSTANTS[22] is K_3P in component PER (nanomolar).
 * CONSTANTS[23] is K_4P in component PER (nanomolar).
 * CONSTANTS[24] is K_dP in component PER (nanomolar).
 * CONSTANTS[25] is v_dP in component PER (nanomolar_hour).
 * CONSTANTS[26] is k_sP in component PER (per_hour).
 * CONSTANTS[27] is V_1T in component TIM (nanomolar_hour).
 * CONSTANTS[28] is V_2T in component TIM (nanomolar_hour).
 * CONSTANTS[29] is V_3T in component TIM (nanomolar_hour).
 * CONSTANTS[30] is V_4T in component TIM (nanomolar_hour).
 * CONSTANTS[31] is K_1T in component TIM (nanomolar).
 * CONSTANTS[32] is K_2T in component TIM (nanomolar).
 * CONSTANTS[33] is K_3T in component TIM (nanomolar).
 * CONSTANTS[34] is K_4T in component TIM (nanomolar).
 * CONSTANTS[35] is K_dT in component TIM (nanomolar).
 * ALGEBRAIC[0] is v_dT in component LD_cycle (nanomolar_hour).
 * CONSTANTS[36] is k_sT in component TIM (per_hour).
 * CONSTANTS[37] is PI in component LD_cycle (dimensionless).
 * CONSTANTS[38] is v_dT_dark in component LD_cycle (nanomolar_hour).
 * CONSTANTS[39] is v_dT_light in component LD_cycle (nanomolar_hour).
 * ALGEBRAIC[1] is P_t in component PER_total (nanomolar).
 * ALGEBRAIC[2] is T_t in component TIM_total (nanomolar).
 * RATES[1] is d/dt M_P in component nucleus (nanomolar).
 * RATES[2] is d/dt M_T in component nucleus (nanomolar).
 * RATES[3] is d/dt C_N in component nucleus (nanomolar).
 * RATES[0] is d/dt C in component cytosol (nanomolar).
 * RATES[4] is d/dt P_0 in component PER (nanomolar).
 * RATES[5] is d/dt P_1 in component PER (nanomolar).
 * RATES[6] is d/dt P_2 in component PER (nanomolar).
 * RATES[7] is d/dt T_0 in component TIM (nanomolar).
 * RATES[8] is d/dt T_1 in component TIM (nanomolar).
 * RATES[9] is d/dt T_2 in component TIM (nanomolar).
 */
void
initConsts(double* CONSTANTS, double* RATES, double *STATES)
{
CONSTANTS[0] = 0.8;
CONSTANTS[1] = 0.8;
CONSTANTS[2] = 1;
CONSTANTS[3] = 0.2;
CONSTANTS[4] = 1;
CONSTANTS[5] = 0.7;
CONSTANTS[6] = 1;
CONSTANTS[7] = 0.2;
CONSTANTS[8] = 0.01;
CONSTANTS[9] = 4;
CONSTANTS[10] = 1.2;
CONSTANTS[11] = 0.2;
CONSTANTS[12] = 0.01;
STATES[0] = 0.1790;
STATES[1] = 0.09107;
STATES[2] = 1.427;
STATES[3] = 1.203;
CONSTANTS[13] = 1.2;
CONSTANTS[14] = 0.6;
CONSTANTS[15] = 0.01;
STATES[4] = 0.02324;
STATES[5] = 0.02210;
STATES[6] = 0.01251;
STATES[7] = 0.5420;
STATES[8] = 0.8000;
STATES[9] = 4.733;
CONSTANTS[16] = 8;
CONSTANTS[17] = 1;
CONSTANTS[18] = 8;
CONSTANTS[19] = 1;
CONSTANTS[20] = 2;
CONSTANTS[21] = 2;
CONSTANTS[22] = 2;
CONSTANTS[23] = 2;
CONSTANTS[24] = 0.2;
CONSTANTS[25] = 2;
CONSTANTS[26] = 0.9;
CONSTANTS[27] = 8;
CONSTANTS[28] = 1;
CONSTANTS[29] = 8;
CONSTANTS[30] = 1;
CONSTANTS[31] = 2;
CONSTANTS[32] = 2;
CONSTANTS[33] = 2;
CONSTANTS[34] = 2;
CONSTANTS[35] = 0.2;
CONSTANTS[36] = 0.9;
CONSTANTS[37] = 3.141592653589793;
CONSTANTS[38] = 2;
CONSTANTS[39] = 4;
}
void
computeRates(double VOI, double* CONSTANTS, double* RATES, double* STATES, double* ALGEBRAIC)
{
RATES[1] =  CONSTANTS[0]*pow(CONSTANTS[2], CONSTANTS[9])/(pow(CONSTANTS[2], CONSTANTS[9])+pow(STATES[3], CONSTANTS[9])) -  CONSTANTS[1]*STATES[1]/(CONSTANTS[3]+STATES[1]) -  CONSTANTS[8]*STATES[1];
RATES[2] =  CONSTANTS[4]*pow(CONSTANTS[6], CONSTANTS[9])/(pow(CONSTANTS[6], CONSTANTS[9])+pow(STATES[3], CONSTANTS[9])) -  CONSTANTS[5]*STATES[2]/(CONSTANTS[7]+STATES[2]) -  CONSTANTS[8]*STATES[2];
RATES[3] =  CONSTANTS[10]*STATES[0] -  CONSTANTS[11]*STATES[3] -  CONSTANTS[12]*STATES[3];
RATES[0] =  CONSTANTS[13]*STATES[6]*STATES[9] -  CONSTANTS[14]*STATES[0] -  CONSTANTS[10]*STATES[0]+ CONSTANTS[11]*STATES[3] -  CONSTANTS[15]*STATES[0];
RATES[4] =  CONSTANTS[26]*STATES[1] -  CONSTANTS[16]*STATES[4]/(CONSTANTS[20]+STATES[4])+ CONSTANTS[17]*STATES[5]/(CONSTANTS[21]+STATES[5]) -  CONSTANTS[8]*STATES[4];
RATES[5] =  CONSTANTS[16]*STATES[4]/(CONSTANTS[20]+STATES[4]) -  CONSTANTS[17]*STATES[5]/(CONSTANTS[21]+STATES[5]) -  CONSTANTS[18]*STATES[5]/(CONSTANTS[22]+STATES[5])+ CONSTANTS[19]*STATES[6]/(CONSTANTS[23]+STATES[6]) -  CONSTANTS[8]*STATES[5];
RATES[6] =  CONSTANTS[18]*STATES[5]/(CONSTANTS[22]+STATES[5]) -  CONSTANTS[19]*STATES[6]/(CONSTANTS[23]+STATES[6]) -  CONSTANTS[13]*STATES[6]*STATES[9]+ CONSTANTS[14]*STATES[0] -  CONSTANTS[25]*STATES[6]/(CONSTANTS[24]+STATES[6]) -  CONSTANTS[8]*STATES[6];
RATES[7] =  CONSTANTS[36]*STATES[2] -  CONSTANTS[27]*STATES[7]/(CONSTANTS[31]+STATES[7])+ CONSTANTS[28]*STATES[8]/(CONSTANTS[32]+STATES[8]) -  CONSTANTS[8]*STATES[7];
RATES[8] =  CONSTANTS[27]*STATES[7]/(CONSTANTS[31]+STATES[7]) -  CONSTANTS[28]*STATES[8]/(CONSTANTS[32]+STATES[8]) -  CONSTANTS[29]*STATES[8]/(CONSTANTS[33]+STATES[8])+ CONSTANTS[30]*STATES[9]/(CONSTANTS[34]+STATES[9]) -  CONSTANTS[8]*STATES[8];
ALGEBRAIC[0] = ( sin( CONSTANTS[37]*VOI/12.0000)<=0.00000 ? CONSTANTS[38] : CONSTANTS[39]);
RATES[9] =  CONSTANTS[29]*STATES[8]/(CONSTANTS[33]+STATES[8]) -  CONSTANTS[30]*STATES[9]/(CONSTANTS[34]+STATES[9]) -  CONSTANTS[13]*STATES[6]*STATES[9]+ CONSTANTS[14]*STATES[0] -  ALGEBRAIC[0]*STATES[9]/(CONSTANTS[35]+STATES[9]) -  CONSTANTS[8]*STATES[9];
}
void
computeVariables(double VOI, double* CONSTANTS, double* RATES, double* STATES, double* ALGEBRAIC)
{
ALGEBRAIC[0] = ( sin( CONSTANTS[37]*VOI/12.0000)<=0.00000 ? CONSTANTS[38] : CONSTANTS[39]);
ALGEBRAIC[1] = STATES[4]+STATES[5]+STATES[6]+STATES[0]+STATES[3];
ALGEBRAIC[2] = STATES[7]+STATES[8]+STATES[9]+STATES[0]+STATES[3];
}