CEPS  24.01
Cardiac ElectroPhysiology Simulator
CLMonodomainProblem.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
32 
34 {
35  public:
36 
38  struct UnknownsName
39  {
41  static constexpr const char* vm = MonodomainProblem::UnknownsName::vm;
42  };
43 
44  public:
45 
47  class Ufunc : public SolVecSAFunc
48  {
49 
50  public:
51 
54 
56  CepsReal
57  eval(CepsStandardArgs args) final;
58 
59  };
60 
62  explicit CLMonodomainProblem(Geometry* g, InputParameters* = nullptr);
63 
65  ~CLMonodomainProblem() = default;
66 
68  void
69  run() override;
70 
72  void
73  defineUnknowns() override;
74 
75  void
76  defineBoundaryConditions() override;
77 };
CepsFunctionFlag
Enum for CepsStandardArgs functions.
Definition: CepsEnums.hpp:137
float CepsReal
Need single precision floating point.
Definition: CepsTypes.hpp:100
std::shared_ptr< DistributedHaloVector > DHVecPtr
Typedef for pointer on Distributed Halo CepsVector.
Simply f(u) = u with u from vector.
Ufunc(DHVecPtr *sol, CepsFunctionFlag loc)
Constructor.
CepsReal eval(CepsStandardArgs args) final
Returs f(u)=u.
void defineUnknowns() override
A single unknown for transmembrane voltage.
void run() override
Run the simulation.
void defineBoundaryConditions() override
For cardiac problems, use the "boundary stimulation" key to create boundary conditions using the same...
CLMonodomainProblem(Geometry *g, InputParameters *=nullptr)
Constructor with input strings and geometry.
~CLMonodomainProblem()=default
Destructor.
Encapsulates all the geometrical data.
Definition: Geometry.hpp:50
Reads and stores simulation configuration.
Defines and solve the monodomain problem, see models page of user doc.
A SAFunc which gets its values from a distributed vector of values on degrees of freedom.
name of unknowns in a struct
static constexpr const char * vm
Transmembrane voltage.
Structure used to pass arguments to SAFunc (see pde directory) The flags of the SAFunc allows extract...
Definition: CepsTypes.hpp:239
static constexpr const char * vm
Transmembrane voltage.