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 30 entries in the algebraic variable array.
   There are a total of 9 entries in each of the rate and state variable arrays.
   There are a total of 27 entries in the constant variable array.
 */
/*
 * VOI is time in component environment (second).
 * CONSTANTS[0] is C_m_Imp in component imported_variables (mmol_per_cm3).
 * CONSTANTS[1] is C_c_Imp in component imported_variables (mmol_per_cm3).
 * CONSTANTS[2] is psi_m in component imported_variables (millivolt).
 * CONSTANTS[3] is psi_c in component imported_variables (millivolt).
 * STATES[0] is C_m_Na in component solute_concentrations (mmol_per_cm3).
 * STATES[1] is C_m_K in component solute_concentrations (mmol_per_cm3).
 * STATES[2] is C_m_Cl in component solute_concentrations (mmol_per_cm3).
 * STATES[3] is C_c_Na in component solute_concentrations (mmol_per_cm3).
 * STATES[4] is C_c_K in component solute_concentrations (mmol_per_cm3).
 * STATES[5] is C_c_Cl in component solute_concentrations (mmol_per_cm3).
 * STATES[6] is C_s_Na in component solute_concentrations (mmol_per_cm3).
 * STATES[7] is C_s_K in component solute_concentrations (mmol_per_cm3).
 * STATES[8] is C_s_Cl in component solute_concentrations (mmol_per_cm3).
 * ALGEBRAIC[4] is J_mc_Na in component mc_sodium_flux (flux).
 * ALGEBRAIC[22] is J_ms_Na in component ms_sodium_flux (flux).
 * ALGEBRAIC[16] is J_sc_Na in component sc_sodium_flux (flux).
 * ALGEBRAIC[11] is J_mc_K in component mc_potassium_flux (flux).
 * ALGEBRAIC[25] is J_ms_K in component ms_potassium_flux (flux).
 * ALGEBRAIC[20] is J_sc_K in component sc_potassium_flux (flux).
 * ALGEBRAIC[15] is J_mc_Cl in component mc_chloride_flux (flux).
 * ALGEBRAIC[26] is J_ms_Cl in component ms_chloride_flux (flux).
 * ALGEBRAIC[21] is J_sc_Cl in component sc_chloride_flux (flux).
 * CONSTANTS[4] is RT in component constants (J_per_mmol).
 * CONSTANTS[5] is F in component constants (C_per_mmol).
 * CONSTANTS[6] is C_s_Imp in component constants (mmol_per_cm3).
 * CONSTANTS[7] is psi_s in component constants (millivolt).
 * ALGEBRAIC[2] is J_mc_NaCl in component mc_sodium_flux (flux).
 * ALGEBRAIC[0] is G_mc_Na in component mc_sodium_flux (flux).
 * CONSTANTS[8] is P_mc_Na in component mc_sodium_flux (cm_per_s).
 * CONSTANTS[9] is J_mc_NaCl_max in component mc_sodium_flux (flux).
 * CONSTANTS[10] is K_mc_Na_NaCl in component mc_sodium_flux (mmol_per_cm3).
 * CONSTANTS[11] is K_mc_Cl_NaCl in component mc_sodium_flux (mmol_per_cm3).
 * ALGEBRAIC[9] is J_mc_KCl in component mc_potassium_flux (flux).
 * ALGEBRAIC[6] is G_mc_K in component mc_potassium_flux (flux).
 * CONSTANTS[12] is J_mc_KCl_max in component mc_potassium_flux (flux).
 * CONSTANTS[13] is K_mc_K_KCl in component mc_potassium_flux (mmol_per_cm3).
 * CONSTANTS[14] is K_mc_Cl_KCl in component mc_potassium_flux (mmol_per_cm3).
 * CONSTANTS[15] is P_mc_K in component mc_potassium_flux (cm_per_s).
 * ALGEBRAIC[12] is G_mc_Cl in component mc_chloride_flux (flux).
 * CONSTANTS[16] is P_mc_Cl in component mc_chloride_flux (cm_per_s).
 * ALGEBRAIC[14] is J_a in component sc_sodium_flux (flux).
 * CONSTANTS[17] is J_a_max in component sc_sodium_flux (flux).
 * CONSTANTS[18] is K_Na_ATPase in component sc_sodium_flux (mmol_per_cm3).
 * ALGEBRAIC[17] is G_sc_K in component sc_potassium_flux (flux).
 * CONSTANTS[19] is P_sc_K in component sc_potassium_flux (cm_per_s).
 * ALGEBRAIC[18] is G_sc_Cl in component sc_chloride_flux (flux).
 * CONSTANTS[20] is P_sc_Cl in component sc_chloride_flux (cm_per_s).
 * ALGEBRAIC[19] is G_ms_Na in component ms_sodium_flux (flux).
 * CONSTANTS[21] is P_ms_Na in component ms_sodium_flux (cm_per_s).
 * ALGEBRAIC[23] is G_ms_K in component ms_potassium_flux (flux).
 * CONSTANTS[22] is P_ms_K in component ms_potassium_flux (cm_per_s).
 * ALGEBRAIC[24] is G_ms_Cl in component ms_chloride_flux (flux).
 * CONSTANTS[23] is P_ms_Cl in component ms_chloride_flux (cm_per_s).
 * ALGEBRAIC[27] is J_Na in component total_transepithelial_sodium_flux (flux).
 * ALGEBRAIC[28] is J_K in component total_transepithelial_potassium_flux (flux).
 * ALGEBRAIC[29] is J_Cl in component total_transepithelial_chloride_flux (flux).
 * ALGEBRAIC[1] is Osm_m in component osmolarities (mmol_per_cm3).
 * ALGEBRAIC[3] is Osm_c in component osmolarities (mmol_per_cm3).
 * ALGEBRAIC[5] is Osm_s in component osmolarities (mmol_per_cm3).
 * ALGEBRAIC[7] is J_mc_v in component mc_transepithelial_volume_flux (cm_per_s).
 * CONSTANTS[24] is L_mc_v in component mc_transepithelial_volume_flux (cm_per_s_mmHg).
 * ALGEBRAIC[10] is J_ms_v in component ms_transepithelial_volume_flux (cm_per_s).
 * CONSTANTS[25] is L_ms_v in component ms_transepithelial_volume_flux (cm_per_s_mmHg).
 * ALGEBRAIC[8] is J_sc_v in component sc_transepithelial_volume_flux (cm_per_s).
 * CONSTANTS[26] is L_sc_v in component sc_transepithelial_volume_flux (cm_per_s_mmHg).
 * ALGEBRAIC[13] is J_v in component total_transepithelial_volume_flux (cm_per_s).
 * RATES[0] is d/dt C_m_Na in component solute_concentrations (mmol_per_cm3).
 * RATES[6] is d/dt C_s_Na in component solute_concentrations (mmol_per_cm3).
 * RATES[3] is d/dt C_c_Na in component solute_concentrations (mmol_per_cm3).
 * RATES[1] is d/dt C_m_K in component solute_concentrations (mmol_per_cm3).
 * RATES[7] is d/dt C_s_K in component solute_concentrations (mmol_per_cm3).
 * RATES[4] is d/dt C_c_K in component solute_concentrations (mmol_per_cm3).
 * RATES[2] is d/dt C_m_Cl in component solute_concentrations (mmol_per_cm3).
 * RATES[8] is d/dt C_s_Cl in component solute_concentrations (mmol_per_cm3).
 * RATES[5] is d/dt C_c_Cl in component solute_concentrations (mmol_per_cm3).
 */
