45 #ifndef _IONICNOBLEPURKINJE_H_ 46 #define _IONICNOBLEPURKINJE_H_ 48 #include <lifev/electrophysiology/solver/IonicModels/ElectroIonicModel.hpp> 50 #include <Teuchos_RCP.hpp> 51 #include <Teuchos_ParameterList.hpp> 52 #include "Teuchos_XMLParameterListHelpers.hpp" 58 class IonicNoblePurkinje :
public virtual ElectroIonicModel
64 typedef ElectroIonicModel super;
65 typedef std::shared_ptr<VectorEpetra> vectorPtr_Type;
66 typedef std::shared_ptr<VectorElemental> elvecPtr_Type;
67 typedef RegionMesh<LinearTetra> mesh_Type;
82 IonicNoblePurkinje ( Teuchos::ParameterList& parameterList );
87 IonicNoblePurkinje (
const IonicNoblePurkinje& model );
89 virtual ~IonicNoblePurkinje() {}
96 IonicNoblePurkinje& operator= (
const IonicNoblePurkinje& model );
125 inline const Real& Itotal()
const 131 inline void setgi (
const Real& p )
137 inline void setCm (
const Real& p )
142 inline void setvNa (
const Real& p )
147 inline void setvK (
const Real& p )
155 if (! (C1 != 0 && C2 == 0) )
157 return (C1 * std::exp ( (V - V_0) / C2) + C3 * (V - V_0) ) / (1 + C4 * std::exp ( (V - V_0) / C5) ) ;
161 return (C1 + C3 * (V - V_0) ) / (1 + C4 * std::exp ( (V - V_0) / C5) ) ;
168 Real alpham = GeneralFunctionAlphaAndBeta (V, 0, 1, 0.1, -1, -15, -48);
169 Real betam = GeneralFunctionAlphaAndBeta (V, 0, 1, -0.12, -1, 5, -8);
170 Real taum = alpham + betam;
171 return alpham / (taum);
176 Real alphah = GeneralFunctionAlphaAndBeta (V, 0.17, -20, 0, 0, 1, -90);
177 Real betah = GeneralFunctionAlphaAndBeta (V, 1, 0, 0, 1, -10, -42);
178 Real tauh = alphah + betah;
179 return alphah / (tauh);
184 Real alphan = GeneralFunctionAlphaAndBeta (V, 0, 1, 0.0001, -1, -10, -50);
185 Real betan = GeneralFunctionAlphaAndBeta (V, 0.002, -80, 0, 0, 1, -90);
186 Real taun = alphan + betan;
187 return alphan / (taun);
194 void computeGatingRhs (
const std::vector<Real>& v, std::vector<Real>& rhs);
196 void computeRhs (
const std::vector<Real>& v, std::vector<Real>& rhs);
199 Real computeLocalPotentialRhs (
const std::vector<Real>& v );
201 void computeGatingVariablesWithRushLarsen ( std::vector<Real>& v,
const Real dt );
void updateInverseJacobian(const UInt &iQuadPt)
double Real
Generic real data.