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 14 entries in the algebraic variable array.
   There are a total of 4 entries in each of the rate and state variable arrays.
   There are a total of 46 entries in the constant variable array.
 */
/*
 * VOI is time in component environment (msec).
 * ALGEBRAIC[0] is t_modulo in component environment (msec).
 * CONSTANTS[0] is Acap in component general_parameters (cm2).
 * CONSTANTS[1] is V_myo in component general_parameters (uL).
 * CONSTANTS[2] is C_m in component general_parameters (uF_per_cm2).
 * CONSTANTS[3] is F in component general_parameters (C_per_mmole).
 * CONSTANTS[4] is T in component general_parameters (kelvin).
 * CONSTANTS[5] is R in component general_parameters (J_per_K_per_mol).
 * CONSTANTS[6] is CaM_tot in component general_parameters (uM).
 * CONSTANTS[7] is Km_CaM in component general_parameters (uM).
 * CONSTANTS[8] is Ca_o in component general_parameters (uM).
 * CONSTANTS[9] is Na_o in component general_parameters (uM).
 * CONSTANTS[10] is Ca_NSR in component general_parameters (uM).
 * CONSTANTS[11] is J_leak in component general_parameters (uM_per_msec).
 * ALGEBRAIC[1] is V in component action_potential (mV).
 * CONSTANTS[12] is t1 in component action_potential (msec).
 * CONSTANTS[13] is t2 in component action_potential (msec).
 * CONSTANTS[14] is p in component action_potential (dimensionless).
 * CONSTANTS[15] is A in component action_potential (mV).
 * CONSTANTS[16] is A1 in component action_potential (msec).
 * CONSTANTS[17] is rest in component action_potential (mV).
 * ALGEBRAIC[3] is Ca_input in component calcium_input (uM_per_msec).
 * ALGEBRAIC[2] is tcalcium in component calcium_input (msec).
 * CONSTANTS[18] is Ca_tau1 in component calcium_input (msec).
 * CONSTANTS[19] is Ca_tau2 in component calcium_input (msec).
 * CONSTANTS[20] is Ca_pow in component calcium_input (dimensionless).
 * CONSTANTS[21] is Ca_amp in component calcium_input (uM_per_msec).
 * ALGEBRAIC[4] is INaCa in component NCX_current (uA_per_uF).
 * CONSTANTS[22] is Na_i in component NCX_current (uM).
 * CONSTANTS[23] is KmNa in component NCX_current (uM).
 * CONSTANTS[24] is KmCa in component NCX_current (uM).
 * CONSTANTS[25] is ksat in component NCX_current (dimensionless).
 * CONSTANTS[26] is eta in component NCX_current (dimensionless).
 * CONSTANTS[27] is kNaCa in component NCX_current (uA_per_uF).
 * STATES[0] is Ca_cyt in component differential_equations (uM).
 * CONSTANTS[28] is SERCA_TOT in component serca_parameters (uM).
 * CONSTANTS[29] is CaMKII_reg in component serca_parameters (dimensionless).
 * CONSTANTS[30] is PKA_reg in component serca_parameters (dimensionless).
 * CONSTANTS[31] is PSR in component serca_parameters (dimensionless).
 * CONSTANTS[32] is Kmf_PLBKO in component serca_parameters (uM).
 * CONSTANTS[33] is Kmf_PLB in component serca_parameters (uM).
 * CONSTANTS[34] is Kmr_PLBKO in component serca_parameters (uM).
 * CONSTANTS[35] is Kmr_PLB in component serca_parameters (uM).
 * CONSTANTS[36] is PLB_tot in component serca_parameters (uM).
 * CONSTANTS[37] is kplb_pos in component serca_parameters (per_msec).
 * CONSTANTS[38] is kplb_neg in component serca_parameters (per_msec).
 * ALGEBRAIC[5] is EC_50_fwd in component serca_parameters (uM).
 * ALGEBRAIC[6] is EC_50_rev in component serca_parameters (uM).
 * STATES[1] is PLB_dephosph in component differential_equations (uM).
 * CONSTANTS[45] is k_cyt_serca in component transition_parameters (per_uM2_per_msec).
 * ALGEBRAIC[7] is k_serca_cyt in component transition_parameters (per_msec).
 * CONSTANTS[43] is k_serca_sr in component transition_parameters (per_msec).
 * ALGEBRAIC[8] is k_sr_serca in component transition_parameters (per_uM2_per_msec).
 * CONSTANTS[44] is br_cyt_serca in component transition_parameters (per_uM2_per_msec).
 * CONSTANTS[39] is br_serca_sr in component transition_parameters (per_msec).
 * ALGEBRAIC[12] is J_up in component calcium_fluxes (uM_per_msec).
 * ALGEBRAIC[9] is J_cyt_serca in component calcium_fluxes (uM_per_msec).
 * ALGEBRAIC[10] is J_serca_sr in component calcium_fluxes (uM_per_msec).
 * STATES[2] is Ca_serca in component differential_equations (uM).
 * CONSTANTS[40] is LTRPN_tot in component calcium_buffering (uM).
 * CONSTANTS[41] is kltrpn_pos in component calcium_buffering (per_uM_per_msec).
 * CONSTANTS[42] is kltrpn_neg in component calcium_buffering (per_msec).
 * ALGEBRAIC[13] is J_LTRPN in component calcium_buffering (uM_per_msec).
 * ALGEBRAIC[11] is B_i in component calcium_buffering (dimensionless).
 * STATES[3] is LTRPN in component differential_equations (uM).
 * RATES[0] is d/dt Ca_cyt in component differential_equations (uM).
 * RATES[3] is d/dt LTRPN in component differential_equations (uM).
 * RATES[1] is d/dt PLB_dephosph in component differential_equations (uM).
 * RATES[2] is d/dt Ca_serca in component differential_equations (uM).
 */
