39 #include <lifev/electrophysiology/solver/IonicModels/IonicNoblePurkinje.hpp> 50 IonicNoblePurkinje::IonicNoblePurkinje() :
58 M_restingConditions.at (0) = -80.0;
59 M_restingConditions.at (1) = mInf (M_restingConditions[0]);
60 M_restingConditions.at (2) = nInf (M_restingConditions[0]);
61 M_restingConditions.at (3) = hInf (M_restingConditions[0]);
65 IonicNoblePurkinje::IonicNoblePurkinje ( Teuchos::ParameterList& parameterList ) :
68 M_gi = parameterList.get (
"gi", 0.14 );
69 M_vNa = parameterList.get (
"vNa", 40.0 );
70 M_vK = parameterList.get (
"vK", -100.0 );
71 M_Cm = parameterList.get (
"Cm", 12.0 );
76 IonicNoblePurkinje::IonicNoblePurkinje (
const IonicNoblePurkinje& model )
83 M_Itot = model.M_Itot;
85 M_numberOfEquations = model.M_numberOfEquations;
86 M_restingConditions = model.M_restingConditions;
93 IonicNoblePurkinje& IonicNoblePurkinje::operator= (
const IonicNoblePurkinje& model )
100 M_numberOfEquations = model.M_numberOfEquations;
101 M_restingConditions = model.M_restingConditions;
111 void IonicNoblePurkinje::computeGatingRhs (
const std::vector<Real>& v,
112 std::vector<Real>& rhs )
120 Real alpham = GeneralFunctionAlphaAndBeta (V, 0, 1, 0.1, -1, -15, -48);
121 Real betam = GeneralFunctionAlphaAndBeta (V, 0, 1, -0.12, -1, 5, -8);
122 Real alphah = GeneralFunctionAlphaAndBeta (V, 0.17, -20, 0, 0, 1, -90);
123 Real betah = GeneralFunctionAlphaAndBeta (V, 1, 0, 0, 1, -10, -42);
124 Real alphan = GeneralFunctionAlphaAndBeta (V, 0, 1, 0.0001, -1, -10, -50);
125 Real betan = GeneralFunctionAlphaAndBeta (V, 0.002, -80, 0, 0, 1, -90);
127 rhs[0] = alpham * (1 - M) - betam * M;
128 rhs[1] = alphan * (1 - N) - betan * N;
129 rhs[2] = alphah * (1 - H) - betah * H;
132 void IonicNoblePurkinje::computeRhs (
const std::vector<Real>& v,
133 std::vector<Real>& rhs )
141 Real alpham = GeneralFunctionAlphaAndBeta (V, 0, 1, 0.1, -1, -15, -48);
142 Real betam = GeneralFunctionAlphaAndBeta (V, 0, 1, -0.12, -1, 5, -8);
143 Real alphah = GeneralFunctionAlphaAndBeta (V, 0.17, -20, 0, 0, 1, -90);
144 Real betah = GeneralFunctionAlphaAndBeta (V, 1, 0, 0, 1, -10, -42);
145 Real alphan = GeneralFunctionAlphaAndBeta (V, 0, 1, 0.0001, -1, -10, -50);
146 Real betan = GeneralFunctionAlphaAndBeta (V, 0.002, -80, 0, 0, 1, -90);
148 Real gK1 = 1.2 * std::exp (- (V + 90.0) / 50.0) + 0.015 * std::exp ( (V + 90.0) / 60.0);
149 Real gK2 = 1.2 * N * N * N * N;
150 Real gNa = 400 * M * M * M * H + M_gi;
152 M_Itot = 1 / M_Cm * (-gNa * (V - M_vNa) - (gK1 + gK2) * (V - M_vK) );
153 rhs[0] = 1 / M_Cm * (-gNa * (V - M_vNa) - (gK1 + gK2) * (V - M_vK) );
154 rhs[1] = alpham * (1 - M) - betam * M;
155 rhs[2] = alphan * (1 - N) - betan * N;
156 rhs[3] = alphah * (1 - H) - betah * H;
160 Real IonicNoblePurkinje::computeLocalPotentialRhs (
const std::vector<Real>& v )
162 Real dPotential (0.0);
178 Real gK1 = 1.2 * std::exp (- (V + 90.0) / 50.0) + 0.015 * std::exp ( (V + 90.0) / 60.0);
179 Real gK2 = 1.2 * N * N * N * N;
180 Real gNa = 400 * M * M * M * H + M_gi;
182 M_Itot = 1 / M_Cm * (-gNa * (V - M_vNa) - (gK1 + gK2) * (V - M_vK) );
183 dPotential = 1 / M_Cm * (-gNa * (V - M_vNa) - (gK1 + gK2) * (V - M_vK) );
188 void IonicNoblePurkinje::computeGatingVariablesWithRushLarsen ( std::vector<Real>& v,
const Real dt )
193 Real alpham = GeneralFunctionAlphaAndBeta (V, 0, 1, 0.1, -1, -15, -48);
194 Real betam = GeneralFunctionAlphaAndBeta (V, 0, 1, -0.12, -1, 5, -8);
195 Real alphah = GeneralFunctionAlphaAndBeta (V, 0.17, -20, 0, 0, 1, -90);
196 Real betah = GeneralFunctionAlphaAndBeta (V, 1, 0, 0, 1, -10, -42);
197 Real alphan = GeneralFunctionAlphaAndBeta (V, 0, 1, 0.0001, -1, -10, -50);
198 Real betan = GeneralFunctionAlphaAndBeta (V, 0.002, -80, 0, 0, 1, -90);
200 Real taum = alpham + betam;
201 Real taun = alphan + betan;
202 Real tauh = alphah + betah;
204 Real mInf = alpham / (taum);
205 Real nInf = alphan / (taun);
206 Real hInf = alphah / (tauh);
208 v[1] = mInf + (v[1] - mInf) * exp (-dt * taum);
209 v[2] = nInf + (v[2] - nInf) * exp (-dt * taun);
210 v[3] = hInf + (v[3] - hInf) * exp (-dt * tauh);
214 void IonicNoblePurkinje::showMe()
217 std::cout <<
"\n\tHi, I'm the Noble model\n\t Good luck\n\n";
void updateInverseJacobian(const UInt &iQuadPt)
double Real
Generic real data.