preCICE v3.1.1
Loading...
Searching...
No Matches
Dimensions.cpp
Go to the documentation of this file.
1#include "Dimensions.hpp"
2#include "assertion.hpp"
3
4namespace precice::utils {
5
6const Eigen::VectorXd DELINEARIZE_2D[8] =
7 {
8 Eigen::VectorXd(Eigen::Vector2d(-1.0, -1.0)),
9 Eigen::VectorXd(Eigen::Vector2d(1.0, -1.0)),
10 Eigen::VectorXd(Eigen::Vector2d(-1.0, 1.0)),
11 Eigen::VectorXd(Eigen::Vector2d(1.0, 1.0))};
12
13const Eigen::VectorXd DELINEARIZE_3D[8] =
14 {
15 Eigen::VectorXd(Eigen::Vector3d(-1.0, -1.0, -1.0)),
16 Eigen::VectorXd(Eigen::Vector3d(1.0, -1.0, -1.0)),
17 Eigen::VectorXd(Eigen::Vector3d(-1.0, 1.0, -1.0)),
18 Eigen::VectorXd(Eigen::Vector3d(1.0, 1.0, -1.0)),
19 Eigen::VectorXd(Eigen::Vector3d(-1.0, -1.0, 1.0)),
20 Eigen::VectorXd(Eigen::Vector3d(1.0, -1.0, 1.0)),
21 Eigen::VectorXd(Eigen::Vector3d(-1.0, 1.0, 1.0)),
22 Eigen::VectorXd(Eigen::Vector3d(1.0, 1.0, 1.0))};
23
24const Eigen::VectorXd &delinearize(
25 int toDelinearize,
26 int dimensions)
27{
28 if (dimensions == 2) {
29 PRECICE_ASSERT((toDelinearize >= 0) && (toDelinearize < 4), toDelinearize);
30 return DELINEARIZE_2D[toDelinearize];
31 } else {
32 PRECICE_ASSERT(dimensions == 3, dimensions);
33 PRECICE_ASSERT((toDelinearize >= 0) && (toDelinearize < 8), toDelinearize);
34 return DELINEARIZE_3D[toDelinearize];
35 }
36}
37
38const int IndexMaps<2>::CUBOID_EDGE_VERTICES[4][2] =
39 {
40 {0, 2}, // edge 0
41 {1, 3}, // edge 1
42 {0, 1}, // edge 2
43 {2, 3} // edge 3
44};
45
46const int IndexMaps<3>::CUBOID_FACE_VERTICES[6][4] =
47 {
48 {0, 2, 4, 6},
49 {1, 3, 5, 7},
50 {0, 1, 4, 5},
51 {2, 3, 6, 7},
52 {0, 1, 2, 3},
53 {4, 5, 6, 7}};
54
55const int IndexMaps<3>::CUBOID_FACE_EDGES[6][4] =
56 {
57 {4, 6, 8, 10},
58 {5, 7, 9, 11},
59 {0, 2, 8, 9},
60 {1, 3, 10, 11},
61 {0, 1, 4, 5},
62 {2, 3, 6, 7}};
63
64const int IndexMaps<3>::CUBOID_EDGE_VERTICES[12][2] =
65 {
66 /* 0 */ {0, 1},
67 /* 1 */ {2, 3},
68 /* 2 */ {4, 5},
69 /* 3 */ {6, 7},
70 /* 4 */ {0, 2},
71 /* 5 */ {1, 3},
72 /* 6 */ {4, 6},
73 /* 7 */ {5, 7},
74 /* 8 */ {0, 4},
75 /* 9 */ {1, 5},
76 /* 10 */ {2, 6},
77 /* 11 */ {3, 7}};
78
79} // namespace precice::utils
#define PRECICE_ASSERT(...)
Definition assertion.hpp:87
contains precice-related utilities.
const Eigen::VectorXd DELINEARIZE_3D[8]
const Eigen::VectorXd & delinearize(int toDelinearize, int dimensions)
const Eigen::VectorXd DELINEARIZE_2D[8]
Definition Dimensions.cpp:6