/* There are a total of 25 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 49 entries in the constant variable array. */ /* * VOI is time in component environment (millisecond). * STATES[0] is V1 in component V1 (millivolt). * CONSTANTS[0] is C in component model_parameters (nanoF). * ALGEBRAIC[3] is i_NaP in component i_NaP (nanoA). * ALGEBRAIC[5] is i_K in component i_K (nanoA). * ALGEBRAIC[9] is i_L1 in component i_L1 (nanoA). * ALGEBRAIC[13] is i_synE1 in component i_synE1 (nanoA). * ALGEBRAIC[22] is i_synI1 in component i_synI1 (nanoA). * STATES[1] is V2 in component V2 (millivolt). * ALGEBRAIC[6] is i_AD2 in component i_AD2 (nanoA). * ALGEBRAIC[10] is i_L2 in component i_L2 (nanoA). * ALGEBRAIC[17] is i_synE2 in component i_synE2 (nanoA). * ALGEBRAIC[23] is i_synI2 in component i_synI2 (nanoA). * STATES[2] is V3 in component V3 (millivolt). * ALGEBRAIC[7] is i_AD3 in component i_AD3 (nanoA). * ALGEBRAIC[11] is i_L3 in component i_L3 (nanoA). * ALGEBRAIC[14] is i_synE3 in component i_synE3 (nanoA). * ALGEBRAIC[24] is i_synI3 in component i_synI3 (nanoA). * STATES[3] is V4 in component V4 (millivolt). * ALGEBRAIC[8] is i_AD4 in component i_AD4 (nanoA). * ALGEBRAIC[12] is i_L4 in component i_L4 (nanoA). * ALGEBRAIC[15] is i_synE4 in component i_synE4 (nanoA). * ALGEBRAIC[20] is i_synI4 in component i_synI4 (nanoA). * CONSTANTS[1] is g_NaP in component model_parameters (nanoS). * CONSTANTS[2] is E_Na in component model_parameters (millivolt). * ALGEBRAIC[1] is m in component i_NaP_m_gate (dimensionless). * STATES[4] is h in component i_NaP_h_gate (dimensionless). * ALGEBRAIC[0] is h_infinity in component i_NaP_h_gate (dimensionless). * ALGEBRAIC[2] is tau_h in component i_NaP_h_gate (millisecond). * CONSTANTS[3] is tau_h_max in component i_NaP_h_gate (millisecond). * CONSTANTS[4] is g_K in component model_parameters (nanoS). * CONSTANTS[5] is E_K in component model_parameters (millivolt). * ALGEBRAIC[4] is m in component i_K_m_gate (dimensionless). * CONSTANTS[6] is g_AD in component model_parameters (nanoS). * ALGEBRAIC[18] is f2_V2 in component model_parameters (dimensionless). * STATES[5] is m in component i_AD2_m_gate (dimensionless). * CONSTANTS[7] is k_AD2 in component i_AD2_m_gate (dimensionless). * CONSTANTS[8] is tau_AD2 in component i_AD2_m_gate (millisecond). * ALGEBRAIC[19] is f3_V3 in component model_parameters (dimensionless). * STATES[6] is m in component i_AD3_m_gate (dimensionless). * CONSTANTS[9] is k_AD3 in component i_AD3_m_gate (dimensionless). * CONSTANTS[10] is tau_AD3 in component i_AD3_m_gate (millisecond). * ALGEBRAIC[21] is f4_V4 in component model_parameters (dimensionless). * STATES[7] is m in component i_AD4_m_gate (dimensionless). * CONSTANTS[11] is k_AD4 in component i_AD4_m_gate (dimensionless). * CONSTANTS[12] is tau_AD4 in component i_AD4_m_gate (millisecond). * CONSTANTS[13] is g_L in component model_parameters (nanoS). * CONSTANTS[14] is E_L in component model_parameters (millivolt). * CONSTANTS[15] is c11 in component i_synE1 (dimensionless). * CONSTANTS[16] is c21 in component i_synE1 (dimensionless). * CONSTANTS[17] is c31 in component i_synE1 (dimensionless). * CONSTANTS[18] is d1 in component model_parameters (dimensionless). * CONSTANTS[19] is d2 in component model_parameters (dimensionless). * CONSTANTS[20] is d3 in component model_parameters (dimensionless). * CONSTANTS[21] is g_synE in component model_parameters (nanoS). * CONSTANTS[22] is E_synE in component model_parameters (millivolt). * CONSTANTS[23] is c12 in component i_synE2 (dimensionless). * CONSTANTS[24] is c22 in component i_synE2 (dimensionless). * CONSTANTS[25] is c32 in component i_synE2 (dimensionless). * CONSTANTS[26] is a12 in component i_synE2 (dimensionless). * ALGEBRAIC[16] is f1_V1 in component model_parameters (dimensionless). * CONSTANTS[27] is c13 in component i_synE3 (dimensionless). * CONSTANTS[28] is c23 in component i_synE3 (dimensionless). * CONSTANTS[29] is c33 in component i_synE3 (dimensionless). * CONSTANTS[30] is c14 in component i_synE4 (dimensionless). * CONSTANTS[31] is c24 in component i_synE4 (dimensionless). * CONSTANTS[32] is c34 in component i_synE4 (dimensionless). * CONSTANTS[33] is b21 in component i_synI1 (dimensionless). * CONSTANTS[34] is b31 in component i_synI1 (dimensionless). * CONSTANTS[35] is b41 in component i_synI1 (dimensionless). * CONSTANTS[36] is g_synI in component model_parameters (nanoS). * CONSTANTS[37] is E_synI in component model_parameters (millivolt). * CONSTANTS[38] is b32 in component i_synI2 (dimensionless). * CONSTANTS[39] is b42 in component i_synI2 (dimensionless). * CONSTANTS[40] is b23 in component i_synI3 (dimensionless). * CONSTANTS[41] is b43 in component i_synI3 (dimensionless). * CONSTANTS[42] is b24 in component i_synI4 (dimensionless). * CONSTANTS[43] is b34 in component i_synI4 (dimensionless). * CONSTANTS[44] is V_half in component model_parameters (millivolt). * CONSTANTS[45] is k_V1 in component model_parameters (millivolt). * CONSTANTS[46] is k_V2 in component model_parameters (millivolt). * CONSTANTS[47] is k_V3 in component model_parameters (millivolt). * CONSTANTS[48] is k_V4 in component model_parameters (millivolt). * RATES[0] is d/dt V1 in component V1 (millivolt). * RATES[1] is d/dt V2 in component V2 (millivolt). * RATES[2] is d/dt V3 in component V3 (millivolt). * RATES[3] is d/dt V4 in component V4 (millivolt). * RATES[4] is d/dt h in component i_NaP_h_gate (dimensionless). * RATES[5] is d/dt m in component i_AD2_m_gate (dimensionless). * RATES[6] is d/dt m in component i_AD3_m_gate (dimensionless). * RATES[7] is d/dt m in component i_AD4_m_gate (dimensionless). */ void initConsts(double* CONSTANTS, double* RATES, double *STATES) { STATES[0] = -50.0; CONSTANTS[0] = 0.020; STATES[1] = -50.0; STATES[2] = -50.0; STATES[3] = -50.0; CONSTANTS[1] = 5.0; CONSTANTS[2] = 50.0; STATES[4] = 0.92; CONSTANTS[3] = 6000; CONSTANTS[4] = 5.0; CONSTANTS[5] = -85.0; CONSTANTS[6] = 10.0; STATES[5] = 0.92; CONSTANTS[7] = 0.9; CONSTANTS[8] = 2000; STATES[6] = 0.92; CONSTANTS[9] = 1.3; CONSTANTS[10] = 2000; STATES[7] = 0.92; CONSTANTS[11] = 0.9; CONSTANTS[12] = 1000; CONSTANTS[13] = 2.8; CONSTANTS[14] = -60.0; CONSTANTS[15] = 0.115; CONSTANTS[16] = 0.07; CONSTANTS[17] = 0.025; CONSTANTS[18] = 1.0; CONSTANTS[19] = 1.0; CONSTANTS[20] = 1.0; CONSTANTS[21] = 10.0; CONSTANTS[22] = 0.0; CONSTANTS[23] = 0.3; CONSTANTS[24] = 0.3; CONSTANTS[25] = 0.0; CONSTANTS[26] = 0.4; CONSTANTS[27] = 0.63; CONSTANTS[28] = 0.00; CONSTANTS[29] = 0.00; CONSTANTS[30] = 0.33; CONSTANTS[31] = 0.40; CONSTANTS[32] = 0.00; CONSTANTS[33] = 0.00; CONSTANTS[34] = 0.30; CONSTANTS[35] = 0.20; CONSTANTS[36] = 60.0; CONSTANTS[37] = -75.0; CONSTANTS[38] = 0.05; CONSTANTS[39] = 0.35; CONSTANTS[40] = 0.25; CONSTANTS[41] = 0.10; CONSTANTS[42] = 0.35; CONSTANTS[43] = 0.35; CONSTANTS[44] = 30.0; CONSTANTS[45] = 8.0; CONSTANTS[46] = 4.0; CONSTANTS[47] = 4.0; CONSTANTS[48] = 4.0; } void computeRates(double VOI, double* CONSTANTS, double* RATES, double* STATES, double* ALGEBRAIC) { ALGEBRAIC[0] = 1.00000/(1.00000+exp((STATES[0]+48.0000)/6.00000)); ALGEBRAIC[2] = CONSTANTS[3]/cosh((STATES[0]+48.0000)/12.0000); RATES[4] = (ALGEBRAIC[0] - STATES[4])/ALGEBRAIC[2]; ALGEBRAIC[18] = 1.00000/(1.00000+exp(- (STATES[1] - CONSTANTS[44])/CONSTANTS[46])); RATES[5] = ( CONSTANTS[7]*ALGEBRAIC[18] - STATES[5])/CONSTANTS[8]; ALGEBRAIC[19] = 1.00000/(1.00000+exp(- (STATES[2] - CONSTANTS[44])/CONSTANTS[47])); RATES[6] = ( CONSTANTS[9]*ALGEBRAIC[19] - STATES[6])/CONSTANTS[10]; ALGEBRAIC[8] = CONSTANTS[6]*STATES[7]*(1.00000/1000.00)*(STATES[3] - CONSTANTS[5]); ALGEBRAIC[12] = CONSTANTS[13]*(1.00000/1000.00)*(STATES[3] - CONSTANTS[14]); ALGEBRAIC[15] = CONSTANTS[21]*(1.00000/1000.00)*(STATES[3] - CONSTANTS[22])*( CONSTANTS[30]*CONSTANTS[18]+ CONSTANTS[31]*CONSTANTS[19]+ CONSTANTS[32]*CONSTANTS[20]); ALGEBRAIC[20] = CONSTANTS[36]*(1.00000/1000.00)*(STATES[3] - CONSTANTS[37])*( CONSTANTS[42]*ALGEBRAIC[18]+ CONSTANTS[43]*ALGEBRAIC[19]); RATES[3] = - (ALGEBRAIC[8]+ALGEBRAIC[12]+ALGEBRAIC[15]+ALGEBRAIC[20])/CONSTANTS[0]; ALGEBRAIC[21] = 1.00000/(1.00000+exp(- (STATES[3] - CONSTANTS[44])/CONSTANTS[48])); RATES[7] = ( CONSTANTS[11]*ALGEBRAIC[21] - STATES[7])/CONSTANTS[12]; ALGEBRAIC[1] = 1.00000/(1.00000+exp(- (STATES[0]+40.0000)/6.00000)); ALGEBRAIC[3] = CONSTANTS[1]*ALGEBRAIC[1]*STATES[4]*(1.00000/1000.00)*(STATES[0] - CONSTANTS[2]); ALGEBRAIC[4] = 1.00000/(1.00000+exp(- (STATES[0]+29.0000)/4.00000)); ALGEBRAIC[5] = CONSTANTS[4]*pow(ALGEBRAIC[4], 4.00000)*(1.00000/1000.00)*(STATES[0] - CONSTANTS[5]); ALGEBRAIC[9] = CONSTANTS[13]*(1.00000/1000.00)*(STATES[0] - CONSTANTS[14]); ALGEBRAIC[13] = CONSTANTS[21]*(1.00000/1000.00)*(STATES[0] - CONSTANTS[22])*( CONSTANTS[15]*CONSTANTS[18]+ CONSTANTS[16]*CONSTANTS[19]+ CONSTANTS[17]*CONSTANTS[20]); ALGEBRAIC[22] = CONSTANTS[36]*(1.00000/1000.00)*(STATES[0] - CONSTANTS[37])*( CONSTANTS[33]*ALGEBRAIC[18]+ CONSTANTS[34]*ALGEBRAIC[19]+ CONSTANTS[35]*ALGEBRAIC[21]); RATES[0] = - (ALGEBRAIC[3]+ALGEBRAIC[5]+ALGEBRAIC[9]+ALGEBRAIC[13]+ALGEBRAIC[22])/CONSTANTS[0]; ALGEBRAIC[6] = CONSTANTS[6]*STATES[5]*(1.00000/1000.00)*(STATES[1] - CONSTANTS[5]); ALGEBRAIC[10] = CONSTANTS[13]*(1.00000/1000.00)*(STATES[1] - CONSTANTS[14]); ALGEBRAIC[16] = 1.00000/(1.00000+exp(- (STATES[0] - CONSTANTS[44])/CONSTANTS[45])); ALGEBRAIC[17] = CONSTANTS[21]*(1.00000/1000.00)*(STATES[1] - CONSTANTS[22])*( CONSTANTS[26]*ALGEBRAIC[16]+ CONSTANTS[23]*CONSTANTS[18]+ CONSTANTS[24]*CONSTANTS[19]+ CONSTANTS[25]*CONSTANTS[20]); ALGEBRAIC[23] = CONSTANTS[36]*(1.00000/1000.00)*(STATES[1] - CONSTANTS[37])*( CONSTANTS[38]*ALGEBRAIC[19]+ CONSTANTS[39]*ALGEBRAIC[21]); RATES[1] = - (ALGEBRAIC[6]+ALGEBRAIC[10]+ALGEBRAIC[17]+ALGEBRAIC[23])/CONSTANTS[0]; ALGEBRAIC[7] = CONSTANTS[6]*STATES[6]*(1.00000/1000.00)*(STATES[2] - CONSTANTS[5]); ALGEBRAIC[11] = CONSTANTS[13]*(1.00000/1000.00)*(STATES[2] - CONSTANTS[14]); ALGEBRAIC[14] = CONSTANTS[21]*(1.00000/1000.00)*(STATES[2] - CONSTANTS[22])*( CONSTANTS[27]*CONSTANTS[18]+ CONSTANTS[28]*CONSTANTS[19]+ CONSTANTS[29]*CONSTANTS[20]); ALGEBRAIC[24] = CONSTANTS[36]*(1.00000/1000.00)*(STATES[2] - CONSTANTS[37])*( CONSTANTS[40]*ALGEBRAIC[18]+ CONSTANTS[41]*ALGEBRAIC[21]); RATES[2] = - (ALGEBRAIC[7]+ALGEBRAIC[11]+ALGEBRAIC[14]+ALGEBRAIC[24])/CONSTANTS[0]; } void computeVariables(double VOI, double* CONSTANTS, double* RATES, double* STATES, double* ALGEBRAIC) { ALGEBRAIC[0] = 1.00000/(1.00000+exp((STATES[0]+48.0000)/6.00000)); ALGEBRAIC[2] = CONSTANTS[3]/cosh((STATES[0]+48.0000)/12.0000); ALGEBRAIC[18] = 1.00000/(1.00000+exp(- (STATES[1] - CONSTANTS[44])/CONSTANTS[46])); ALGEBRAIC[19] = 1.00000/(1.00000+exp(- (STATES[2] - CONSTANTS[44])/CONSTANTS[47])); ALGEBRAIC[8] = CONSTANTS[6]*STATES[7]*(1.00000/1000.00)*(STATES[3] - CONSTANTS[5]); ALGEBRAIC[12] = CONSTANTS[13]*(1.00000/1000.00)*(STATES[3] - CONSTANTS[14]); ALGEBRAIC[15] = CONSTANTS[21]*(1.00000/1000.00)*(STATES[3] - CONSTANTS[22])*( CONSTANTS[30]*CONSTANTS[18]+ CONSTANTS[31]*CONSTANTS[19]+ CONSTANTS[32]*CONSTANTS[20]); ALGEBRAIC[20] = CONSTANTS[36]*(1.00000/1000.00)*(STATES[3] - CONSTANTS[37])*( CONSTANTS[42]*ALGEBRAIC[18]+ CONSTANTS[43]*ALGEBRAIC[19]); ALGEBRAIC[21] = 1.00000/(1.00000+exp(- (STATES[3] - CONSTANTS[44])/CONSTANTS[48])); ALGEBRAIC[1] = 1.00000/(1.00000+exp(- (STATES[0]+40.0000)/6.00000)); ALGEBRAIC[3] = CONSTANTS[1]*ALGEBRAIC[1]*STATES[4]*(1.00000/1000.00)*(STATES[0] - CONSTANTS[2]); ALGEBRAIC[4] = 1.00000/(1.00000+exp(- (STATES[0]+29.0000)/4.00000)); ALGEBRAIC[5] = CONSTANTS[4]*pow(ALGEBRAIC[4], 4.00000)*(1.00000/1000.00)*(STATES[0] - CONSTANTS[5]); ALGEBRAIC[9] = CONSTANTS[13]*(1.00000/1000.00)*(STATES[0] - CONSTANTS[14]); ALGEBRAIC[13] = CONSTANTS[21]*(1.00000/1000.00)*(STATES[0] - CONSTANTS[22])*( CONSTANTS[15]*CONSTANTS[18]+ CONSTANTS[16]*CONSTANTS[19]+ CONSTANTS[17]*CONSTANTS[20]); ALGEBRAIC[22] = CONSTANTS[36]*(1.00000/1000.00)*(STATES[0] - CONSTANTS[37])*( CONSTANTS[33]*ALGEBRAIC[18]+ CONSTANTS[34]*ALGEBRAIC[19]+ CONSTANTS[35]*ALGEBRAIC[21]); ALGEBRAIC[6] = CONSTANTS[6]*STATES[5]*(1.00000/1000.00)*(STATES[1] - CONSTANTS[5]); ALGEBRAIC[10] = CONSTANTS[13]*(1.00000/1000.00)*(STATES[1] - CONSTANTS[14]); ALGEBRAIC[16] = 1.00000/(1.00000+exp(- (STATES[0] - CONSTANTS[44])/CONSTANTS[45])); ALGEBRAIC[17] = CONSTANTS[21]*(1.00000/1000.00)*(STATES[1] - CONSTANTS[22])*( CONSTANTS[26]*ALGEBRAIC[16]+ CONSTANTS[23]*CONSTANTS[18]+ CONSTANTS[24]*CONSTANTS[19]+ CONSTANTS[25]*CONSTANTS[20]); ALGEBRAIC[23] = CONSTANTS[36]*(1.00000/1000.00)*(STATES[1] - CONSTANTS[37])*( CONSTANTS[38]*ALGEBRAIC[19]+ CONSTANTS[39]*ALGEBRAIC[21]); ALGEBRAIC[7] = CONSTANTS[6]*STATES[6]*(1.00000/1000.00)*(STATES[2] - CONSTANTS[5]); ALGEBRAIC[11] = CONSTANTS[13]*(1.00000/1000.00)*(STATES[2] - CONSTANTS[14]); ALGEBRAIC[14] = CONSTANTS[21]*(1.00000/1000.00)*(STATES[2] - CONSTANTS[22])*( CONSTANTS[27]*CONSTANTS[18]+ CONSTANTS[28]*CONSTANTS[19]+ CONSTANTS[29]*CONSTANTS[20]); ALGEBRAIC[24] = CONSTANTS[36]*(1.00000/1000.00)*(STATES[2] - CONSTANTS[37])*( CONSTANTS[40]*ALGEBRAIC[18]+ CONSTANTS[41]*ALGEBRAIC[21]); }