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 50 entries in the algebraic variable array.
   There are a total of 13 entries in each of the rate and state variable arrays.
   There are a total of 53 entries in the constant variable array.
 */
/*
 * VOI is time in component environment (second).
 * CONSTANTS[0] is R_cm in component cell (dimensionless).
 * CONSTANTS[1] is R in component cell (kilojoule_per_mole_kelvin).
 * CONSTANTS[2] is T in component cell (kelvin).
 * CONSTANTS[3] is F in component cell (kilojoule_per_mole_millivolt).
 * CONSTANTS[50] is S in component cell (kilojoule_per_mole).
 * CONSTANTS[51] is Z in component cell (millivolt).
 * ALGEBRAIC[23] is electric_potential in component cell (millivolt).
 * CONSTANTS[4] is protonmotive_force in component cell (millivolt).
 * ALGEBRAIC[25] is ex_membrane_potential in component cell (millivolt).
 * ALGEBRAIC[24] is in_membrane_potential in component cell (millivolt).
 * CONSTANTS[5] is c_buffi in component cell (molar_proton_per_pH_unit).
 * CONSTANTS[6] is c_buffe in component cell (molar_proton_per_pH_unit).
 * ALGEBRAIC[0] is pH_e in component cell (dimensionless).
 * ALGEBRAIC[1] is pH_i in component cell (dimensionless).
 * CONSTANTS[7] is pKa in component cell (dimensionless).
 * STATES[0] is He in component He (micromolar).
 * STATES[1] is Hi in component Hi (micromolar).
 * ALGEBRAIC[2] is delta_pH in component cell (dimensionless).
 * CONSTANTS[8] is dpH in component cell (dimensionless).
 * ALGEBRAIC[27] is C0_i in component cell (molar_proton_per_pH_unit).
 * ALGEBRAIC[29] is C0_e in component cell (molar_proton_per_pH_unit).
 * ALGEBRAIC[28] is r_buffi in component cell (dimensionless).
 * ALGEBRAIC[30] is r_buffe in component cell (dimensionless).
 * CONSTANTS[9] is BN in component cell (dimensionless).
 * ALGEBRAIC[26] is u in component cell (dimensionless).
 * ALGEBRAIC[31] is EmN in component redox_potentials (millivolt).
 * ALGEBRAIC[32] is EmU in component redox_potentials (millivolt).
 * ALGEBRAIC[33] is Emc in component redox_potentials (millivolt).
 * ALGEBRAIC[34] is Ema in component redox_potentials (millivolt).
 * CONSTANTS[10] is EmN0 in component redox_potentials (millivolt).
 * CONSTANTS[11] is EmU0 in component redox_potentials (millivolt).
 * CONSTANTS[12] is Emc0 in component redox_potentials (millivolt).
 * ALGEBRAIC[3] is NAD in component NAD (micromolar).
 * STATES[2] is NADH in component NADH (micromolar).
 * ALGEBRAIC[14] is UQ in component UQ (micromolar).
 * STATES[3] is UQH2 in component UQH2 (micromolar).
 * STATES[4] is c_2 in component c_2 (micromolar).
 * ALGEBRAIC[13] is c_3 in component c_3 (micromolar).
 * CONSTANTS[13] is Nt in component NAD (micromolar).
 * ALGEBRAIC[16] is vDH in component vDH (flux).
 * ALGEBRAIC[46] is vC1 in component vC1 (flux).
 * STATES[5] is O2 in component O2 (micromolar).
 * ALGEBRAIC[17] is vC4 in component vC4 (flux).
 * CONSTANTS[14] is nA in component vSN (dimensionless).
 * ALGEBRAIC[47] is vC3 in component vC3 (flux).
 * ALGEBRAIC[49] is vSN in component vSN (flux).
 * ALGEBRAIC[43] is vEX in component vEX (flux).
 * ALGEBRAIC[20] is vPI in component vPI (flux).
 * CONSTANTS[52] is vLK in component vLK (flux).
 * ALGEBRAIC[21] is vCK in component vCK (flux).
 * ALGEBRAIC[22] is vEFF in component vEFF (flux).
 * ALGEBRAIC[45] is ADP_mi in component ADP_mi (micromolar).
 * ALGEBRAIC[4] is ADP_ti in component ADP_ti (micromolar).
 * ALGEBRAIC[35] is ADP_fi in component ADP_fi (micromolar).
 * CONSTANTS[15] is kDDi in component ADP_fi (micromolar).
 * CONSTANTS[16] is Mg_fi in component Mg_fi (micromolar).
 * CONSTANTS[17] is Ai_SUM in component ADP_ti (micromolar).
 * STATES[6] is ATP_ti in component ATP_ti (micromolar).
 * ALGEBRAIC[36] is ATP_mi in component ATP_mi (micromolar).
 * ALGEBRAIC[5] is ATP_fi in component ATP_fi (micromolar).
 * CONSTANTS[18] is kDTi in component ATP_fi (micromolar).
 * ALGEBRAIC[37] is ADP_me in component ADP_me (micromolar).
 * STATES[7] is ADP_te in component ADP_te (micromolar).
 * ALGEBRAIC[6] is ADP_fe in component ADP_fe (micromolar).
 * CONSTANTS[19] is kDDe in component ADP_fe (micromolar).
 * CONSTANTS[20] is Mg_fe in component Mg_fe (micromolar).
 * ALGEBRAIC[19] is vUT in component vUT (flux).
 * ALGEBRAIC[44] is vAK in component vAK (flux).
 * ALGEBRAIC[38] is ATP_me in component ATP_me (micromolar).
 * STATES[8] is ATP_te in component ATP_te (micromolar).
 * ALGEBRAIC[7] is ATP_fe in component ATP_fe (micromolar).
 * CONSTANTS[21] is kDTe in component ATP_fe (micromolar).
 * ALGEBRAIC[8] is AMP_e in component AMP_e (micromolar).
 * CONSTANTS[22] is Ae_SUM in component AMP_e (micromolar).
 * ALGEBRAIC[9] is Cr in component Cr (micromolar).
 * CONSTANTS[23] is C_SUM in component Cr (micromolar).
 * STATES[9] is PCr in component PCr (micromolar).
 * ALGEBRAIC[10] is Pi_ji in component Pi_ji (micromolar).
 * STATES[10] is Pi_ti in component Pi_ti (micromolar).
 * ALGEBRAIC[11] is Pi_je in component Pi_je (micromolar).
 * STATES[11] is Pi_te in component Pi_te (micromolar).
 * ALGEBRAIC[12] is P_SUM in component P_SUM (micromolar).
 * CONSTANTS[24] is ct in component c_3 (micromolar).
 * CONSTANTS[25] is Ut in component UQ (micromolar).
 * STATES[12] is a_2 in component a_2 (micromolar).
 * ALGEBRAIC[39] is A3_2 in component a_2 (dimensionless).
 * CONSTANTS[26] is Ema0 in component a_2 (millivolt).
 * CONSTANTS[27] is at in component a_2 (micromolar).
 * ALGEBRAIC[15] is a_3 in component a_3 (micromolar).
 * CONSTANTS[28] is kDH in component vDH (flux).
 * CONSTANTS[29] is KmN in component vDH (micromolar).
 * CONSTANTS[30] is pD in component vDH (dimensionless).
 * CONSTANTS[31] is kC1 in component vC1 (flux).
 * ALGEBRAIC[40] is delta_GC1 in component vC1 (millivolt).
 * CONSTANTS[32] is kC3 in component vC3 (flux).
 * ALGEBRAIC[41] is delta_GC3 in component vC3 (millivolt).
 * CONSTANTS[33] is kC4 in component vC4 (flux).
 * CONSTANTS[34] is KmO in component vC4 (micromolar).
 * CONSTANTS[35] is kSN in component vSN (flux).
 * ALGEBRAIC[42] is delta_GSN in component vSN (millivolt).
 * ALGEBRAIC[18] is delta_Gp in component vSN (kilojoule_per_mole).
 * CONSTANTS[36] is delta_Gp0 in component vSN (kilojoule_per_mole).
 * ALGEBRAIC[48] is gamma in component vSN (dimensionless).
 * CONSTANTS[37] is kEX in component vEX (flux).
 * CONSTANTS[38] is km_ADP in component vEX (micromolar).
 * CONSTANTS[39] is km_A in component vUT (micromolar).
 * CONSTANTS[40] is kUT in component vUT (flux).
 * CONSTANTS[41] is kf_AK in component vAK (second_order_rate_constant).
 * CONSTANTS[42] is kb_AK in component vAK (second_order_rate_constant).
 * CONSTANTS[43] is kL1 in component vLK (flux).
 * CONSTANTS[44] is kL2 in component vLK (per_millivolt).
 * CONSTANTS[45] is kPI in component vPI (second_order_rate_constant).
 * CONSTANTS[46] is kf_CK in component vCK (third_order_rate_constant).
 * CONSTANTS[47] is kb_CK in component vCK (second_order_rate_constant).
 * CONSTANTS[48] is pH_o in component vEFF (dimensionless).
 * CONSTANTS[49] is k_EFF in component vEFF (flux).
 * RATES[2] is d/dt NADH in component NADH (micromolar).
 * RATES[5] is d/dt O2 in component O2 (micromolar).
 * RATES[1] is d/dt Hi in component Hi (micromolar).
 * RATES[0] is d/dt He in component He (micromolar).
 * RATES[6] is d/dt ATP_ti in component ATP_ti (micromolar).
 * RATES[7] is d/dt ADP_te in component ADP_te (micromolar).
 * RATES[8] is d/dt ATP_te in component ATP_te (micromolar).
 * RATES[9] is d/dt PCr in component PCr (micromolar).
 * RATES[10] is d/dt Pi_ti in component Pi_ti (micromolar).
 * RATES[11] is d/dt Pi_te in component Pi_te (micromolar).
 * RATES[4] is d/dt c_2 in component c_2 (micromolar).
 * RATES[3] is d/dt UQH2 in component UQH2 (micromolar).
 * RATES[12] is d/dt a_2 in component a_2 (micromolar).
 * There are a total of 0 condition variables.
 */
