]> https://gitweb.dealii.org/ - dealii-svn.git/commitdiff
Add a couple of functions in a second version.
authorbangerth <bangerth@0785d39b-7218-0410-832d-ea1e28bc413d>
Wed, 17 Dec 2008 01:21:04 +0000 (01:21 +0000)
committerbangerth <bangerth@0785d39b-7218-0410-832d-ea1e28bc413d>
Wed, 17 Dec 2008 01:21:04 +0000 (01:21 +0000)
git-svn-id: https://svn.dealii.org/trunk@17960 0785d39b-7218-0410-832d-ea1e28bc413d

deal.II/deal.II/include/fe/fe_tools.h
deal.II/deal.II/source/fe/fe_tools.all_dimensions.cc
deal.II/doc/news/changes.h

index 4a4dc3bf3cc96545c1718a7644a696197de66de0..956b945acc4533602f8beb4f486e607e6bc2e64b 100644 (file)
@@ -1029,6 +1029,17 @@ class FETools
     hierarchic_to_lexicographic_numbering (const FiniteElementData<dim> &fe_data,
                                           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>
+    static
+    std::vector<unsigned int>
+    hierarchic_to_lexicographic_numbering (const FiniteElementData<dim> &fe_data);    
+    
                                     /**
                                      * This is the reverse function
                                      * to the above one, generating
@@ -1043,6 +1054,17 @@ class FETools
     lexicographic_to_hierarchic_numbering (const FiniteElementData<dim> &fe_data,
                                           std::vector<unsigned int>    &l2h);
 
+                                    /**
+                                     * Like the previous function but
+                                     * instead of returning its
+                                     * result through the last
+                                     * argument return it as a value.
+                                     */
+    template <int dim>
+    static
+    std::vector<unsigned int>
+    lexicographic_to_hierarchic_numbering (const FiniteElementData<dim> &fe_data);
+    
                                     /**
                                      * Parse the name of a finite
                                      * element and generate a finite
index 2e3e4611320a382efb02c1725821467d5b7187a4..18cceafaa9f7794b728ff888e4886c15122a54b9 100644 (file)
@@ -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 <base/utilities.h>
 #include <fe/fe.h>
 #include <fe/fe_tools.h>
 
@@ -23,10 +24,21 @@ void
 FETools::hierarchic_to_lexicographic_numbering (const FiniteElementData<dim> &fe,
                                                std::vector<unsigned int> &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 <int dim>
+std::vector<unsigned int>
+FETools::hierarchic_to_lexicographic_numbering (const FiniteElementData<dim> &fe)
+{
+  Assert (fe.n_components() == 1, ExcInvalidFE());
+
+  std::vector<unsigned int> 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<dim> &fe
       default:
            Assert (false, ExcNotImplemented());
     }
+
+  return h2l;
 }
 
 
@@ -201,10 +215,16 @@ void
 FETools::lexicographic_to_hierarchic_numbering (const FiniteElementData<dim> &fe,
                                                std::vector<unsigned int>    &l2h)
 {
-  std::vector<unsigned int> tmp(l2h.size());
-  FETools::hierarchic_to_lexicographic_numbering(fe,tmp);
-  for (unsigned int i=0; i<l2h.size(); ++i)
-    l2h[tmp[i]]=i;  
+  l2h = lexicographic_to_hierarchic_numbering (fe);
+}
+
+
+
+template <int dim>
+std::vector<unsigned int>
+FETools::lexicographic_to_hierarchic_numbering (const FiniteElementData<dim> &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<unsigned int> &l2h);
 
+
+
+template
+std::vector<unsigned int>
+FETools::hierarchic_to_lexicographic_numbering<1>
+(const FiniteElementData<1> &fe);
+template
+std::vector<unsigned int>
+FETools::hierarchic_to_lexicographic_numbering<2>
+(const FiniteElementData<2> &fe);
+template
+std::vector<unsigned int>
+FETools::hierarchic_to_lexicographic_numbering<3>
+(const FiniteElementData<3> &fe);
+
+
+template
+std::vector<unsigned int>
+FETools::lexicographic_to_hierarchic_numbering<1>
+(const FiniteElementData<1> &fe);
+template
+std::vector<unsigned int>
+FETools::lexicographic_to_hierarchic_numbering<2>
+(const FiniteElementData<2> &fe);
+template
+std::vector<unsigned int>
+FETools::lexicographic_to_hierarchic_numbering<3>
+(const FiniteElementData<3> &fe);
+
+
+
 DEAL_II_NAMESPACE_CLOSE
index 4020dd77eb3af7b1c46fee89e06af073d801b8bb..d2d4b0fee1d2bbd91cd4f0a45b0cd19e3b4246d7 100644 (file)
@@ -598,6 +598,15 @@ inconvenience this causes.
 <h3>deal.II</h3>
 
 <ol>
+  <li>
+  <p>
+  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.
+  <br>
+  (WB 2008/12/16)
+  </p>
+
   <li>
   <p>
   New: FEValues objects can now directly calculate the Laplacians of

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.

Douglas Adams


Typeset in Trocchi and Trocchi Bold Sans Serif.