46 const unsigned int degree)
48 const unsigned int n_dofs_face =
Utilities::pow(degree + 1, dim - 1);
49 std::vector<unsigned int> lexicographic_numbering;
52 for (
unsigned int j = 0; j < n_dofs_face; ++j)
54 lexicographic_numbering.push_back(j);
55 for (
unsigned int i = n_dofs_face * 2 * dim;
56 i < n_dofs_face * 2 * dim + degree;
58 lexicographic_numbering.push_back(i + j * degree);
59 lexicographic_numbering.push_back(n_dofs_face + j);
63 unsigned int layers = (dim == 3) ? degree + 1 : 1;
64 for (
unsigned int k = 0; k < layers; ++k)
66 unsigned int k_add = k * (degree + 1);
67 for (
unsigned int j = n_dofs_face * 2; j < n_dofs_face * 2 + degree + 1;
69 lexicographic_numbering.push_back(j + k_add);
71 for (
unsigned int i = n_dofs_face * (2 * dim + degree);
72 i < n_dofs_face * (2 * dim + degree) + degree * (degree + 1);
74 lexicographic_numbering.push_back(i + k_add * degree);
75 for (
unsigned int j = n_dofs_face * 3; j < n_dofs_face * 3 + degree + 1;
77 lexicographic_numbering.push_back(j + k_add);
83 for (
unsigned int i = 4 * n_dofs_face; i < 5 * n_dofs_face; ++i)
84 lexicographic_numbering.push_back(i);
85 for (
unsigned int i = 6 * n_dofs_face + n_dofs_face * 2 * degree;
86 i < 6 * n_dofs_face + n_dofs_face * 3 * degree;
88 lexicographic_numbering.push_back(i);
89 for (
unsigned int i = 5 * n_dofs_face; i < 6 * n_dofs_face; ++i)
90 lexicographic_numbering.push_back(i);
93 return lexicographic_numbering;