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 16 entries in the algebraic variable array.
   There are a total of 3 entries in each of the rate and state variable arrays.
   There are a total of 34 entries in the constant variable array.
 */
/*
 * VOI is time in component interface (ms).
 * STATES[0] is Vm in component interface (mV).
 * STATES[1] is cMgADP in component interface (concentration).
 * STATES[2] is cNa_i in component interface (concentration).
 * ALGEBRAIC[15] is v_cyc in component NaK_pump (rate).
 * ALGEBRAIC[9] is net_free_energy in component NaK_pump (energy).
 * CONSTANTS[0] is body_temp in component NaK_pump (kelvin).
 * CONSTANTS[1] is gas_const in component NaK_pump (gas_constant).
 * CONSTANTS[2] is faraday_const in component NaK_pump (faraday_constant).
 * CONSTANTS[3] is k1 in component NaK_pump (rate).
 * CONSTANTS[4] is minus_k1 in component NaK_pump (minus_k1_rate).
 * CONSTANTS[5] is k2 in component NaK_pump (rate).
 * CONSTANTS[6] is minus_k2 in component NaK_pump (rate).
 * CONSTANTS[7] is k3 in component NaK_pump (rate).
 * CONSTANTS[8] is minus_k3 in component NaK_pump (minus_k3_rate).
 * CONSTANTS[9] is k4 in component NaK_pump (rate).
 * CONSTANTS[10] is minus_k4 in component NaK_pump (rate).
 * CONSTANTS[11] is eq_Na_base_e in component NaK_pump (concentration).
 * CONSTANTS[12] is eq_Na_base_i in component NaK_pump (concentration).
 * CONSTANTS[13] is eq_K_e in component NaK_pump (concentration).
 * CONSTANTS[14] is eq_K_i in component NaK_pump (concentration).
 * CONSTANTS[15] is eq_MgATP in component NaK_pump (concentration).
 * CONSTANTS[16] is eq_HPi in component NaK_pump (concentration).
 * CONSTANTS[17] is eq_KPi in component NaK_pump (concentration).
 * CONSTANTS[18] is eq_NaPi in component NaK_pump (concentration).
 * ALGEBRAIC[3] is dimless_Na_e in component NaK_pump (dimensionless).
 * ALGEBRAIC[1] is dimless_Na_i in component NaK_pump (dimensionless).
 * CONSTANTS[27] is dimless_K_e in component NaK_pump (dimensionless).
 * CONSTANTS[26] is dimless_K_i in component NaK_pump (dimensionless).
 * CONSTANTS[28] is dimless_MgATP in component NaK_pump (dimensionless).
 * ALGEBRAIC[5] is alpha1 in component NaK_pump (rate).
 * CONSTANTS[29] is alpha2 in component NaK_pump (rate).
 * ALGEBRAIC[7] is alpha3 in component NaK_pump (rate).
 * CONSTANTS[30] is alpha4 in component NaK_pump (rate).
 * ALGEBRAIC[10] is minus_alpha1 in component NaK_pump (rate).
 * ALGEBRAIC[11] is minus_alpha2 in component NaK_pump (rate).
 * ALGEBRAIC[12] is minus_alpha3 in component NaK_pump (rate).
 * ALGEBRAIC[13] is minus_alpha4 in component NaK_pump (rate).
 * CONSTANTS[19] is cNa_e in component NaK_pump (concentration).
 * CONSTANTS[20] is cK_e in component NaK_pump (concentration).
 * CONSTANTS[21] is cK_i in component NaK_pump (concentration).
 * CONSTANTS[22] is cMgATP in component NaK_pump (concentration).
 * CONSTANTS[23] is cPi_sum in component NaK_pump (concentration).
 * ALGEBRAIC[0] is cPi in component NaK_pump (concentration).
 * CONSTANTS[24] is cH in component NaK_pump (concentration).
 * ALGEBRAIC[2] is dG_Na in component NaK_pump (energy).
 * ALGEBRAIC[4] is dG_K in component NaK_pump (energy).
 * ALGEBRAIC[6] is dG_pump in component NaK_pump (energy).
 * ALGEBRAIC[8] is dG_ATP in component NaK_pump (energy).
 * CONSTANTS[25] is partition_factor in component NaK_pump (dimensionless).
 * ALGEBRAIC[14] is diagram_sum in component NaK_pump (rate_diagram_sum).
 * RATES[0] is d/dt Vm in component interface (mV).
 * RATES[1] is d/dt cMgADP in component interface (concentration).
 * RATES[2] is d/dt cNa_i in component interface (concentration).
 */
