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 26 entries in the algebraic variable array.
   There are a total of 8 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 (second).
 * CONSTANTS[0] is volume_i0 in component volume_i (volume).
 * CONSTANTS[43] is volume_i in component volume_i (volume).
 * CONSTANTS[1] is gamma in component volume_er (dimensionless).
 * CONSTANTS[44] is volume_er in component volume_er (volume).
 * STATES[0] is volumeCa_i in component volumeCa_i (microMVolume).
 * ALGEBRAIC[10] is Jipt in component Jipt (microMvolumepersec).
 * ALGEBRAIC[13] is Jryr in component Jryr (microMvolumepersec).
 * ALGEBRAIC[14] is Jer in component Jer (microMvolumepersec).
 * ALGEBRAIC[15] is Jserca in component Jserca (microMvolumepersec).
 * ALGEBRAIC[21] is Jin in component Jin (microMvolumepersec).
 * ALGEBRAIC[22] is Jpm in component Jpm (microMvolumepersec).
 * ALGEBRAIC[0] is Ca_i in component Ca_i (microM).
 * STATES[1] is volumeCa_er in component volumeCa_er (microMVolume).
 * ALGEBRAIC[1] is Ca_er in component Ca_er (microM).
 * STATES[2] is volume_iIP3 in component volume_iIP3 (microMVolume).
 * ALGEBRAIC[6] is J_ip3P in component J_ip3P (microMpersec).
 * ALGEBRAIC[8] is J_ip3D in component J_ip3D (microMpersec).
 * ALGEBRAIC[2] is IP3 in component IP3 (microM).
 * STATES[3] is PIP2 in component PIP2 (dimensionless).
 * CONSTANTS[2] is PIP2_Total in component PIP2 (microM).
 * CONSTANTS[45] is J_ip3R in component J_ip3R (per_sec).
 * ALGEBRAIC[3] is IPX in component IPX (dimensionless).
 * CONSTANTS[3] is PIP2_Total in component IPX (microM).
 * CONSTANTS[4] is J_ip3R0 in component J_ip3R (per_sec).
 * STATES[4] is ATP_e in component receptor (microM).
 * ALGEBRAIC[5] is V_IP3 in component receptor (microMpersec).
 * CONSTANTS[5] is MechanicalStimulation in component receptor (dimensionless).
 * ALGEBRAIC[4] is V_mech in component receptor (dimensionless).
 * CONSTANTS[6] is V_mech0 in component receptor (dimensionless).
 * CONSTANTS[7] is C_1 in component receptor (microMpersec).
 * CONSTANTS[8] is C_2 in component receptor (microM).
 * CONSTANTS[9] is C_3 in component receptor (microMpersec).
 * CONSTANTS[10] is C_4 in component receptor (microM).
 * CONSTANTS[11] is V_ATP in component receptor (microMpersec).
 * CONSTANTS[12] is K_ATP in component receptor (microM).
 * CONSTANTS[13] is Beta_1 in component J_ip3D (microMpersec).
 * CONSTANTS[14] is Beta_2 in component J_ip3D (microMpersec).
 * ALGEBRAIC[7] is F_Ca in component J_ip3D (dimensionless).
 * CONSTANTS[15] is K_rc in component J_ip3D (microM).
 * CONSTANTS[16] is K_IP3 in component J_ip3D (microM).
 * ALGEBRAIC[9] is Pipt in component Jipt (dimensionless).
 * STATES[5] is O in component O (dimensionless).
 * CONSTANTS[17] is Jipt0 in component Jipt (per_sec).
 * CONSTANTS[18] is Ka in component Jryr (microM).
 * CONSTANTS[19] is Kb in component Jryr (microM).
 * CONSTANTS[20] is Kc in component Jryr (dimensionless).
 * CONSTANTS[21] is Jryr0 in component Jryr (per_sec).
 * ALGEBRAIC[12] is Pryr in component Jryr (dimensionless).
 * ALGEBRAIC[11] is W_inf in component Jryr (dimensionless).
 * CONSTANTS[22] is Jer0 in component Jer (per_sec).
 * CONSTANTS[23] is Vserca in component Jserca (microM2persec).
 * CONSTANTS[24] is Kserca in component Jserca (microM).
 * CONSTANTS[25] is Vm in component Jin (milliV).
 * ALGEBRAIC[16] is V_Ca in component Jin (milliV).
 * CONSTANTS[26] is R in component Jin (millijoule_per_mole_kelvin).
 * CONSTANTS[27] is T in component Jin (kelvin).
 * CONSTANTS[28] is F in component Jin (coulomb_per_mole).
 * CONSTANTS[29] is z_Ca in component Jin (dimensionless).
 * CONSTANTS[30] is Ca_ext in component Jin (microM).
 * CONSTANTS[31] is P_pm_1 in component Jin (conductancepervolume).
 * CONSTANTS[32] is P_pm_2 in component Jin (conductancepervolume).
 * ALGEBRAIC[17] is Iin_1 in component Jin (current).
 * ALGEBRAIC[18] is Iin_2 in component Jin (current).
 * ALGEBRAIC[19] is Jin_1 in component Jin (microMvolumepersec).
 * ALGEBRAIC[20] is Jin_2 in component Jin (microMvolumepersec).
 * CONSTANTS[33] is Vpm in component Jpm (microMpersec).
 * CONSTANTS[34] is Kpm in component Jpm (microM).
 * ALGEBRAIC[23] is S in component O (dimensionless).
 * STATES[6] is I1 in component I1 (dimensionless).
 * STATES[7] is I2 in component I2 (dimensionless).
 * ALGEBRAIC[24] is k1 in component constants (per_secmicroM).
 * CONSTANTS[35] is k1_ in component constants (first_order_rate_constant).
 * CONSTANTS[36] is k2 in component constants (first_order_rate_constant).
 * CONSTANTS[37] is k3 in component constants (first_order_rate_constant).
 * ALGEBRAIC[25] is k4 in component constants (first_order_rate_constant).
 * CONSTANTS[38] is k5 in component constants (first_order_rate_constant).
 * CONSTANTS[39] is alpha_1 in component constants (per_secmicroM).
 * CONSTANTS[40] is beta_1 in component constants (microM).
 * CONSTANTS[41] is alpha_4 in component constants (first_order_rate_constant).
 * CONSTANTS[42] is beta_4 in component constants (microM).
 * RATES[0] is d/dt volumeCa_i in component volumeCa_i (microMVolume).
 * RATES[1] is d/dt volumeCa_er in component volumeCa_er (microMVolume).
 * RATES[2] is d/dt volume_iIP3 in component volume_iIP3 (microMVolume).
 * RATES[3] is d/dt PIP2 in component PIP2 (dimensionless).
 * RATES[4] is d/dt ATP_e in component receptor (microM).
 * RATES[5] is d/dt O in component O (dimensionless).
 * RATES[6] is d/dt I1 in component I1 (dimensionless).
 * RATES[7] is d/dt I2 in component I2 (dimensionless).
 * There are a total of 3 condition variables.
 */
