/* There are a total of 15 entries in the algebraic variable array. There are a total of 6 entries in each of the rate and state variable arrays. There are a total of 33 entries in the constant variable array. */ /* * VOI is time in component environment (second). * STATES[0] is V in component membrane (millivolt). * CONSTANTS[0] is R in component membrane (millijoule_per_mole_kelvin). * CONSTANTS[1] is T in component membrane (kelvin). * CONSTANTS[2] is F in component membrane (coulomb_per_mole). * CONSTANTS[3] is Cm in component membrane (microF_per_cm2). * ALGEBRAIC[11] is i_K_dr in component delayed_rectifier_K_channel_current (nanoA_per_cm2). * ALGEBRAIC[12] is i_K_Ca in component Ca_sensitive_K_current (nanoA_per_cm2). * ALGEBRAIC[13] is i_K_ATP in component ATP_sensitive_K_current (nanoA_per_cm2). * ALGEBRAIC[4] is i_fast in component fast_current (nanoA_per_cm2). * ALGEBRAIC[9] is i_Ca in component calcium_current (nanoA_per_cm2). * ALGEBRAIC[10] is i_NS in component cationic_nonselective_inward_current (nanoA_per_cm2). * ALGEBRAIC[14] is i_NaL in component Na_leak_current (nanoA_per_cm2). * CONSTANTS[4] is g_fast in component fast_current (microS_per_cm2). * CONSTANTS[5] is V_fast in component fast_current (millivolt). * ALGEBRAIC[0] is m_infinity in component fast_current_m_gate (dimensionless). * STATES[1] is h in component fast_current_h_gate (dimensionless). * CONSTANTS[6] is Vm in component fast_current_m_gate (millivolt). * CONSTANTS[7] is Sm in component fast_current_m_gate (millivolt). * CONSTANTS[8] is lamda_h in component fast_current_h_gate (per_second). * ALGEBRAIC[5] is tau_h in component fast_current_h_gate (second). * ALGEBRAIC[1] is h_infinity in component fast_current_h_gate (dimensionless). * CONSTANTS[9] is Vh in component fast_current_h_gate (millivolt). * CONSTANTS[10] is Sh in component fast_current_h_gate (millivolt). * CONSTANTS[11] is K_Ca in component calcium_current (micromolar). * CONSTANTS[12] is P_Ca in component calcium_current (nanoA_per_micromolar_per_cm2). * CONSTANTS[13] is Ca_o in component calcium_current (micromolar). * STATES[2] is Ca_i in component cytosolic_calcium (micromolar). * ALGEBRAIC[8] is f_infinity in component calcium_current_f_gate (dimensionless). * STATES[3] is d in component calcium_current_d_gate (dimensionless). * CONSTANTS[14] is lamda_d in component calcium_current_d_gate (per_second). * ALGEBRAIC[6] is tau_d in component calcium_current_d_gate (second). * ALGEBRAIC[2] is d_infinity in component calcium_current_d_gate (dimensionless). * CONSTANTS[15] is Vd in component calcium_current_d_gate (millivolt). * CONSTANTS[16] is Sd in component calcium_current_d_gate (millivolt). * CONSTANTS[17] is g_NS in component cationic_nonselective_inward_current (microS_per_cm2). * CONSTANTS[18] is K_NS in component cationic_nonselective_inward_current (micromolar). * CONSTANTS[19] is VNS in component cationic_nonselective_inward_current (millivolt). * STATES[4] is Ca_lum in component cytosolic_calcium (micromolar). * CONSTANTS[20] is V_K in component delayed_rectifier_K_channel_current (millivolt). * CONSTANTS[21] is g_K_dr in component delayed_rectifier_K_channel_current (microS_per_cm2). * STATES[5] is n in component delayed_rectifier_K_channel_current_n_gate (dimensionless). * CONSTANTS[22] is lamda_n in component delayed_rectifier_K_channel_current_n_gate (per_second). * CONSTANTS[23] is Vn in component delayed_rectifier_K_channel_current_n_gate (millivolt). * CONSTANTS[24] is Sn in component delayed_rectifier_K_channel_current_n_gate (millivolt). * ALGEBRAIC[3] is n_infinity in component delayed_rectifier_K_channel_current_n_gate (dimensionless). * ALGEBRAIC[7] is tau_n in component delayed_rectifier_K_channel_current_n_gate (second). * CONSTANTS[25] is g_K_Ca in component Ca_sensitive_K_current (microS_per_cm2). * CONSTANTS[26] is g_K_ATP in component ATP_sensitive_K_current (microS_per_cm2). * CONSTANTS[27] is g_NaL in component Na_leak_current (microS_per_cm2). * CONSTANTS[28] is V_Na in component Na_leak_current (millivolt). * CONSTANTS[29] is k_rel in component cytosolic_calcium (per_second). * CONSTANTS[30] is k_Ca in component cytosolic_calcium (per_second). * CONSTANTS[31] is k_pump in component cytosolic_calcium (per_second). * CONSTANTS[32] is omega in component cytosolic_calcium (micromolar_cm2_per_nanoA_per_second). * RATES[0] is d/dt V in component membrane (millivolt). * RATES[1] is d/dt h in component fast_current_h_gate (dimensionless). * RATES[3] is d/dt d in component calcium_current_d_gate (dimensionless). * RATES[5] is d/dt n in component delayed_rectifier_K_channel_current_n_gate (dimensionless). * RATES[2] is d/dt Ca_i in component cytosolic_calcium (micromolar). * RATES[4] is d/dt Ca_lum in component cytosolic_calcium (micromolar). */ void initConsts(double* CONSTANTS, double* RATES, double *STATES) { STATES[0] = -38.34146; CONSTANTS[0] = 8314; CONSTANTS[1] = 310; CONSTANTS[2] = 96485; CONSTANTS[3] = 1; CONSTANTS[4] = 600; CONSTANTS[5] = 80; STATES[1] = 0.214723; CONSTANTS[6] = -25; CONSTANTS[7] = 9; CONSTANTS[8] = 12.5; CONSTANTS[9] = -48; CONSTANTS[10] = -7; CONSTANTS[11] = 1; CONSTANTS[12] = 2; CONSTANTS[13] = 2500; STATES[2] = 0.6959466; STATES[3] = 0.0031711238; CONSTANTS[14] = 2.5; CONSTANTS[15] = -10; CONSTANTS[16] = 5; CONSTANTS[17] = 5; CONSTANTS[18] = 50; CONSTANTS[19] = -20; STATES[4] = 102.686; CONSTANTS[20] = -75; CONSTANTS[21] = 600; STATES[5] = 0.1836403; CONSTANTS[22] = 12.5; CONSTANTS[23] = -18; CONSTANTS[24] = 14; CONSTANTS[25] = 5; CONSTANTS[26] = 2; CONSTANTS[27] = 0.3; CONSTANTS[28] = 80; CONSTANTS[29] = 0.2; CONSTANTS[30] = 7; CONSTANTS[31] = 30; CONSTANTS[32] = 0.2; } void computeRates(double VOI, double* CONSTANTS, double* RATES, double* STATES, double* ALGEBRAIC) { RATES[4] = - CONSTANTS[29]*(STATES[4] - STATES[2])+ CONSTANTS[31]*STATES[2]; ALGEBRAIC[5] = 1.00000/( CONSTANTS[8]*(exp((CONSTANTS[9] - STATES[0])/( 2.00000*CONSTANTS[10]))+exp((STATES[0] - CONSTANTS[9])/( 2.00000*CONSTANTS[10])))); ALGEBRAIC[1] = 1.00000/(1.00000+exp((CONSTANTS[9] - STATES[0])/CONSTANTS[10])); RATES[1] = (ALGEBRAIC[1] - STATES[1])/ALGEBRAIC[5]; ALGEBRAIC[6] = 1.00000/( CONSTANTS[14]*(exp((CONSTANTS[15] - STATES[0])/( 2.00000*CONSTANTS[16]))+exp((STATES[0] - CONSTANTS[15])/( 2.00000*CONSTANTS[16])))); ALGEBRAIC[2] = 1.00000/(1.00000+exp((CONSTANTS[15] - STATES[0])/CONSTANTS[16])); RATES[3] = (ALGEBRAIC[2] - STATES[3])/ALGEBRAIC[6]; ALGEBRAIC[3] = 1.00000/(1.00000+exp((CONSTANTS[23] - STATES[0])/CONSTANTS[24])); ALGEBRAIC[7] = 1.00000/( CONSTANTS[22]*(exp((CONSTANTS[23] - STATES[0])/( 2.00000*CONSTANTS[24]))+exp((STATES[0] - CONSTANTS[23])/( 2.00000*CONSTANTS[24])))); RATES[5] = (ALGEBRAIC[3] - STATES[5])/ALGEBRAIC[7]; ALGEBRAIC[8] = CONSTANTS[11]/(CONSTANTS[11]+STATES[2]); ALGEBRAIC[9] = ( (( CONSTANTS[12]*STATES[3]*ALGEBRAIC[8]*2.00000*CONSTANTS[2]*STATES[0])/( CONSTANTS[0]*CONSTANTS[1]))*(CONSTANTS[13] - STATES[2]*exp(( 2.00000*CONSTANTS[2]*STATES[0])/( CONSTANTS[0]*CONSTANTS[1]))))/(1.00000 - exp(( 2.00000*CONSTANTS[2]*STATES[0])/( CONSTANTS[0]*CONSTANTS[1]))); RATES[2] = CONSTANTS[29]*(STATES[4] - STATES[2]) - ( CONSTANTS[32]*ALGEBRAIC[9]+ CONSTANTS[30]*STATES[2]+ CONSTANTS[31]*STATES[2]); ALGEBRAIC[11] = CONSTANTS[21]*pow(STATES[5], 4.00000)*(STATES[0] - CONSTANTS[20]); ALGEBRAIC[12] = (( CONSTANTS[25]*pow(STATES[2], 3.00000))/(pow(CONSTANTS[11], 3.00000)+pow(STATES[2], 3.00000)))*(STATES[0] - CONSTANTS[20]); ALGEBRAIC[13] = CONSTANTS[26]*(STATES[0] - CONSTANTS[20]); ALGEBRAIC[0] = 1.00000/(1.00000+exp((CONSTANTS[6] - STATES[0])/CONSTANTS[7])); ALGEBRAIC[4] = CONSTANTS[4]*pow(ALGEBRAIC[0], 3.00000)*STATES[1]*(STATES[0] - CONSTANTS[5]); ALGEBRAIC[10] = (( CONSTANTS[17]*pow(CONSTANTS[18], 2.00000))/(pow(CONSTANTS[18], 2.00000)+pow(STATES[4], 2.00000)))*((STATES[0] - CONSTANTS[19])/(1.00000 - exp( 0.100000*(CONSTANTS[19] - STATES[0]))) - 10.0000); ALGEBRAIC[14] = CONSTANTS[27]*(STATES[0] - CONSTANTS[28]); RATES[0] = - (ALGEBRAIC[11]+ALGEBRAIC[12]+ALGEBRAIC[13]+ALGEBRAIC[4]+ALGEBRAIC[9]+ALGEBRAIC[10]+ALGEBRAIC[14])/CONSTANTS[3]; } void computeVariables(double VOI, double* CONSTANTS, double* RATES, double* STATES, double* ALGEBRAIC) { ALGEBRAIC[5] = 1.00000/( CONSTANTS[8]*(exp((CONSTANTS[9] - STATES[0])/( 2.00000*CONSTANTS[10]))+exp((STATES[0] - CONSTANTS[9])/( 2.00000*CONSTANTS[10])))); ALGEBRAIC[1] = 1.00000/(1.00000+exp((CONSTANTS[9] - STATES[0])/CONSTANTS[10])); ALGEBRAIC[6] = 1.00000/( CONSTANTS[14]*(exp((CONSTANTS[15] - STATES[0])/( 2.00000*CONSTANTS[16]))+exp((STATES[0] - CONSTANTS[15])/( 2.00000*CONSTANTS[16])))); ALGEBRAIC[2] = 1.00000/(1.00000+exp((CONSTANTS[15] - STATES[0])/CONSTANTS[16])); ALGEBRAIC[3] = 1.00000/(1.00000+exp((CONSTANTS[23] - STATES[0])/CONSTANTS[24])); ALGEBRAIC[7] = 1.00000/( CONSTANTS[22]*(exp((CONSTANTS[23] - STATES[0])/( 2.00000*CONSTANTS[24]))+exp((STATES[0] - CONSTANTS[23])/( 2.00000*CONSTANTS[24])))); ALGEBRAIC[8] = CONSTANTS[11]/(CONSTANTS[11]+STATES[2]); ALGEBRAIC[9] = ( (( CONSTANTS[12]*STATES[3]*ALGEBRAIC[8]*2.00000*CONSTANTS[2]*STATES[0])/( CONSTANTS[0]*CONSTANTS[1]))*(CONSTANTS[13] - STATES[2]*exp(( 2.00000*CONSTANTS[2]*STATES[0])/( CONSTANTS[0]*CONSTANTS[1]))))/(1.00000 - exp(( 2.00000*CONSTANTS[2]*STATES[0])/( CONSTANTS[0]*CONSTANTS[1]))); ALGEBRAIC[11] = CONSTANTS[21]*pow(STATES[5], 4.00000)*(STATES[0] - CONSTANTS[20]); ALGEBRAIC[12] = (( CONSTANTS[25]*pow(STATES[2], 3.00000))/(pow(CONSTANTS[11], 3.00000)+pow(STATES[2], 3.00000)))*(STATES[0] - CONSTANTS[20]); ALGEBRAIC[13] = CONSTANTS[26]*(STATES[0] - CONSTANTS[20]); ALGEBRAIC[0] = 1.00000/(1.00000+exp((CONSTANTS[6] - STATES[0])/CONSTANTS[7])); ALGEBRAIC[4] = CONSTANTS[4]*pow(ALGEBRAIC[0], 3.00000)*STATES[1]*(STATES[0] - CONSTANTS[5]); ALGEBRAIC[10] = (( CONSTANTS[17]*pow(CONSTANTS[18], 2.00000))/(pow(CONSTANTS[18], 2.00000)+pow(STATES[4], 2.00000)))*((STATES[0] - CONSTANTS[19])/(1.00000 - exp( 0.100000*(CONSTANTS[19] - STATES[0]))) - 10.0000); ALGEBRAIC[14] = CONSTANTS[27]*(STATES[0] - CONSTANTS[28]); }