CEPS  24.01
Cardiac ElectroPhysiology Simulator
BidomainProblem.hpp
Go to the documentation of this file.
1 /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2  This file is part of CEPS.
3 
4  CEPS is free software: you can redistribute it and/or modify
5  it under the terms of the GNU General Public License as published by
6  the Free Software Foundation, either version 3 of the License, or
7  (at your option) any later version.
8 
9  CEPS is distributed in the hope that it will be useful,
10  but WITHOUT ANY WARRANTY; without even the implied warranty of
11  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  GNU General Public License for more details.
13 
14  You should have received a copy of the GNU General Public License
15  along with CEPS (see file LICENSE at root of project).
16  If not, see <https://www.gnu.org/licenses/>.
17 
18 
19  Copyright 2019-2024 Inria, Universite de Bordeaux
20 
21  Authors, in alphabetical order:
22 
23  Pierre-Elliott BECUE, Florian CARO, Yves COUDIERE(*), Andjela DAVIDOVIC,
24  Charlie DOUANLA-LONTSI, Marc FUENTES, Mehdi JUHOOR, Michael LEGUEBE(*),
25  Pauline MIGERDITICHAN, Valentin PANNETIER(*), Nejib ZEMZEMI.
26  * : currently active authors
27 
28 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
30 #pragma once
31 
32 
34 
37 {
38  public:
39 
41  struct UnknownsName
42  {
44  static constexpr const char* vm = CardiacProblem::UnknownsName::vm;
46  static constexpr const char* ue = CardiacProblem::UnknownsName::ue;
47  };
48 
49  public :
50 
52  explicit BidomainProblem(Geometry* g, InputParameters* = nullptr);
53 
55  ~BidomainProblem() = default;
56 
58  void
59  defineUnknowns() override;
60 
63  getTMVUnknowns() const override;
64 
67  getCardiacUnknowns() const override;
68 
70  Unknown*
71  getTMVUnknown() const;
72 
74  Unknown*
75  getUeUnknown() const;
76 
78  void
79  getInitialCondition(DHVecPtr v) const override;
80 
82  void
83  run() override;
84 
85 
86  protected:
87 
88 };
89 
90 
std::vector< _Type, _Alloc > CepsVector
C++ vector.
Definition: CepsTypes.hpp:155
std::shared_ptr< DistributedHaloVector > DHVecPtr
Typedef for pointer on Distributed Halo CepsVector.
Bidomain equation main class.
void defineUnknowns() override
Transmembrane voltage and extracellular potential.
CepsVector< Unknown * > getCardiacUnknowns() const override
Returns a vector containing all unknowns that are cardiac unknowns (eg. vm, ui or ue)
~BidomainProblem()=default
Destructor.
Unknown * getUeUnknown() const
Link to the single unknown of the problem.
void run() override
Run the simulation.
Unknown * getTMVUnknown() const
Link to the single unknown of the problem.
void getInitialCondition(DHVecPtr v) const override
asks each ionic model to fill the parts of the Vm vector with its initial value, fill ue with same va...
BidomainProblem(Geometry *g, InputParameters *=nullptr)
Constructor with input strings and geometry.
CepsVector< Unknown * > getTMVUnknowns() const override
Returns a vector containing all unknowns that are a TMV (especially useful for bilayer)
A abstract class that regroups common parameters of cardiac problems.
Encapsulates all the geometrical data.
Definition: Geometry.hpp:50
Reads and stores simulation configuration.
A class used to defined an unknown of a PDE problem The unknown can be defined on a specific region,...
Definition: Unknown.hpp:45
name of unknowns in a struct
static constexpr const char * ue
Extracellular and extracardiac potential.
static constexpr const char * vm
Transmembrane voltage.
static constexpr const char * ue
Extracellular and extracardiac potential.
static constexpr const char * vm
Transmembrane voltage.