* correct size, which is equal to the number of degrees of freedom in the
* finite element.
*/
-
template <int dim>
void
hierarchic_to_lexicographic_numbering(unsigned int degree,
std::vector<unsigned int> &h2l);
+ /**
+ * Like the previous function but instead of returning its result through
+ * the last argument return it as a value.
+ */
+ template <int dim>
+ std::vector<unsigned int>
+ hierarchic_to_lexicographic_numbering(unsigned int degree);
+
+ /**
+ * Like the previous functions but using a FiniteElementData instead of the
+ * polynomial degree.
+ */
template <int dim>
void
hierarchic_to_lexicographic_numbering(const FiniteElementData<dim> &fe_data,
* about the above function are also valid here.
*/
template <int dim>
+ std::vector<unsigned int>
+ lexicographic_to_hierarchic_numbering(unsigned int degree);
+
+ /**
+ * Like the previous functions but using a FiniteElementData instead of the
+ * polynomial degree.
+ */
+ template <int dim>
void
lexicographic_to_hierarchic_numbering(const FiniteElementData<dim> &fe_data,
std::vector<unsigned int> & l2h);
// order
switch (dim)
{
+ case 0:
+ {
+ h2l[0] = 0;
+ break;
+ }
case 1:
{
h2l[0] = 0;
+ template <int dim>
+ std::vector<unsigned int>
+ hierarchic_to_lexicographic_numbering(const unsigned int degree)
+ {
+ std::vector<unsigned int> h2l(Utilities::pow(degree + 1, dim));
+ hierarchic_to_lexicographic_numbering<dim>(degree, h2l);
+ return h2l;
+ }
+
+
+
template <int dim>
void
hierarchic_to_lexicographic_numbering(const FiniteElementData<dim> &fe,
+ template <int dim>
+ std::vector<unsigned int>
+ lexicographic_to_hierarchic_numbering(const unsigned int degree)
+ {
+ return Utilities::invert_permutation(
+ hierarchic_to_lexicographic_numbering<dim>(degree));
+ }
+
+
+
template <int dim>
void
lexicographic_to_hierarchic_numbering(const FiniteElementData<dim> &fe,
/*-------------- Explicit Instantiations -------------------------------*/
#include "fe_tools.inst"
+// these do not fit into the templates of the dimension in the inst file
+namespace FETools
+{
+ template void
+ hierarchic_to_lexicographic_numbering<0>(unsigned int,
+ std::vector<unsigned int> &);
+
+ template std::vector<unsigned int>
+ hierarchic_to_lexicographic_numbering<0>(unsigned int);
+
+ template std::vector<unsigned int>
+ lexicographic_to_hierarchic_numbering<0>(unsigned int);
+} // namespace FETools
+
DEAL_II_NAMESPACE_CLOSE
const FiniteElementData<deal_II_dimension> &,
std::vector<unsigned int> &);
+ template std::vector<unsigned int>
+ hierarchic_to_lexicographic_numbering<deal_II_dimension>(unsigned int);
+
+ template std::vector<unsigned int>
+ lexicographic_to_hierarchic_numbering<deal_II_dimension>(unsigned int);
+
template std::vector<unsigned int>
hierarchic_to_lexicographic_numbering<deal_II_dimension>(
const FiniteElementData<deal_II_dimension> &);