Alsvinn  0.5.3
The fast FVM simulator with UQ support
CellComputer.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/volume/Volume.hpp"
18 
19 namespace alsfvm {
20 namespace equation {
21 
25 class CellComputer {
26 public:
28  virtual ~CellComputer();
29 
35  virtual void computeExtraVariables(const volume::Volume& conservedVariables,
36  volume::Volume& extraVariables) = 0;
37 
50  virtual real computeMaxWaveSpeed(const volume::Volume& conservedVariables,
51  size_t direction) = 0;
52 
57 
61  virtual bool obeysConstraints(const volume::Volume& conservedVariables) = 0;
62 
69  virtual void computeFromPrimitive(const volume::Volume& primtiveVariables,
70  volume::Volume& conservedVariables) = 0;
71 };
72 } // namespace alsfvm
73 } // namespace equation
The CellComputer class defines some useful per cell computations.
Definition: CellComputer.hpp:25
The Volume class represents a volume (a collection of cells with values for each cell (eg...
Definition: Volume.hpp:30
double real
Definition: types.hpp:65
virtual void computeExtraVariables(const volume::Volume &conservedVariables, volume::Volume &extraVariables)=0
computeExtraVariables computes the extra variables (eg. pressure for euler)
virtual void computeFromPrimitive(const volume::Volume &primtiveVariables, volume::Volume &conservedVariables)=0
computeFromPrimitive computes the conserved and extra variables based on the primtive variables ...
virtual bool obeysConstraints(const volume::Volume &conservedVariables)=0
virtual ~CellComputer()
Default destructor to allow inheriting classes to have destructors.
Definition: CellComputer.cpp:20
virtual real computeMaxWaveSpeed(const volume::Volume &conservedVariables, size_t direction)=0
Various utility functions to implement the tecno flux.
Definition: types.hpp:30