Views
A quantitative description of membrane current and its application to conductance and excitation in nerve
Generated code
Download this code
- The required array sizes are:
- VARIABLES[17]
- CONSTANTS[10]
- BOUND[1]
- RATES[4]
- The following variables are defined:
- Variable time(BOUND[0])
- Variable V(RATES[0] and VARIABLES[0])
- Variable E_R(CONSTANTS[0])
- Variable i_K(VARIABLES[4]; recomputed after rate changes)
- Variable g_K(CONSTANTS[1])
- Variable E_K(VARIABLES[5]; computed once)
- Variable n(RATES[1] and VARIABLES[1])
- Variable alpha_n(VARIABLES[6]; recomputed after rate changes)
- Variable beta_n(VARIABLES[7]; recomputed after rate changes)
- Variable i_L(VARIABLES[8]; recomputed after rate changes)
- Variable g_L(CONSTANTS[2])
- Variable E_L(VARIABLES[9]; computed once)
- Variable Istim(VARIABLES[10]; recomputed after rate changes)
- Variable IstimStart(CONSTANTS[3])
- Variable IstimEnd(CONSTANTS[4])
- Variable IstimAmplitude(CONSTANTS[5])
- Variable IstimPeriod(CONSTANTS[6])
- Variable IstimPulseDuration(CONSTANTS[7])
- Variable Cm(CONSTANTS[8])
- Variable i_Na(VARIABLES[11]; recomputed after rate changes)
- Variable g_Na(CONSTANTS[9])
- Variable E_Na(VARIABLES[12]; computed once)
- Variable m(RATES[2] and VARIABLES[2])
- Variable alpha_m(VARIABLES[13]; recomputed after rate changes)
- Variable beta_m(VARIABLES[14]; recomputed after rate changes)
- Variable h(RATES[3] and VARIABLES[3])
- Variable alpha_h(VARIABLES[15]; recomputed after rate changes)
- Variable beta_h(VARIABLES[16]; recomputed after rate changes)
- No equation needed for Newton-Raphson evaluation.
void SetupFixedConstants(double* CONSTANTS)
{
CONSTANTS[0] = -75;
CONSTANTS[1] = 36;
CONSTANTS[2] = 0.3;
CONSTANTS[3] = 50;
CONSTANTS[4] = 50000;
CONSTANTS[5] = 20;
CONSTANTS[6] = 200;
CONSTANTS[7] = 0.5;
CONSTANTS[8] = 1;
CONSTANTS[9] = 120;
}
void SetupComputedConstants(double* CONSTANTS, double* VARIABLES)
{
VARIABLES[5] = (CONSTANTS[0]-12.0000);
VARIABLES[9] = (CONSTANTS[0]+10.6130);
VARIABLES[12] = (CONSTANTS[0]+115.000);
VARIABLES[0] = -75.0000;
VARIABLES[1] = 0.325000;
VARIABLES[2] = 0.0500000;
VARIABLES[3] = 0.600000;
}
void ComputeRates(double* BOUND, double* RATES, double* CONSTANTS, double* VARIABLES)
{
RATES[0] = ((-((-VARIABLES[10])+VARIABLES[11]+VARIABLES[4]+VARIABLES[8]))/CONSTANTS[8]);
RATES[2] = ((VARIABLES[13]*(1.00000-VARIABLES[2]))-(VARIABLES[14]*VARIABLES[2]));
RATES[3] = ((VARIABLES[15]*(1.00000-VARIABLES[3]))-(VARIABLES[16]*VARIABLES[3]));
RATES[1] = ((VARIABLES[6]*(1.00000-VARIABLES[1]))-(VARIABLES[7]*VARIABLES[1]));
}
void ComputeVariables(double* BOUND, double* RATES, double* CONSTANTS, double* VARIABLES)
{
VARIABLES[6] = (((-0.0100000)*(VARIABLES[0]+65.0000))/(exp(((-(VARIABLES[0]+65.0000))/10.0000))-1.00000));
VARIABLES[7] = (0.125000*exp(((VARIABLES[0]+75.0000)/80.0000)));
VARIABLES[8] = (CONSTANTS[2]*(VARIABLES[0]-VARIABLES[9]));
VARIABLES[10] = ((((BOUND[0]>=CONSTANTS[3]))&&((BOUND[0]<=CONSTANTS[4]))&&((((BOUND[0]-CONSTANTS[3])-(floor(((BOUND[0]-CONSTANTS[3])/CONSTANTS[6]))*CONSTANTS[6]))<=CONSTANTS[7])))) ? (CONSTANTS[5]) : (0.00000);
VARIABLES[11] = (CONSTANTS[9]*pow(VARIABLES[2],3.00000)*VARIABLES[3]*(VARIABLES[0]-VARIABLES[12]));
VARIABLES[4] = (CONSTANTS[1]*pow(VARIABLES[1],4.00000)*(VARIABLES[0]-VARIABLES[5]));
VARIABLES[13] = (((-0.100000)*(VARIABLES[0]+50.0000))/(exp(((-(VARIABLES[0]+50.0000))/10.0000))-1.00000));
VARIABLES[14] = (4.00000*exp(((-(VARIABLES[0]+75.0000))/18.0000)));
VARIABLES[15] = (0.0700000*exp(((-(VARIABLES[0]+75.0000))/20.0000)));
VARIABLES[16] = (1.00000/(exp(((-(VARIABLES[0]+45.0000))/10.0000))+1.00000));
#ifndef VARIABLES_FOR_RATES_ONLY
#endif
}
