LifeV
IonicGoldbeter.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 IonicGoldbeter
29  @brief Intracellular Calcium model from Goldbeter et al. (1990). By "potential" we
30  refer to the cytosolic calcium concentration, whereas the gating variable
31  represents the sarcoplasmic calcium concentration
32 
33  Model as in
34  Goldbeter, Albert, GENEVItVE Dupont, and Michael J. Berridge.
35  "Minimal model for signal-induced Ca2+ oscillations and for their frequency encoding through protein phosphorylation."
36  Proceedings of the National Academy of Sciences 87.4 (1990): 1461-1465.
37 
38  @date 09-2013
39 
40  @author Ricardo Ruiz <ricardo.ruizbaier@unil.ch>
41 
42  @contributors
43  @mantainer Ricardo Ruiz <ricardo.ruizbaier@epfl.ch>
44  @last update 09-2013
45  */
46 
47 
48 #ifndef _IONICGOLDBETER_H_
49 #define _IONICGOLDBETER_H_
50 
51 #include <lifev/electrophysiology/solver/IonicModels/ElectroIonicModel.hpp>
52 
53 
54 #include <Teuchos_RCP.hpp>
55 #include <Teuchos_ParameterList.hpp>
56 #include "Teuchos_XMLParameterListHelpers.hpp"
57 
58 namespace LifeV
59 {
60 
61 
62 class IonicGoldbeter : public virtual ElectroIonicModel
63 {
64 
65 public:
66  //! @name Type definitions
67  //@{
68  typedef ElectroIonicModel super;
71  //@}
72 
73 
74 
75  //! @name Constructors & Destructor
76  //@{
77 
78  //! Constructor
80 
81  /*!
82  * @param Epetra communicator
83  * @param list of parameters in an xml file
84  */
85  IonicGoldbeter ( Teuchos::ParameterList& parameterList );
86 
87  /*!
88  * @param IntracellularCalciumGoldbeter object
89  */
90  IonicGoldbeter ( const IonicGoldbeter& model );
91  //! Destructor
92  virtual ~IonicGoldbeter() {}
93 
94  //@}
95 
96  //! @name Overloads
97  //@{
98 
99  IonicGoldbeter& operator= ( const IonicGoldbeter& model );
100 
101  //@}
102 
103  //! @name Setters and getters
104  //@{
105 
106  //parameters getters and setters
107  inline const Real& Nu1() const
108  {
109  return M_nu1;
110  }
111  inline const Real& Nu2() const
112  {
113  return M_nu2;
114  }
115  inline const Real& Nu3() const
116  {
117  return M_nu3;
118  }
119  inline const Real& Nu4() const
120  {
121  return M_nu4;
122  }
123  inline const Real& Nu5() const
124  {
125  return M_nu5;
126  }
127  inline const Real& K1() const
128  {
129  return M_k1;
130  }
131  inline const Real& K2() const
132  {
133  return M_k2;
134  }
135  inline const Real& K3() const
136  {
137  return M_k3;
138  }
139  inline const Real& K4() const
140  {
141  return M_k4;
142  }
143 
144  inline void setNu1 ( const Real& nu1 )
145  {
146  this->M_nu1 = nu1;
147  }
148  inline void setNu2 ( const Real& nu2 )
149  {
150  this->M_nu2 = nu2;
151  }
152  inline void setNu3 ( const Real& nu3 )
153  {
154  this->M_nu3 = nu3;
155  }
156  inline void setNu4 ( const Real& nu4 )
157  {
158  this->M_nu4 = nu4;
159  }
160  inline void setNu5 ( const Real& nu5 )
161  {
162  this->M_nu5 = nu5;
163  }
164  inline void setK1 ( const Real& k1 )
165  {
166  this->M_k1 = k1;
167  }
168  inline void setK2 ( const Real& k2 )
169  {
170  this->M_k2 = k2;
171  }
172  inline void setK3 ( const Real& k3 )
173  {
174  this->M_k3 = k3;
175  }
176  inline void setK4 ( const Real& k4 )
177  {
178  this->M_k4 = k4;
179  }
180 
181  //@}
182 
183  //! @name Methods
184  //@{
185 
186  //Compute the rhs on a single node or for the 0D case
187  void computeGatingRhs ( const std::vector<Real>& v, std::vector<Real>& rhs);
188  void computeRhs ( const std::vector<Real>& v, std::vector<Real>& rhs);
189 
190  //Compute the rhs on a mesh/ 3D case
191  // void computeRhs( const std::vector<vectorPtr_Type>& v, std::vector<vectorPtr_Type>& rhs );
192  // void computeRhs( const std::vector<vectorPtr_Type>& v, const VectorEpetra& Iapp, std::vector<vectorPtr_Type>& rhs );
193  //
194 
195  // compute the rhs with state variable interpolation
196  Real computeLocalPotentialRhs ( const std::vector<Real>& v);
197 
198  // void computePotentialRhs( const std::vector<vectorPtr_Type>& v,
199  // const VectorEpetra& Iapp,
200  // std::vector<vectorPtr_Type>& rhs,
201  // FESpace<mesh_Type, MapEpetra>& uFESpace );
202 
203  //! Display information about the model
204  void showMe();
205 
206  //@}
207 
208 private:
209  //! Model Parameters
210 
211  //! Chemical kinetics parameters
221 
222  //@}
223 
224 }; // class IntracellularCalciumGoldbeter
225 
226 }
227 
228 #endif
IonicGoldbeter()
Constructor.
IonicGoldbeter(Teuchos::ParameterList &parameterList)
void setK2(const Real &k2)
const Real & Nu3() const
const Real & K2() const
RegionMesh< LinearTetra > mesh_Type
const Real & Nu4() const
void setNu2(const Real &nu2)
IonicGoldbeter(const IonicGoldbeter &model)
void setNu1(const Real &nu1)
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...
void updateInverseJacobian(const UInt &iQuadPt)
const Real & Nu2() const
void setK1(const Real &k1)
void computeGatingRhs(const std::vector< Real > &v, std::vector< Real > &rhs)
Methods.
const Real & K1() const
Real computeLocalPotentialRhs(const std::vector< Real > &v)
This methods contains the actual evaluation of the rhs of the voltage equation only (0D version) ...
void setNu5(const Real &nu5)
IonicGoldbeter & operator=(const IonicGoldbeter &model)
Operator.
const Real & K3() const
void setNu4(const Real &nu4)
virtual ~IonicGoldbeter()
Destructor.
void setNu3(const Real &nu3)
double Real
Generic real data.
Definition: LifeV.hpp:175
std::shared_ptr< VectorEpetra > vectorPtr_Type
void setK3(const Real &k3)
Real M_nu1
Model Parameters.
ElectroIonicModel super
void setK4(const Real &k4)
const Real & Nu5() const
const Real & Nu1() const
void showMe()
Display information about the model.
const Real & K4() const