Personal tools
You are here: Home Model Repository
 
Views

A quantitative description of membrane current and its application to conductance and excitation in nerve

Generated code

Programming Language

Download this code
  • The required array sizes are:
    • VARIABLES[17]
    • CONSTANTS[5]
    • BOUND[1]
    • RATES[4]
  • The following variables are defined:
    • Variable beta_h(VARIABLES[4]; recomputed after rate changes)
    • Variable i_K(VARIABLES[5]; recomputed after rate changes)
    • Variable g_K(CONSTANTS[0])
    • Variable E_K(VARIABLES[6]; computed once)
    • Variable n(RATES[0] and VARIABLES[0])
    • Variable alpha_n(VARIABLES[7]; recomputed after rate changes)
    • Variable beta_n(VARIABLES[8]; recomputed after rate changes)
    • Variable i_L(VARIABLES[9]; recomputed after rate changes)
    • Variable g_L(CONSTANTS[1])
    • Variable E_L(VARIABLES[10]; computed once)
    • Variable time(BOUND[0])
    • Variable V(RATES[1] and VARIABLES[1])
    • Variable E_R(CONSTANTS[2])
    • Variable Cm(CONSTANTS[3])
    • Variable i_Stim(VARIABLES[11]; recomputed after rate changes)
    • Variable i_Na(VARIABLES[12]; recomputed after rate changes)
    • Variable g_Na(CONSTANTS[4])
    • Variable E_Na(VARIABLES[13]; computed once)
    • Variable m(RATES[2] and VARIABLES[2])
    • Variable alpha_m(VARIABLES[14]; recomputed after rate changes)
    • Variable beta_m(VARIABLES[15]; recomputed after rate changes)
    • Variable h(RATES[3] and VARIABLES[3])
    • Variable alpha_h(VARIABLES[16]; recomputed after rate changes)
  • No equation needed for Newton-Raphson evaluation.
void SetupFixedConstants(double* CONSTANTS)
{
CONSTANTS[0] = 36;
CONSTANTS[1] = 0.3;
CONSTANTS[2] = -75;
CONSTANTS[3] = 1;
CONSTANTS[4] = 120;
}

void SetupComputedConstants(double* CONSTANTS, double* VARIABLES)
{
VARIABLES[6] = (CONSTANTS[2]-12.0000);
VARIABLES[10] = (CONSTANTS[2]+10.6130);
VARIABLES[13] = (CONSTANTS[2]+115.000);
VARIABLES[0] = 0.325000;
VARIABLES[1] = -75.0000;
VARIABLES[2] = 0.0500000;
VARIABLES[3] = 0.600000;
}

void ComputeRates(double* BOUND, double* RATES, double* CONSTANTS, double* VARIABLES)
{
RATES[1] = ((-((-VARIABLES[11])+VARIABLES[12]+VARIABLES[5]+VARIABLES[9]))/CONSTANTS[3]);
RATES[2] = ((VARIABLES[14]*(1.00000-VARIABLES[2]))-(VARIABLES[15]*VARIABLES[2]));
RATES[3] = ((VARIABLES[16]*(1.00000-VARIABLES[3]))-(VARIABLES[4]*VARIABLES[3]));
RATES[0] = ((VARIABLES[7]*(1.00000-VARIABLES[0]))-(VARIABLES[8]*VARIABLES[0]));
}

void ComputeVariables(double* BOUND, double* RATES, double* CONSTANTS, double* VARIABLES)
{
VARIABLES[5] = (CONSTANTS[0]*pow(VARIABLES[0],4.00000)*(VARIABLES[1]-VARIABLES[6]));
VARIABLES[4] = (1.00000/(exp(((-(VARIABLES[1]+45.0000))/10.0000))+1.00000));
VARIABLES[7] = (((-0.0100000)*(VARIABLES[1]+65.0000))/(exp(((-(VARIABLES[1]+65.0000))/10.0000))-1.00000));
VARIABLES[8] = (0.125000*exp(((VARIABLES[1]+75.0000)/80.0000)));
VARIABLES[9] = (CONSTANTS[1]*(VARIABLES[1]-VARIABLES[10]));
VARIABLES[11] = ((((BOUND[0]>=10.0000))&&((BOUND[0]<=10.5000)))) ? (20.0000) : (0.00000);
VARIABLES[12] = (CONSTANTS[4]*pow(VARIABLES[2],3.00000)*VARIABLES[3]*(VARIABLES[1]-VARIABLES[13]));
VARIABLES[14] = (((-0.100000)*(VARIABLES[1]+50.0000))/(exp(((-(VARIABLES[1]+50.0000))/10.0000))-1.00000));
VARIABLES[15] = (4.00000*exp(((-(VARIABLES[1]+75.0000))/18.0000)));
VARIABLES[16] = (0.0700000*exp(((-(VARIABLES[1]+75.0000))/20.0000)));
#ifndef VARIABLES_FOR_RATES_ONLY
#endif
}