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 6 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 20 entries in the constant variable array.
 */
/*
 * VOI is time in component environment (ms).
 * ALGEBRAIC[1] is Ca_i in component intracellular_ion_concentrations (uM).
 * ALGEBRAIC[0] is mtime in component intracellular_ion_concentrations (dimensionless).
 * STATES[0] is xb in component crossbridges (dimensionless).
 * STATES[1] is TRPN in component troponin (dimensionless).
 * CONSTANTS[0] is k_xb in component crossbridges (per_ms).
 * CONSTANTS[1] is nperm in component crossbridges (dimensionless).
 * CONSTANTS[2] is perm50 in component crossbridges (dimensionless).
 * ALGEBRAIC[2] is permtot in component crossbridges (dimensionless).
 * CONSTANTS[3] is Ca_50ref in component troponin (uM).
 * CONSTANTS[4] is beta_1 in component troponin (dimensionless).
 * CONSTANTS[5] is k_off in component troponin (per_ms).
 * CONSTANTS[6] is n_TRPN in component troponin (dimensionless).
 * CONSTANTS[16] is lambda_m in component filament_overlap (dimensionless).
 * CONSTANTS[17] is Ca_50 in component troponin (uM).
 * CONSTANTS[14] is lambda in component Myofilaments (dimensionless).
 * CONSTANTS[15] is dlambdadt in component Myofilaments (per_ms).
 * CONSTANTS[19] is overlap in component filament_overlap (dimensionless).
 * CONSTANTS[7] is beta_0 in component filament_overlap (dimensionless).
 * CONSTANTS[18] is lambda_s in component filament_overlap (dimensionless).
 * CONSTANTS[8] is T_ref in component isometric_tension (kPa).
 * ALGEBRAIC[3] is T_0 in component isometric_tension (kPa).
 * ALGEBRAIC[4] is Q in component dynamic_stiffness (dimensionless).
 * CONSTANTS[9] is a in component dynamic_stiffness (dimensionless).
 * STATES[2] is Q_1 in component dynamic_stiffness (dimensionless).
 * STATES[3] is Q_2 in component dynamic_stiffness (dimensionless).
 * CONSTANTS[10] is A_1 in component dynamic_stiffness (dimensionless).
 * CONSTANTS[11] is A_2 in component dynamic_stiffness (dimensionless).
 * CONSTANTS[12] is alpha_1 in component dynamic_stiffness (per_ms).
 * CONSTANTS[13] is alpha_2 in component dynamic_stiffness (per_ms).
 * ALGEBRAIC[5] is Tension in component dynamic_stiffness (kPa).
 * RATES[0] is d/dt xb in component crossbridges (dimensionless).
 * RATES[1] is d/dt TRPN in component troponin (dimensionless).
 * RATES[2] is d/dt Q_1 in component dynamic_stiffness (dimensionless).
 * RATES[3] is d/dt Q_2 in component dynamic_stiffness (dimensionless).
 * There are a total of 4 condition variables.
 */
