From fbabdf567e1a0e1df427b428738b810074fe5614 Mon Sep 17 00:00:00 2001 From: bangerth Date: Wed, 17 Dec 2008 01:21:04 +0000 Subject: [PATCH] Add a couple of functions in a second version. git-svn-id: https://svn.dealii.org/trunk@17960 0785d39b-7218-0410-832d-ea1e28bc413d --- deal.II/deal.II/include/fe/fe_tools.h | 22 +++++++ .../source/fe/fe_tools.all_dimensions.cc | 63 +++++++++++++++++-- deal.II/doc/news/changes.h | 9 +++ 3 files changed, 88 insertions(+), 6 deletions(-) diff --git a/deal.II/deal.II/include/fe/fe_tools.h b/deal.II/deal.II/include/fe/fe_tools.h index 4a4dc3bf3c..956b945acc 100644 --- a/deal.II/deal.II/include/fe/fe_tools.h +++ b/deal.II/deal.II/include/fe/fe_tools.h @@ -1029,6 +1029,17 @@ class FETools hierarchic_to_lexicographic_numbering (const FiniteElementData &fe_data, std::vector &h2l); + /** + * Like the previous function but + * instead of returning its + * result through the last + * argument return it as a value. + */ + template + static + std::vector + hierarchic_to_lexicographic_numbering (const FiniteElementData &fe_data); + /** * This is the reverse function * to the above one, generating @@ -1043,6 +1054,17 @@ class FETools lexicographic_to_hierarchic_numbering (const FiniteElementData &fe_data, std::vector &l2h); + /** + * Like the previous function but + * instead of returning its + * result through the last + * argument return it as a value. + */ + template + static + std::vector + lexicographic_to_hierarchic_numbering (const FiniteElementData &fe_data); + /** * Parse the name of a finite * element and generate a finite diff --git a/deal.II/deal.II/source/fe/fe_tools.all_dimensions.cc b/deal.II/deal.II/source/fe/fe_tools.all_dimensions.cc index 2e3e461132..18cceafaa9 100644 --- a/deal.II/deal.II/source/fe/fe_tools.all_dimensions.cc +++ b/deal.II/deal.II/source/fe/fe_tools.all_dimensions.cc @@ -2,7 +2,7 @@ // $Id$ // Version: $Name$ // -// Copyright (C) 2005, 2006 by the deal.II authors +// Copyright (C) 2005, 2006, 2008 by the deal.II authors // // This file is subject to QPL and may not be distributed // without copyright and license information. Please refer @@ -12,6 +12,7 @@ //--------------------------------------------------------------------------- +#include #include #include @@ -23,10 +24,21 @@ void FETools::hierarchic_to_lexicographic_numbering (const FiniteElementData &fe, std::vector &h2l) { - Assert (fe.n_components() == 1, ExcInvalidFE()); Assert (h2l.size() == fe.dofs_per_cell, ExcDimensionMismatch (h2l.size(), fe.dofs_per_cell)); + h2l = hierarchic_to_lexicographic_numbering (fe); +} + + +template +std::vector +FETools::hierarchic_to_lexicographic_numbering (const FiniteElementData &fe) +{ + Assert (fe.n_components() == 1, ExcInvalidFE()); + + std::vector h2l (fe.dofs_per_cell); + const unsigned int dofs_per_cell = fe.dofs_per_cell; // polynomial degree const unsigned int degree = fe.dofs_per_line+1; @@ -192,6 +204,8 @@ FETools::hierarchic_to_lexicographic_numbering (const FiniteElementData &fe default: Assert (false, ExcNotImplemented()); } + + return h2l; } @@ -201,10 +215,16 @@ void FETools::lexicographic_to_hierarchic_numbering (const FiniteElementData &fe, std::vector &l2h) { - std::vector tmp(l2h.size()); - FETools::hierarchic_to_lexicographic_numbering(fe,tmp); - for (unsigned int i=0; i +std::vector +FETools::lexicographic_to_hierarchic_numbering (const FiniteElementData &fe) +{ + return Utilities::invert_permutation(hierarchic_to_lexicographic_numbering (fe)); } @@ -243,4 +263,35 @@ FETools::lexicographic_to_hierarchic_numbering<3> (const FiniteElementData<3> &fe, std::vector &l2h); + + +template +std::vector +FETools::hierarchic_to_lexicographic_numbering<1> +(const FiniteElementData<1> &fe); +template +std::vector +FETools::hierarchic_to_lexicographic_numbering<2> +(const FiniteElementData<2> &fe); +template +std::vector +FETools::hierarchic_to_lexicographic_numbering<3> +(const FiniteElementData<3> &fe); + + +template +std::vector +FETools::lexicographic_to_hierarchic_numbering<1> +(const FiniteElementData<1> &fe); +template +std::vector +FETools::lexicographic_to_hierarchic_numbering<2> +(const FiniteElementData<2> &fe); +template +std::vector +FETools::lexicographic_to_hierarchic_numbering<3> +(const FiniteElementData<3> &fe); + + + DEAL_II_NAMESPACE_CLOSE diff --git a/deal.II/doc/news/changes.h b/deal.II/doc/news/changes.h index 4020dd77eb..d2d4b0fee1 100644 --- a/deal.II/doc/news/changes.h +++ b/deal.II/doc/news/changes.h @@ -598,6 +598,15 @@ inconvenience this causes.

deal.II

    +
  1. +

    + New: The functions FETools::lexicographic_to_hierarchic_numbering and + FETools::hierarchic_to_lexicographic_numbering now also exist in variants + returning their result by value, rather than through their last argument. +
    + (WB 2008/12/16) +

    +
  2. New: FEValues objects can now directly calculate the Laplacians of -- 2.39.5