Alsvinn  0.5.3
The fast FVM simulator with UQ support
Neumann.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/memory/View.hpp"
18 
19 namespace alsfvm {
20 namespace boundary {
21 
22 class Neumann {
23 public:
25  memoryArea,
26  size_t x, size_t y, size_t z, size_t boundaryCell, size_t numberOfGhostCells,
27  bool top, bool xDir, bool yDir, bool zDir) {
28  const int sign = top ? -1 : 1;
29  memoryArea.at(x - sign * boundaryCell * xDir,
30  y - sign * boundaryCell * yDir,
31  z - sign * boundaryCell * zDir )
32  = memoryArea.at(x + sign * (boundaryCell - 1) * xDir,
33  y + sign * (boundaryCell - 1) * yDir,
34  z + sign * (boundaryCell - 1) * zDir);
35  }
36 
37 };
38 }
39 }
__device__ static __host__ void applyBoundary(alsfvm::memory::View< real > &memoryArea, size_t x, size_t y, size_t z, size_t boundaryCell, size_t numberOfGhostCells, bool top, bool xDir, bool yDir, bool zDir)
Definition: Neumann.hpp:24
#define __host__
Definition: types.hpp:46
__device__ __host__ T & at(size_t x, size_t y, size_t z)
at returns a reference to the element at the given location
Definition: View.hpp:65
Definition: Neumann.hpp:22
__device__ __host__ real sign(real a)
Definition: sign.hpp:19
size_t numberOfGhostCells
Definition: VolumeFactory.cpp:90
#define __device__
Definition: types.hpp:45
Definition: View.hpp:32
Various utility functions to implement the tecno flux.
Definition: types.hpp:30