Alsvinn  0.5.3
The fast FVM simulator with UQ support
Views.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 
19 namespace alsfvm {
20 namespace equation {
21 namespace linear {
28 template<class VolumeType, class ViewType>
29 class Views {
30 public:
31 
32  Views(VolumeType& volume)
33  : u(volume.getScalarMemoryArea("u")->getView()) {
34  // Empty
35  }
36 
37 
38  template<size_t variableIndex>
39  __device__ __host__ ViewType& get() {
40  static_assert(variableIndex < 1,
41  "We only have 1 conserved variables for Linear!");
42  return u;
43  }
44 
45 
46  __device__ __host__ ViewType& get(size_t variableIndex) {
47  assert(variableIndex == 0);
48  return u;
49  }
50  __device__ __host__ size_t index(size_t x, size_t y, size_t z) const {
51  return u.index(x, y, z);
52  }
53 
54 
55  ViewType u;
56 };
57 
58 } // namespace alsfvm
59 } // namespace equation
60 } // namespace linear
__device__ __host__ size_t index(size_t x, size_t y, size_t z) const
Definition: Views.hpp:50
#define __host__
Definition: types.hpp:46
Definition: Views.hpp:29
Views(VolumeType &volume)
Definition: Views.hpp:32
#define static_assert(x, y)
Definition: types.hpp:52
#define __device__
Definition: types.hpp:45
Various utility functions to implement the tecno flux.
Definition: types.hpp:30
ViewType u
Definition: Views.hpp:55