LifeV
IonicMitchellSchaeffer.hpp
Go to the documentation of this file.
1 //@HEADER
2 /*
3 *******************************************************************************
4 
5  Copyright (C) 2004, 2005, 2007 EPFL, Politecnico di Milano, INRIA
6  Copyright (C) 2010 EPFL, Politecnico di Milano, Emory University
7 
8  This file is part of LifeV.
9 
10  LifeV is free software; you can redistribute it and/or modify
11  it under the terms of the GNU Lesser General Public License as published by
12  the Free Software Foundation, either version 3 of the License, or
13  (at your option) any later version.
14 
15  LifeV is distributed in the hope that it will be useful,
16  but WITHOUT ANY WARRANTY; without even the implied warranty of
17  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18  Lesser General Public License for more details.
19 
20  You should have received a copy of the GNU Lesser General Public License
21  along with LifeV. If not, see <http://www.gnu.org/licenses/>.
22 
23 *******************************************************************************
24 */
25 //@HEADER
26 
27 /*!
28  @file IonicMitchellSchaeffer
29  @brief Ionic model based on Mitchell-Schaeffer model.
30 
31  model as in
32  Mitchell, Colleen C., and David G. Schaeffer.
33  "A two-current model for the dynamics of cardiac membrane."
34  Bulletin of mathematical biology 65.5 (2003): 767-793.
35 
36  @date 03-2013
37  @author Luis Miguel De Oliveira Vilaca <luismiguel.deoliveiravilaca@epfl.ch>
38 
39  @contributors
40  @mantainer Luis Miguel De Oliveira Vilaca <luismiguel.deoliveiravilaca@epfl.ch>
41  @last update 03-2013
42  */
43 
44 
45 #ifndef _IONICMITCHELLSCHAEFFER_H_
46 #define _IONICMITCHELLSCHAEFFER_H_
47 
48 #include <lifev/electrophysiology/solver/IonicModels/ElectroIonicModel.hpp>
49 
50 
51 #include <Teuchos_RCP.hpp>
52 #include <Teuchos_ParameterList.hpp>
53 #include "Teuchos_XMLParameterListHelpers.hpp"
54 
55 namespace LifeV
56 {
57 //! IonicModel - This class implements an ionic model.
58 
59 
60 class IonicMitchellSchaeffer : public virtual ElectroIonicModel
61 {
62 
63 public:
64  //! @name Type definitions
65  //@{
66  typedef ElectroIonicModel super;
69  //@}
70 
71 
72 
73  //! @name Constructors & Destructor
74  //@{
75 
76  //! Constructor
78 
79  /*!
80  * @param Epetra communicator
81  * @param list of parameters in an xml file
82  */
83  IonicMitchellSchaeffer ( Teuchos::ParameterList& parameterList );
84 
85  /*!
86  * @param IonicMitchellSchaeffer object
87  */
89  //! Destructor
90  virtual ~IonicMitchellSchaeffer() {}
91 
92  //@}
93 
94  //! @name Overloads
95  //@{
96 
98 
99  //@}
100 
101  //! @name Setters and getters
102  //@{
103 
104  inline const Real& vGate() const
105  {
106  return M_vGate;
107  }
108 
109  inline void setVGate (const Real& vGate)
110  {
111  this->M_vGate = vGate;
112  }
113 
114  inline const Real& tauClose() const
115  {
116  return M_tauClose;
117  }
118 
119  inline void setTauClose (const Real& tauClose)
120  {
121  this->M_tauClose = tauClose;
122  }
123 
124  inline const Real& tauOpen() const
125  {
126  return M_tauOpen;
127  }
128 
129  inline void setTauOpen (const Real& tauOpen)
130  {
131  this->M_tauOpen = tauOpen;
132  }
133 
134  inline const Real& tauIn() const
135  {
136  return M_tauIn;
137  }
138 
139  inline void setTauIn (const Real& tauIn)
140  {
141  this->M_tauIn = tauIn;
142  }
143 
144  inline const Real& tauOut() const
145  {
146  return M_tauOut;
147  }
148 
149  inline void setTauOut (const Real& tauOut)
150  {
151  this->M_tauOut = tauOut;
152  }
153 
154  //@}
155 
156  //! @name Methods
157  //@{
158 
159  //Compute the rhs on a single node or for the 0D case
160  void computeGatingRhs ( const std::vector<Real>& v, std::vector<Real>& rhs );
161 
162  void computeRhs ( const std::vector<Real>& v, std::vector<Real>& rhs );
163 
164 
165  // compute the rhs with state variable interpolation
166  Real computeLocalPotentialRhs ( const std::vector<Real>& v);
167  Real computeLocalGatingRhs ( const std::vector<Real>& v );
168 
169  //! Display information about the model
170  void showMe();
171 
172 
173  //@}
174 
175 private:
176  //! Model Parameters
177 
178  //! Chemical kinetics parameters
179 
185 
186 
187  //@}
188 
189 }; // class IonicMitchellSchaeffer
190 
191 
192 
193 inline ElectroIonicModel* createIonicMitchellSchaeffer()
194 {
195  return new IonicMitchellSchaeffer();
196 }
197 
198 namespace
199 {
201 }
202 
203 
204 }
205 
206 #endif
void setTauOpen(const Real &tauOpen)
IonicMitchellSchaeffer & operator=(const IonicMitchellSchaeffer &model)
Operator.
virtual ~IonicMitchellSchaeffer()
Destructor.
void showMe()
Display information about the model.
void setTauClose(const Real &tauClose)
void updateInverseJacobian(const UInt &iQuadPt)
IonicMitchellSchaeffer(const IonicMitchellSchaeffer &model)
double Real
Generic real data.
Definition: LifeV.hpp:175
ElectroIonicModel * createIonicMitchellSchaeffer()
std::shared_ptr< VectorEpetra > vectorPtr_Type
void computeGatingRhs(const std::vector< Real > &v, std::vector< Real > &rhs)
Methods.
void computeRhs(const std::vector< Real > &v, std::vector< Real > &rhs)
This methods contains the actual evaluation of the rhs of all state variablesin the model (0D version...
Real computeLocalGatingRhs(const std::vector< Real > &v)
IonicMitchellSchaeffer(Teuchos::ParameterList &parameterList)
Real computeLocalPotentialRhs(const std::vector< Real > &v)
This methods contains the actual evaluation of the rhs of the voltage equation only (0D version) ...
IonicModel - This class implements an ionic model.
RegionMesh< LinearTetra > mesh_Type