void
initConsts(double* CONSTANTS, double* RATES, double *STATES)
{
CONSTANTS[0] = 1450;
CONSTANTS[1] = 4.9;
STATES[0] = 75.8335890358239;
STATES[1] = 1199.73747802144;
STATES[2] = -3.28287434380887e-93;
STATES[3] = 1;
CONSTANTS[2] = 5;
CONSTANTS[3] = 25;
CONSTANTS[4] = 10;
STATES[4] = 0;
CONSTANTS[5] = 0;
CONSTANTS[6] = 1;
CONSTANTS[7] = 2.6;
CONSTANTS[8] = 0.02;
CONSTANTS[9] = 2.3;
CONSTANTS[10] = 10;
CONSTANTS[11] = 0.001;
CONSTANTS[12] = 0.0001;
CONSTANTS[13] = 0;
CONSTANTS[14] = 36;
CONSTANTS[15] = 0.3;
CONSTANTS[16] = 0.01;
STATES[5] = -2.42013500345263e-89;
CONSTANTS[17] = 28;
CONSTANTS[18] = 0.3722419;
CONSTANTS[19] = 0.636005;
CONSTANTS[20] = 0.0571428;
CONSTANTS[21] = 0;
CONSTANTS[22] = 0.0035;
CONSTANTS[23] = 0.09;
CONSTANTS[24] = 0.04;
CONSTANTS[25] = -39;
CONSTANTS[26] = 8314;
CONSTANTS[27] = 310;
CONSTANTS[28] = 96485;
CONSTANTS[29] = 2;
CONSTANTS[30] = 1300;
CONSTANTS[31] = 0.6;
CONSTANTS[32] = 28;
CONSTANTS[33] = 0.072;
CONSTANTS[34] = 0.6;
STATES[6] = 2.24343309680416e-81;
STATES[7] = 1.01276768045278e-40;
CONSTANTS[35] = 0.88;
CONSTANTS[36] = 0.5;
CONSTANTS[37] = 0.5;
CONSTANTS[38] = 0.02;
CONSTANTS[39] = 40;
CONSTANTS[40] = 0.8;
CONSTANTS[41] = 0.06;
CONSTANTS[42] = 0.01;
CONSTANTS[43] = CONSTANTS[0];
CONSTANTS[44] = CONSTANTS[43]/CONSTANTS[1];
CONSTANTS[45] = CONSTANTS[4];
RATES[0] = 0.1001;
RATES[1] = 0.1001;
RATES[2] = 0.1001;
RATES[3] = 0.1001;
RATES[4] = 0.1001;
RATES[5] = 0.1001;
RATES[6] = 0.1001;
RATES[7] = 0.1001;
}
void
computeResiduals(double VOI, double* CONSTANTS, double* RATES, double* OLDRATES, double* STATES,
                 double* OLDSTATES, double* ALGEBRAIC, double* CONDVARS)
{
resid[0] = RATES[0] - ((ALGEBRAIC[10]+ALGEBRAIC[13]+ALGEBRAIC[14]) - ALGEBRAIC[15])+(ALGEBRAIC[21] - ALGEBRAIC[22]);
resid[1] = RATES[1] - - ((ALGEBRAIC[10]+ALGEBRAIC[13]+ALGEBRAIC[14]) - ALGEBRAIC[15]);
resid[2] = RATES[2] -  (ALGEBRAIC[6] - ALGEBRAIC[8])*CONSTANTS[43];
resid[3] = RATES[3] -  CONSTANTS[45]*ALGEBRAIC[3] - ALGEBRAIC[6]/CONSTANTS[2];
resid[4] = RATES[4] - ( - CONSTANTS[11]*STATES[4])/(CONSTANTS[12]+STATES[4]);
resid[5] = RATES[5] -  ALGEBRAIC[24]*ALGEBRAIC[2]*ALGEBRAIC[23] - ( CONSTANTS[35]*STATES[5]+ CONSTANTS[36]*STATES[5]);
resid[6] = RATES[6] -  CONSTANTS[36]*STATES[5] -  (CONSTANTS[37]+ALGEBRAIC[25])*STATES[6];
resid[7] = RATES[7] -  ALGEBRAIC[25]*STATES[6] -  CONSTANTS[38]*STATES[7];
}
void
computeVariables(double VOI, double* CONSTANTS, double* RATES, double* STATES, double* ALGEBRAIC)
{
ALGEBRAIC[11] = (1.00000+pow(CONSTANTS[18]/ALGEBRAIC[0], 4.00000)+pow(ALGEBRAIC[0]/CONSTANTS[19], 3.00000))/(1.00000+1.00000/CONSTANTS[20]+pow(ALGEBRAIC[0]/CONSTANTS[19], 3.00000)+pow(CONSTANTS[18]/ALGEBRAIC[0], 4.00000));
ALGEBRAIC[12] = ( ALGEBRAIC[11]*(1.00000+pow(CONSTANTS[18]/ALGEBRAIC[0], 4.00000)+pow(ALGEBRAIC[0]/CONSTANTS[19], 3.00000)))/(1.00000+1.00000/CONSTANTS[20]+pow(ALGEBRAIC[0]/CONSTANTS[19], 3.00000)+pow(CONSTANTS[18]/ALGEBRAIC[0], 4.00000));
}
void
computeEssentialVariables(double VOI, double* CONSTANTS, double* RATES, double* STATES, double* ALGEBRAIC)
{
ALGEBRAIC[2] = STATES[2]/CONSTANTS[43];
ALGEBRAIC[3] = (1.00000 - ALGEBRAIC[2]/CONSTANTS[3]) - STATES[3];
ALGEBRAIC[5] = ( CONSTANTS[7]*STATES[4])/(CONSTANTS[8]+STATES[4])+( CONSTANTS[9]*pow(STATES[4], 2.00000))/(pow(CONSTANTS[10], 2.00000)+pow(STATES[4], 2.00000));
ALGEBRAIC[6] =  ALGEBRAIC[5]*STATES[3];
ALGEBRAIC[0] = STATES[0]/CONSTANTS[43];
ALGEBRAIC[7] = ALGEBRAIC[0]/(CONSTANTS[15]+ALGEBRAIC[0]);
ALGEBRAIC[8] = ( (CONSTANTS[13]+ CONSTANTS[14]*pow(ALGEBRAIC[7], 2.00000))*ALGEBRAIC[2])/(CONSTANTS[16]+ALGEBRAIC[2]);
ALGEBRAIC[1] = STATES[1]/CONSTANTS[44];
ALGEBRAIC[9] = pow(STATES[5], 4.00000);
ALGEBRAIC[10] =  CONSTANTS[17]*CONSTANTS[0]*ALGEBRAIC[9]*(ALGEBRAIC[1] - ALGEBRAIC[0]);
ALGEBRAIC[13] =  CONSTANTS[21]*CONSTANTS[0]*(ALGEBRAIC[1] - ALGEBRAIC[0]);
ALGEBRAIC[14] =  CONSTANTS[22]*CONSTANTS[0]*(ALGEBRAIC[1] - ALGEBRAIC[0]);
ALGEBRAIC[15] = ( (( CONSTANTS[0]*CONSTANTS[23]*pow(ALGEBRAIC[0], 2.00000))/(pow(CONSTANTS[24], 2.00000)+pow(ALGEBRAIC[0], 2.00000)))*1.00000)/ALGEBRAIC[1];
ALGEBRAIC[16] =  (( CONSTANTS[26]*CONSTANTS[27])/( CONSTANTS[29]*CONSTANTS[28]))*log(CONSTANTS[30]/ALGEBRAIC[0]);
ALGEBRAIC[17] =  CONSTANTS[0]*CONSTANTS[31]*(ALGEBRAIC[16] - CONSTANTS[25]);
ALGEBRAIC[19] = ALGEBRAIC[17]/( CONSTANTS[29]*CONSTANTS[28]);
ALGEBRAIC[4] = (CONDVAR[0]>0.00000&&CONDVAR[1]<0.00000&&CONDVAR[2]>0.00000 ? CONSTANTS[6] : 0.00000);
ALGEBRAIC[18] =  CONSTANTS[0]*CONSTANTS[32]*ALGEBRAIC[4]*(ALGEBRAIC[16] - CONSTANTS[25]);
ALGEBRAIC[20] = ALGEBRAIC[18]/( CONSTANTS[29]*CONSTANTS[28]);
ALGEBRAIC[21] = ALGEBRAIC[19]+ALGEBRAIC[20];
ALGEBRAIC[22] = ( CONSTANTS[33]*CONSTANTS[0]*pow(ALGEBRAIC[0], 2.00000))/(pow(CONSTANTS[34], 2.00000)+pow(ALGEBRAIC[0], 2.00000));
ALGEBRAIC[23] = 1.00000 - (STATES[5]+STATES[6]+STATES[7]);
ALGEBRAIC[24] = ( CONSTANTS[39]*pow(ALGEBRAIC[0], 3.00000))/(pow(CONSTANTS[40], 3.00000)+pow(ALGEBRAIC[0], 3.00000));
ALGEBRAIC[25] = ( CONSTANTS[41]*ALGEBRAIC[2])/(CONSTANTS[42]+ALGEBRAIC[2]);
}
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;
}
void
computeRoots(double VOI, double* CONSTANTS, double* RATES, double* OLDRATES, double* STATES,
             double* OLDSTATES, double* ALGEBRAIC, double* CONDVARS)
{
CONDVAR[0] = VOI - 10.0000;
CONDVAR[1] = VOI - 25.0000;
CONDVAR[2] = CONSTANTS[5] - 0.00000;
}