20 #include <type_traits> 32 template<
class VolumeType,
class ViewType,
int nsd>
39 template<
class VolumeType,
class ViewType>
40 class Views<VolumeType, ViewType, 3> {
43 typedef typename std::conditional<std::is_const<VolumeType>::value,
51 :
rho(volume.getScalarMemoryArea(
"rho")->getView()),
52 mx(volume.getScalarMemoryArea(
"mx")->getView()),
53 my(volume.getScalarMemoryArea(
"my")->getView()),
54 mz(volume.getScalarMemoryArea(
"mz")->getView()),
55 E(volume.getScalarMemoryArea(
"E")->getView()) {
60 template<
size_t variableIndex>
63 "We only have 5 conserved variables for Euler!");
65 if (variableIndex == 0) {
67 }
else if (variableIndex == 1) {
69 }
else if (variableIndex == 2) {
71 }
else if (variableIndex == 3) {
74 }
else if (variableIndex == 4) {
85 switch (variableIndex) {
107 return rho.index(x, y, z);
111 return reference_vec(mx.at(index), my.at(index), mz.at(index));
115 return rvec(mx.at(index), my.at(index), mz.at(index));
126 template<
class VolumeType,
class ViewType>
127 class Views<VolumeType, ViewType, 2> {
130 typedef typename std::conditional<std::is_const<VolumeType>::value,
138 :
rho(volume.getScalarMemoryArea(
"rho")->getView()),
139 mx(volume.getScalarMemoryArea(
"mx")->getView()),
140 my(volume.getScalarMemoryArea(
"my")->getView()),
141 E(volume.getScalarMemoryArea(
"E")->getView()) {
146 template<
size_t variableIndex>
149 "We only have 5 conserved variables for Euler!");
151 if (variableIndex == 0) {
153 }
else if (variableIndex == 1) {
155 }
else if (variableIndex == 2) {
157 }
else if (variableIndex == 3) {
168 switch (variableIndex) {
187 return rho.index(x, y, z);
191 return reference_vec(mx.at(index), my.at(index));
195 return rvec(mx.at(index), my.at(index));
205 template<
class VolumeType,
class ViewType>
206 class Views<VolumeType, ViewType, 1> {
209 typedef typename std::conditional<std::is_const<VolumeType>::value,
217 :
rho(volume.getScalarMemoryArea(
"rho")->getView()),
218 mx(volume.getScalarMemoryArea(
"mx")->getView()),
219 E(volume.getScalarMemoryArea(
"E")->getView()) {
224 template<
size_t variableIndex>
227 "We only have 5 conserved variables for Euler!");
229 if (variableIndex == 0) {
231 }
else if (variableIndex == 1) {
233 }
else if (variableIndex == 3) {
244 switch (variableIndex) {
260 return rho.index(x, y, z);
264 return reference_vec(mx.at(index));
268 return rvec(mx.at(index));
Views(VolumeType &volume)
Definition: Views.hpp:137
__device__ __host__ size_t index(size_t x, size_t y, size_t z) const
Definition: Views.hpp:106
ViewType rho
Definition: Views.hpp:199
Definition: types.hpp:104
Types< 2 >::rvec rvec
Definition: Views.hpp:129
ViewType my
Definition: Views.hpp:201
ViewType E
Definition: Views.hpp:274
#define __host__
Definition: types.hpp:46
ViewType E
Definition: Views.hpp:123
Views(VolumeType &volume)
Definition: Views.hpp:50
VolumeType type
Definition: VolumeFactory.cpp:85
std::conditional< std::is_const< VolumeType >::value, const real &, real & >::type reference_type
Definition: Views.hpp:132
Types< 2 >::template vec< reference_type > reference_vec
Definition: Views.hpp:134
double real
Definition: types.hpp:65
int rho
Definition: sodshocktube.py:3
__device__ __host__ rvec m(size_t index) const
Definition: Views.hpp:267
Types< 1 >::rvec rvec
Definition: Views.hpp:208
__device__ __host__ reference_vec m(size_t index)
Definition: Views.hpp:190
__device__ __host__ rvec m(size_t index) const
Definition: Views.hpp:194
std::conditional< std::is_const< VolumeType >::value, const real &, real & >::type reference_type
Definition: Views.hpp:45
Views(VolumeType &volume)
Definition: Views.hpp:216
ViewType mx
Definition: Views.hpp:273
ViewType mx
Definition: Views.hpp:120
__device__ __host__ rvec m(size_t index) const
Definition: Views.hpp:114
__device__ __host__ size_t index(size_t x, size_t y, size_t z) const
Definition: Views.hpp:259
#define static_assert(x, y)
Definition: types.hpp:52
std::conditional< std::is_const< VolumeType >::value, const real &, real & >::type reference_type
Definition: Views.hpp:211
Types< 3 >::rvec rvec
Definition: Views.hpp:42
Types< 1 >::template vec< reference_type > reference_vec
Definition: Views.hpp:213
#define __device__
Definition: types.hpp:45
ViewType E
Definition: Views.hpp:202
ViewType mx
Definition: Views.hpp:200
Types< 3 >::template vec< reference_type > reference_vec
Definition: Views.hpp:47
ViewType mz
Definition: Views.hpp:122
ViewType rho
Definition: Views.hpp:272
__device__ __host__ size_t index(size_t x, size_t y, size_t z) const
Definition: Views.hpp:186
Various utility functions to implement the tecno flux.
Definition: types.hpp:30
ViewType rho
Definition: Views.hpp:119
__device__ __host__ reference_vec m(size_t index)
Definition: Views.hpp:263
ViewType my
Definition: Views.hpp:121
__device__ __host__ reference_vec m(size_t index)
Definition: Views.hpp:110