-
Notifications
You must be signed in to change notification settings - Fork 0
/
luo_rudy_I_model_1991.h
151 lines (127 loc) · 7.05 KB
/
luo_rudy_I_model_1991.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
#ifndef __LUO_RUDY_I_MODEL_1991_HPP__
#define __LUO_RUDY_I_MODEL_1991_HPP__
#include <Cell.h>
//------------------------------------------------------------------------------
#define __LUO_RUDY_I_MODEL_1991_NB_OF_STATE_VARIABLES_ 8+ENABLE_MECHANO_ELECTRIC_COUPLING
//------------------------------------------------------------------------------
#include <string>
//------------------------------------------------------------------------------
class luo_rudy_I_model_1991 : public Cell {
public:
//------------------------------------------------------------------------
// State variables
//------------------------------------------------------------------------
double Y[__LUO_RUDY_I_MODEL_1991_NB_OF_STATE_VARIABLES_];
double dY[__LUO_RUDY_I_MODEL_1991_NB_OF_STATE_VARIABLES_];
// 0: h (dimensionless) (in fast_sodium_current_h_gate)
// 1: j (dimensionless) (in fast_sodium_current_j_gate)
// 2: m (dimensionless) (in fast_sodium_current_m_gate)
// 3: Cai (millimolar) (in intracellular_calcium_concentration)
// 4: V (millivolt) (in membrane)
// 5: d (dimensionless) (in slow_inward_current_d_gate)
// 6: f (dimensionless) (in slow_inward_current_f_gate)
// 7: X (dimensionless) (in time_dependent_potassium_current_X_gate)
std::string YNames[__LUO_RUDY_I_MODEL_1991_NB_OF_STATE_VARIABLES_];
std::string YUnits[__LUO_RUDY_I_MODEL_1991_NB_OF_STATE_VARIABLES_];
std::string YComponents[__LUO_RUDY_I_MODEL_1991_NB_OF_STATE_VARIABLES_];
//------------------------------------------------------------------------
// Constants
//------------------------------------------------------------------------
double E_b; // millivolt (in background_current)
double g_b; // milliS_per_cm2 (in background_current)
double g_Na; // milliS_per_cm2 (in fast_sodium_current)
double Ki; // millimolar (in ionic_concentrations)
double Ko; // millimolar (in ionic_concentrations)
double Nai; // millimolar (in ionic_concentrations)
double Nao; // millimolar (in ionic_concentrations)
double C; // microF_per_cm2 (in membrane)
double F; // coulomb_per_mole (in membrane)
double R; // joule_per_kilomole_kelvin (in membrane)
double T; // kelvin (in membrane)
double stim_amplitude; // microA_per_cm2 (in membrane)
double stim_duration; // millisecond (in membrane)
double stim_end; // millisecond (in membrane)
double stim_period; // millisecond (in membrane)
double stim_start; // millisecond (in membrane)
double g_Kp; // milliS_per_cm2 (in plateau_potassium_current)
double PR_NaK; // dimensionless (in time_dependent_potassium_current)
//------------------------------------------------------------------------
// Computed variables
//------------------------------------------------------------------------
double i_b; // microA_per_cm2 (in background_current)
double alpha_h; // per_millisecond (in fast_sodium_current_h_gate)
double beta_h; // per_millisecond (in fast_sodium_current_h_gate)
double alpha_j; // per_millisecond (in fast_sodium_current_j_gate)
double beta_j; // per_millisecond (in fast_sodium_current_j_gate)
double alpha_m; // per_millisecond (in fast_sodium_current_m_gate)
double beta_m; // per_millisecond (in fast_sodium_current_m_gate)
double E_Na; // millivolt (in fast_sodium_current)
double i_Na; // microA_per_cm2 (in fast_sodium_current)
double I_stim; // microA_per_cm2 (in membrane)
double E_Kp; // millivolt (in plateau_potassium_current)
double Kp; // dimensionless (in plateau_potassium_current)
double i_Kp; // microA_per_cm2 (in plateau_potassium_current)
double alpha_d; // per_millisecond (in slow_inward_current_d_gate)
double beta_d; // per_millisecond (in slow_inward_current_d_gate)
double alpha_f; // per_millisecond (in slow_inward_current_f_gate)
double beta_f; // per_millisecond (in slow_inward_current_f_gate)
double E_si; // millivolt (in slow_inward_current)
double i_si; // microA_per_cm2 (in slow_inward_current)
double alpha_X; // per_millisecond (in time_dependent_potassium_current_X_gate)
double beta_X; // per_millisecond (in time_dependent_potassium_current_X_gate)
double Xi; // dimensionless (in time_dependent_potassium_current_Xi_gate)
double E_K; // millivolt (in time_dependent_potassium_current)
double g_K; // milliS_per_cm2 (in time_dependent_potassium_current)
double i_K; // microA_per_cm2 (in time_dependent_potassium_current)
double K1_infinity; // dimensionless (in time_independent_potassium_current_K1_gate)
double alpha_K1; // per_millisecond (in time_independent_potassium_current_K1_gate)
double beta_K1; // per_millisecond (in time_independent_potassium_current_K1_gate)
double E_K1; // millivolt (in time_independent_potassium_current)
double g_K1; // milliS_per_cm2 (in time_independent_potassium_current)
double i_K1; // microA_per_cm2 (in time_independent_potassium_current)
double g_Si;
//------------------------------------------------------------------------
// Procedures
//------------------------------------------------------------------------
void init();
void compute(double time);
double getV(){
return this->Y[4];
}
double getDV(){
return this->dY[4];
}
double getStim(double time){
if ((time-floor(time/stim_period)*stim_period >= stim_start) &&
(time-floor(time/stim_period)*stim_period <= stim_start+stim_duration))
return -stim_amplitude;
else
return 0.0;
}
void incrementV(double value){
this->Y[4] += value;
}
void setGK1(double value){
g_K1 = value*sqrt(Ko/5.4);
}
void setGsi(double value){
g_Si = value;
}
void setGkp(double value){
g_Kp = value;
}
void setGk(double value){
g_K = value*sqrt(Ko/5.4);
}
//------------------------------------------------------------------
// Public Constructor
//------------------------------------------------------------------
luo_rudy_I_model_1991(bool enableMech = false) : Cell(this->Y, this->dY, __LUO_RUDY_I_MODEL_1991_NB_OF_STATE_VARIABLES_,
&this->stim_amplitude, &this->stim_duration, &this->stim_end,
&this->stim_period, &this->stim_start, enableMech){}
};
//------------------------------------------------------------------------------
#endif
//==============================================================================
// End of file
//==============================================================================