void
initConsts(double* CONSTANTS, double* RATES, double *STATES)
{
CONSTANTS[0] = 0.1033;
CONSTANTS[1] = 0.1124;
CONSTANTS[2] = -28.0;
CONSTANTS[3] = -86.4;
STATES[0] = 0.05;
STATES[1] = 0.002;
STATES[2] = 0.03;
STATES[3] = 0.0164;
STATES[4] = 0.1637;
STATES[5] = 0.0203;
STATES[6] = 1.438E-1;
STATES[7] = 4.25E-3;
STATES[8] = 1.12E-1;
CONSTANTS[4] = 2.579;
CONSTANTS[5] = 96.48;
CONSTANTS[6] = 4.525E-2;
CONSTANTS[7] = 0.0;
CONSTANTS[8] = 3.27E-6;
CONSTANTS[9] = 3.21E-5;
CONSTANTS[10] = 5.11E-2;
CONSTANTS[11] = 1.92E-2;
CONSTANTS[12] = 6.31E-8;
CONSTANTS[13] = 5.30E-2;
CONSTANTS[14] = 2.13E-2;
CONSTANTS[15] = 4.90E-7;
CONSTANTS[16] = 1.43E-6;
CONSTANTS[17] = 2.69E-6;
CONSTANTS[18] = 1.20E-2;
CONSTANTS[19] = 4.74E-4;
CONSTANTS[20] = 9.16E-5;
CONSTANTS[21] = 4.80E-6;
CONSTANTS[22] = 4.80E-6;
CONSTANTS[23] = 2.40E-6;
CONSTANTS[24] = 5.22E-9;
CONSTANTS[25] = 0.0;
CONSTANTS[26] = 5.22E-7;
}
void
computeRates(double VOI, double* CONSTANTS, double* RATES, double* STATES, double* ALGEBRAIC)
{
ALGEBRAIC[2] =  CONSTANTS[9]*(( (STATES[0]/CONSTANTS[10])*(STATES[2]/CONSTANTS[11]) -  (STATES[3]/CONSTANTS[10])*(STATES[5]/CONSTANTS[11]))/( (1.00000+ (STATES[0]/CONSTANTS[10])*(STATES[2]/CONSTANTS[11]))*(1.00000+STATES[3]/CONSTANTS[10])*(1.00000+STATES[5]/CONSTANTS[11])+ (1.00000+ (STATES[3]/CONSTANTS[10])*(STATES[5]/CONSTANTS[11]))*(1.00000+STATES[0]/CONSTANTS[10])*(1.00000+STATES[2]/CONSTANTS[11])));
ALGEBRAIC[0] =  CONSTANTS[8]*(( CONSTANTS[5]*(CONSTANTS[2] - CONSTANTS[3]))/CONSTANTS[4])*((STATES[0] -  STATES[3]*exp( - (CONSTANTS[5]/CONSTANTS[4])*(CONSTANTS[2] - CONSTANTS[3])))/(1.00000 - exp( - (CONSTANTS[5]/CONSTANTS[4])*(CONSTANTS[2] - CONSTANTS[3]))));
ALGEBRAIC[4] = ALGEBRAIC[2]+ALGEBRAIC[0];
ALGEBRAIC[14] =  CONSTANTS[17]*(1.00000/(1.00000+pow(CONSTANTS[18]/STATES[3], 3.00000)));
ALGEBRAIC[16] =  -3.00000*ALGEBRAIC[14];
RATES[3] = ALGEBRAIC[4]+ALGEBRAIC[16];
ALGEBRAIC[9] =  CONSTANTS[12]*(( (STATES[1]/CONSTANTS[13])*(STATES[2]/CONSTANTS[14]) -  (STATES[4]/CONSTANTS[13])*(STATES[5]/CONSTANTS[14]))/( (1.00000+ (STATES[1]/CONSTANTS[13])*(STATES[2]/CONSTANTS[14]))*(1.00000+STATES[4]/CONSTANTS[13])*(1.00000+STATES[5]/CONSTANTS[14])+ (1.00000+ (STATES[4]/CONSTANTS[13])*(STATES[5]/CONSTANTS[14]))*(1.00000+STATES[1]/CONSTANTS[13])*(1.00000+STATES[2]/CONSTANTS[14])));
ALGEBRAIC[6] =  CONSTANTS[15]*(( CONSTANTS[5]*(CONSTANTS[2] - CONSTANTS[3]))/CONSTANTS[4])*((STATES[1] -  STATES[4]*exp( - (CONSTANTS[5]/CONSTANTS[4])*(CONSTANTS[2] - CONSTANTS[3])))/(1.00000 - exp( - (CONSTANTS[5]/CONSTANTS[4])*(CONSTANTS[2] - CONSTANTS[3]))));
ALGEBRAIC[11] = ALGEBRAIC[9]+ALGEBRAIC[6];
ALGEBRAIC[17] =  CONSTANTS[19]*(( CONSTANTS[5]*(CONSTANTS[7] - CONSTANTS[3]))/CONSTANTS[4])*((STATES[7] -  STATES[4]*exp( - (CONSTANTS[5]/CONSTANTS[4])*(CONSTANTS[7] - CONSTANTS[3])))/(1.00000 - exp( - (CONSTANTS[5]/CONSTANTS[4])*(CONSTANTS[7] - CONSTANTS[3]))));
ALGEBRAIC[20] =  2.00000*ALGEBRAIC[14]+ALGEBRAIC[17];
RATES[4] = ALGEBRAIC[11]+ALGEBRAIC[20];
ALGEBRAIC[12] =  CONSTANTS[16]*(( -1.00000*CONSTANTS[5]*(CONSTANTS[2] - CONSTANTS[3]))/CONSTANTS[4])*((STATES[2] -  STATES[5]*exp( - (( -1.00000*CONSTANTS[5])/CONSTANTS[4])*(CONSTANTS[2] - CONSTANTS[3])))/(1.00000 - exp( - (( -1.00000*CONSTANTS[5])/CONSTANTS[4])*(CONSTANTS[2] - CONSTANTS[3]))));
ALGEBRAIC[15] = ALGEBRAIC[2]+ALGEBRAIC[9]+ALGEBRAIC[12];
ALGEBRAIC[18] =  CONSTANTS[20]*(( -1.00000*CONSTANTS[5]*(CONSTANTS[7] - CONSTANTS[3]))/CONSTANTS[4])*((STATES[8] -  STATES[5]*exp( - (( -1.00000*CONSTANTS[5])/CONSTANTS[4])*(CONSTANTS[7] - CONSTANTS[3])))/(1.00000 - exp( - (( -1.00000*CONSTANTS[5])/CONSTANTS[4])*(CONSTANTS[7] - CONSTANTS[3]))));
ALGEBRAIC[21] = ALGEBRAIC[18];
RATES[5] = ALGEBRAIC[15]+ALGEBRAIC[21];
ALGEBRAIC[19] =  CONSTANTS[21]*(( CONSTANTS[5]*(CONSTANTS[2] - CONSTANTS[7]))/CONSTANTS[4])*((STATES[0] -  STATES[6]*exp( - (CONSTANTS[5]/CONSTANTS[4])*(CONSTANTS[2] - CONSTANTS[7])))/(1.00000 - exp( - (CONSTANTS[5]/CONSTANTS[4])*(CONSTANTS[2] - CONSTANTS[7]))));
ALGEBRAIC[22] = ALGEBRAIC[19];
RATES[0] = - (ALGEBRAIC[4]+ALGEBRAIC[22]);
RATES[6] = ALGEBRAIC[22] - ALGEBRAIC[16];
ALGEBRAIC[23] =  CONSTANTS[22]*(( CONSTANTS[5]*(CONSTANTS[2] - CONSTANTS[7]))/CONSTANTS[4])*((STATES[1] -  STATES[7]*exp( - (CONSTANTS[5]/CONSTANTS[4])*(CONSTANTS[2] - CONSTANTS[7])))/(1.00000 - exp( - (CONSTANTS[5]/CONSTANTS[4])*(CONSTANTS[2] - CONSTANTS[7]))));
ALGEBRAIC[25] = ALGEBRAIC[23];
RATES[1] = - (ALGEBRAIC[11]+ALGEBRAIC[25]);
RATES[7] = ALGEBRAIC[25] - ALGEBRAIC[20];
ALGEBRAIC[24] =  CONSTANTS[23]*(( -1.00000*CONSTANTS[5]*(CONSTANTS[2] - CONSTANTS[7]))/CONSTANTS[4])*((STATES[2] -  STATES[8]*exp( - (( -1.00000*CONSTANTS[5])/CONSTANTS[4])*(CONSTANTS[2] - CONSTANTS[7])))/(1.00000 - exp( - (( -1.00000*CONSTANTS[5])/CONSTANTS[4])*(CONSTANTS[2] - CONSTANTS[7]))));
ALGEBRAIC[26] = ALGEBRAIC[24];
RATES[2] = - (ALGEBRAIC[15]+ALGEBRAIC[26]);
RATES[8] = ALGEBRAIC[26] - ALGEBRAIC[21];
}
void
computeVariables(double VOI, double* CONSTANTS, double* RATES, double* STATES, double* ALGEBRAIC)
{
ALGEBRAIC[2] =  CONSTANTS[9]*(( (STATES[0]/CONSTANTS[10])*(STATES[2]/CONSTANTS[11]) -  (STATES[3]/CONSTANTS[10])*(STATES[5]/CONSTANTS[11]))/( (1.00000+ (STATES[0]/CONSTANTS[10])*(STATES[2]/CONSTANTS[11]))*(1.00000+STATES[3]/CONSTANTS[10])*(1.00000+STATES[5]/CONSTANTS[11])+ (1.00000+ (STATES[3]/CONSTANTS[10])*(STATES[5]/CONSTANTS[11]))*(1.00000+STATES[0]/CONSTANTS[10])*(1.00000+STATES[2]/CONSTANTS[11])));
ALGEBRAIC[0] =  CONSTANTS[8]*(( CONSTANTS[5]*(CONSTANTS[2] - CONSTANTS[3]))/CONSTANTS[4])*((STATES[0] -  STATES[3]*exp( - (CONSTANTS[5]/CONSTANTS[4])*(CONSTANTS[2] - CONSTANTS[3])))/(1.00000 - exp( - (CONSTANTS[5]/CONSTANTS[4])*(CONSTANTS[2] - CONSTANTS[3]))));
ALGEBRAIC[4] = ALGEBRAIC[2]+ALGEBRAIC[0];
ALGEBRAIC[14] =  CONSTANTS[17]*(1.00000/(1.00000+pow(CONSTANTS[18]/STATES[3], 3.00000)));
ALGEBRAIC[16] =  -3.00000*ALGEBRAIC[14];
ALGEBRAIC[9] =  CONSTANTS[12]*(( (STATES[1]/CONSTANTS[13])*(STATES[2]/CONSTANTS[14]) -  (STATES[4]/CONSTANTS[13])*(STATES[5]/CONSTANTS[14]))/( (1.00000+ (STATES[1]/CONSTANTS[13])*(STATES[2]/CONSTANTS[14]))*(1.00000+STATES[4]/CONSTANTS[13])*(1.00000+STATES[5]/CONSTANTS[14])+ (1.00000+ (STATES[4]/CONSTANTS[13])*(STATES[5]/CONSTANTS[14]))*(1.00000+STATES[1]/CONSTANTS[13])*(1.00000+STATES[2]/CONSTANTS[14])));
ALGEBRAIC[6] =  CONSTANTS[15]*(( CONSTANTS[5]*(CONSTANTS[2] - CONSTANTS[3]))/CONSTANTS[4])*((STATES[1] -  STATES[4]*exp( - (CONSTANTS[5]/CONSTANTS[4])*(CONSTANTS[2] - CONSTANTS[3])))/(1.00000 - exp( - (CONSTANTS[5]/CONSTANTS[4])*(CONSTANTS[2] - CONSTANTS[3]))));
ALGEBRAIC[11] = ALGEBRAIC[9]+ALGEBRAIC[6];
ALGEBRAIC[17] =  CONSTANTS[19]*(( CONSTANTS[5]*(CONSTANTS[7] - CONSTANTS[3]))/CONSTANTS[4])*((STATES[7] -  STATES[4]*exp( - (CONSTANTS[5]/CONSTANTS[4])*(CONSTANTS[7] - CONSTANTS[3])))/(1.00000 - exp( - (CONSTANTS[5]/CONSTANTS[4])*(CONSTANTS[7] - CONSTANTS[3]))));
ALGEBRAIC[20] =  2.00000*ALGEBRAIC[14]+ALGEBRAIC[17];
ALGEBRAIC[12] =  CONSTANTS[16]*(( -1.00000*CONSTANTS[5]*(CONSTANTS[2] - CONSTANTS[3]))/CONSTANTS[4])*((STATES[2] -  STATES[5]*exp( - (( -1.00000*CONSTANTS[5])/CONSTANTS[4])*(CONSTANTS[2] - CONSTANTS[3])))/(1.00000 - exp( - (( -1.00000*CONSTANTS[5])/CONSTANTS[4])*(CONSTANTS[2] - CONSTANTS[3]))));
ALGEBRAIC[15] = ALGEBRAIC[2]+ALGEBRAIC[9]+ALGEBRAIC[12];
ALGEBRAIC[18] =  CONSTANTS[20]*(( -1.00000*CONSTANTS[5]*(CONSTANTS[7] - CONSTANTS[3]))/CONSTANTS[4])*((STATES[8] -  STATES[5]*exp( - (( -1.00000*CONSTANTS[5])/CONSTANTS[4])*(CONSTANTS[7] - CONSTANTS[3])))/(1.00000 - exp( - (( -1.00000*CONSTANTS[5])/CONSTANTS[4])*(CONSTANTS[7] - CONSTANTS[3]))));
ALGEBRAIC[21] = ALGEBRAIC[18];
ALGEBRAIC[19] =  CONSTANTS[21]*(( CONSTANTS[5]*(CONSTANTS[2] - CONSTANTS[7]))/CONSTANTS[4])*((STATES[0] -  STATES[6]*exp( - (CONSTANTS[5]/CONSTANTS[4])*(CONSTANTS[2] - CONSTANTS[7])))/(1.00000 - exp( - (CONSTANTS[5]/CONSTANTS[4])*(CONSTANTS[2] - CONSTANTS[7]))));
ALGEBRAIC[22] = ALGEBRAIC[19];
ALGEBRAIC[23] =  CONSTANTS[22]*(( CONSTANTS[5]*(CONSTANTS[2] - CONSTANTS[7]))/CONSTANTS[4])*((STATES[1] -  STATES[7]*exp( - (CONSTANTS[5]/CONSTANTS[4])*(CONSTANTS[2] - CONSTANTS[7])))/(1.00000 - exp( - (CONSTANTS[5]/CONSTANTS[4])*(CONSTANTS[2] - CONSTANTS[7]))));
ALGEBRAIC[25] = ALGEBRAIC[23];
ALGEBRAIC[24] =  CONSTANTS[23]*(( -1.00000*CONSTANTS[5]*(CONSTANTS[2] - CONSTANTS[7]))/CONSTANTS[4])*((STATES[2] -  STATES[8]*exp( - (( -1.00000*CONSTANTS[5])/CONSTANTS[4])*(CONSTANTS[2] - CONSTANTS[7])))/(1.00000 - exp( - (( -1.00000*CONSTANTS[5])/CONSTANTS[4])*(CONSTANTS[2] - CONSTANTS[7]))));
ALGEBRAIC[26] = ALGEBRAIC[24];
ALGEBRAIC[1] = STATES[0]+STATES[1]+STATES[2]+CONSTANTS[0];
ALGEBRAIC[3] = STATES[3]+STATES[4]+STATES[5]+CONSTANTS[1];
ALGEBRAIC[5] = STATES[6]+STATES[7]+STATES[8]+CONSTANTS[6];
ALGEBRAIC[7] =  CONSTANTS[24]*CONSTANTS[4]*(ALGEBRAIC[1] - ALGEBRAIC[3]);
ALGEBRAIC[8] =  CONSTANTS[26]*CONSTANTS[4]*(ALGEBRAIC[5] - ALGEBRAIC[3]);
ALGEBRAIC[10] =  CONSTANTS[25]*CONSTANTS[4]*(ALGEBRAIC[1] - ALGEBRAIC[5]);
ALGEBRAIC[13] = ALGEBRAIC[7]+ALGEBRAIC[10];
ALGEBRAIC[27] = ALGEBRAIC[4]+ALGEBRAIC[22];
ALGEBRAIC[28] = ALGEBRAIC[11]+ALGEBRAIC[25];
ALGEBRAIC[29] = ALGEBRAIC[15]+ALGEBRAIC[26];
}