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 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 22 entries in the constant variable array. */ /* * VOI is time in component environment (minute). * STATES[0] is m in component m (micromolar). * CONSTANTS[0] is kM_plus in component m (fourth_order_rate_constant). * CONSTANTS[1] is kM_minus in component m (first_order_rate_constant). * CONSTANTS[2] is CaMtotal in component m (micromolar). * STATES[1] is x in component x (micromolar). * ALGEBRAIC[0] is dmdt in component m (flux). * STATES[2] is z in component z (micromolar). * CONSTANTS[3] is kN_plus in component z (second_order_rate_constant). * CONSTANTS[4] is kN_minus in component z (first_order_rate_constant). * CONSTANTS[5] is CaNtotal in component z (micromolar). * ALGEBRAIC[1] is dzdt in component z (flux). * STATES[3] is h in component h (dimensionless). * CONSTANTS[6] is d in component h (first_order_rate_constant). * CONSTANTS[7] is f in component h (first_order_rate_constant). * ALGEBRAIC[3] is phi in component phi (dimensionless). * CONSTANTS[8] is lamda in component model_parameters (dimensionless). * CONSTANTS[21] is L0 in component model_parameters (dimensionless). * ALGEBRAIC[2] is y in component model_parameters (dimensionless). * CONSTANTS[9] is N in component model_parameters (dimensionless). * ALGEBRAIC[4] is psi in component psi (dimensionless). * CONSTANTS[10] is Vx in component x (flux). * CONSTANTS[11] is Kx in component x (micromolar). * CONSTANTS[12] is V1 in component x (flux). * CONSTANTS[13] is K1 in component x (micromolar). * CONSTANTS[14] is V2 in component x (flux). * CONSTANTS[15] is K2 in component x (micromolar). * CONSTANTS[16] is V3 in component x (flux). * CONSTANTS[17] is K3 in component x (micromolar). * CONSTANTS[18] is kc in component x (dimensionless). * CONSTANTS[19] is alpha in component x (first_order_rate_constant). * CONSTANTS[20] is Caex in component x (micromolar). * ALGEBRAIC[5] is dxdt in component x (flux). * RATES[0] is d/dt m in component m (micromolar). * RATES[2] is d/dt z in component z (micromolar). * RATES[3] is d/dt h in component h (dimensionless). * RATES[1] is d/dt x in component x (micromolar). */ void initConsts(double* CONSTANTS, double* RATES, double *STATES) { STATES[0] = 0.0; CONSTANTS[0] = 500.0; CONSTANTS[1] = 100.0; CONSTANTS[2] = 25.0; STATES[1] = 0.0; STATES[2] = 1.0E-8; CONSTANTS[3] = 5.0; CONSTANTS[4] = 5.0; CONSTANTS[5] = 25.0; STATES[3] = 0.0; CONSTANTS[6] = 0.4; CONSTANTS[7] = 0.1; CONSTANTS[8] = 5.0; CONSTANTS[9] = 13.0; CONSTANTS[10] = 1000.0; CONSTANTS[11] = 500.0; CONSTANTS[12] = 30000.0; CONSTANTS[13] = 4.3; CONSTANTS[14] = 100.0; CONSTANTS[15] = 0.1; CONSTANTS[16] = 10000.0; CONSTANTS[17] = 100.0; CONSTANTS[18] = 10.0; CONSTANTS[19] = 0.006; CONSTANTS[20] = 1.0; CONSTANTS[21] = pow(10.0000, - (CONSTANTS[9]/2.00000)); } void computeRates(double VOI, double* CONSTANTS, double* RATES, double* STATES, double* ALGEBRAIC) { RATES[0] = CONSTANTS[0]*(CONSTANTS[2] - STATES[0])*pow(STATES[1], 3.00000) - CONSTANTS[1]*STATES[0]; RATES[2] = CONSTANTS[3]*(CONSTANTS[5] - STATES[2])*STATES[0] - CONSTANTS[4]*STATES[2]; ALGEBRAIC[2] = 1.00000/STATES[2]; ALGEBRAIC[3] = 1.00000/(1.00000+( CONSTANTS[21]*(pow( CONSTANTS[8]*ALGEBRAIC[2], CONSTANTS[9]+1.00000) - 1.00000))/( ( CONSTANTS[8]*ALGEBRAIC[2] - 1.00000)*((ALGEBRAIC[2] - 1.00000)/(pow(ALGEBRAIC[2], CONSTANTS[9]+1.00000) - 1.00000)))); RATES[3] = CONSTANTS[6]*ALGEBRAIC[3]*(1.00000/STATES[2])*(1.00000 - STATES[3]) - CONSTANTS[7]*(1.00000 - ALGEBRAIC[3]*(1.00000/STATES[2]))*STATES[3]; ALGEBRAIC[4] = (1.00000+CONSTANTS[21])/((pow(ALGEBRAIC[2], CONSTANTS[9]+1.00000) - 1.00000)/(ALGEBRAIC[2] - 1.00000)+ CONSTANTS[21]*((pow( CONSTANTS[8]*ALGEBRAIC[2], CONSTANTS[9]+1.00000) - 1.00000)/( CONSTANTS[8]*ALGEBRAIC[2] - 1.00000))); RATES[1] = ( CONSTANTS[10]*CONSTANTS[20])/(CONSTANTS[11]+CONSTANTS[20]) - ( STATES[3]*ALGEBRAIC[4]*(1.00000/STATES[2])*(( CONSTANTS[12]*STATES[1])/(CONSTANTS[13]+STATES[1]))+ STATES[3]*ALGEBRAIC[4]*(1.00000/STATES[2])*(( CONSTANTS[14]*STATES[1])/(CONSTANTS[15]+STATES[1]))+ (1.00000/(1.00000+ CONSTANTS[18]*STATES[2]))*(( CONSTANTS[16]*STATES[1])/(CONSTANTS[17]+STATES[1]))+ CONSTANTS[19]*STATES[1]); } void computeVariables(double VOI, double* CONSTANTS, double* RATES, double* STATES, double* ALGEBRAIC) { ALGEBRAIC[2] = 1.00000/STATES[2]; ALGEBRAIC[3] = 1.00000/(1.00000+( CONSTANTS[21]*(pow( CONSTANTS[8]*ALGEBRAIC[2], CONSTANTS[9]+1.00000) - 1.00000))/( ( CONSTANTS[8]*ALGEBRAIC[2] - 1.00000)*((ALGEBRAIC[2] - 1.00000)/(pow(ALGEBRAIC[2], CONSTANTS[9]+1.00000) - 1.00000)))); ALGEBRAIC[4] = (1.00000+CONSTANTS[21])/((pow(ALGEBRAIC[2], CONSTANTS[9]+1.00000) - 1.00000)/(ALGEBRAIC[2] - 1.00000)+ CONSTANTS[21]*((pow( CONSTANTS[8]*ALGEBRAIC[2], CONSTANTS[9]+1.00000) - 1.00000)/( CONSTANTS[8]*ALGEBRAIC[2] - 1.00000))); ALGEBRAIC[0] = CONSTANTS[0]*(CONSTANTS[2] - STATES[0])*pow(STATES[1], 3.00000) - CONSTANTS[1]*STATES[0]; ALGEBRAIC[1] = CONSTANTS[3]*(CONSTANTS[5] - STATES[2])*STATES[0] - CONSTANTS[4]*STATES[2]; ALGEBRAIC[5] = ( CONSTANTS[10]*CONSTANTS[20])/(CONSTANTS[11]+CONSTANTS[20]) - ( STATES[3]*ALGEBRAIC[4]*(1.00000/STATES[2])*(( CONSTANTS[12]*STATES[1])/(CONSTANTS[13]+STATES[1]))+ STATES[3]*ALGEBRAIC[4]*(1.00000/STATES[2])*(( CONSTANTS[14]*STATES[1])/(CONSTANTS[15]+STATES[1]))+ (1.00000/(1.00000+ CONSTANTS[18]*STATES[2]))*(( CONSTANTS[16]*STATES[1])/(CONSTANTS[17]+STATES[1]))+ CONSTANTS[19]*STATES[1]); }