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 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[5] 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[7] is dimless_Na_e in component NaK_pump (dimensionless).
 * ALGEBRAIC[6] 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[8] is alpha1 in component NaK_pump (rate).
 * CONSTANTS[29] is alpha2 in component NaK_pump (rate).
 * ALGEBRAIC[9] 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[1] is dG_Na in component NaK_pump (energy).
 * ALGEBRAIC[2] is dG_K in component NaK_pump (energy).
 * ALGEBRAIC[3] is dG_pump in component NaK_pump (energy).
 * ALGEBRAIC[4] 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).
 * There are a total of 0 condition variables.
 */
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
computeResiduals(double VOI, double* CONSTANTS, double* RATES, double* OLDRATES, double* STATES,
                 double* OLDSTATES, double* ALGEBRAIC, double* CONDVARS)
{
resid[0] = RATES[0] - CONSTANTS[31];
resid[1] = RATES[1] - CONSTANTS[32];
resid[2] = 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] =  CONSTANTS[1]*CONSTANTS[0]*log(CONSTANTS[19]/STATES[2]) -  CONSTANTS[2]*0.00100000*STATES[0];
ALGEBRAIC[2] =  CONSTANTS[1]*CONSTANTS[0]*log(CONSTANTS[21]/CONSTANTS[20])+ CONSTANTS[2]*0.00100000*STATES[0];
ALGEBRAIC[3] =  2.00000*ALGEBRAIC[2]+ 3.00000*ALGEBRAIC[1];
ALGEBRAIC[4] = -29600.0 -  CONSTANTS[1]*CONSTANTS[0]*log(CONSTANTS[22]/( 0.00100000*STATES[1]*ALGEBRAIC[0]));
ALGEBRAIC[5] = ALGEBRAIC[4]+ALGEBRAIC[3];
ALGEBRAIC[6] = STATES[2]/( CONSTANTS[12]*exp(( CONSTANTS[25]*CONSTANTS[2]*0.00100000*STATES[0])/( 3.00000*CONSTANTS[1]*CONSTANTS[0])));
ALGEBRAIC[7] = CONSTANTS[19]/( CONSTANTS[11]*exp(( (1.00000+CONSTANTS[25])*CONSTANTS[2]*0.00100000*STATES[0])/( 3.00000*CONSTANTS[1]*CONSTANTS[0])));
ALGEBRAIC[8] = ( CONSTANTS[3]*pow(ALGEBRAIC[6], 3.00000))/((pow(1.00000+ALGEBRAIC[6], 3.00000)+pow(1.00000+CONSTANTS[26], 2.00000)) - 1.00000);
ALGEBRAIC[9] = ( CONSTANTS[7]*pow(CONSTANTS[27], 2.00000))/((pow(1.00000+ALGEBRAIC[7], 3.00000)+pow(1.00000+CONSTANTS[27], 2.00000)) - 1.00000);
ALGEBRAIC[10] =  CONSTANTS[4]*STATES[1];
ALGEBRAIC[11] = ( CONSTANTS[6]*pow(ALGEBRAIC[7], 3.00000))/((pow(1.00000+ALGEBRAIC[7], 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[6], 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[9]+ CONSTANTS[30]*ALGEBRAIC[10]*ALGEBRAIC[9]+ ALGEBRAIC[12]*ALGEBRAIC[11]*ALGEBRAIC[8]+ CONSTANTS[30]*ALGEBRAIC[11]*ALGEBRAIC[8]+ CONSTANTS[30]*ALGEBRAIC[8]*ALGEBRAIC[9]+ ALGEBRAIC[12]*ALGEBRAIC[8]*CONSTANTS[29]+ CONSTANTS[30]*ALGEBRAIC[8]*CONSTANTS[29]+ ALGEBRAIC[8]*CONSTANTS[29]*ALGEBRAIC[9]+ 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[9]+ ALGEBRAIC[13]*ALGEBRAIC[10]*ALGEBRAIC[9];
ALGEBRAIC[15] = ( ALGEBRAIC[8]*CONSTANTS[29]*ALGEBRAIC[9]*CONSTANTS[30] -  ALGEBRAIC[10]*ALGEBRAIC[11]*ALGEBRAIC[12]*ALGEBRAIC[13])/ALGEBRAIC[14];
}
void
computeEssentialVariables(double VOI, double* CONSTANTS, double* RATES, double* STATES, double* ALGEBRAIC)
{
}
void
getStateInformation(double* SI)
{
SI[0] = 1.0;
SI[1] = 1.0;
SI[2] = 1.0;
}
void
computeRoots(double VOI, double* CONSTANTS, double* RATES, double* OLDRATES, double* STATES,
             double* OLDSTATES, double* ALGEBRAIC, double* CONDVARS)
{
}