Alsvinn  0.5.3
The fast FVM simulator with UQ support
CPUCellComputer.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
19 namespace alsfvm {
20 namespace equation {
21 
22 template<class Equation>
23 class CPUCellComputer : public CellComputer {
24 public:
31  virtual void computeExtraVariables(const volume::Volume& conservedVariables,
32  volume::Volume& extraVariables) override;
33 
45  virtual real computeMaxWaveSpeed(const volume::Volume& conservedVariables,
46  size_t
47  direction) override;
48 
54  virtual bool obeysConstraints(const volume::Volume& conservedVariables)
55  override;
56 
64  virtual void computeFromPrimitive(const volume::Volume& primtiveVariables,
65  volume::Volume& conservedVariables) override;
66 
67 private:
68  typename Equation::Parameters parameters;
69 };
70 } // namespace alsfvm
71 } // namespace equation
The CellComputer class defines some useful per cell computations.
Definition: CellComputer.hpp:25
virtual bool obeysConstraints(const volume::Volume &conservedVariables) override
Definition: CPUCellComputer.cpp:80
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 computeFromPrimitive(const volume::Volume &primtiveVariables, volume::Volume &conservedVariables) override
computeFromPrimitive computes the conserved and extra variables based on the primtive variables ...
Definition: CPUCellComputer.cpp:128
Definition: CPUCellComputer.hpp:23
virtual void computeExtraVariables(const volume::Volume &conservedVariables, volume::Volume &extraVariables) override
computeExtraVariables computes the extra variables (eg. pressure for euler)
Definition: CPUCellComputer.cpp:32
CPUCellComputer(simulator::SimulatorParameters &parameters)
Definition: CPUCellComputer.cpp:24
virtual real computeMaxWaveSpeed(const volume::Volume &conservedVariables, size_t direction) override
Definition: CPUCellComputer.cpp:47
Various utility functions to implement the tecno flux.
Definition: types.hpp:30
Definition: SimulatorParameters.hpp:22
alsutils::parameters::Parameters Parameters
Definition: Parameters.hpp:24