/* There are a total of 13 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 29 entries in the constant variable array. */ /* * STATES[0] is P_Open in component kinetics (dimensionless). * STATES[1] is P_Closed in component kinetics (dimensionless). * STATES[2] is P_I1 in component kinetics (dimensionless). * STATES[3] is P_I2 in component kinetics (dimensionless). * VOI is time in component environment (ms). * ALGEBRAIC[2] is current in component stimulus_protocol (nA_per_nF). * ALGEBRAIC[3] is voltage_out in component environment (mV). * ALGEBRAIC[4] is transmembranevoltage in component environment (mV). * ALGEBRAIC[1] is pressure in component environment (mmHg). * ALGEBRAIC[0] is stretch in component stimulus_protocol (dimensionless). * CONSTANTS[0] is pressure_stim_offset in component environment (ms). * CONSTANTS[1] is pressure_stim_period in component environment (ms). * CONSTANTS[2] is pressure_stim_duration in component environment (ms). * CONSTANTS[3] is pressure_stim_amplitude in component environment (dimensionless). * CONSTANTS[4] is current_stim_offset in component environment (ms). * CONSTANTS[5] is current_stim_period in component environment (ms). * CONSTANTS[6] is current_stim_duration in component environment (ms). * CONSTANTS[7] is current_stim_amplitude in component environment (nA_per_nF). * CONSTANTS[8] is current_stim_end in component environment (ms). * CONSTANTS[9] is current_N_period_total in component environment (dimensionless). * CONSTANTS[10] is current_N_period_applied in component environment (dimensionless). * CONSTANTS[11] is r1 in component kinetics (per_ms). * CONSTANTS[12] is r3 in component kinetics (per_ms). * CONSTANTS[13] is r4 in component kinetics (per_ms). * CONSTANTS[14] is r5 in component kinetics (per_ms). * CONSTANTS[15] is r6 in component kinetics (per_ms). * CONSTANTS[16] is r7 in component kinetics (per_ms). * CONSTANTS[17] is r8 in component kinetics (per_ms). * CONSTANTS[18] is ce1 in component kinetics (dimensionless). * CONSTANTS[19] is ce3 in component kinetics (dimensionless). * CONSTANTS[20] is ce4 in component kinetics (dimensionless). * CONSTANTS[21] is cm4 in component kinetics (dimensionless). * CONSTANTS[22] is ce5 in component kinetics (dimensionless). * CONSTANTS[23] is ce6 in component kinetics (dimensionless). * CONSTANTS[24] is ce7 in component kinetics (dimensionless). * CONSTANTS[25] is ce8 in component kinetics (dimensionless). * CONSTANTS[26] is r2 in component kinetics (per_ms). * CONSTANTS[27] is ce2 in component kinetics (dimensionless). * CONSTANTS[28] is cm2 in component kinetics (dimensionless). * ALGEBRAIC[5] is p_O_I1 in component kinetics (per_ms). * ALGEBRAIC[6] is p_I1_O in component kinetics (per_ms). * ALGEBRAIC[7] is p_I1_C in component kinetics (per_ms). * ALGEBRAIC[8] is p_C_I1 in component kinetics (per_ms). * ALGEBRAIC[9] is p_C_O in component kinetics (per_ms). * ALGEBRAIC[10] is p_O_C in component kinetics (per_ms). * ALGEBRAIC[11] is p_I2_O in component kinetics (per_ms). * ALGEBRAIC[12] is p_O_I2 in component kinetics (per_ms). * RATES[0] is d/dt P_Open in component kinetics (dimensionless). * RATES[1] is d/dt P_Closed in component kinetics (dimensionless). * RATES[2] is d/dt P_I1 in component kinetics (dimensionless). * RATES[3] is d/dt P_I2 in component kinetics (dimensionless). */ void initConsts(double* CONSTANTS, double* RATES, double *STATES) { STATES[0] = 0.0; STATES[1] = 0.3; STATES[2] = 0.1; STATES[3] = 0.6; CONSTANTS[0] = 100; CONSTANTS[1] = 2000; CONSTANTS[2] = 5; CONSTANTS[3] = 1.1; CONSTANTS[4] = 100; CONSTANTS[5] = 1000; CONSTANTS[6] = 500; CONSTANTS[7] = 80; CONSTANTS[8] = 999999999999999; CONSTANTS[9] = 1; CONSTANTS[10] = 1; CONSTANTS[11] = 0.02634342; CONSTANTS[12] = 0.0008000712; CONSTANTS[13] = 0.008945307; CONSTANTS[14] = 1.3529515e-5; CONSTANTS[15] = 6.206403e-5; CONSTANTS[16] = 6.603723e-6; CONSTANTS[17] = 0.00079357607; CONSTANTS[18] = -2.3753126; CONSTANTS[19] = -5.6010337; CONSTANTS[20] = 0.70629007; CONSTANTS[21] = -12.101605; CONSTANTS[22] = 6.46389; CONSTANTS[23] = -1.2173947; CONSTANTS[24] = 8.739162; CONSTANTS[25] = -3.364573; CONSTANTS[26] = ( CONSTANTS[11]*CONSTANTS[12]*CONSTANTS[14])/( CONSTANTS[13]*CONSTANTS[15]); CONSTANTS[27] = ((CONSTANTS[18]+CONSTANTS[19]+CONSTANTS[22]) - CONSTANTS[20]) - CONSTANTS[23]; CONSTANTS[28] = - CONSTANTS[21]; } void computeRates(double VOI, double* CONSTANTS, double* RATES, double* STATES, double* ALGEBRAIC) { ALGEBRAIC[2] = (VOI>=CONSTANTS[4]&&VOI=CONSTANTS[0]&& (int)(VOI - CONSTANTS[0]) % (int)(CONSTANTS[1])<=CONSTANTS[2] ? CONSTANTS[3] : 1.00000); ALGEBRAIC[1] = 350.000*multi_max(2, 0.00000, ALGEBRAIC[0] - 1.00000); ALGEBRAIC[6] = CONSTANTS[26]*exp(( CONSTANTS[27]*ALGEBRAIC[3])/140.000+( CONSTANTS[28]*ALGEBRAIC[1])/70.0000); ALGEBRAIC[7] = CONSTANTS[12]*exp(( CONSTANTS[19]*ALGEBRAIC[3])/140.000); ALGEBRAIC[8] = CONSTANTS[13]*exp(( CONSTANTS[20]*ALGEBRAIC[3])/140.000+( CONSTANTS[21]*ALGEBRAIC[1])/70.0000); RATES[2] = - (ALGEBRAIC[6]+ALGEBRAIC[7])*STATES[2]+ ALGEBRAIC[8]*STATES[1]+ ALGEBRAIC[5]*STATES[0]; ALGEBRAIC[9] = CONSTANTS[14]*exp(( CONSTANTS[22]*ALGEBRAIC[3])/140.000); ALGEBRAIC[10] = CONSTANTS[15]*exp(( CONSTANTS[23]*ALGEBRAIC[3])/140.000); RATES[1] = - (ALGEBRAIC[8]+ALGEBRAIC[9])*STATES[1]+ ALGEBRAIC[10]*STATES[0]+ ALGEBRAIC[7]*STATES[2]; ALGEBRAIC[11] = CONSTANTS[16]*exp(( (( CONSTANTS[24]*ALGEBRAIC[3])/140.000)*ALGEBRAIC[1])/70.0000); ALGEBRAIC[12] = CONSTANTS[17]*exp(( CONSTANTS[25]*ALGEBRAIC[3])/140.000); RATES[0] = - (ALGEBRAIC[5]+ALGEBRAIC[12]+ALGEBRAIC[10])*STATES[0]+ ALGEBRAIC[9]*STATES[1]+ ALGEBRAIC[6]*STATES[2]+ ALGEBRAIC[11]*STATES[3]; RATES[3] = - ALGEBRAIC[11]*STATES[3]+ ALGEBRAIC[12]*STATES[0]; } void computeVariables(double VOI, double* CONSTANTS, double* RATES, double* STATES, double* ALGEBRAIC) { ALGEBRAIC[2] = (VOI>=CONSTANTS[4]&&VOI=CONSTANTS[0]&& (int)(VOI - CONSTANTS[0]) % (int)(CONSTANTS[1])<=CONSTANTS[2] ? CONSTANTS[3] : 1.00000); ALGEBRAIC[1] = 350.000*multi_max(2, 0.00000, ALGEBRAIC[0] - 1.00000); ALGEBRAIC[6] = CONSTANTS[26]*exp(( CONSTANTS[27]*ALGEBRAIC[3])/140.000+( CONSTANTS[28]*ALGEBRAIC[1])/70.0000); ALGEBRAIC[7] = CONSTANTS[12]*exp(( CONSTANTS[19]*ALGEBRAIC[3])/140.000); ALGEBRAIC[8] = CONSTANTS[13]*exp(( CONSTANTS[20]*ALGEBRAIC[3])/140.000+( CONSTANTS[21]*ALGEBRAIC[1])/70.0000); ALGEBRAIC[9] = CONSTANTS[14]*exp(( CONSTANTS[22]*ALGEBRAIC[3])/140.000); ALGEBRAIC[10] = CONSTANTS[15]*exp(( CONSTANTS[23]*ALGEBRAIC[3])/140.000); ALGEBRAIC[11] = CONSTANTS[16]*exp(( (( CONSTANTS[24]*ALGEBRAIC[3])/140.000)*ALGEBRAIC[1])/70.0000); ALGEBRAIC[12] = CONSTANTS[17]*exp(( CONSTANTS[25]*ALGEBRAIC[3])/140.000); ALGEBRAIC[4] = (ALGEBRAIC[3] - 5.00000)*STATES[0]; }