Alsvinn  0.5.3
The fast FVM simulator with UQ support
AbstractSimulator.hpp
Go to the documentation of this file.
1 /* Copyright (c) 2018 ETH Zurich, Kjetil Olsen Lye
2  * This program is free software: you can redistribute it and/or modify
3  * it under the terms of the GNU General Public License as published by
4  * the Free Software Foundation, either version 3 of the License, or
5  * (at your option) any later version.
6  *
7  * This program is distributed in the hope that it will be useful,
8  * but WITHOUT ANY WARRANTY; without even the implied warranty of
9  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10  * GNU General Public License for more details.
11  *
12  * You should have received a copy of the GNU General Public License
13  * along with this program. If not, see <http://www.gnu.org/licenses/>.
14  */
15 
16 #pragma once
17 #include "alsfvm/types.hpp"
18 #include "alsfvm/io/Writer.hpp"
20 
21 namespace alsfvm {
22 namespace simulator {
23 
37 public:
38 
39 
43  virtual bool atEnd() = 0;
44 
48  virtual void performStep() = 0;
49 
53  virtual void callWriters() = 0;
54 
59  virtual void addWriter(alsfvm::shared_ptr<io::Writer> writer) = 0;
60 
61 
65  virtual real getCurrentTime() const = 0;
66 
70  virtual real getEndTime() const = 0;
71 
72 
74  virtual const std::shared_ptr<grid::Grid>& getGrid() const = 0;
75 
77  virtual std::shared_ptr<grid::Grid>& getGrid() = 0;
78 
80  virtual void finalize() = 0;
81 
93  virtual void addTimestepAdjuster(
94  alsfvm::shared_ptr<integrator::TimestepAdjuster>&
95  adjuster) = 0;
96 
97 
98 };
99 } // namespace simulator
100 } // namespace alsfvm
double real
Definition: types.hpp:65
virtual real getCurrentTime() const =0
virtual void addTimestepAdjuster(alsfvm::shared_ptr< integrator::TimestepAdjuster > &adjuster)=0
virtual void addWriter(alsfvm::shared_ptr< io::Writer > writer)=0
addWriter adds a writer, this will be called every time callWriter is called
Definition: AbstractSimulator.hpp:36
Various utility functions to implement the tecno flux.
Definition: types.hpp:30
virtual void finalize()=0
Finalizes the computation, should be called at the end.
virtual const std::shared_ptr< grid::Grid > & getGrid() const =0
Gets the current grid that is being used.
virtual real getEndTime() const =0