LifeV
heart.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
29  @brief Cardiac Electrophysiology Test
30  @author Lucia Mirabella <lucia.mirabella@mail.polimi.it> and Mauro Perego <mauro.perego@polimi.it>
31  @date 11-2007
32  @contributors Ricardo Ruiz-Baier <ricardo.ruiz@epfl.ch>
33  @last update 11-2010
34  */
35 
36 #ifndef __HEART_H
37 #define __HEART_H
38 
39 #define MONODOMAIN
40 
41 #include <lifev/core/array/MatrixEpetra.hpp>
42 #include <lifev/core/array/MapEpetra.hpp>
43 #include <lifev/core/mesh/MeshData.hpp>
44 #include <lifev/core/mesh/MeshPartitioner.hpp>
45 
46 #ifdef MONODOMAIN
47 #include <lifev/heart/solver/HeartMonodomainSolver.hpp>
48 #else
49 #include <lifev/heart/solver/HeartBidomainSolver.hpp>
50 #endif
51 #include <lifev/heart/solver/HeartIonicSolver.hpp>
52 #include <lifev/core/filter/ExporterEnsight.hpp>
53 #include <lifev/core/filter/ExporterHDF5.hpp>
54 #include <lifev/core/filter/ExporterEmpty.hpp>
55 
56 
57 
58 namespace LifeV
59 {
60 /*!
61  \class Heart
62 
63  3D Action potential propagation class
64 
65 
66  */
67 class Heart
68 {
69 public:
70 
71  //! @name Typedefs
72  //@{
73 
74 #ifdef MONODOMAIN
77 #else
80 #endif
83  //@}
84 
85  /** @name Constructors, destructor
86  */
87  //@{
88 
89  Heart ( Int argc,
90  char** argv );
91 
92  virtual ~Heart() {}
93 
94  //@}
95 
96  /** @name Methods
97  */
98  //@{
99 
100  //! To build the system and iterate
101  void run();
102 
103  //! To compute the righthand side of the system
104 #ifdef MONODOMAIN
105  void computeRhs ( vector_Type& rhs,
106  HeartMonodomainSolver< RegionMesh<LinearTetra> >& electricModel,
107  std::shared_ptr< HeartIonicSolver< RegionMesh<LinearTetra> > > ionicModel,
108  HeartMonodomainData& dataMonodomain );
109 #else
110  void computeRhs ( vector_Type& rhs,
114 #endif
115  //@}
116 
117 
118 private:
122 };
123 }
124 #endif /* __HEART_H */
std::shared_ptr< matrix_Type > matrixPtr_Type
Definition: heart.hpp:82
HeartMonodomainSolver< RegionMesh< LinearTetra > >::matrix_Type matrix_Type
Definition: heart.hpp:76
std::shared_ptr< HeartFunctors > M_heart_fct
Definition: heart.hpp:121
int32_type Int
Generic integer data.
Definition: LifeV.hpp:188
virtual ~Heart()
Definition: heart.hpp:92
void computeRhs(vector_Type &rhs, HeartMonodomainSolver< RegionMesh< LinearTetra > > &electricModel, std::shared_ptr< HeartIonicSolver< RegionMesh< LinearTetra > > > ionicModel, HeartMonodomainData &dataMonodomain)
To compute the righthand side of the system.
Definition: heart.cpp:426
Heart(Int argc, char **argv)
Constructors.
Definition: heart.cpp:70
#define MONODOMAIN
Definition: heart.hpp:39
UInt ion_model
Definition: heart.hpp:119
void run()
To build the system and iterate.
Definition: heart.cpp:94
std::shared_ptr< vector_Type > vectorPtr_Type
Definition: heart.hpp:81
HeartMonodomainSolver< RegionMesh< LinearTetra > >::vector_Type vector_Type
Definition: heart.hpp:75
UInt nbeq
Definition: heart.hpp:120
uint32_type UInt
generic unsigned integer (used mainly for addressing)
Definition: LifeV.hpp:191