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 9 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 37 entries in the constant variable array.
 */
/*
 * VOI is time in component environment (second).
 * CONSTANTS[0] is R_T in component Parameters (dimensionless).
 * CONSTANTS[1] is K_1 in component Parameters (micromolar).
 * CONSTANTS[2] is K_2 in component Parameters (micromolar).
 * CONSTANTS[3] is k_r in component Parameters (per_second).
 * CONSTANTS[4] is k_p in component Parameters (per_second).
 * CONSTANTS[5] is k_e in component Parameters (per_second).
 * CONSTANTS[6] is xi in component Parameters (dimensionless).
 * CONSTANTS[7] is G_T in component Parameters (dimensionless).
 * CONSTANTS[8] is k_deg in component Parameters (per_second).
 * CONSTANTS[9] is k_a in component Parameters (per_second).
 * CONSTANTS[10] is k_d in component Parameters (per_second).
 * CONSTANTS[11] is PIP_2_T in component Parameters (dimensionless).
 * CONSTANTS[12] is r_r in component Parameters (per_second).
 * CONSTANTS[13] is delta in component Parameters (dimensionless).
 * CONSTANTS[14] is K_c in component Parameters (micromolar).
 * CONSTANTS[15] is alpha in component Parameters (per_second).
 * CONSTANTS[16] is N_a in component Parameters (per_micromole).
 * CONSTANTS[17] is v in component Parameters (litre).
 * CONSTANTS[18] is epsilon_r in component Parameters (dimensionless).
 * CONSTANTS[19] is d_1 in component Parameters (micromolar).
 * CONSTANTS[20] is d_2 in component Parameters (micromolar).
 * CONSTANTS[21] is d_3 in component Parameters (micromolar).
 * CONSTANTS[22] is d_5 in component Parameters (micromolar).
 * CONSTANTS[23] is a_2 in component Parameters (per_micromolar_per_second).
 * CONSTANTS[24] is B_e in component Parameters (micromolar).
 * CONSTANTS[25] is K_e in component Parameters (micromolar).
 * CONSTANTS[26] is B_ER in component Parameters (micromolar).
 * CONSTANTS[27] is K_ER in component Parameters (micromolar).
 * CONSTANTS[28] is B_x in component Parameters (micromolar).
 * CONSTANTS[29] is K_x in component Parameters (micromolar).
 * CONSTANTS[30] is k_3 in component Parameters (micromolar).
 * CONSTANTS[31] is eta_1 in component Parameters (per_second).
 * CONSTANTS[32] is eta_2 in component Parameters (per_second).
 * CONSTANTS[33] is eta_3 in component Parameters (flux).
 * CONSTANTS[34] is C_T in component Parameters (micromolar).
 * CONSTANTS[35] is L in component ligand (micromolar).
 * STATES[0] is RS in component RS (dimensionless).
 * STATES[1] is RS_p in component RS_p (dimensionless).
 * STATES[2] is G in component G_GTP (dimensionless).
 * ALGEBRAIC[0] is rho_r in component rho_r (dimensionless).
 * STATES[3] is IP_3 in component IP_3 (micromolar).
 * STATES[4] is PIP_2 in component PIP_2 (dimensionless).
 * ALGEBRAIC[1] is r_h in component r_h (per_second).
 * STATES[5] is C in component C (micromolar).
 * ALGEBRAIC[8] is C_ER in component C_ER (micromolar).
 * ALGEBRAIC[4] is beta in component beta (dimensionless).
 * STATES[6] is h in component h (dimensionless).
 * ALGEBRAIC[2] is m_infinit in component m_infinit (dimensionless).
 * ALGEBRAIC[7] is h_infinit in component h_infinit (dimensionless).
 * ALGEBRAIC[5] is tau_h in component tau_h (second).
 * ALGEBRAIC[3] is zeta in component zeta (micromolar).
 * ALGEBRAIC[6] is gamma in component gamma (dimensionless).
 * CONSTANTS[36] is RS_E in component RS_E (dimensionless).
 * RATES[0] is d/dt RS in component RS (dimensionless).
 * RATES[1] is d/dt RS_p in component RS_p (dimensionless).
 * RATES[2] is d/dt G in component G_GTP (dimensionless).
 * RATES[3] is d/dt IP_3 in component IP_3 (micromolar).
 * RATES[4] is d/dt PIP_2 in component PIP_2 (dimensionless).
 * RATES[5] is d/dt C in component C (micromolar).
 * RATES[6] is d/dt h in component h (dimensionless).
 */