void
initConsts(double* CONSTANTS, double* RATES, double *STATES)
{
CONSTANTS[0] = 15.0;
CONSTANTS[1] = 0.0083;
CONSTANTS[2] = 289.0;
CONSTANTS[3] = 0.0965;
CONSTANTS[4] = 190.0;
CONSTANTS[5] = 0.022;
CONSTANTS[6] = 0.025;
CONSTANTS[7] = 6.8;
STATES[0] = 1.00;
STATES[1] = 1.00;
CONSTANTS[8] = 0.001;
CONSTANTS[9] = 5.0;
CONSTANTS[10] = -320.0;
CONSTANTS[11] = 85.0;
CONSTANTS[12] = 250.0;
STATES[2] = 500.0;
STATES[3] = 1.00;
STATES[4] = 1.00;
CONSTANTS[13] = 2970.0;
STATES[5] = 1.00;
CONSTANTS[14] = 2.5;
CONSTANTS[15] = 282;
CONSTANTS[16] = 380.0;
CONSTANTS[17] = 16260.0;
STATES[6] = 1.00;
CONSTANTS[18] = 17;
STATES[7] = 1.00;
CONSTANTS[19] = 347;
CONSTANTS[20] = 4000.0;
STATES[8] = 1.00;
CONSTANTS[21] = 24;
CONSTANTS[22] = 1600.2;
CONSTANTS[23] = 35000.0;
STATES[9] = 1.00;
STATES[10] = 1.00;
STATES[11] = 1.00;
CONSTANTS[24] = 270.0;
CONSTANTS[25] = 1350.0;
STATES[12] = 1.00;
CONSTANTS[26] = 540.0;
CONSTANTS[27] = 135.0;
CONSTANTS[28] = 28074;
CONSTANTS[29] = 100.0;
CONSTANTS[30] = 0.8;
CONSTANTS[31] = 238.95;
CONSTANTS[32] = 136.41;
CONSTANTS[33] = 136.41;
CONSTANTS[34] = 120.0;
CONSTANTS[35] = 34316.0;
CONSTANTS[36] = 31.9;
CONSTANTS[37] = 54572;
CONSTANTS[38] = 3.5;
CONSTANTS[39] = 150.0;
CONSTANTS[40] = 686.5;
CONSTANTS[41] = 862.10;
CONSTANTS[42] = 22.747;
CONSTANTS[43] = 2.5;
CONSTANTS[44] = 0.038;
CONSTANTS[45] = 69.421;
CONSTANTS[46] = 1.9258;
CONSTANTS[47] = 0.00087538;
CONSTANTS[48] = 7.0;
CONSTANTS[49] = 1.9258;
CONSTANTS[50] =  2.30300*CONSTANTS[1]*CONSTANTS[2];
CONSTANTS[51] =  2.30300*CONSTANTS[1]*(CONSTANTS[2]/CONSTANTS[3]);
CONSTANTS[52] =  CONSTANTS[43]*(exp( CONSTANTS[44]*CONSTANTS[4]) - 1.00000);
RATES[2] = 0.1001;
RATES[5] = 0.1001;
RATES[1] = 0.1001;
RATES[0] = 0.1001;
RATES[6] = 0.1001;
RATES[7] = 0.1001;
RATES[8] = 0.1001;
RATES[9] = 0.1001;
RATES[10] = 0.1001;
RATES[11] = 0.1001;
RATES[4] = 0.1001;
RATES[3] = 0.1001;
RATES[12] = 0.1001;
}
void
computeResiduals(double VOI, double* CONSTANTS, double* RATES, double* OLDRATES, double* STATES,
                 double* OLDSTATES, double* ALGEBRAIC, double* CONDVARS)
{
resid[0] = RATES[2] -  (ALGEBRAIC[16] - ALGEBRAIC[46])*(CONSTANTS[0]/CONSTANTS[9]);
resid[1] = RATES[5] - - ALGEBRAIC[17];
resid[2] = RATES[1] - ( (( (4.00000 -  2.00000*ALGEBRAIC[26])*ALGEBRAIC[47]+ 4.00000*ALGEBRAIC[46]) - ( 2.00000*(2.00000+ 2.00000*ALGEBRAIC[26])*ALGEBRAIC[17]+ CONSTANTS[14]*ALGEBRAIC[49]+ ALGEBRAIC[26]*ALGEBRAIC[43]+ (1.00000 - ALGEBRAIC[26])*ALGEBRAIC[20]+CONSTANTS[52]))*CONSTANTS[0])/ALGEBRAIC[28];
resid[3] = RATES[0] - (( 2.00000*(2.00000+ 2.00000*ALGEBRAIC[26])*ALGEBRAIC[17]+ (4.00000 -  2.00000*ALGEBRAIC[26])*ALGEBRAIC[47]+ 4.00000*ALGEBRAIC[46]) - ( CONSTANTS[14]*ALGEBRAIC[49]+ ALGEBRAIC[26]*ALGEBRAIC[43]+ (1.00000 - ALGEBRAIC[26])*ALGEBRAIC[20]+CONSTANTS[52]+ALGEBRAIC[21]+ALGEBRAIC[22]))/ALGEBRAIC[30];
resid[4] = RATES[6] -  (ALGEBRAIC[49] - ALGEBRAIC[43])*CONSTANTS[0];
resid[5] = RATES[7] - ALGEBRAIC[19] - (ALGEBRAIC[43]+ 2.00000*ALGEBRAIC[44]+ALGEBRAIC[21]);
resid[6] = RATES[8] - (ALGEBRAIC[43]+ALGEBRAIC[44]+ALGEBRAIC[21]) - ALGEBRAIC[19];
resid[7] = RATES[9] - - ALGEBRAIC[21];
resid[8] = RATES[10] -  (ALGEBRAIC[20] - ALGEBRAIC[49])*CONSTANTS[0];
resid[9] = RATES[11] - ALGEBRAIC[19] - ALGEBRAIC[20];
resid[10] = RATES[4] -  (ALGEBRAIC[47]+ ALGEBRAIC[17]*2.00000)*CONSTANTS[0]*2.00000;
resid[11] = RATES[3] -  CONSTANTS[0]*(ALGEBRAIC[46] - ALGEBRAIC[47]);
resid[12] = RATES[12] - CONSTANTS[27]/(1.00000+ALGEBRAIC[39]);
}
void
computeVariables(double VOI, double* CONSTANTS, double* RATES, double* STATES, double* ALGEBRAIC)
{
ALGEBRAIC[12] = STATES[9]+ STATES[8]*3.00000+ STATES[7]*2.00000+ALGEBRAIC[8]+STATES[11]+( STATES[6]*3.00000+ ALGEBRAIC[4]*2.00000+STATES[10])/CONSTANTS[0];
ALGEBRAIC[15] = CONSTANTS[27] - STATES[12];
ALGEBRAIC[25] =  -0.350000*ALGEBRAIC[23];
ALGEBRAIC[36] = STATES[6] - ALGEBRAIC[5];
ALGEBRAIC[45] = ALGEBRAIC[4] - ALGEBRAIC[35];
}
void
computeEssentialVariables(double VOI, double* CONSTANTS, double* RATES, double* STATES, double* ALGEBRAIC)
{
ALGEBRAIC[3] = CONSTANTS[13] - STATES[2];
ALGEBRAIC[16] =  CONSTANTS[28]*(1.00000/pow(1.00000+CONSTANTS[29]/(ALGEBRAIC[3]/STATES[2]), CONSTANTS[30]));
ALGEBRAIC[17] =  CONSTANTS[33]*STATES[12]*STATES[4]*(1.00000/(1.00000+CONSTANTS[34]/STATES[5]));
ALGEBRAIC[19] =  CONSTANTS[40]*(1.00000/(1.00000+CONSTANTS[39]/STATES[8]));
ALGEBRAIC[1] = - arbitrary_log(STATES[1]/1.00000e+06, 10);
ALGEBRAIC[10] = STATES[10]/(1.00000+pow(10.0000, ALGEBRAIC[1] - CONSTANTS[7]));
ALGEBRAIC[0] = - arbitrary_log(STATES[0]/1.00000e+06, 10);
ALGEBRAIC[11] = STATES[11]/(1.00000+pow(10.0000, ALGEBRAIC[0] - CONSTANTS[7]));
ALGEBRAIC[20] =  CONSTANTS[45]*( STATES[0]*ALGEBRAIC[11] -  STATES[1]*ALGEBRAIC[10]);
ALGEBRAIC[9] = CONSTANTS[23] - STATES[9];
ALGEBRAIC[21] =  CONSTANTS[46]*STATES[7]*STATES[9]*STATES[0] -  CONSTANTS[47]*STATES[8]*ALGEBRAIC[9];
ALGEBRAIC[22] =  CONSTANTS[49]*(CONSTANTS[48] - ALGEBRAIC[0]);
ALGEBRAIC[2] =  CONSTANTS[51]*(ALGEBRAIC[1] - ALGEBRAIC[0]);
ALGEBRAIC[23] = - (CONSTANTS[4] - ALGEBRAIC[2]);
ALGEBRAIC[26] = ALGEBRAIC[23]/CONSTANTS[4];
ALGEBRAIC[27] = (pow(10.0000, - ALGEBRAIC[1]) - pow(10.0000, - ALGEBRAIC[1] - CONSTANTS[8]))/CONSTANTS[8];
ALGEBRAIC[28] = CONSTANTS[5]/ALGEBRAIC[27];
ALGEBRAIC[29] = (pow(10.0000, - ALGEBRAIC[0]) - pow(10.0000, - ALGEBRAIC[0] - CONSTANTS[8]))/CONSTANTS[8];
ALGEBRAIC[30] = CONSTANTS[6]/ALGEBRAIC[29];
ALGEBRAIC[13] = CONSTANTS[24] - STATES[4];
ALGEBRAIC[33] = CONSTANTS[12]+ CONSTANTS[51]*arbitrary_log(ALGEBRAIC[13]/STATES[4], 10);
ALGEBRAIC[34] = ALGEBRAIC[33]+ CONSTANTS[4]*((2.00000+ 2.00000*ALGEBRAIC[26])/2.00000);
ALGEBRAIC[39] = pow(10.0000, (ALGEBRAIC[34] - CONSTANTS[26])/CONSTANTS[51]);
ALGEBRAIC[24] =  0.650000*ALGEBRAIC[23];
ALGEBRAIC[4] = CONSTANTS[17] - STATES[6];
ALGEBRAIC[35] = ALGEBRAIC[4]/(1.00000+CONSTANTS[16]/CONSTANTS[15]);
ALGEBRAIC[5] = STATES[6]/(1.00000+CONSTANTS[16]/CONSTANTS[18]);
ALGEBRAIC[6] = STATES[7]/(1.00000+CONSTANTS[20]/CONSTANTS[19]);
ALGEBRAIC[7] = STATES[8]/(1.00000+CONSTANTS[20]/CONSTANTS[21]);
ALGEBRAIC[43] =  CONSTANTS[37]*(ALGEBRAIC[6]/(ALGEBRAIC[6]+ ALGEBRAIC[7]*pow(10.0000, - ALGEBRAIC[24]/CONSTANTS[51])) - ALGEBRAIC[35]/(ALGEBRAIC[35]+ ALGEBRAIC[5]*pow(10.0000, - ALGEBRAIC[24]/CONSTANTS[51])))*(1.00000/(1.00000+CONSTANTS[38]/ALGEBRAIC[6]));
ALGEBRAIC[37] = STATES[7] - ALGEBRAIC[6];
ALGEBRAIC[38] = STATES[8] - ALGEBRAIC[7];
ALGEBRAIC[8] = CONSTANTS[22] - (STATES[8]+STATES[7]);
ALGEBRAIC[44] =  CONSTANTS[41]*ALGEBRAIC[37]*ALGEBRAIC[6] -  CONSTANTS[42]*ALGEBRAIC[38]*ALGEBRAIC[8];
ALGEBRAIC[31] = CONSTANTS[10]+ (CONSTANTS[51]/2.00000)*arbitrary_log(ALGEBRAIC[3]/STATES[2], 10);
ALGEBRAIC[14] = CONSTANTS[25] - STATES[3];
ALGEBRAIC[32] = CONSTANTS[11]+ (CONSTANTS[51]/2.00000)*arbitrary_log(ALGEBRAIC[14]/STATES[3], 10);
ALGEBRAIC[40] = ALGEBRAIC[32] - (ALGEBRAIC[31]+ CONSTANTS[4]*(4.00000/2.00000));
ALGEBRAIC[46] =  CONSTANTS[31]*ALGEBRAIC[40];
ALGEBRAIC[41] = ALGEBRAIC[33] - (ALGEBRAIC[32]+ CONSTANTS[4]*((4.00000 -  2.00000*ALGEBRAIC[26])/2.00000));
ALGEBRAIC[47] =  CONSTANTS[32]*ALGEBRAIC[41];
ALGEBRAIC[18] = CONSTANTS[36]/(CONSTANTS[3]+ CONSTANTS[51]*arbitrary_log( 1.00000e+06*(STATES[6]/( ALGEBRAIC[4]*STATES[10])), 10));
ALGEBRAIC[42] =  CONSTANTS[14]*CONSTANTS[4] - ALGEBRAIC[18];
ALGEBRAIC[48] = pow(10.0000, ALGEBRAIC[42]/CONSTANTS[51]);
ALGEBRAIC[49] =  CONSTANTS[35]*((ALGEBRAIC[48] - 1.00000)/(ALGEBRAIC[48]+1.00000));
}
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;
SI[7] = 1.0;
SI[8] = 1.0;
SI[9] = 1.0;
SI[10] = 1.0;
SI[11] = 1.0;
SI[12] = 1.0;
}
void
computeRoots(double VOI, double* CONSTANTS, double* RATES, double* OLDRATES, double* STATES,
             double* OLDSTATES, double* ALGEBRAIC, double* CONDVARS)
{
}