void
initConsts(double* CONSTANTS, double* RATES, double *STATES)
{
CONSTANTS[0] = 1.534e-4;
CONSTANTS[1] = 25.84e-6;
CONSTANTS[2] = 1;
CONSTANTS[3] = 96.5;
CONSTANTS[4] = 298;
CONSTANTS[5] = 8.314;
CONSTANTS[6] = 24;
CONSTANTS[7] = 2.38;
CONSTANTS[8] = 1000;
CONSTANTS[9] = 140000;
CONSTANTS[10] = 760;
CONSTANTS[11] = 0.0003;
CONSTANTS[12] = 0.5;
CONSTANTS[13] = 200;
CONSTANTS[14] = 2;
CONSTANTS[15] = 135;
CONSTANTS[16] = 110;
CONSTANTS[17] = -90;
CONSTANTS[18] = 1.5;
CONSTANTS[19] = 7.5;
CONSTANTS[20] = 2;
CONSTANTS[21] = 10;
CONSTANTS[22] = 10000;
CONSTANTS[23] = 87500;
CONSTANTS[24] = 1380;
CONSTANTS[25] = 0.1;
CONSTANTS[26] = 0.35;
CONSTANTS[27] = 950;
STATES[0] = 0.1;
CONSTANTS[28] = 20;
CONSTANTS[29] = 0.1;
CONSTANTS[30] = 0.1;
CONSTANTS[31] = 1;
CONSTANTS[32] = 0.15;
CONSTANTS[33] = 0.15;
CONSTANTS[34] = 2500;
CONSTANTS[35] = 1110;
CONSTANTS[36] = 1;
CONSTANTS[37] = 1;
CONSTANTS[38] = 6.8;
STATES[1] = 0.1;
CONSTANTS[39] = 0.00625;
STATES[2] = 5;
CONSTANTS[40] = 70;
CONSTANTS[41] = 0.1;
CONSTANTS[42] = 0.06;
STATES[3] = 11;
CONSTANTS[43] =  CONSTANTS[39]*(1.00000+ 0.700000*CONSTANTS[29]);
CONSTANTS[44] =  1000.00*CONSTANTS[39];
CONSTANTS[45] =  CONSTANTS[44]*(1.00000+ 0.700000*CONSTANTS[29]);
}
void
computeRates(double VOI, double* CONSTANTS, double* RATES, double* STATES, double* ALGEBRAIC)
{
RATES[3] =  CONSTANTS[41]*STATES[0]*(CONSTANTS[40] - STATES[3]) -  CONSTANTS[42]*STATES[3];
RATES[1] =  CONSTANTS[37]*(CONSTANTS[36] - STATES[1]) -  CONSTANTS[38]*pow(CONSTANTS[29]+CONSTANTS[30], 2.00000)*STATES[1];
ALGEBRAIC[5] =  (CONSTANTS[32]+( CONSTANTS[33]*CONSTANTS[31]*STATES[1])/1.00000)*(1.00000+ 0.270000*CONSTANTS[29]);
ALGEBRAIC[7] =  pow(ALGEBRAIC[5], 2.00000)*CONSTANTS[44];
ALGEBRAIC[9] =  CONSTANTS[45]*pow(STATES[0], 2.00000)*(CONSTANTS[28] - STATES[2]) -  ALGEBRAIC[7]*STATES[2];
ALGEBRAIC[6] = CONSTANTS[34] - ( CONSTANTS[35]*CONSTANTS[31]*STATES[1])/1.00000;
ALGEBRAIC[8] = CONSTANTS[39]/pow(ALGEBRAIC[6], 2.00000);
ALGEBRAIC[10] =  CONSTANTS[43]*STATES[2] -  ALGEBRAIC[8]*pow(CONSTANTS[10], 2.00000)*(CONSTANTS[28] - STATES[2]);
RATES[2] = ALGEBRAIC[9] - ALGEBRAIC[10];
ALGEBRAIC[0] =  (int)(VOI) % (int)(1000.00);
ALGEBRAIC[2] = (ALGEBRAIC[0] - 1.20000<=0.00000 ? 0.00000 : ALGEBRAIC[0] - 1.20000);
ALGEBRAIC[3] =  CONSTANTS[21]*pow(1.00000 - exp(- ALGEBRAIC[2]/CONSTANTS[18]), CONSTANTS[20])*exp(- ALGEBRAIC[2]/CONSTANTS[19]);
ALGEBRAIC[1] = CONSTANTS[17]+ CONSTANTS[15]*pow(1.00000 - exp(- ALGEBRAIC[0]/CONSTANTS[12]), CONSTANTS[14])*exp(- ALGEBRAIC[0]/CONSTANTS[13])*(1.00000 - pow(ALGEBRAIC[0], 10.0000)/(pow(CONSTANTS[16], 10.0000)+pow(ALGEBRAIC[0], 10.0000)));
ALGEBRAIC[4] =  (CONSTANTS[27]/( (pow(CONSTANTS[23], 3.00000)+pow(CONSTANTS[9], 3.00000))*(CONSTANTS[24]+CONSTANTS[8])*(1.00000+ CONSTANTS[25]*exp(( (CONSTANTS[26] - 1.00000)*ALGEBRAIC[1]*CONSTANTS[3])/( CONSTANTS[5]*CONSTANTS[4])))))*( exp(( CONSTANTS[26]*ALGEBRAIC[1]*CONSTANTS[3])/( CONSTANTS[5]*CONSTANTS[4]))*pow(CONSTANTS[22], 3.00000)*CONSTANTS[8] -  exp(( (CONSTANTS[26] - 1.00000)*ALGEBRAIC[1]*CONSTANTS[3])/( CONSTANTS[5]*CONSTANTS[4]))*pow(CONSTANTS[9], 3.00000)*STATES[0]);
ALGEBRAIC[13] =  CONSTANTS[41]*STATES[0]*(CONSTANTS[40] - STATES[3]) -  CONSTANTS[42]*STATES[3];
ALGEBRAIC[11] = pow(1.00000+( CONSTANTS[6]*CONSTANTS[7])/pow(CONSTANTS[7]+STATES[0], 2.00000), - 1.00000);
RATES[0] =  ALGEBRAIC[11]*(((( ALGEBRAIC[4]*CONSTANTS[0]*CONSTANTS[2])/( 2.00000*CONSTANTS[1]*CONSTANTS[3]) - ALGEBRAIC[9])+CONSTANTS[11]+ALGEBRAIC[3]) - ALGEBRAIC[13]);
}
void
computeVariables(double VOI, double* CONSTANTS, double* RATES, double* STATES, double* ALGEBRAIC)
{
ALGEBRAIC[5] =  (CONSTANTS[32]+( CONSTANTS[33]*CONSTANTS[31]*STATES[1])/1.00000)*(1.00000+ 0.270000*CONSTANTS[29]);
ALGEBRAIC[7] =  pow(ALGEBRAIC[5], 2.00000)*CONSTANTS[44];
ALGEBRAIC[9] =  CONSTANTS[45]*pow(STATES[0], 2.00000)*(CONSTANTS[28] - STATES[2]) -  ALGEBRAIC[7]*STATES[2];
ALGEBRAIC[6] = CONSTANTS[34] - ( CONSTANTS[35]*CONSTANTS[31]*STATES[1])/1.00000;
ALGEBRAIC[8] = CONSTANTS[39]/pow(ALGEBRAIC[6], 2.00000);
ALGEBRAIC[10] =  CONSTANTS[43]*STATES[2] -  ALGEBRAIC[8]*pow(CONSTANTS[10], 2.00000)*(CONSTANTS[28] - STATES[2]);
ALGEBRAIC[0] =  (int)(VOI) % (int)(1000.00);
ALGEBRAIC[2] = (ALGEBRAIC[0] - 1.20000<=0.00000 ? 0.00000 : ALGEBRAIC[0] - 1.20000);
ALGEBRAIC[3] =  CONSTANTS[21]*pow(1.00000 - exp(- ALGEBRAIC[2]/CONSTANTS[18]), CONSTANTS[20])*exp(- ALGEBRAIC[2]/CONSTANTS[19]);
ALGEBRAIC[1] = CONSTANTS[17]+ CONSTANTS[15]*pow(1.00000 - exp(- ALGEBRAIC[0]/CONSTANTS[12]), CONSTANTS[14])*exp(- ALGEBRAIC[0]/CONSTANTS[13])*(1.00000 - pow(ALGEBRAIC[0], 10.0000)/(pow(CONSTANTS[16], 10.0000)+pow(ALGEBRAIC[0], 10.0000)));
ALGEBRAIC[4] =  (CONSTANTS[27]/( (pow(CONSTANTS[23], 3.00000)+pow(CONSTANTS[9], 3.00000))*(CONSTANTS[24]+CONSTANTS[8])*(1.00000+ CONSTANTS[25]*exp(( (CONSTANTS[26] - 1.00000)*ALGEBRAIC[1]*CONSTANTS[3])/( CONSTANTS[5]*CONSTANTS[4])))))*( exp(( CONSTANTS[26]*ALGEBRAIC[1]*CONSTANTS[3])/( CONSTANTS[5]*CONSTANTS[4]))*pow(CONSTANTS[22], 3.00000)*CONSTANTS[8] -  exp(( (CONSTANTS[26] - 1.00000)*ALGEBRAIC[1]*CONSTANTS[3])/( CONSTANTS[5]*CONSTANTS[4]))*pow(CONSTANTS[9], 3.00000)*STATES[0]);
ALGEBRAIC[13] =  CONSTANTS[41]*STATES[0]*(CONSTANTS[40] - STATES[3]) -  CONSTANTS[42]*STATES[3];
ALGEBRAIC[11] = pow(1.00000+( CONSTANTS[6]*CONSTANTS[7])/pow(CONSTANTS[7]+STATES[0], 2.00000), - 1.00000);
ALGEBRAIC[12] = ALGEBRAIC[9] - ALGEBRAIC[10];
}