void
initConsts(double* CONSTANTS, double* RATES, double *STATES)
{
CONSTANTS[0] = 2e4;
CONSTANTS[1] = 5;
CONSTANTS[2] = 100;
CONSTANTS[3] = 1.75e-4;
CONSTANTS[4] = 0.03;
CONSTANTS[5] = 6e-3;
CONSTANTS[6] = 0.85;
CONSTANTS[7] = 1e5;
CONSTANTS[8] = 1.25;
CONSTANTS[9] = 0.017;
CONSTANTS[10] = 0.15;
CONSTANTS[11] = 5e7;
CONSTANTS[12] = 10;
CONSTANTS[13] = 1.238e-3;
CONSTANTS[14] = 0.4;
CONSTANTS[15] = 2.781e-5;
CONSTANTS[16] = 6.02252e17;
CONSTANTS[17] = 5e-13;
CONSTANTS[18] = 0.185;
CONSTANTS[19] = 0.13;
CONSTANTS[20] = 1.05;
CONSTANTS[21] = 0.943;
CONSTANTS[22] = 0.0823;
CONSTANTS[23] = 0.2;
CONSTANTS[24] = 150;
CONSTANTS[25] = 10;
CONSTANTS[26] = 120000;
CONSTANTS[27] = 1200;
CONSTANTS[28] = 50;
CONSTANTS[29] = 0.2;
CONSTANTS[30] = 0.4;
CONSTANTS[31] = 575;
CONSTANTS[32] = 5.2;
CONSTANTS[33] = 45;
CONSTANTS[34] = 67;
CONSTANTS[35] = 1000;
STATES[0] = 1.7e4;
STATES[1] = 0;
STATES[2] = 0;
STATES[3] = 0.01;
STATES[4] = 49997000;
STATES[5] = 0.0961;
STATES[6] = 0.6155;
CONSTANTS[36] =  (( CONSTANTS[3]*(1.00000+( (CONSTANTS[4]/CONSTANTS[5])*(CONSTANTS[2]+CONSTANTS[35]))/(CONSTANTS[1]+CONSTANTS[35])))/(CONSTANTS[3]+( CONSTANTS[4]*CONSTANTS[35])/(CONSTANTS[1]+CONSTANTS[35])+( (( CONSTANTS[3]*CONSTANTS[4])/CONSTANTS[5])*(CONSTANTS[2]+CONSTANTS[35]))/(CONSTANTS[1]+CONSTANTS[35])))*CONSTANTS[6]*CONSTANTS[0]+ (1.00000 - CONSTANTS[6])*CONSTANTS[0];
}
void
computeRates(double VOI, double* CONSTANTS, double* RATES, double* STATES, double* ALGEBRAIC)
{
RATES[0] = ( CONSTANTS[3]*CONSTANTS[0] -  (CONSTANTS[3]+( CONSTANTS[4]*CONSTANTS[35])/(CONSTANTS[1]+CONSTANTS[35]))*STATES[0]) -  CONSTANTS[3]*STATES[1];
RATES[1] =  CONSTANTS[35]*(( CONSTANTS[4]*STATES[0])/(CONSTANTS[1]+CONSTANTS[35]) - ( CONSTANTS[5]*STATES[1])/(CONSTANTS[2]+CONSTANTS[35]));
ALGEBRAIC[0] = ( CONSTANTS[35]*STATES[0])/( CONSTANTS[6]*CONSTANTS[0]*(CONSTANTS[1]+CONSTANTS[35]));
RATES[2] =  CONSTANTS[9]*(CONSTANTS[13]+ALGEBRAIC[0])*(CONSTANTS[7] - STATES[2]) -  CONSTANTS[10]*STATES[2];
ALGEBRAIC[1] =  (( CONSTANTS[15]*STATES[5])/(CONSTANTS[14]+STATES[5]))*STATES[2];
RATES[3] = ( ALGEBRAIC[1]*STATES[4])/( CONSTANTS[16]*CONSTANTS[17]) -  CONSTANTS[8]*STATES[3];
RATES[4] = ( - (ALGEBRAIC[1]+CONSTANTS[12])*STATES[4] -  CONSTANTS[12]*CONSTANTS[16]*CONSTANTS[17]*STATES[3])+ CONSTANTS[12]*CONSTANTS[11];
ALGEBRAIC[3] = ( CONSTANTS[20]*(STATES[3]+CONSTANTS[19]))/(STATES[3]+CONSTANTS[21]);
ALGEBRAIC[7] = ALGEBRAIC[3]/(ALGEBRAIC[3]+STATES[5]);
ALGEBRAIC[5] = pow( CONSTANTS[23]*(ALGEBRAIC[3]+STATES[5]), - 1.00000);
RATES[6] = (ALGEBRAIC[7] - STATES[6])/ALGEBRAIC[5];
ALGEBRAIC[6] = pow(1.00000+CONSTANTS[24]/(CONSTANTS[25]+STATES[5])+CONSTANTS[28]/(CONSTANTS[29]+STATES[5]), - 1.00000);
ALGEBRAIC[8] =  (CONSTANTS[27]/( CONSTANTS[26]*CONSTANTS[18]))*(CONSTANTS[34] - STATES[5]/ALGEBRAIC[6]);
ALGEBRAIC[4] = pow(1.00000+( CONSTANTS[25]*CONSTANTS[24])/pow(CONSTANTS[25]+STATES[5], 2.00000)+( CONSTANTS[29]*CONSTANTS[28])/pow(CONSTANTS[29]+STATES[5], 2.00000), - 1.00000);
ALGEBRAIC[2] = ( (STATES[3]/(CONSTANTS[19]+STATES[3]))*STATES[5])/(CONSTANTS[22]+STATES[5]);
RATES[5] =  ALGEBRAIC[4]*( CONSTANTS[18]*( CONSTANTS[31]*pow(ALGEBRAIC[2], 3.00000)*pow(STATES[6], 3.00000)+CONSTANTS[32])*(ALGEBRAIC[8] - STATES[5]) - ( CONSTANTS[33]*pow(STATES[5], 2.00000))/(pow(CONSTANTS[30], 2.00000)+pow(STATES[5], 2.00000)));
}
void
computeVariables(double VOI, double* CONSTANTS, double* RATES, double* STATES, double* ALGEBRAIC)
{
ALGEBRAIC[0] = ( CONSTANTS[35]*STATES[0])/( CONSTANTS[6]*CONSTANTS[0]*(CONSTANTS[1]+CONSTANTS[35]));
ALGEBRAIC[1] =  (( CONSTANTS[15]*STATES[5])/(CONSTANTS[14]+STATES[5]))*STATES[2];
ALGEBRAIC[3] = ( CONSTANTS[20]*(STATES[3]+CONSTANTS[19]))/(STATES[3]+CONSTANTS[21]);
ALGEBRAIC[7] = ALGEBRAIC[3]/(ALGEBRAIC[3]+STATES[5]);
ALGEBRAIC[5] = pow( CONSTANTS[23]*(ALGEBRAIC[3]+STATES[5]), - 1.00000);
ALGEBRAIC[6] = pow(1.00000+CONSTANTS[24]/(CONSTANTS[25]+STATES[5])+CONSTANTS[28]/(CONSTANTS[29]+STATES[5]), - 1.00000);
ALGEBRAIC[8] =  (CONSTANTS[27]/( CONSTANTS[26]*CONSTANTS[18]))*(CONSTANTS[34] - STATES[5]/ALGEBRAIC[6]);
ALGEBRAIC[4] = pow(1.00000+( CONSTANTS[25]*CONSTANTS[24])/pow(CONSTANTS[25]+STATES[5], 2.00000)+( CONSTANTS[29]*CONSTANTS[28])/pow(CONSTANTS[29]+STATES[5], 2.00000), - 1.00000);
ALGEBRAIC[2] = ( (STATES[3]/(CONSTANTS[19]+STATES[3]))*STATES[5])/(CONSTANTS[22]+STATES[5]);
}