CEPS  24.01
Cardiac ElectroPhysiology Simulator
AbstractStaticPdeSolver.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 
33 
34 // Forward declarations
36 
39 {
40 
41  public:
42 
45 
47  virtual ~AbstractStaticPdeSolver();
48 
50  void
51  solve() override;
52 
55  void
56  setupWithParameters(InputParameters* params) override;
57 
59  CepsUInt
60  getExpectedNumberOfOutputs() const final;
61 
63  virtual void
64  output(DHVecPtr solution, CepsBool immediateWriting = true);
65 
68  DHVecPtr
69  getSolution() const;
70 
72  void
74 
78  getErrors() const;
79 
80 
81  protected:
82 
85  getStaticProblem() const;
86 
87  // Linear system building methods
88  void
89  updateAssemblers() override;
90 
91  protected:
92 
95 
96 };
CepsArray< _Type, 2U > CepsArray2
C++ array, 2 elements.
Definition: CepsTypes.hpp:162
bool CepsBool
Booleans.
Definition: CepsTypes.hpp:124
std::make_unsigned_t< CepsInt > CepsUInt
Unsigned version on CepsInt.
Definition: CepsTypes.hpp:109
std::shared_ptr< DistributedHaloVector > DHVecPtr
Typedef for pointer on Distributed Halo CepsVector.
Base class for PDE solving.
Astract Problem which does not depend on time.
Base class for solving PDE with no time dependance.
AbstractStaticPdeProblem * getStaticProblem() const
Returns a pointer with the appropriate type of pb.
virtual ~AbstractStaticPdeSolver()
Destructor.
void updateAssemblers() override
Update assemblers and recompute everything is needed.
void enableErrorComputation()
Sets the comparison with analytic solution.
CepsUInt getExpectedNumberOfOutputs() const final
Number of files written.
void solve() override
Solves the whole PDE in time.
DHVecPtr getSolution() const
Returns a copy of the distributed vector containing the current solution.
virtual void output(DHVecPtr solution, CepsBool immediateWriting=true)
Prints the solution and flush the writer if immediateWriting is true.
DHVecPtr m_solution
The actual vector with the solution.
CepsBool m_writeInitialGuess
Flag for outputs.
AbstractStaticPdeSolver(AbstractStaticPdeProblem *pb)
Constructor with problem.
void setupWithParameters(InputParameters *params) override
Set attributes from input file. Parameters are passed as arguments in case one wants to use other par...
CepsArray2< CepsArray3< CepsReal > > getErrors() const
Gets the currently computed errors. First index selects absolute(0) orrelative(1) second index is L-i...
Reads and stores simulation configuration.