void
initConsts(double* CONSTANTS, double* RATES, double *STATES)
{
STATES[0] = -150;
STATES[1] = 0.01;
STATES[2] = 50.;
CONSTANTS[0] = 310.;
CONSTANTS[1] = 8.314;
CONSTANTS[2] = 96485.;
CONSTANTS[3] = 1050.;
CONSTANTS[4] = 172.1;
CONSTANTS[5] = 481.;
CONSTANTS[6] = 40.1;
CONSTANTS[7] = 2000.;
CONSTANTS[8] = 79287.1;
CONSTANTS[9] = 320.;
CONSTANTS[10] = 40.1;
CONSTANTS[11] = 15.5;
CONSTANTS[12] = 2.49;
CONSTANTS[13] = 0.213;
CONSTANTS[14] = 0.5;
CONSTANTS[15] = 2.51;
CONSTANTS[16] = 0.000169;
CONSTANTS[17] = 292.;
CONSTANTS[18] = 224.;
CONSTANTS[19] = 150.;
CONSTANTS[20] = 5.4;
CONSTANTS[21] = 140.;
CONSTANTS[22] = 9.8;
CONSTANTS[23] = 4.2;
CONSTANTS[24] = 0.000081283;
CONSTANTS[25] = -0.031288692380984445;
CONSTANTS[26] = CONSTANTS[21]/CONSTANTS[14];
CONSTANTS[31] = 1.00000;
CONSTANTS[32] = 0.00000;
CONSTANTS[33] = 0.00000;
CONSTANTS[27] = CONSTANTS[20]/CONSTANTS[13];
CONSTANTS[28] = CONSTANTS[22]/CONSTANTS[15];
CONSTANTS[29] = CONSTANTS[5];
CONSTANTS[30] = ( CONSTANTS[9]*CONSTANTS[28])/(1.00000+CONSTANTS[28]);
}
void
computeRates(double VOI, double* CONSTANTS, double* RATES, double* STATES, double* ALGEBRAIC)
{
RATES[0] = CONSTANTS[31];
RATES[1] = CONSTANTS[32];
RATES[2] = CONSTANTS[33];
}
void
computeVariables(double VOI, double* CONSTANTS, double* RATES, double* STATES, double* ALGEBRAIC)
{
ALGEBRAIC[0] = CONSTANTS[23]/(1.00000+CONSTANTS[21]/CONSTANTS[17]+CONSTANTS[24]/CONSTANTS[16]+STATES[2]/CONSTANTS[18]);
ALGEBRAIC[1] = STATES[2]/( CONSTANTS[12]*exp(( CONSTANTS[25]*CONSTANTS[2]*0.00100000*STATES[0])/( 3.00000*CONSTANTS[1]*CONSTANTS[0])));
ALGEBRAIC[2] =  CONSTANTS[1]*CONSTANTS[0]*log(CONSTANTS[19]/STATES[2]) -  CONSTANTS[2]*0.00100000*STATES[0];
ALGEBRAIC[3] = CONSTANTS[19]/( CONSTANTS[11]*exp(( (1.00000+CONSTANTS[25])*CONSTANTS[2]*0.00100000*STATES[0])/( 3.00000*CONSTANTS[1]*CONSTANTS[0])));
ALGEBRAIC[4] =  CONSTANTS[1]*CONSTANTS[0]*log(CONSTANTS[21]/CONSTANTS[20])+ CONSTANTS[2]*0.00100000*STATES[0];
ALGEBRAIC[5] = ( CONSTANTS[3]*pow(ALGEBRAIC[1], 3.00000))/((pow(1.00000+ALGEBRAIC[1], 3.00000)+pow(1.00000+CONSTANTS[26], 2.00000)) - 1.00000);
ALGEBRAIC[6] =  2.00000*ALGEBRAIC[4]+ 3.00000*ALGEBRAIC[2];
ALGEBRAIC[7] = ( CONSTANTS[7]*pow(CONSTANTS[27], 2.00000))/((pow(1.00000+ALGEBRAIC[3], 3.00000)+pow(1.00000+CONSTANTS[27], 2.00000)) - 1.00000);
ALGEBRAIC[8] = -29600.0 -  CONSTANTS[1]*CONSTANTS[0]*log(CONSTANTS[22]/( 0.00100000*STATES[1]*ALGEBRAIC[0]));
ALGEBRAIC[9] = ALGEBRAIC[8]+ALGEBRAIC[6];
ALGEBRAIC[10] =  CONSTANTS[4]*STATES[1];
ALGEBRAIC[11] = ( CONSTANTS[6]*pow(ALGEBRAIC[3], 3.00000))/((pow(1.00000+ALGEBRAIC[3], 3.00000)+pow(1.00000+CONSTANTS[27], 2.00000)) - 1.00000);
ALGEBRAIC[12] = ( CONSTANTS[8]*ALGEBRAIC[0]*CONSTANTS[24])/(1.00000+CONSTANTS[28]);
ALGEBRAIC[13] = ( CONSTANTS[10]*pow(CONSTANTS[26], 2.00000))/((pow(1.00000+ALGEBRAIC[1], 3.00000)+pow(1.00000+CONSTANTS[26], 2.00000)) - 1.00000);
ALGEBRAIC[14] =  ALGEBRAIC[12]*ALGEBRAIC[11]*ALGEBRAIC[10]+ CONSTANTS[30]*ALGEBRAIC[11]*ALGEBRAIC[10]+ CONSTANTS[30]*CONSTANTS[29]*ALGEBRAIC[7]+ CONSTANTS[30]*ALGEBRAIC[10]*ALGEBRAIC[7]+ ALGEBRAIC[12]*ALGEBRAIC[11]*ALGEBRAIC[5]+ CONSTANTS[30]*ALGEBRAIC[11]*ALGEBRAIC[5]+ CONSTANTS[30]*ALGEBRAIC[5]*ALGEBRAIC[7]+ ALGEBRAIC[12]*ALGEBRAIC[5]*CONSTANTS[29]+ CONSTANTS[30]*ALGEBRAIC[5]*CONSTANTS[29]+ ALGEBRAIC[5]*CONSTANTS[29]*ALGEBRAIC[7]+ ALGEBRAIC[13]*ALGEBRAIC[12]*ALGEBRAIC[10]+ ALGEBRAIC[13]*ALGEBRAIC[12]*CONSTANTS[29]+ ALGEBRAIC[13]*ALGEBRAIC[12]*ALGEBRAIC[11]+ ALGEBRAIC[13]*ALGEBRAIC[10]*ALGEBRAIC[11]+ ALGEBRAIC[13]*CONSTANTS[29]*ALGEBRAIC[7]+ ALGEBRAIC[13]*ALGEBRAIC[10]*ALGEBRAIC[7];
ALGEBRAIC[15] = ( ALGEBRAIC[5]*CONSTANTS[29]*ALGEBRAIC[7]*CONSTANTS[30] -  ALGEBRAIC[10]*ALGEBRAIC[11]*ALGEBRAIC[12]*ALGEBRAIC[13])/ALGEBRAIC[14];
}