47 ivec3 numberOfCellsPerDirection,
48 int ghostCells,
int baseOffset) {
51 numberOfCellsPerDirection);
58 std::vector<int> displacements(numberOfSegments, 0);
60 for (
int i = 0; i < numberOfSegments; ++i) {
61 if (dimensions == 1) {
62 displacements[i] = side * (numberOfCellsPerDirection.
x - ghostCells)
65 }
else if (dimensions == 2) {
68 if (side > 0 || i > 0) {
69 displacements[i] = (numberOfCellsPerDirection.
x);
72 if (i == 0 && side == 1) {
73 displacements[i] -= ghostCells;
77 displacements[i] += baseOffset;
81 displacements[i] += displacements[i - 1];
85 displacements[i] += baseOffset * numberOfCellsPerDirection.
x;
91 displacements[i] += numberOfCellsPerDirection.
x * (numberOfCellsPerDirection.
y)
92 - numberOfCellsPerDirection.
x * ghostCells;
99 displacements[i] += baseOffset;
102 if (side > 0 || i > 0) {
103 displacements[i] += (numberOfCellsPerDirection.
x);
106 if (i == 0 && side == 1) {
107 displacements[i] -= ghostCells;
111 displacements[i] += displacements[i - 1];
114 }
else if (side < 4) {
116 displacements[i] += baseOffset * numberOfCellsPerDirection.
x;
119 if (side > 2 || i > 0) {
120 displacements[i] += numberOfCellsPerDirection.
x * (numberOfCellsPerDirection.
y);
123 if (i == 0 && side == 3) {
124 displacements[i] -= ghostCells * numberOfCellsPerDirection.
x;
128 displacements[i] += displacements[i - 1];
133 displacements[i] += numberOfCellsPerDirection.
x *
134 numberOfCellsPerDirection.
y * (baseOffset);
139 displacements[i] += numberOfCellsPerDirection.
x *
140 numberOfCellsPerDirection.
y * (numberOfCellsPerDirection.
z) -
141 numberOfCellsPerDirection.
x * numberOfCellsPerDirection.
y * ghostCells;
148 return displacements;
T z
Definition: vec3.hpp:28
int computeNumberOfSegments(int side, int dimensions, ivec3 numberOfCellsPerDirection)
Definition: number_of_segments.hpp:39
std::vector< int > computeDisplacements(int side, int dimensions, ivec3 numberOfCellsPerDirection, int ghostCells, int baseOffset)
Definition: displacements.hpp:46
T y
Definition: vec3.hpp:27
Various utility functions to implement the tecno flux.
Definition: types.hpp:30
T x
Definition: vec3.hpp:26