CEPS  24.01
Cardiac ElectroPhysiology Simulator
TimeStepper.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 
40 {
41  public:
43  TimeStepper();
44 
46  TimeStepper(CepsReal start, CepsReal end, CepsReal step);
47 
49  TimeStepper(const TimeStepper&) = default;
50 
52  virtual ~TimeStepper();
53 
60  virtual void
61  setTimes(CepsReal start, CepsReal end, CepsReal step);
62 
64  void
65  setStartTime(CepsReal startTime);
66 
68  void
69  setEndTime(CepsReal endTime);
70 
72  virtual void
73  setTimeStep(CepsReal timeStep);
74 
76  CepsReal
77  getStartTime() const;
78 
80  CepsReal
81  getEndTime() const;
82 
84  CepsReal
85  getTimeStep() const;
86 
88  virtual CepsReal
89  getTime();
90 
92  virtual CepsReal
94 
97  void
98  takeOneStep();
99 
101  CepsBool
102  atEnd();
103 
105  CepsBool
106  isProperlySet() const;
107 
109  CepsUInt
110  getNbTakenTimeSteps() const;
111 
113  virtual void
114  reset();
115 
116  protected:
121 };
bool CepsBool
Booleans.
Definition: CepsTypes.hpp:124
std::make_unsigned_t< CepsInt > CepsUInt
Unsigned version on CepsInt.
Definition: CepsTypes.hpp:109
float CepsReal
Need single precision floating point.
Definition: CepsTypes.hpp:100
A simple time stepper used in dynamic linear solvers.
Definition: TimeStepper.hpp:40
void setStartTime(CepsReal startTime)
startTime start time of simulation
Definition: TimeStepper.cpp:62
CepsReal getTimeStep() const
Time step.
Definition: TimeStepper.cpp:95
virtual ~TimeStepper()
Destructor.
Definition: TimeStepper.cpp:49
virtual void reset()
Reset current time to tStart.
CepsReal m_step
Time step, i.e dt.
CepsUInt m_stepsTaken
Number of time steps taken.
virtual CepsReal getTime()
current simulation time
virtual CepsReal computeNextTimeStep()
Compute next time step (fixed time stepping only)
void takeOneStep()
Updates the number of steps taken (derived steppers may compute new time and time step here)
CepsBool atEnd()
Whether time stepper has reached the end time or not.
void setEndTime(CepsReal endTime)
End time of simulation.
Definition: TimeStepper.cpp:69
TimeStepper()
Default constructor.
Definition: TimeStepper.cpp:34
CepsBool isProperlySet() const
Check that everything is fine with this time stepper.
CepsUInt getNbTakenTimeSteps() const
Number of time steps performed until now.
CepsReal m_start
Start time of simulation.
CepsReal m_end
End time of simulation.
virtual void setTimes(CepsReal start, CepsReal end, CepsReal step)
Set start, end and time step.
Definition: TimeStepper.cpp:53
virtual void setTimeStep(CepsReal timeStep)
Set time step.
Definition: TimeStepper.cpp:76
CepsReal getEndTime() const
End time of simulation.
Definition: TimeStepper.cpp:89
TimeStepper(const TimeStepper &)=default
Copy constructor.
CepsReal getStartTime() const
startTime start time of simulation
Definition: TimeStepper.cpp:83