Alsvinn  0.5.3
The fast FVM simulator with UQ support
lengths.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 
18 #include <vector>
19 #include "alsfvm/types.hpp"
21 
22 namespace alsfvm {
23 namespace mpi {
24 namespace cartesian {
43 inline std::vector<int> computeLengths(int side, int dimensions,
44  ivec3 numberOfCellsPerDirection,
45  int ghostCells) {
46 
47  const int numberOfSegments = computeNumberOfSegments(side, dimensions,
48  numberOfCellsPerDirection);
49  std::vector<int> lengths(numberOfSegments, 0);
50 
51  for (int i = 0; i < numberOfSegments; ++i) {
52  if (dimensions == 1) {
53  lengths[i] = ghostCells;
54 
55  } else if (dimensions == 2) {
56  if ( side < 2) {
57 
58 
59  lengths[i] = ghostCells;
60  } else {
61 
62  lengths[i] = ghostCells * numberOfCellsPerDirection.x;
63  }
64  } else {
65  if ( side < 2) {
66 
67  lengths[i] = ghostCells;
68  } else if (side < 4) {
69 
70  lengths[i] = ghostCells * numberOfCellsPerDirection.x;
71  } else {
72 
73 
74  lengths[i] = ghostCells * numberOfCellsPerDirection.x *
75  numberOfCellsPerDirection.y;
76  }
77  }
78  }
79 
80  return lengths;
81 }
82 }
83 }
84 }
Definition: vec3.hpp:25
int computeNumberOfSegments(int side, int dimensions, ivec3 numberOfCellsPerDirection)
Definition: number_of_segments.hpp:39
T y
Definition: vec3.hpp:27
Various utility functions to implement the tecno flux.
Definition: types.hpp:30
std::vector< int > computeLengths(int side, int dimensions, ivec3 numberOfCellsPerDirection, int ghostCells)
Definition: lengths.hpp:43
T x
Definition: vec3.hpp:26