void
initConsts(double* CONSTANTS, double* RATES, double *STATES)
{
STATES[0] = 0.00046;
STATES[1] = 0.0752;
CONSTANTS[0] = 0.1;
CONSTANTS[1] = 5;
CONSTANTS[2] = 0.35;
CONSTANTS[3] = 0.8;
CONSTANTS[4] = -1.5;
CONSTANTS[5] = 0.1;
CONSTANTS[6] = 2;
CONSTANTS[7] = 1.65;
CONSTANTS[8] = 120;
CONSTANTS[9] = 0.35;
STATES[2] = 0;
STATES[3] = 0;
CONSTANTS[10] = -29;
CONSTANTS[11] = 116;
CONSTANTS[12] = 0.1;
CONSTANTS[13] = 0.5;
CONSTANTS[14] = 1.00000;
CONSTANTS[15] = 0.00000;
CONSTANTS[16] = (CONSTANTS[14]>1.20000 ? 1.20000 : CONSTANTS[14]);
CONSTANTS[17] =  CONSTANTS[3]*(1.00000+ CONSTANTS[4]*(CONSTANTS[16] - 1.00000));
CONSTANTS[18] = (CONSTANTS[16]>=0.870000 ? 0.870000 : CONSTANTS[16]);
CONSTANTS[19] = 1.00000+ CONSTANTS[7]*((CONSTANTS[16]+CONSTANTS[18]) - 1.87000);
RATES[0] = 0.1001;
RATES[1] = 0.1001;
RATES[2] = 0.1001;
RATES[3] = 0.1001;
}
void
computeResiduals(double VOI, double* CONSTANTS, double* RATES, double* OLDRATES, double* STATES,
                 double* OLDSTATES, double* ALGEBRAIC, double* CONDVARS)
{
resid[0] = RATES[0] -  CONSTANTS[0]*( ALGEBRAIC[2]*(1.00000 - STATES[0]) -  (1.00000/ALGEBRAIC[2])*STATES[0]);
resid[1] = RATES[1] -  CONSTANTS[5]*( pow(ALGEBRAIC[1]/CONSTANTS[17], CONSTANTS[6])*(1.00000 - STATES[1]) - STATES[1]);
resid[2] = RATES[2] -  CONSTANTS[10]*CONSTANTS[15] -  CONSTANTS[12]*STATES[2];
resid[3] = RATES[3] -  CONSTANTS[11]*CONSTANTS[15] -  CONSTANTS[13]*STATES[3];
}
void
computeVariables(double VOI, double* CONSTANTS, double* RATES, double* STATES, double* ALGEBRAIC)
{
ALGEBRAIC[3] =  CONSTANTS[8]*STATES[0]*CONSTANTS[19];
ALGEBRAIC[4] = STATES[2]+STATES[3];
ALGEBRAIC[5] = (CONDVAR[3]<0.00000 ? ( ALGEBRAIC[3]*( CONSTANTS[9]*ALGEBRAIC[4]+1.00000))/(1.00000 - ALGEBRAIC[4]) : ( ALGEBRAIC[3]*(1.00000+ (CONSTANTS[9]+2.00000)*ALGEBRAIC[4]))/(1.00000+ALGEBRAIC[4]));
}
void
computeEssentialVariables(double VOI, double* CONSTANTS, double* RATES, double* STATES, double* ALGEBRAIC)
{
ALGEBRAIC[0] = (VOI -  167.000*floor(VOI/167.000))/1.00000;
ALGEBRAIC[1] = (CONDVAR[0]>=0.00000&&CONDVAR[1]<0.00000 ?  1.00000*1.85358e-05*pow(ALGEBRAIC[0], 3.00000)+ - 0.00159034*pow(ALGEBRAIC[0], 2.00000)+ 0.0436459*pow(ALGEBRAIC[0], 1.00000)+0.167079 : CONDVAR[2]>=0.00000 ? (( 1.00000*- 5.74585e-08*pow(ALGEBRAIC[0], 3.00000)+ 3.11222e-05*pow(ALGEBRAIC[0], 2.00000)) -  0.00661849*pow(ALGEBRAIC[0], 1.00000))+0.720442 : 0.216000);
ALGEBRAIC[2] =  pow(pow(STATES[1]/CONSTANTS[2], CONSTANTS[1]), 1.0 / 2);
}
void
getStateInformation(double* SI)
{
SI[0] = 1.0;
SI[1] = 1.0;
SI[2] = 1.0;
SI[3] = 1.0;
}
void
computeRoots(double VOI, double* CONSTANTS, double* RATES, double* OLDRATES, double* STATES,
             double* OLDSTATES, double* ALGEBRAIC, double* CONDVARS)
{
CONDVAR[0] = ALGEBRAIC[0] - 1.17000;
CONDVAR[1] = ALGEBRAIC[0] - 30.8400;
CONDVAR[2] = ALGEBRAIC[0] - 30.8400;
CONDVAR[3] = ALGEBRAIC[4] - 0.00000;
}