CEPS  24.01
Cardiac ElectroPhysiology Simulator
TimeStepper.cpp
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 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
33 
35  m_start(0.),
36  m_end(0.),
37  m_step(0.),
38  m_stepsTaken(0U)
39 {}
40 
42  m_start(start),
43  m_end(end),
44  m_step(step),
45  m_stepsTaken(0U)
46 {
47 }
48 
50 {}
51 
52 void
54 {
55  setStartTime(start);
56  setEndTime(end);
57  setTimeStep(step);
58  return;
59 }
60 
61 void
63 {
64  m_start = startTime;
65  return;
66 }
67 
68 void
70 {
71  m_end = endTime;
72  return;
73 }
74 
75 void
77 {
78  m_step = timeStep;
79  return;
80 }
81 
84 {
85  return m_start;
86 }
87 
90 {
91  return m_end;
92 }
93 
96 {
97  return m_step;
98 }
99 
100 CepsReal
102 {
103  return m_start + (m_stepsTaken * m_step);
104 }
105 
106 CepsReal
108 {
109  // Computed this way to avoid accumulating precision error
110  CepsReal nextTimeStep = m_start + ((m_stepsTaken + 1) * m_step);
111  return nextTimeStep;
112 }
113 
114 void
116 {
117  m_stepsTaken++;
118  return;
119 }
120 
121 CepsBool
123 {
124  return m_end <= getTime();
125 }
126 
127 CepsBool
129 {
130  return (ceps::lesserThan(m_start, m_end) && (m_step > 0.0));
131 }
132 
133 CepsUInt
135 {
136  return m_stepsTaken;
137 }
138 
139 void
141 {
142  m_stepsTaken = 0U;
143  return;
144 }
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
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
CepsReal getStartTime() const
startTime start time of simulation
Definition: TimeStepper.cpp:83
CepsBool lesserThan(CepsReal a, CepsReal b, CepsReal epsilon=FLOATING_POINT_EPSILON)
Lesser than comparison with epsilon tolerance.
Definition: Precision.hpp:111