CEPS  24.01
Cardiac ElectroPhysiology Simulator
VariableTimeStepper.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 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
32 
35 
37  TimeStepper(),
38  m_middle(m_start)
39 {}
40 
42  TimeStepper(start, end, step),
43  m_middle(m_start)
44 {}
45 
47 {}
48 
49 void
51 {
52  TimeStepper::setTimes(start, end, step);
53  m_middle = start;
54 }
55 
56 void
58 {
59  m_middle = getTime();
60  m_stepsTaken = 0;
61  m_step = timeStep;
62  return;
63 }
64 
67 {
68  return m_middle + (m_stepsTaken * m_step);
69 }
70 
73 {
74  // Computed this way to avoid accumulating precision error
75  return m_middle + ((m_stepsTaken + 1) * m_step);
76 }
77 
78 void
80 {
83  return;
84 }
float CepsReal
Need single precision floating point.
Definition: CepsTypes.hpp:100
A simple time stepper used in dynamic linear solvers.
Definition: TimeStepper.hpp:40
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 void setTimes(CepsReal start, CepsReal end, CepsReal step)
Set start, end and time step.
Definition: TimeStepper.cpp:53
void reset() override
Reset current time to tStart.
void setTimes(CepsReal start, CepsReal end, CepsReal step) override
Set start, end and time step.
CepsReal computeNextTimeStep() override
Compute next time step (fixed time stepping only)
void setTimeStep(CepsReal timeStep) override
Set time step.
CepsReal m_middle
Start time of last time step update.
CepsReal getTime() override
current simulation time
~VariableTimeStepper()
Destructor.
VariableTimeStepper()
Default constructor.