]> https://gitweb.dealii.org/ - dealii-svn.git/commitdiff
Add the FETools::get_fe_from_name function. Add a testcase. Add comments to the get_n...
authorwolf <wolf@0785d39b-7218-0410-832d-ea1e28bc413d>
Tue, 8 Jul 2003 23:48:53 +0000 (23:48 +0000)
committerwolf <wolf@0785d39b-7218-0410-832d-ea1e28bc413d>
Tue, 8 Jul 2003 23:48:53 +0000 (23:48 +0000)
git-svn-id: https://svn.dealii.org/trunk@7862 0785d39b-7218-0410-832d-ea1e28bc413d

16 files changed:
deal.II/deal.II/include/fe/fe_tools.h
deal.II/deal.II/source/fe/fe_dgp.cc
deal.II/deal.II/source/fe/fe_dgp_nonparametric.cc
deal.II/deal.II/source/fe/fe_dgq.cc
deal.II/deal.II/source/fe/fe_nedelec.cc
deal.II/deal.II/source/fe/fe_q.cc
deal.II/deal.II/source/fe/fe_q_hierarchical.cc
deal.II/deal.II/source/fe/fe_raviart_thomas.cc
deal.II/deal.II/source/fe/fe_system.cc
deal.II/deal.II/source/fe/fe_tools.cc
deal.II/doc/news/c-4-0.html
tests/bits/Makefile
tests/bits/fe_tools_09.cc [new file with mode: 0644]
tests/results/i686-pc-linux-gnu+gcc2.95/fe/fe_tools_09.output [new file with mode: 0644]
tests/results/i686-pc-linux-gnu+gcc3.2/fe/fe_tools_09.output [new file with mode: 0644]
tests/results/sparc-sun-solaris2.7+gcc2.95/fe/fe_tools_09.output [new file with mode: 0644]

index 740dd598a83e2d1b5e0964e25e2809bd1ec43785..1a3d01c732b295eeac4e013710462a50561c5936 100644 (file)
@@ -458,7 +458,50 @@ class FETools
     static void
     lexicographic_to_hierarchic_numbering (const FE_Q<dim>           &fe,
                                           std::vector<unsigned int> &l2h);
-    
+
+                                    /**
+                                     * Given a name in the form which
+                                     * is returned by the
+                                     * @p{FiniteElement::get_name}
+                                     * function, regenerate such a
+                                     * finite element.
+                                     *
+                                     * This function is useful to
+                                     * convert the name given in an
+                                     * input file to an actual finite
+                                     * element, without having to
+                                     * parse the name yourself.
+                                     *
+                                     * Note that the given name must
+                                     * match exactly what one would
+                                     * get from the finite element to
+                                     * be created, since otherwise
+                                     * the parsing would fail. If no
+                                     * finite element can be
+                                     * reconstructed from this
+                                     * string, an exception of type
+                                     * @p{FETools::ExcInvalidFEName}
+                                     * is thrown.
+                                     *
+                                     * The function returns a pointer
+                                     * to a newly create finite
+                                     * element. It is in the callers
+                                     * responsibility to destroy the
+                                     * object pointed to at an
+                                     * appropriate time.
+                                     */
+    template <int dim>
+    static
+    FiniteElement<dim> *
+    get_fe_from_name (const std::string &name);
+
+                                    /**
+                                     * Exception
+                                     */
+    DeclException1 (ExcInvalidFEName,
+                   std::string,
+                   << "Can't re-generate a finite element from the string <"
+                   << arg1 << ">.");
                                     /**
                                      * Exception
                                      */
@@ -493,6 +536,36 @@ class FETools
                    int, int, int, int,
                    << "This is a " << arg1 << "x" << arg2 << " matrix, "
                    << "but should be a " << arg3 << "x" << arg4 << " matrix.");
+
+  private:
+                                    /**
+                                     * Return a finite element that
+                                     * is created using the
+                                     * characters of the input
+                                     * parameters. The second part of
+                                     * the return value indicates how
+                                     * many characters have been used
+                                     * up in the creation of the
+                                     * finite element, so that the
+                                     * calling site can continue
+                                     * parsing finite element lists
+                                     * (for example for
+                                     * @ref{FESystem} objects) at the
+                                     * position after which the
+                                     * present element's name ends.
+                                     *
+                                     * If no finite element could be
+                                     * created from the string at the
+                                     * beginning of the given string,
+                                     * then an exception is thrown,
+                                     * just as for the
+                                     * @ref{get_fe_from_name}
+                                     * function.
+                                     */
+    template <int dim>
+    static
+    std::pair<FiniteElement<dim> *, unsigned int>
+    get_fe_from_name_aux (const std::string &name);    
 };
 
 
index c0eb0d10b7d892cc4e3438a485a4ebef3e92c15a..f020d38e9d5cabeab1c52ff6c7c7fde62ae3faba 100644 (file)
@@ -82,6 +82,13 @@ template <int dim>
 std::string
 FE_DGP<dim>::get_name () const
 {
+                                  // note that the
+                                  // FETools::get_fe_from_name
+                                  // function depends on the
+                                  // particular format of the string
+                                  // this function returns, so they
+                                  // have to be kept in synch
+
 #ifdef HAVE_STD_STRINGSTREAM
   std::ostringstream namebuf;
 #else
index c80225dc075e571a205c830b96d0a790386eb843..32ba0c7bbb2ab8641368444aa5ee36bd4681eb5e 100644 (file)
@@ -85,6 +85,13 @@ template <int dim>
 std::string
 FE_DGPNonparametric<dim>::get_name () const
 {
+                                  // note that the
+                                  // FETools::get_fe_from_name
+                                  // function depends on the
+                                  // particular format of the string
+                                  // this function returns, so they
+                                  // have to be kept in synch
+
 #ifdef HAVE_STD_STRINGSTREAM
   std::ostringstream namebuf;
 #else
index fc5b6581e5ef27618d38494e9a88b9e71f0a0f20..3c409c9e51621e984a5f58f29bbadb95d413e67b 100644 (file)
@@ -330,6 +330,13 @@ template <int dim>
 std::string
 FE_DGQ<dim>::get_name () const
 {
+                                  // note that the
+                                  // FETools::get_fe_from_name
+                                  // function depends on the
+                                  // particular format of the string
+                                  // this function returns, so they
+                                  // have to be kept in synch
+
 #ifdef HAVE_STD_STRINGSTREAM
   std::ostringstream namebuf;
 #else
index 7a19b160ce9ee7678da86842184f9b0014ae6a9a..40b269c9d678b4fe8ea5f091c9bbc109909c8e98 100644 (file)
@@ -68,6 +68,13 @@ template <int dim>
 std::string
 FE_Nedelec<dim>::get_name () const
 {
+                                  // note that the
+                                  // FETools::get_fe_from_name
+                                  // function depends on the
+                                  // particular format of the string
+                                  // this function returns, so they
+                                  // have to be kept in synch
+
 #ifdef HAVE_STD_STRINGSTREAM
   std::ostringstream namebuf;
 #else
index 2d2979464d3c298be278f7cf2620d92e3d440d47..30090b963a00e991add0884371de0c553518630e 100644 (file)
@@ -386,6 +386,13 @@ template <int dim>
 std::string
 FE_Q<dim>::get_name () const
 {
+                                  // note that the
+                                  // FETools::get_fe_from_name
+                                  // function depends on the
+                                  // particular format of the string
+                                  // this function returns, so they
+                                  // have to be kept in synch
+  
 #ifdef HAVE_STD_STRINGSTREAM
   std::ostringstream namebuf;
 #else
index 5c924144cc152ec80190ac7322b8eb3b8c3539cd..26417028a0410e6f2f1ce7024cc4a41b301fd1ed 100644 (file)
@@ -102,6 +102,13 @@ template <int dim>
 std::string
 FE_Q_Hierarchical<dim>::get_name () const
 {
+                                  // note that the
+                                  // FETools::get_fe_from_name
+                                  // function depends on the
+                                  // particular format of the string
+                                  // this function returns, so they
+                                  // have to be kept in synch
+
 #ifdef HAVE_STD_STRINGSTREAM
   std::ostringstream namebuf;
 #else
index 51fe053653f2f2f999dad5196f945ccd5a8db850..1206f8e20209fffac95ab7dbc1eef2531b485fd5 100644 (file)
@@ -176,6 +176,13 @@ template <int dim>
 std::string
 FE_RaviartThomas<dim>::get_name () const
 {
+                                  // note that the
+                                  // FETools::get_fe_from_name
+                                  // function depends on the
+                                  // particular format of the string
+                                  // this function returns, so they
+                                  // have to be kept in synch
+
 #ifdef HAVE_STD_STRINGSTREAM
   std::ostringstream namebuf;
 #else
index 911398c66a563491d1ea69fb0e7bf608ef50cb77..d110f6de8506cec41c0ba4d77d7f7e0eea1ffad7 100644 (file)
@@ -231,6 +231,13 @@ template <int dim>
 std::string
 FESystem<dim>::get_name () const
 {
+                                  // note that the
+                                  // FETools::get_fe_from_name
+                                  // function depends on the
+                                  // particular format of the string
+                                  // this function returns, so they
+                                  // have to be kept in synch
+
 #ifdef HAVE_STD_STRINGSTREAM
   std::ostringstream namebuf;
 #else
index 42abdc651c5944772b6f395612a0034471ec7db9..b8e00b9b125d1eb5046309a8826faf5b30fb38cf 100644 (file)
 #include <fe/fe_tools.h>
 #include <fe/fe.h>
 #include <fe/fe_q.h>
+#include <fe/fe_q_hierarchical.h>
+#include <fe/fe_dgq.h>
+#include <fe/fe_dgp.h>
+#include <fe/fe_dgp_nonparametric.h>
+#include <fe/fe_nedelec.h>
+#include <fe/fe_raviart_thomas.h>
+#include <fe/fe_system.h>
 #include <fe/fe_values.h>
 #include <fe/mapping_q1.h>
 #include <dofs/dof_constraints.h>
 #include <dofs/dof_handler.h>
 #include <dofs/dof_accessor.h>
 
+#ifdef HAVE_STD_STRINGSTREAM
+#  include <sstream>
+#else
+#  include <strstream>
+#endif
+
 
 
 namespace 
@@ -62,6 +75,79 @@ namespace
     fe2.get_interpolation_matrix (fe1, tmp);
     interpolation_matrix = tmp;
   }
+
+
+
+                                  // return true if the given pattern
+                                  // string matches the given name at
+                                  // the first position of the string
+  bool
+  match_at_string_start (const std::string &name,
+                        const std::string &pattern)
+  {
+    if (pattern.size() > name.size())
+      return false;
+
+    for (unsigned int i=0; i<pattern.size(); ++i)
+      if (pattern[i] != name[i])
+       return false;
+
+    return true;
+  }
+
+
+
+                                  // read an integer at the position
+                                  // in "name" indicated by the
+                                  // second argument, and retun this
+                                  // integer together with how many
+                                  // characters it takes in the
+                                  // string
+                                  //
+                                  // if no integer can be read at the
+                                  // indicated position, return
+                                  // (-1,-1)
+  std::pair<int, unsigned int>
+  get_integer (const std::string &name,
+              const unsigned int position)
+  {
+    Assert (position < name.size(), ExcInternalError());
+    
+    std::string test_string (name.begin()+position,
+                            name.end());
+    
+#ifdef HAVE_STD_STRINGSTREAM
+    std::istringstream str(test_string);
+#else
+    std::istrstream str(test_string.c_str());
+#endif
+
+    int i;
+    if (str >> i)
+      {
+                                        // compute the number of
+                                        // digits of i. assuming it
+                                        // is less than 6 is likely
+                                        // ok
+       if (i<10)
+         return std::make_pair (i, 1U);
+       else if (i<100)
+         return std::make_pair (i, 2U);
+       else if (i<1000)
+         return std::make_pair (i, 3U);
+       else if (i<10000)
+         return std::make_pair (i, 4U);
+       else if (i<100000)
+         return std::make_pair (i, 5U);
+       else
+         {
+           Assert (false, ExcNotImplemented());
+           return std::make_pair (-1, static_cast<unsigned int>(-1));
+         }
+      }
+    else
+      return std::make_pair (-1, static_cast<unsigned int>(-1));
+  }
 }
 
 
@@ -920,6 +1006,350 @@ FETools::lexicographic_to_hierarchic_numbering (const FE_Q<dim>           &fe,
 
 
 
+template <int dim>
+FiniteElement<dim> *
+FETools::get_fe_from_name (const std::string &name)
+{
+                                  // get the finite element that
+                                  // would be created from the given
+                                  // string at the first position, as
+                                  // well as how many characters of
+                                  // the string were eaten
+  const std::pair<FiniteElement<dim>*, unsigned int>
+    tmp = get_fe_from_name_aux<dim> (name);
+                                  // make sure that we took all
+                                  // characters in the name,
+                                  // i.e. that there is not some junk
+                                  // left over at the end of which we
+                                  // didn't know what to do
+                                  // with. make sure we don't create
+                                  // a memory leak here
+  if (tmp.second != name.size())
+    {
+      delete tmp.first;
+      AssertThrow (false, ExcInvalidFEName (name));
+    }
+
+                                  // otherwise, return the just
+                                  // created pointer
+  return tmp.first;
+}
+
+
+
+template <int dim>
+std::pair<FiniteElement<dim> *, unsigned int>
+FETools::get_fe_from_name_aux (const std::string &name)
+{
+#ifdef HAVE_STD_STRINGSTREAM
+  std::ostringstream s;
+#else
+  std::ostrstream s;
+#endif
+       
+  s << '<' << dim << '>';
+#ifndef HAVE_STD_STRINGSTREAM
+  s << std::ends;
+#endif
+
+  const std::string dim_name = s.str();
+  
+                                  // so, let's see what's at position
+                                  // 0 of this string, and create a
+                                  // respective finite element
+                                  //
+                                  // start with the longest names, to
+                                  // make sure we don't match FE_Q
+                                  // when it's actually a
+                                  // FE_Q_Hierarchic
+  if (match_at_string_start (name, std::string("FE_Q_Hierarchical")+dim_name))
+    {
+      unsigned int position = (std::string("FE_Q_Hierarchical")+dim_name).size();
+                                      // make sure the next character
+                                      // is an opening parenthesis
+      AssertThrow (name[position] == '(', ExcInvalidFEName(name));
+      ++position;
+                                      // next thing is to parse the
+                                      // degree of the finite element
+      const std::pair<int,unsigned int> tmp = get_integer (name, position);
+      AssertThrow (tmp.first>=0, ExcInvalidFEName(name));
+      position += tmp.second;
+
+                                      // make sure the next character
+                                      // is an closing parenthesis
+      AssertThrow (name[position] == ')', ExcInvalidFEName(name));
+      ++position;
+
+                                      // ok, everything seems
+                                      // good. so create finite
+                                      // element and return position
+                                      // count
+      return std::make_pair (new FE_Q_Hierarchical<dim>(tmp.first),
+                            position);
+    }
+                                  // check other possibilities in
+                                  // exactly the same way
+  else if (match_at_string_start (name, std::string("FE_RaviartThomas")+dim_name))
+    {
+      unsigned int position = (std::string("FE_RaviartThomas")+dim_name).size();
+      AssertThrow (name[position] == '(', ExcInvalidFEName(name));
+      ++position;
+      const std::pair<int,unsigned int> tmp = get_integer (name, position);
+      AssertThrow (tmp.first>=0, ExcInvalidFEName(name));
+      position += tmp.second;
+      AssertThrow (name[position] == ')', ExcInvalidFEName(name));
+      ++position;
+      return std::make_pair (new FE_RaviartThomas<dim>(tmp.first),
+                            position);
+    }
+  else if (match_at_string_start (name, std::string("FE_Nedelec")+dim_name))
+    {
+      unsigned int position = (std::string("FE_Nedelec")+dim_name).size();
+      AssertThrow (name[position] == '(', ExcInvalidFEName(name));
+      ++position;
+      const std::pair<int,unsigned int> tmp = get_integer (name, position);
+      AssertThrow (tmp.first>=0, ExcInvalidFEName(name));
+      position += tmp.second;
+      AssertThrow (name[position] == ')', ExcInvalidFEName(name));
+      ++position;
+      return std::make_pair (new FE_Nedelec<dim>(tmp.first),
+                            position);
+    }
+  else if (match_at_string_start (name, std::string("FE_DGPNonparametric")+dim_name))
+    {
+      unsigned int position = (std::string("FE_DGPNonparametric")+dim_name).size();
+      AssertThrow (name[position] == '(', ExcInvalidFEName(name));
+      ++position;
+      const std::pair<int,unsigned int> tmp = get_integer (name, position);
+      AssertThrow (tmp.first>=0, ExcInvalidFEName(name));
+      position += tmp.second;
+      AssertThrow (name[position] == ')', ExcInvalidFEName(name));
+      ++position;
+      return std::make_pair (new FE_DGPNonparametric<dim>(tmp.first),
+                            position);
+    }
+  else if (match_at_string_start (name, std::string("FE_DGP")+dim_name))
+    {
+      unsigned int position = (std::string("FE_DGP")+dim_name).size();
+      AssertThrow (name[position] == '(', ExcInvalidFEName(name));
+      ++position;
+      const std::pair<int,unsigned int> tmp = get_integer (name, position);
+      AssertThrow (tmp.first>=0, ExcInvalidFEName(name));
+      position += tmp.second;
+      AssertThrow (name[position] == ')', ExcInvalidFEName(name));
+      ++position;
+      return std::make_pair (new FE_DGP<dim>(tmp.first),
+                            position);
+    }
+  else if (match_at_string_start (name, std::string("FE_DGQ")+dim_name))
+    {
+      unsigned int position = (std::string("FE_DGQ")+dim_name).size();
+      AssertThrow (name[position] == '(', ExcInvalidFEName(name));
+      ++position;
+      const std::pair<int,unsigned int> tmp = get_integer (name, position);
+      AssertThrow (tmp.first>=0, ExcInvalidFEName(name));
+      position += tmp.second;
+      AssertThrow (name[position] == ')', ExcInvalidFEName(name));
+      ++position;
+      return std::make_pair (new FE_DGQ<dim>(tmp.first),
+                            position);
+    }
+  else if (match_at_string_start (name, std::string("FE_Q")+dim_name))
+    {
+      unsigned int position = (std::string("FE_Q")+dim_name).size();
+      AssertThrow (name[position] == '(', ExcInvalidFEName(name));
+      ++position;
+      const std::pair<int,unsigned int> tmp = get_integer (name, position);
+      AssertThrow (tmp.first>=0, ExcInvalidFEName(name));
+      position += tmp.second;
+      AssertThrow (name[position] == ')', ExcInvalidFEName(name));
+      ++position;
+      return std::make_pair (new FE_Q<dim>(tmp.first),
+                            position);
+    }
+  
+  else
+                                    // now things get a little more
+                                    // complicated: FESystem. it's
+                                    // more complicated, since we
+                                    // have to figure out what the
+                                    // base elements are. this can
+                                    // only be done recursively
+    if (match_at_string_start (name, std::string("FESystem")+dim_name))
+      {
+       unsigned int position = (std::string("FESystem")+dim_name).size();
+
+                                        // FESystem puts the names of
+                                        // the basis elements into
+                                        // square brackets
+       AssertThrow (name[position] == '[', ExcInvalidFEName(name));
+       ++position;
+
+                                        // next we have to get at the
+                                        // base elements. start with
+                                        // the first. wrap the whole
+                                        // block into try-catch to
+                                        // make sure we destroy the
+                                        // pointers we got from
+                                        // recursive calls if one of
+                                        // these calls should throw
+                                        // an exception
+       std::vector<FiniteElement<dim>*> base_fes;
+       std::vector<unsigned int>        base_multiplicities;
+       try
+         {
+           do
+             {
+                                                // first get the
+                                                // element at this
+                                                // position of the
+                                                // string, i.e. of
+                                                // the substring
+                                                // ranging from the
+                                                // present position
+                                                // to the end
+               const std::pair<FiniteElement<dim> *, unsigned int> tmp_x
+                 = FETools::get_fe_from_name_aux<dim> (std::string(name.begin()+position,
+                                                                   name.end()));
+               base_fes.push_back (tmp_x.first);
+               position += tmp_x.second;
+               
+                                                // next check whether
+                                                // FESystem placed a
+                                                // multiplicity after
+                                                // the element name
+               if (name[position] == '^')
+                 {
+                                                    // yes. this is
+                                                    // the case. move
+                                                    // the cursor
+                                                    // beyond the '^'
+                                                    // and read this
+                                                    // multiplicity
+                   ++position;
+                   const std::pair<int,unsigned int> tmp = get_integer (name,
+                                                                        position);
+                   AssertThrow (tmp.first>=0, ExcInvalidFEName(name));
+                   position += tmp.second;
+                   base_multiplicities.push_back (tmp.first);
+                 }
+               else
+                                                  // no, so
+                                                  // multiplicity is
+                                                  // 1
+                 base_multiplicities.push_back (1);
+
+                                                // so that's it for
+                                                // this base
+                                                // element. base
+                                                // elements are
+                                                // separated by '-',
+                                                // and the list is
+                                                // terminated by ']',
+                                                // so loop while the
+                                                // next character is
+                                                // '-'
+             }
+           while (name[position++] == '-');
+
+                                            // so we got to the end
+                                            // of the '-' separated
+                                            // list. make sure that
+                                            // we actually had a ']'
+                                            // there
+           AssertThrow (name[position-1] == ']', ExcInvalidFEName(name));
+
+                                            // just one more sanity check
+           Assert ((base_fes.size() == base_multiplicities.size())
+                   &&
+                   (base_fes.size() > 0),
+                   ExcInternalError());
+           
+                                            // ok, apparently
+                                            // everything went ok. so
+                                            // generate the composed
+                                            // element
+           FiniteElement<dim> *system_element = 0;
+           switch (base_fes.size())
+             {
+               case 1:
+               {
+                 system_element = new FESystem<dim>(*base_fes[0],
+                                                    base_multiplicities[0]);
+                 break;
+               }
+
+               case 2:
+               {
+                 system_element = new FESystem<dim>(*base_fes[0],
+                                                    base_multiplicities[0],
+                                                    *base_fes[1],
+                                                    base_multiplicities[1]);
+                 break;
+               }
+               
+               case 3:
+               {
+                 system_element = new FESystem<dim>(*base_fes[0],
+                                                    base_multiplicities[0],
+                                                    *base_fes[1],
+                                                    base_multiplicities[1],
+                                                    *base_fes[2],
+                                                    base_multiplicities[2]);
+                 break;
+               }
+
+               default:
+                     Assert (false, ExcNotImplemented());
+             }
+
+                                            // now we don't need the
+                                            // list of base elements
+                                            // any more
+           for (unsigned int i=0; i<base_fes.size(); ++i)
+             delete base_fes[i];
+           
+                                            // finally return our findings
+           return std::make_pair (system_element, position);
+         }
+       catch (...)
+         {
+                                            // ups, some exception
+                                            // was thrown. prevent a
+                                            // memory leak, and then
+                                            // pass on the exception
+                                            // to the caller
+           for (unsigned int i=0; i<base_fes.size(); ++i)
+             delete base_fes[i];
+           throw;
+         }
+
+                                        // this is a place where we
+                                        // should really never get,
+                                        // since above we have either
+                                        // returned from the
+                                        // try-clause, or have
+                                        // re-thrown in the catch
+                                        // clause. check that we
+                                        // never get here
+       Assert (false, ExcInternalError());
+      }
+  
+    
+                                  // hm, if we have come thus far, we
+                                  // didn't know what to do with the
+                                  // string we got. so do as the docs
+                                  // say: raise an exception
+  AssertThrow (false, ExcInvalidFEName(name));
+
+                                  // make some compilers happy that
+                                  // do not realize that we can't get
+                                  // here after throwing
+  return std::pair<FiniteElement<dim> *, unsigned int> (0,0);
+}
+
+
+
 
 /*-------------- Explicit Instantiations -------------------------------*/
 
@@ -1144,5 +1574,9 @@ FETools::lexicographic_to_hierarchic_numbering<deal_II_dimension>
 (const FE_Q<deal_II_dimension> &fe,
  std::vector<unsigned int>     &h2l);
 
+template
+FiniteElement<deal_II_dimension> *
+FETools::get_fe_from_name<deal_II_dimension> (const std::string &);
+
 
 /*----------------------------   fe_tools.cc     ---------------------------*/
index aff151a8143809a3bb25130d1fe6a601cbc2e512..812bd8eaee243eac8bb6e0be97daa5529091f1ad 100644 (file)
@@ -83,6 +83,16 @@ contributor's names are abbreviated by WB (Wolfgang Bangerth), GK
 <h3>deal.II</h3>
 
 <ol>
+  <li> <p> 
+       New: The new <code class="member">FETools::get_fe_from_name</code>
+       function can do the reverse of the <code
+       class="member">FiniteElement::get_name</code> function: it
+       takes a string and parses it to regenerate a finite element
+       from it. Useful for parsing finite element names from input files.
+       <br>
+       (WB 2002/07/08)
+       </p>
+
   <li> <p> 
        New: The <code class="member">DataOut_DoFData::merge_patches</code>
        now takes a second parameter that indicates a shift for each
index c12e27d5c04c927a336fe79699bd17280d0fe6d1..5b40a59f90d88b92cc805359bb842cc93c0697df 100644 (file)
@@ -83,6 +83,7 @@ fe_tools_05.exe         : fe_tools_05.g.$(OBJEXT)          $(libraries)
 fe_tools_06.exe         : fe_tools_06.g.$(OBJEXT)          $(libraries)
 fe_tools_07.exe         : fe_tools_07.g.$(OBJEXT)          $(libraries)
 fe_tools_08.exe         : fe_tools_08.g.$(OBJEXT)          $(libraries)
+fe_tools_09.exe         : fe_tools_09.g.$(OBJEXT)          $(libraries)
 gerold_1.exe            : gerold_1.g.$(OBJEXT)             $(libraries)
 roy_1.exe               : roy_1.g.$(OBJEXT)                $(libraries)
 denis_1.exe             : denis_1.g.$(OBJEXT)              $(libraries)
@@ -109,7 +110,7 @@ tests = anna_1 anna_2 anna_3 anna_4 anna_5 anna_6 \
         dof_tools_18a dof_tools_18b dof_tools_18c dof_tools_18d \
        fe_tools_01a fe_tools_01b fe_tools_01c \
        fe_tools_02 fe_tools_03 fe_tools_04 \
-       fe_tools_05 fe_tools_06 fe_tools_07 fe_tools_08 \
+       fe_tools_05 fe_tools_06 fe_tools_07 fe_tools_08 fe_tools_09 \
        roy_1 \
         denis_1 \
        unit_support_points parameter_handler_1 parameter_handler_2 \
diff --git a/tests/bits/fe_tools_09.cc b/tests/bits/fe_tools_09.cc
new file mode 100644 (file)
index 0000000..ddd15a7
--- /dev/null
@@ -0,0 +1,52 @@
+//----------------------------  fe_tools_09.cc  ---------------------------
+//    $Id$
+//    Version: $Name$
+//
+//    Copyright (C) 2003 by the deal.II authors
+//
+//    This file is subject to QPL and may not be  distributed
+//    without copyright and license information. Please refer
+//    to the file deal.II/doc/license.html for the  text  and
+//    further information on this license.
+//
+//----------------------------  fe_tools_09.cc  ---------------------------
+
+#include "fe_tools_common.cc"
+#include <lac/sparsity_pattern.h>
+
+// check
+//   FETools::get_fe_from_name
+
+
+std::string output_file_name = "fe_tools_09.output";
+
+
+template <int dim>
+void
+check_this (const FiniteElement<dim> &fe1,
+            const FiniteElement<dim> &fe2)
+{
+  FiniteElement<dim> *p1, *p2;
+
+                                  // check that the name of the fe
+                                  // and the name of the fe that we
+                                  // re-create from this name are
+                                  // identitical. this is also a
+                                  // pretty good indication that the
+                                  // two FEs are actually the same
+  deallog << fe1.get_name();
+  p1 = FETools::get_fe_from_name<dim> (fe1.get_name());
+  Assert (fe1.get_name() == p1->get_name(),
+         ExcInternalError());
+  deallog << " ok" << std::endl;
+  delete p1;
+
+                                  // same for fe2
+  deallog << fe2.get_name();
+  p2 = FETools::get_fe_from_name<dim> (fe2.get_name());
+  Assert (fe2.get_name() == p2->get_name(),
+         ExcInternalError());
+  deallog << " ok" << std::endl;
+  delete p2;
+}
+
diff --git a/tests/results/i686-pc-linux-gnu+gcc2.95/fe/fe_tools_09.output b/tests/results/i686-pc-linux-gnu+gcc2.95/fe/fe_tools_09.output
new file mode 100644 (file)
index 0000000..807d770
--- /dev/null
@@ -0,0 +1,643 @@
+
+DEAL::Checking Q1 against Q1 in 1d:
+DEAL::FE_Q<1>(1) ok
+DEAL::FE_Q<1>(1) ok
+DEAL::Checking Q1 against Q1 in 1d:
+DEAL::FE_Q<1>(1) ok
+DEAL::FE_Q<1>(1) ok
+DEAL::Checking Q1 against Q1 in 2d:
+DEAL::FE_Q<2>(1) ok
+DEAL::FE_Q<2>(1) ok
+DEAL::Checking Q1 against Q1 in 2d:
+DEAL::FE_Q<2>(1) ok
+DEAL::FE_Q<2>(1) ok
+DEAL::Checking Q1 against Q1 in 3d:
+DEAL::FE_Q<3>(1) ok
+DEAL::FE_Q<3>(1) ok
+DEAL::Checking Q1 against Q1 in 3d:
+DEAL::FE_Q<3>(1) ok
+DEAL::FE_Q<3>(1) ok
+DEAL::Checking Q1 against Q2 in 1d:
+DEAL::FE_Q<1>(1) ok
+DEAL::FE_Q<1>(2) ok
+DEAL::Checking Q2 against Q1 in 1d:
+DEAL::FE_Q<1>(2) ok
+DEAL::FE_Q<1>(1) ok
+DEAL::Checking Q1 against Q2 in 2d:
+DEAL::FE_Q<2>(1) ok
+DEAL::FE_Q<2>(2) ok
+DEAL::Checking Q2 against Q1 in 2d:
+DEAL::FE_Q<2>(2) ok
+DEAL::FE_Q<2>(1) ok
+DEAL::Checking Q1 against Q2 in 3d:
+DEAL::FE_Q<3>(1) ok
+DEAL::FE_Q<3>(2) ok
+DEAL::Checking Q2 against Q1 in 3d:
+DEAL::FE_Q<3>(2) ok
+DEAL::FE_Q<3>(1) ok
+DEAL::Checking Q1 against Q3 in 1d:
+DEAL::FE_Q<1>(1) ok
+DEAL::FE_Q<1>(3) ok
+DEAL::Checking Q3 against Q1 in 1d:
+DEAL::FE_Q<1>(3) ok
+DEAL::FE_Q<1>(1) ok
+DEAL::Checking Q1 against Q3 in 2d:
+DEAL::FE_Q<2>(1) ok
+DEAL::FE_Q<2>(3) ok
+DEAL::Checking Q3 against Q1 in 2d:
+DEAL::FE_Q<2>(3) ok
+DEAL::FE_Q<2>(1) ok
+DEAL::Checking Q1 against Q3 in 3d:
+DEAL::FE_Q<3>(1) ok
+DEAL::FE_Q<3>(3) ok
+DEAL::Checking Q3 against Q1 in 3d:
+DEAL::FE_Q<3>(3) ok
+DEAL::FE_Q<3>(1) ok
+DEAL::Checking Q2 against Q2 in 1d:
+DEAL::FE_Q<1>(2) ok
+DEAL::FE_Q<1>(2) ok
+DEAL::Checking Q2 against Q2 in 1d:
+DEAL::FE_Q<1>(2) ok
+DEAL::FE_Q<1>(2) ok
+DEAL::Checking Q2 against Q2 in 2d:
+DEAL::FE_Q<2>(2) ok
+DEAL::FE_Q<2>(2) ok
+DEAL::Checking Q2 against Q2 in 2d:
+DEAL::FE_Q<2>(2) ok
+DEAL::FE_Q<2>(2) ok
+DEAL::Checking Q2 against Q2 in 3d:
+DEAL::FE_Q<3>(2) ok
+DEAL::FE_Q<3>(2) ok
+DEAL::Checking Q2 against Q2 in 3d:
+DEAL::FE_Q<3>(2) ok
+DEAL::FE_Q<3>(2) ok
+DEAL::Checking Q2 against Q3 in 1d:
+DEAL::FE_Q<1>(2) ok
+DEAL::FE_Q<1>(3) ok
+DEAL::Checking Q3 against Q2 in 1d:
+DEAL::FE_Q<1>(3) ok
+DEAL::FE_Q<1>(2) ok
+DEAL::Checking Q2 against Q3 in 2d:
+DEAL::FE_Q<2>(2) ok
+DEAL::FE_Q<2>(3) ok
+DEAL::Checking Q3 against Q2 in 2d:
+DEAL::FE_Q<2>(3) ok
+DEAL::FE_Q<2>(2) ok
+DEAL::Checking Q2 against Q3 in 3d:
+DEAL::FE_Q<3>(2) ok
+DEAL::FE_Q<3>(3) ok
+DEAL::Checking Q3 against Q2 in 3d:
+DEAL::FE_Q<3>(3) ok
+DEAL::FE_Q<3>(2) ok
+DEAL::Checking Q3 against Q3 in 1d:
+DEAL::FE_Q<1>(3) ok
+DEAL::FE_Q<1>(3) ok
+DEAL::Checking Q3 against Q3 in 1d:
+DEAL::FE_Q<1>(3) ok
+DEAL::FE_Q<1>(3) ok
+DEAL::Checking Q3 against Q3 in 2d:
+DEAL::FE_Q<2>(3) ok
+DEAL::FE_Q<2>(3) ok
+DEAL::Checking Q3 against Q3 in 2d:
+DEAL::FE_Q<2>(3) ok
+DEAL::FE_Q<2>(3) ok
+DEAL::Checking Q3 against Q3 in 3d:
+DEAL::FE_Q<3>(3) ok
+DEAL::FE_Q<3>(3) ok
+DEAL::Checking Q3 against Q3 in 3d:
+DEAL::FE_Q<3>(3) ok
+DEAL::FE_Q<3>(3) ok
+DEAL::Checking DGQ0 against DGQ0 in 1d:
+DEAL::FE_DGQ<1>(0) ok
+DEAL::FE_DGQ<1>(0) ok
+DEAL::Checking DGQ0 against DGQ0 in 1d:
+DEAL::FE_DGQ<1>(0) ok
+DEAL::FE_DGQ<1>(0) ok
+DEAL::Checking DGQ0 against DGQ0 in 2d:
+DEAL::FE_DGQ<2>(0) ok
+DEAL::FE_DGQ<2>(0) ok
+DEAL::Checking DGQ0 against DGQ0 in 2d:
+DEAL::FE_DGQ<2>(0) ok
+DEAL::FE_DGQ<2>(0) ok
+DEAL::Checking DGQ0 against DGQ0 in 3d:
+DEAL::FE_DGQ<3>(0) ok
+DEAL::FE_DGQ<3>(0) ok
+DEAL::Checking DGQ0 against DGQ0 in 3d:
+DEAL::FE_DGQ<3>(0) ok
+DEAL::FE_DGQ<3>(0) ok
+DEAL::Checking DGQ0 against DGQ1 in 1d:
+DEAL::FE_DGQ<1>(0) ok
+DEAL::FE_DGQ<1>(1) ok
+DEAL::Checking DGQ1 against DGQ0 in 1d:
+DEAL::FE_DGQ<1>(1) ok
+DEAL::FE_DGQ<1>(0) ok
+DEAL::Checking DGQ0 against DGQ1 in 2d:
+DEAL::FE_DGQ<2>(0) ok
+DEAL::FE_DGQ<2>(1) ok
+DEAL::Checking DGQ1 against DGQ0 in 2d:
+DEAL::FE_DGQ<2>(1) ok
+DEAL::FE_DGQ<2>(0) ok
+DEAL::Checking DGQ0 against DGQ1 in 3d:
+DEAL::FE_DGQ<3>(0) ok
+DEAL::FE_DGQ<3>(1) ok
+DEAL::Checking DGQ1 against DGQ0 in 3d:
+DEAL::FE_DGQ<3>(1) ok
+DEAL::FE_DGQ<3>(0) ok
+DEAL::Checking DGQ0 against DGQ2 in 1d:
+DEAL::FE_DGQ<1>(0) ok
+DEAL::FE_DGQ<1>(2) ok
+DEAL::Checking DGQ2 against DGQ0 in 1d:
+DEAL::FE_DGQ<1>(2) ok
+DEAL::FE_DGQ<1>(0) ok
+DEAL::Checking DGQ0 against DGQ2 in 2d:
+DEAL::FE_DGQ<2>(0) ok
+DEAL::FE_DGQ<2>(2) ok
+DEAL::Checking DGQ2 against DGQ0 in 2d:
+DEAL::FE_DGQ<2>(2) ok
+DEAL::FE_DGQ<2>(0) ok
+DEAL::Checking DGQ0 against DGQ2 in 3d:
+DEAL::FE_DGQ<3>(0) ok
+DEAL::FE_DGQ<3>(2) ok
+DEAL::Checking DGQ2 against DGQ0 in 3d:
+DEAL::FE_DGQ<3>(2) ok
+DEAL::FE_DGQ<3>(0) ok
+DEAL::Checking DGQ0 against DGQ4 in 1d:
+DEAL::FE_DGQ<1>(0) ok
+DEAL::FE_DGQ<1>(4) ok
+DEAL::Checking DGQ4 against DGQ0 in 1d:
+DEAL::FE_DGQ<1>(4) ok
+DEAL::FE_DGQ<1>(0) ok
+DEAL::Checking DGQ0 against DGQ4 in 2d:
+DEAL::FE_DGQ<2>(0) ok
+DEAL::FE_DGQ<2>(4) ok
+DEAL::Checking DGQ4 against DGQ0 in 2d:
+DEAL::FE_DGQ<2>(4) ok
+DEAL::FE_DGQ<2>(0) ok
+DEAL::Checking DGQ0 against DGQ4 in 3d:
+DEAL::FE_DGQ<3>(0) ok
+DEAL::FE_DGQ<3>(4) ok
+DEAL::Checking DGQ4 against DGQ0 in 3d:
+DEAL::FE_DGQ<3>(4) ok
+DEAL::FE_DGQ<3>(0) ok
+DEAL::Checking DGQ1 against DGQ1 in 1d:
+DEAL::FE_DGQ<1>(1) ok
+DEAL::FE_DGQ<1>(1) ok
+DEAL::Checking DGQ1 against DGQ1 in 1d:
+DEAL::FE_DGQ<1>(1) ok
+DEAL::FE_DGQ<1>(1) ok
+DEAL::Checking DGQ1 against DGQ1 in 2d:
+DEAL::FE_DGQ<2>(1) ok
+DEAL::FE_DGQ<2>(1) ok
+DEAL::Checking DGQ1 against DGQ1 in 2d:
+DEAL::FE_DGQ<2>(1) ok
+DEAL::FE_DGQ<2>(1) ok
+DEAL::Checking DGQ1 against DGQ1 in 3d:
+DEAL::FE_DGQ<3>(1) ok
+DEAL::FE_DGQ<3>(1) ok
+DEAL::Checking DGQ1 against DGQ1 in 3d:
+DEAL::FE_DGQ<3>(1) ok
+DEAL::FE_DGQ<3>(1) ok
+DEAL::Checking DGQ1 against DGQ3 in 1d:
+DEAL::FE_DGQ<1>(1) ok
+DEAL::FE_DGQ<1>(3) ok
+DEAL::Checking DGQ3 against DGQ1 in 1d:
+DEAL::FE_DGQ<1>(3) ok
+DEAL::FE_DGQ<1>(1) ok
+DEAL::Checking DGQ1 against DGQ3 in 2d:
+DEAL::FE_DGQ<2>(1) ok
+DEAL::FE_DGQ<2>(3) ok
+DEAL::Checking DGQ3 against DGQ1 in 2d:
+DEAL::FE_DGQ<2>(3) ok
+DEAL::FE_DGQ<2>(1) ok
+DEAL::Checking DGQ1 against DGQ3 in 3d:
+DEAL::FE_DGQ<3>(1) ok
+DEAL::FE_DGQ<3>(3) ok
+DEAL::Checking DGQ3 against DGQ1 in 3d:
+DEAL::FE_DGQ<3>(3) ok
+DEAL::FE_DGQ<3>(1) ok
+DEAL::Checking DGQ1 against DGQ5 in 1d:
+DEAL::FE_DGQ<1>(1) ok
+DEAL::FE_DGQ<1>(5) ok
+DEAL::Checking DGQ5 against DGQ1 in 1d:
+DEAL::FE_DGQ<1>(5) ok
+DEAL::FE_DGQ<1>(1) ok
+DEAL::Checking DGQ1 against DGQ5 in 2d:
+DEAL::FE_DGQ<2>(1) ok
+DEAL::FE_DGQ<2>(5) ok
+DEAL::Checking DGQ5 against DGQ1 in 2d:
+DEAL::FE_DGQ<2>(5) ok
+DEAL::FE_DGQ<2>(1) ok
+DEAL::Checking DGQ1 against DGQ5 in 3d:
+DEAL::FE_DGQ<3>(1) ok
+DEAL::FE_DGQ<3>(5) ok
+DEAL::Checking DGQ5 against DGQ1 in 3d:
+DEAL::FE_DGQ<3>(5) ok
+DEAL::FE_DGQ<3>(1) ok
+DEAL::Checking DGQ2 against DGQ2 in 1d:
+DEAL::FE_DGQ<1>(2) ok
+DEAL::FE_DGQ<1>(2) ok
+DEAL::Checking DGQ2 against DGQ2 in 1d:
+DEAL::FE_DGQ<1>(2) ok
+DEAL::FE_DGQ<1>(2) ok
+DEAL::Checking DGQ2 against DGQ2 in 2d:
+DEAL::FE_DGQ<2>(2) ok
+DEAL::FE_DGQ<2>(2) ok
+DEAL::Checking DGQ2 against DGQ2 in 2d:
+DEAL::FE_DGQ<2>(2) ok
+DEAL::FE_DGQ<2>(2) ok
+DEAL::Checking DGQ2 against DGQ2 in 3d:
+DEAL::FE_DGQ<3>(2) ok
+DEAL::FE_DGQ<3>(2) ok
+DEAL::Checking DGQ2 against DGQ2 in 3d:
+DEAL::FE_DGQ<3>(2) ok
+DEAL::FE_DGQ<3>(2) ok
+DEAL::Checking DGQ2 against DGQ2 in 1d:
+DEAL::FE_DGQ<1>(2) ok
+DEAL::FE_DGQ<1>(2) ok
+DEAL::Checking DGQ2 against DGQ2 in 1d:
+DEAL::FE_DGQ<1>(2) ok
+DEAL::FE_DGQ<1>(2) ok
+DEAL::Checking DGQ2 against DGQ2 in 2d:
+DEAL::FE_DGQ<2>(2) ok
+DEAL::FE_DGQ<2>(2) ok
+DEAL::Checking DGQ2 against DGQ2 in 2d:
+DEAL::FE_DGQ<2>(2) ok
+DEAL::FE_DGQ<2>(2) ok
+DEAL::Checking DGQ2 against DGQ2 in 3d:
+DEAL::FE_DGQ<3>(2) ok
+DEAL::FE_DGQ<3>(2) ok
+DEAL::Checking DGQ2 against DGQ2 in 3d:
+DEAL::FE_DGQ<3>(2) ok
+DEAL::FE_DGQ<3>(2) ok
+DEAL::Checking DGQ2 against DGQ4 in 1d:
+DEAL::FE_DGQ<1>(2) ok
+DEAL::FE_DGQ<1>(4) ok
+DEAL::Checking DGQ4 against DGQ2 in 1d:
+DEAL::FE_DGQ<1>(4) ok
+DEAL::FE_DGQ<1>(2) ok
+DEAL::Checking DGQ2 against DGQ4 in 2d:
+DEAL::FE_DGQ<2>(2) ok
+DEAL::FE_DGQ<2>(4) ok
+DEAL::Checking DGQ4 against DGQ2 in 2d:
+DEAL::FE_DGQ<2>(4) ok
+DEAL::FE_DGQ<2>(2) ok
+DEAL::Checking DGQ2 against DGQ4 in 3d:
+DEAL::FE_DGQ<3>(2) ok
+DEAL::FE_DGQ<3>(4) ok
+DEAL::Checking DGQ4 against DGQ2 in 3d:
+DEAL::FE_DGQ<3>(4) ok
+DEAL::FE_DGQ<3>(2) ok
+DEAL::Checking DGQ3 against DGQ3 in 1d:
+DEAL::FE_DGQ<1>(3) ok
+DEAL::FE_DGQ<1>(3) ok
+DEAL::Checking DGQ3 against DGQ3 in 1d:
+DEAL::FE_DGQ<1>(3) ok
+DEAL::FE_DGQ<1>(3) ok
+DEAL::Checking DGQ3 against DGQ3 in 2d:
+DEAL::FE_DGQ<2>(3) ok
+DEAL::FE_DGQ<2>(3) ok
+DEAL::Checking DGQ3 against DGQ3 in 2d:
+DEAL::FE_DGQ<2>(3) ok
+DEAL::FE_DGQ<2>(3) ok
+DEAL::Checking DGQ3 against DGQ3 in 3d:
+DEAL::FE_DGQ<3>(3) ok
+DEAL::FE_DGQ<3>(3) ok
+DEAL::Checking DGQ3 against DGQ3 in 3d:
+DEAL::FE_DGQ<3>(3) ok
+DEAL::FE_DGQ<3>(3) ok
+DEAL::Checking DGQ3 against DGQ5 in 1d:
+DEAL::FE_DGQ<1>(3) ok
+DEAL::FE_DGQ<1>(5) ok
+DEAL::Checking DGQ5 against DGQ3 in 1d:
+DEAL::FE_DGQ<1>(5) ok
+DEAL::FE_DGQ<1>(3) ok
+DEAL::Checking DGQ3 against DGQ5 in 2d:
+DEAL::FE_DGQ<2>(3) ok
+DEAL::FE_DGQ<2>(5) ok
+DEAL::Checking DGQ5 against DGQ3 in 2d:
+DEAL::FE_DGQ<2>(5) ok
+DEAL::FE_DGQ<2>(3) ok
+DEAL::Checking DGQ3 against DGQ5 in 3d:
+DEAL::FE_DGQ<3>(3) ok
+DEAL::FE_DGQ<3>(5) ok
+DEAL::Checking DGQ5 against DGQ3 in 3d:
+DEAL::FE_DGQ<3>(5) ok
+DEAL::FE_DGQ<3>(3) ok
+DEAL::Checking DGQ4 against DGQ5 in 1d:
+DEAL::FE_DGQ<1>(4) ok
+DEAL::FE_DGQ<1>(5) ok
+DEAL::Checking DGQ5 against DGQ4 in 1d:
+DEAL::FE_DGQ<1>(5) ok
+DEAL::FE_DGQ<1>(4) ok
+DEAL::Checking DGQ4 against DGQ5 in 2d:
+DEAL::FE_DGQ<2>(4) ok
+DEAL::FE_DGQ<2>(5) ok
+DEAL::Checking DGQ5 against DGQ4 in 2d:
+DEAL::FE_DGQ<2>(5) ok
+DEAL::FE_DGQ<2>(4) ok
+DEAL::Checking DGQ4 against DGQ5 in 3d:
+DEAL::FE_DGQ<3>(4) ok
+DEAL::FE_DGQ<3>(5) ok
+DEAL::Checking DGQ5 against DGQ4 in 3d:
+DEAL::FE_DGQ<3>(5) ok
+DEAL::FE_DGQ<3>(4) ok
+DEAL::Checking DGP0 against DGP0 in 1d:
+DEAL::FE_DGP<1>(0) ok
+DEAL::FE_DGP<1>(0) ok
+DEAL::Checking DGP0 against DGP0 in 1d:
+DEAL::FE_DGP<1>(0) ok
+DEAL::FE_DGP<1>(0) ok
+DEAL::Checking DGP0 against DGP0 in 2d:
+DEAL::FE_DGP<2>(0) ok
+DEAL::FE_DGP<2>(0) ok
+DEAL::Checking DGP0 against DGP0 in 2d:
+DEAL::FE_DGP<2>(0) ok
+DEAL::FE_DGP<2>(0) ok
+DEAL::Checking DGP0 against DGP0 in 3d:
+DEAL::FE_DGP<3>(0) ok
+DEAL::FE_DGP<3>(0) ok
+DEAL::Checking DGP0 against DGP0 in 3d:
+DEAL::FE_DGP<3>(0) ok
+DEAL::FE_DGP<3>(0) ok
+DEAL::Checking DGP0 against DGP1 in 1d:
+DEAL::FE_DGP<1>(0) ok
+DEAL::FE_DGP<1>(1) ok
+DEAL::Checking DGP1 against DGP0 in 1d:
+DEAL::FE_DGP<1>(1) ok
+DEAL::FE_DGP<1>(0) ok
+DEAL::Checking DGP0 against DGP1 in 2d:
+DEAL::FE_DGP<2>(0) ok
+DEAL::FE_DGP<2>(1) ok
+DEAL::Checking DGP1 against DGP0 in 2d:
+DEAL::FE_DGP<2>(1) ok
+DEAL::FE_DGP<2>(0) ok
+DEAL::Checking DGP0 against DGP1 in 3d:
+DEAL::FE_DGP<3>(0) ok
+DEAL::FE_DGP<3>(1) ok
+DEAL::Checking DGP1 against DGP0 in 3d:
+DEAL::FE_DGP<3>(1) ok
+DEAL::FE_DGP<3>(0) ok
+DEAL::Checking DGP0 against DGP2 in 1d:
+DEAL::FE_DGP<1>(0) ok
+DEAL::FE_DGP<1>(2) ok
+DEAL::Checking DGP2 against DGP0 in 1d:
+DEAL::FE_DGP<1>(2) ok
+DEAL::FE_DGP<1>(0) ok
+DEAL::Checking DGP0 against DGP2 in 2d:
+DEAL::FE_DGP<2>(0) ok
+DEAL::FE_DGP<2>(2) ok
+DEAL::Checking DGP2 against DGP0 in 2d:
+DEAL::FE_DGP<2>(2) ok
+DEAL::FE_DGP<2>(0) ok
+DEAL::Checking DGP0 against DGP2 in 3d:
+DEAL::FE_DGP<3>(0) ok
+DEAL::FE_DGP<3>(2) ok
+DEAL::Checking DGP2 against DGP0 in 3d:
+DEAL::FE_DGP<3>(2) ok
+DEAL::FE_DGP<3>(0) ok
+DEAL::Checking DGP0 against DGP4 in 1d:
+DEAL::FE_DGP<1>(0) ok
+DEAL::FE_DGP<1>(4) ok
+DEAL::Checking DGP4 against DGP0 in 1d:
+DEAL::FE_DGP<1>(4) ok
+DEAL::FE_DGP<1>(0) ok
+DEAL::Checking DGP0 against DGP4 in 2d:
+DEAL::FE_DGP<2>(0) ok
+DEAL::FE_DGP<2>(4) ok
+DEAL::Checking DGP4 against DGP0 in 2d:
+DEAL::FE_DGP<2>(4) ok
+DEAL::FE_DGP<2>(0) ok
+DEAL::Checking DGP0 against DGP4 in 3d:
+DEAL::FE_DGP<3>(0) ok
+DEAL::FE_DGP<3>(4) ok
+DEAL::Checking DGP4 against DGP0 in 3d:
+DEAL::FE_DGP<3>(4) ok
+DEAL::FE_DGP<3>(0) ok
+DEAL::Checking DGP1 against DGP1 in 1d:
+DEAL::FE_DGP<1>(1) ok
+DEAL::FE_DGP<1>(1) ok
+DEAL::Checking DGP1 against DGP1 in 1d:
+DEAL::FE_DGP<1>(1) ok
+DEAL::FE_DGP<1>(1) ok
+DEAL::Checking DGP1 against DGP1 in 2d:
+DEAL::FE_DGP<2>(1) ok
+DEAL::FE_DGP<2>(1) ok
+DEAL::Checking DGP1 against DGP1 in 2d:
+DEAL::FE_DGP<2>(1) ok
+DEAL::FE_DGP<2>(1) ok
+DEAL::Checking DGP1 against DGP1 in 3d:
+DEAL::FE_DGP<3>(1) ok
+DEAL::FE_DGP<3>(1) ok
+DEAL::Checking DGP1 against DGP1 in 3d:
+DEAL::FE_DGP<3>(1) ok
+DEAL::FE_DGP<3>(1) ok
+DEAL::Checking DGP1 against DGP3 in 1d:
+DEAL::FE_DGP<1>(1) ok
+DEAL::FE_DGP<1>(3) ok
+DEAL::Checking DGP3 against DGP1 in 1d:
+DEAL::FE_DGP<1>(3) ok
+DEAL::FE_DGP<1>(1) ok
+DEAL::Checking DGP1 against DGP3 in 2d:
+DEAL::FE_DGP<2>(1) ok
+DEAL::FE_DGP<2>(3) ok
+DEAL::Checking DGP3 against DGP1 in 2d:
+DEAL::FE_DGP<2>(3) ok
+DEAL::FE_DGP<2>(1) ok
+DEAL::Checking DGP1 against DGP3 in 3d:
+DEAL::FE_DGP<3>(1) ok
+DEAL::FE_DGP<3>(3) ok
+DEAL::Checking DGP3 against DGP1 in 3d:
+DEAL::FE_DGP<3>(3) ok
+DEAL::FE_DGP<3>(1) ok
+DEAL::Checking DGP1 against DGP5 in 1d:
+DEAL::FE_DGP<1>(1) ok
+DEAL::FE_DGP<1>(5) ok
+DEAL::Checking DGP5 against DGP1 in 1d:
+DEAL::FE_DGP<1>(5) ok
+DEAL::FE_DGP<1>(1) ok
+DEAL::Checking DGP1 against DGP5 in 2d:
+DEAL::FE_DGP<2>(1) ok
+DEAL::FE_DGP<2>(5) ok
+DEAL::Checking DGP5 against DGP1 in 2d:
+DEAL::FE_DGP<2>(5) ok
+DEAL::FE_DGP<2>(1) ok
+DEAL::Checking DGP1 against DGP5 in 3d:
+DEAL::FE_DGP<3>(1) ok
+DEAL::FE_DGP<3>(5) ok
+DEAL::Checking DGP5 against DGP1 in 3d:
+DEAL::FE_DGP<3>(5) ok
+DEAL::FE_DGP<3>(1) ok
+DEAL::Checking DGP2 against DGP2 in 1d:
+DEAL::FE_DGP<1>(2) ok
+DEAL::FE_DGP<1>(2) ok
+DEAL::Checking DGP2 against DGP2 in 1d:
+DEAL::FE_DGP<1>(2) ok
+DEAL::FE_DGP<1>(2) ok
+DEAL::Checking DGP2 against DGP2 in 2d:
+DEAL::FE_DGP<2>(2) ok
+DEAL::FE_DGP<2>(2) ok
+DEAL::Checking DGP2 against DGP2 in 2d:
+DEAL::FE_DGP<2>(2) ok
+DEAL::FE_DGP<2>(2) ok
+DEAL::Checking DGP2 against DGP2 in 3d:
+DEAL::FE_DGP<3>(2) ok
+DEAL::FE_DGP<3>(2) ok
+DEAL::Checking DGP2 against DGP2 in 3d:
+DEAL::FE_DGP<3>(2) ok
+DEAL::FE_DGP<3>(2) ok
+DEAL::Checking DGP2 against DGP2 in 1d:
+DEAL::FE_DGP<1>(2) ok
+DEAL::FE_DGP<1>(2) ok
+DEAL::Checking DGP2 against DGP2 in 1d:
+DEAL::FE_DGP<1>(2) ok
+DEAL::FE_DGP<1>(2) ok
+DEAL::Checking DGP2 against DGP2 in 2d:
+DEAL::FE_DGP<2>(2) ok
+DEAL::FE_DGP<2>(2) ok
+DEAL::Checking DGP2 against DGP2 in 2d:
+DEAL::FE_DGP<2>(2) ok
+DEAL::FE_DGP<2>(2) ok
+DEAL::Checking DGP2 against DGP2 in 3d:
+DEAL::FE_DGP<3>(2) ok
+DEAL::FE_DGP<3>(2) ok
+DEAL::Checking DGP2 against DGP2 in 3d:
+DEAL::FE_DGP<3>(2) ok
+DEAL::FE_DGP<3>(2) ok
+DEAL::Checking DGP2 against DGP4 in 1d:
+DEAL::FE_DGP<1>(2) ok
+DEAL::FE_DGP<1>(4) ok
+DEAL::Checking DGP4 against DGP2 in 1d:
+DEAL::FE_DGP<1>(4) ok
+DEAL::FE_DGP<1>(2) ok
+DEAL::Checking DGP2 against DGP4 in 2d:
+DEAL::FE_DGP<2>(2) ok
+DEAL::FE_DGP<2>(4) ok
+DEAL::Checking DGP4 against DGP2 in 2d:
+DEAL::FE_DGP<2>(4) ok
+DEAL::FE_DGP<2>(2) ok
+DEAL::Checking DGP2 against DGP4 in 3d:
+DEAL::FE_DGP<3>(2) ok
+DEAL::FE_DGP<3>(4) ok
+DEAL::Checking DGP4 against DGP2 in 3d:
+DEAL::FE_DGP<3>(4) ok
+DEAL::FE_DGP<3>(2) ok
+DEAL::Checking DGP3 against DGP3 in 1d:
+DEAL::FE_DGP<1>(3) ok
+DEAL::FE_DGP<1>(3) ok
+DEAL::Checking DGP3 against DGP3 in 1d:
+DEAL::FE_DGP<1>(3) ok
+DEAL::FE_DGP<1>(3) ok
+DEAL::Checking DGP3 against DGP3 in 2d:
+DEAL::FE_DGP<2>(3) ok
+DEAL::FE_DGP<2>(3) ok
+DEAL::Checking DGP3 against DGP3 in 2d:
+DEAL::FE_DGP<2>(3) ok
+DEAL::FE_DGP<2>(3) ok
+DEAL::Checking DGP3 against DGP3 in 3d:
+DEAL::FE_DGP<3>(3) ok
+DEAL::FE_DGP<3>(3) ok
+DEAL::Checking DGP3 against DGP3 in 3d:
+DEAL::FE_DGP<3>(3) ok
+DEAL::FE_DGP<3>(3) ok
+DEAL::Checking DGP3 against DGP5 in 1d:
+DEAL::FE_DGP<1>(3) ok
+DEAL::FE_DGP<1>(5) ok
+DEAL::Checking DGP5 against DGP3 in 1d:
+DEAL::FE_DGP<1>(5) ok
+DEAL::FE_DGP<1>(3) ok
+DEAL::Checking DGP3 against DGP5 in 2d:
+DEAL::FE_DGP<2>(3) ok
+DEAL::FE_DGP<2>(5) ok
+DEAL::Checking DGP5 against DGP3 in 2d:
+DEAL::FE_DGP<2>(5) ok
+DEAL::FE_DGP<2>(3) ok
+DEAL::Checking DGP3 against DGP5 in 3d:
+DEAL::FE_DGP<3>(3) ok
+DEAL::FE_DGP<3>(5) ok
+DEAL::Checking DGP5 against DGP3 in 3d:
+DEAL::FE_DGP<3>(5) ok
+DEAL::FE_DGP<3>(3) ok
+DEAL::Checking DGP4 against DGP5 in 1d:
+DEAL::FE_DGP<1>(4) ok
+DEAL::FE_DGP<1>(5) ok
+DEAL::Checking DGP5 against DGP4 in 1d:
+DEAL::FE_DGP<1>(5) ok
+DEAL::FE_DGP<1>(4) ok
+DEAL::Checking DGP4 against DGP5 in 2d:
+DEAL::FE_DGP<2>(4) ok
+DEAL::FE_DGP<2>(5) ok
+DEAL::Checking DGP5 against DGP4 in 2d:
+DEAL::FE_DGP<2>(5) ok
+DEAL::FE_DGP<2>(4) ok
+DEAL::Checking DGP4 against DGP5 in 3d:
+DEAL::FE_DGP<3>(4) ok
+DEAL::FE_DGP<3>(5) ok
+DEAL::Checking DGP5 against DGP4 in 3d:
+DEAL::FE_DGP<3>(5) ok
+DEAL::FE_DGP<3>(4) ok
+DEAL::Checking Nedelec1 against Nedelec1 in 2d:
+DEAL::FE_Nedelec<2>(1) ok
+DEAL::FE_Nedelec<2>(1) ok
+DEAL::Checking Nedelec1 against Nedelec1 in 2d:
+DEAL::FE_Nedelec<2>(1) ok
+DEAL::FE_Nedelec<2>(1) ok
+DEAL::Checking Nedelec1 against Nedelec1 in 3d:
+DEAL::FE_Nedelec<3>(1) ok
+DEAL::FE_Nedelec<3>(1) ok
+DEAL::Checking Nedelec1 against Nedelec1 in 3d:
+DEAL::FE_Nedelec<3>(1) ok
+DEAL::FE_Nedelec<3>(1) ok
+DEAL::Checking FE_Q<1>(1)3 against FE_Q<1>(2)3 in 1d:
+DEAL::FESystem<1>[FE_Q<1>(1)^3] ok
+DEAL::FESystem<1>[FE_Q<1>(2)^3] ok
+DEAL::Checking FE_Q<1>(2)3 against FE_Q<1>(1)3 in 1d:
+DEAL::FESystem<1>[FE_Q<1>(2)^3] ok
+DEAL::FESystem<1>[FE_Q<1>(1)^3] ok
+DEAL::Checking FE_DGQ<1>(2)2 against FE_DGQ<1>(3)2 in 1d:
+DEAL::FESystem<1>[FE_DGQ<1>(2)^2] ok
+DEAL::FESystem<1>[FE_DGQ<1>(3)^2] ok
+DEAL::Checking FE_DGQ<1>(3)2 against FE_DGQ<1>(2)2 in 1d:
+DEAL::FESystem<1>[FE_DGQ<1>(3)^2] ok
+DEAL::FESystem<1>[FE_DGQ<1>(2)^2] ok
+DEAL::Checking FE_DGP<1>(3)1 against FE_DGP<1>(1)1 in 1d:
+DEAL::FESystem<1>[FE_DGP<1>(3)] ok
+DEAL::FESystem<1>[FE_DGP<1>(1)] ok
+DEAL::Checking FE_DGP<1>(1)1 against FE_DGP<1>(3)1 in 1d:
+DEAL::FESystem<1>[FE_DGP<1>(1)] ok
+DEAL::FESystem<1>[FE_DGP<1>(3)] ok
+DEAL::Checking FE_Q<2>(1)3 against FE_Q<2>(2)3 in 2d:
+DEAL::FESystem<2>[FE_Q<2>(1)^3] ok
+DEAL::FESystem<2>[FE_Q<2>(2)^3] ok
+DEAL::Checking FE_Q<2>(2)3 against FE_Q<2>(1)3 in 2d:
+DEAL::FESystem<2>[FE_Q<2>(2)^3] ok
+DEAL::FESystem<2>[FE_Q<2>(1)^3] ok
+DEAL::Checking FE_DGQ<2>(2)2 against FE_DGQ<2>(3)2 in 2d:
+DEAL::FESystem<2>[FE_DGQ<2>(2)^2] ok
+DEAL::FESystem<2>[FE_DGQ<2>(3)^2] ok
+DEAL::Checking FE_DGQ<2>(3)2 against FE_DGQ<2>(2)2 in 2d:
+DEAL::FESystem<2>[FE_DGQ<2>(3)^2] ok
+DEAL::FESystem<2>[FE_DGQ<2>(2)^2] ok
+DEAL::Checking FE_DGP<2>(3)1 against FE_DGP<2>(1)1 in 2d:
+DEAL::FESystem<2>[FE_DGP<2>(3)] ok
+DEAL::FESystem<2>[FE_DGP<2>(1)] ok
+DEAL::Checking FE_DGP<2>(1)1 against FE_DGP<2>(3)1 in 2d:
+DEAL::FESystem<2>[FE_DGP<2>(1)] ok
+DEAL::FESystem<2>[FE_DGP<2>(3)] ok
+DEAL::Checking FE_Q<3>(1)3 against FE_Q<3>(2)3 in 3d:
+DEAL::FESystem<3>[FE_Q<3>(1)^3] ok
+DEAL::FESystem<3>[FE_Q<3>(2)^3] ok
+DEAL::Checking FE_Q<3>(2)3 against FE_Q<3>(1)3 in 3d:
+DEAL::FESystem<3>[FE_Q<3>(2)^3] ok
+DEAL::FESystem<3>[FE_Q<3>(1)^3] ok
+DEAL::Checking FE_DGQ<3>(2)2 against FE_DGQ<3>(3)2 in 3d:
+DEAL::FESystem<3>[FE_DGQ<3>(2)^2] ok
+DEAL::FESystem<3>[FE_DGQ<3>(3)^2] ok
+DEAL::Checking FE_DGQ<3>(3)2 against FE_DGQ<3>(2)2 in 3d:
+DEAL::FESystem<3>[FE_DGQ<3>(3)^2] ok
+DEAL::FESystem<3>[FE_DGQ<3>(2)^2] ok
+DEAL::Checking FE_DGP<3>(3)1 against FE_DGP<3>(1)1 in 3d:
+DEAL::FESystem<3>[FE_DGP<3>(3)] ok
+DEAL::FESystem<3>[FE_DGP<3>(1)] ok
+DEAL::Checking FE_DGP<3>(1)1 against FE_DGP<3>(3)1 in 3d:
+DEAL::FESystem<3>[FE_DGP<3>(1)] ok
+DEAL::FESystem<3>[FE_DGP<3>(3)] ok
diff --git a/tests/results/i686-pc-linux-gnu+gcc3.2/fe/fe_tools_09.output b/tests/results/i686-pc-linux-gnu+gcc3.2/fe/fe_tools_09.output
new file mode 100644 (file)
index 0000000..807d770
--- /dev/null
@@ -0,0 +1,643 @@
+
+DEAL::Checking Q1 against Q1 in 1d:
+DEAL::FE_Q<1>(1) ok
+DEAL::FE_Q<1>(1) ok
+DEAL::Checking Q1 against Q1 in 1d:
+DEAL::FE_Q<1>(1) ok
+DEAL::FE_Q<1>(1) ok
+DEAL::Checking Q1 against Q1 in 2d:
+DEAL::FE_Q<2>(1) ok
+DEAL::FE_Q<2>(1) ok
+DEAL::Checking Q1 against Q1 in 2d:
+DEAL::FE_Q<2>(1) ok
+DEAL::FE_Q<2>(1) ok
+DEAL::Checking Q1 against Q1 in 3d:
+DEAL::FE_Q<3>(1) ok
+DEAL::FE_Q<3>(1) ok
+DEAL::Checking Q1 against Q1 in 3d:
+DEAL::FE_Q<3>(1) ok
+DEAL::FE_Q<3>(1) ok
+DEAL::Checking Q1 against Q2 in 1d:
+DEAL::FE_Q<1>(1) ok
+DEAL::FE_Q<1>(2) ok
+DEAL::Checking Q2 against Q1 in 1d:
+DEAL::FE_Q<1>(2) ok
+DEAL::FE_Q<1>(1) ok
+DEAL::Checking Q1 against Q2 in 2d:
+DEAL::FE_Q<2>(1) ok
+DEAL::FE_Q<2>(2) ok
+DEAL::Checking Q2 against Q1 in 2d:
+DEAL::FE_Q<2>(2) ok
+DEAL::FE_Q<2>(1) ok
+DEAL::Checking Q1 against Q2 in 3d:
+DEAL::FE_Q<3>(1) ok
+DEAL::FE_Q<3>(2) ok
+DEAL::Checking Q2 against Q1 in 3d:
+DEAL::FE_Q<3>(2) ok
+DEAL::FE_Q<3>(1) ok
+DEAL::Checking Q1 against Q3 in 1d:
+DEAL::FE_Q<1>(1) ok
+DEAL::FE_Q<1>(3) ok
+DEAL::Checking Q3 against Q1 in 1d:
+DEAL::FE_Q<1>(3) ok
+DEAL::FE_Q<1>(1) ok
+DEAL::Checking Q1 against Q3 in 2d:
+DEAL::FE_Q<2>(1) ok
+DEAL::FE_Q<2>(3) ok
+DEAL::Checking Q3 against Q1 in 2d:
+DEAL::FE_Q<2>(3) ok
+DEAL::FE_Q<2>(1) ok
+DEAL::Checking Q1 against Q3 in 3d:
+DEAL::FE_Q<3>(1) ok
+DEAL::FE_Q<3>(3) ok
+DEAL::Checking Q3 against Q1 in 3d:
+DEAL::FE_Q<3>(3) ok
+DEAL::FE_Q<3>(1) ok
+DEAL::Checking Q2 against Q2 in 1d:
+DEAL::FE_Q<1>(2) ok
+DEAL::FE_Q<1>(2) ok
+DEAL::Checking Q2 against Q2 in 1d:
+DEAL::FE_Q<1>(2) ok
+DEAL::FE_Q<1>(2) ok
+DEAL::Checking Q2 against Q2 in 2d:
+DEAL::FE_Q<2>(2) ok
+DEAL::FE_Q<2>(2) ok
+DEAL::Checking Q2 against Q2 in 2d:
+DEAL::FE_Q<2>(2) ok
+DEAL::FE_Q<2>(2) ok
+DEAL::Checking Q2 against Q2 in 3d:
+DEAL::FE_Q<3>(2) ok
+DEAL::FE_Q<3>(2) ok
+DEAL::Checking Q2 against Q2 in 3d:
+DEAL::FE_Q<3>(2) ok
+DEAL::FE_Q<3>(2) ok
+DEAL::Checking Q2 against Q3 in 1d:
+DEAL::FE_Q<1>(2) ok
+DEAL::FE_Q<1>(3) ok
+DEAL::Checking Q3 against Q2 in 1d:
+DEAL::FE_Q<1>(3) ok
+DEAL::FE_Q<1>(2) ok
+DEAL::Checking Q2 against Q3 in 2d:
+DEAL::FE_Q<2>(2) ok
+DEAL::FE_Q<2>(3) ok
+DEAL::Checking Q3 against Q2 in 2d:
+DEAL::FE_Q<2>(3) ok
+DEAL::FE_Q<2>(2) ok
+DEAL::Checking Q2 against Q3 in 3d:
+DEAL::FE_Q<3>(2) ok
+DEAL::FE_Q<3>(3) ok
+DEAL::Checking Q3 against Q2 in 3d:
+DEAL::FE_Q<3>(3) ok
+DEAL::FE_Q<3>(2) ok
+DEAL::Checking Q3 against Q3 in 1d:
+DEAL::FE_Q<1>(3) ok
+DEAL::FE_Q<1>(3) ok
+DEAL::Checking Q3 against Q3 in 1d:
+DEAL::FE_Q<1>(3) ok
+DEAL::FE_Q<1>(3) ok
+DEAL::Checking Q3 against Q3 in 2d:
+DEAL::FE_Q<2>(3) ok
+DEAL::FE_Q<2>(3) ok
+DEAL::Checking Q3 against Q3 in 2d:
+DEAL::FE_Q<2>(3) ok
+DEAL::FE_Q<2>(3) ok
+DEAL::Checking Q3 against Q3 in 3d:
+DEAL::FE_Q<3>(3) ok
+DEAL::FE_Q<3>(3) ok
+DEAL::Checking Q3 against Q3 in 3d:
+DEAL::FE_Q<3>(3) ok
+DEAL::FE_Q<3>(3) ok
+DEAL::Checking DGQ0 against DGQ0 in 1d:
+DEAL::FE_DGQ<1>(0) ok
+DEAL::FE_DGQ<1>(0) ok
+DEAL::Checking DGQ0 against DGQ0 in 1d:
+DEAL::FE_DGQ<1>(0) ok
+DEAL::FE_DGQ<1>(0) ok
+DEAL::Checking DGQ0 against DGQ0 in 2d:
+DEAL::FE_DGQ<2>(0) ok
+DEAL::FE_DGQ<2>(0) ok
+DEAL::Checking DGQ0 against DGQ0 in 2d:
+DEAL::FE_DGQ<2>(0) ok
+DEAL::FE_DGQ<2>(0) ok
+DEAL::Checking DGQ0 against DGQ0 in 3d:
+DEAL::FE_DGQ<3>(0) ok
+DEAL::FE_DGQ<3>(0) ok
+DEAL::Checking DGQ0 against DGQ0 in 3d:
+DEAL::FE_DGQ<3>(0) ok
+DEAL::FE_DGQ<3>(0) ok
+DEAL::Checking DGQ0 against DGQ1 in 1d:
+DEAL::FE_DGQ<1>(0) ok
+DEAL::FE_DGQ<1>(1) ok
+DEAL::Checking DGQ1 against DGQ0 in 1d:
+DEAL::FE_DGQ<1>(1) ok
+DEAL::FE_DGQ<1>(0) ok
+DEAL::Checking DGQ0 against DGQ1 in 2d:
+DEAL::FE_DGQ<2>(0) ok
+DEAL::FE_DGQ<2>(1) ok
+DEAL::Checking DGQ1 against DGQ0 in 2d:
+DEAL::FE_DGQ<2>(1) ok
+DEAL::FE_DGQ<2>(0) ok
+DEAL::Checking DGQ0 against DGQ1 in 3d:
+DEAL::FE_DGQ<3>(0) ok
+DEAL::FE_DGQ<3>(1) ok
+DEAL::Checking DGQ1 against DGQ0 in 3d:
+DEAL::FE_DGQ<3>(1) ok
+DEAL::FE_DGQ<3>(0) ok
+DEAL::Checking DGQ0 against DGQ2 in 1d:
+DEAL::FE_DGQ<1>(0) ok
+DEAL::FE_DGQ<1>(2) ok
+DEAL::Checking DGQ2 against DGQ0 in 1d:
+DEAL::FE_DGQ<1>(2) ok
+DEAL::FE_DGQ<1>(0) ok
+DEAL::Checking DGQ0 against DGQ2 in 2d:
+DEAL::FE_DGQ<2>(0) ok
+DEAL::FE_DGQ<2>(2) ok
+DEAL::Checking DGQ2 against DGQ0 in 2d:
+DEAL::FE_DGQ<2>(2) ok
+DEAL::FE_DGQ<2>(0) ok
+DEAL::Checking DGQ0 against DGQ2 in 3d:
+DEAL::FE_DGQ<3>(0) ok
+DEAL::FE_DGQ<3>(2) ok
+DEAL::Checking DGQ2 against DGQ0 in 3d:
+DEAL::FE_DGQ<3>(2) ok
+DEAL::FE_DGQ<3>(0) ok
+DEAL::Checking DGQ0 against DGQ4 in 1d:
+DEAL::FE_DGQ<1>(0) ok
+DEAL::FE_DGQ<1>(4) ok
+DEAL::Checking DGQ4 against DGQ0 in 1d:
+DEAL::FE_DGQ<1>(4) ok
+DEAL::FE_DGQ<1>(0) ok
+DEAL::Checking DGQ0 against DGQ4 in 2d:
+DEAL::FE_DGQ<2>(0) ok
+DEAL::FE_DGQ<2>(4) ok
+DEAL::Checking DGQ4 against DGQ0 in 2d:
+DEAL::FE_DGQ<2>(4) ok
+DEAL::FE_DGQ<2>(0) ok
+DEAL::Checking DGQ0 against DGQ4 in 3d:
+DEAL::FE_DGQ<3>(0) ok
+DEAL::FE_DGQ<3>(4) ok
+DEAL::Checking DGQ4 against DGQ0 in 3d:
+DEAL::FE_DGQ<3>(4) ok
+DEAL::FE_DGQ<3>(0) ok
+DEAL::Checking DGQ1 against DGQ1 in 1d:
+DEAL::FE_DGQ<1>(1) ok
+DEAL::FE_DGQ<1>(1) ok
+DEAL::Checking DGQ1 against DGQ1 in 1d:
+DEAL::FE_DGQ<1>(1) ok
+DEAL::FE_DGQ<1>(1) ok
+DEAL::Checking DGQ1 against DGQ1 in 2d:
+DEAL::FE_DGQ<2>(1) ok
+DEAL::FE_DGQ<2>(1) ok
+DEAL::Checking DGQ1 against DGQ1 in 2d:
+DEAL::FE_DGQ<2>(1) ok
+DEAL::FE_DGQ<2>(1) ok
+DEAL::Checking DGQ1 against DGQ1 in 3d:
+DEAL::FE_DGQ<3>(1) ok
+DEAL::FE_DGQ<3>(1) ok
+DEAL::Checking DGQ1 against DGQ1 in 3d:
+DEAL::FE_DGQ<3>(1) ok
+DEAL::FE_DGQ<3>(1) ok
+DEAL::Checking DGQ1 against DGQ3 in 1d:
+DEAL::FE_DGQ<1>(1) ok
+DEAL::FE_DGQ<1>(3) ok
+DEAL::Checking DGQ3 against DGQ1 in 1d:
+DEAL::FE_DGQ<1>(3) ok
+DEAL::FE_DGQ<1>(1) ok
+DEAL::Checking DGQ1 against DGQ3 in 2d:
+DEAL::FE_DGQ<2>(1) ok
+DEAL::FE_DGQ<2>(3) ok
+DEAL::Checking DGQ3 against DGQ1 in 2d:
+DEAL::FE_DGQ<2>(3) ok
+DEAL::FE_DGQ<2>(1) ok
+DEAL::Checking DGQ1 against DGQ3 in 3d:
+DEAL::FE_DGQ<3>(1) ok
+DEAL::FE_DGQ<3>(3) ok
+DEAL::Checking DGQ3 against DGQ1 in 3d:
+DEAL::FE_DGQ<3>(3) ok
+DEAL::FE_DGQ<3>(1) ok
+DEAL::Checking DGQ1 against DGQ5 in 1d:
+DEAL::FE_DGQ<1>(1) ok
+DEAL::FE_DGQ<1>(5) ok
+DEAL::Checking DGQ5 against DGQ1 in 1d:
+DEAL::FE_DGQ<1>(5) ok
+DEAL::FE_DGQ<1>(1) ok
+DEAL::Checking DGQ1 against DGQ5 in 2d:
+DEAL::FE_DGQ<2>(1) ok
+DEAL::FE_DGQ<2>(5) ok
+DEAL::Checking DGQ5 against DGQ1 in 2d:
+DEAL::FE_DGQ<2>(5) ok
+DEAL::FE_DGQ<2>(1) ok
+DEAL::Checking DGQ1 against DGQ5 in 3d:
+DEAL::FE_DGQ<3>(1) ok
+DEAL::FE_DGQ<3>(5) ok
+DEAL::Checking DGQ5 against DGQ1 in 3d:
+DEAL::FE_DGQ<3>(5) ok
+DEAL::FE_DGQ<3>(1) ok
+DEAL::Checking DGQ2 against DGQ2 in 1d:
+DEAL::FE_DGQ<1>(2) ok
+DEAL::FE_DGQ<1>(2) ok
+DEAL::Checking DGQ2 against DGQ2 in 1d:
+DEAL::FE_DGQ<1>(2) ok
+DEAL::FE_DGQ<1>(2) ok
+DEAL::Checking DGQ2 against DGQ2 in 2d:
+DEAL::FE_DGQ<2>(2) ok
+DEAL::FE_DGQ<2>(2) ok
+DEAL::Checking DGQ2 against DGQ2 in 2d:
+DEAL::FE_DGQ<2>(2) ok
+DEAL::FE_DGQ<2>(2) ok
+DEAL::Checking DGQ2 against DGQ2 in 3d:
+DEAL::FE_DGQ<3>(2) ok
+DEAL::FE_DGQ<3>(2) ok
+DEAL::Checking DGQ2 against DGQ2 in 3d:
+DEAL::FE_DGQ<3>(2) ok
+DEAL::FE_DGQ<3>(2) ok
+DEAL::Checking DGQ2 against DGQ2 in 1d:
+DEAL::FE_DGQ<1>(2) ok
+DEAL::FE_DGQ<1>(2) ok
+DEAL::Checking DGQ2 against DGQ2 in 1d:
+DEAL::FE_DGQ<1>(2) ok
+DEAL::FE_DGQ<1>(2) ok
+DEAL::Checking DGQ2 against DGQ2 in 2d:
+DEAL::FE_DGQ<2>(2) ok
+DEAL::FE_DGQ<2>(2) ok
+DEAL::Checking DGQ2 against DGQ2 in 2d:
+DEAL::FE_DGQ<2>(2) ok
+DEAL::FE_DGQ<2>(2) ok
+DEAL::Checking DGQ2 against DGQ2 in 3d:
+DEAL::FE_DGQ<3>(2) ok
+DEAL::FE_DGQ<3>(2) ok
+DEAL::Checking DGQ2 against DGQ2 in 3d:
+DEAL::FE_DGQ<3>(2) ok
+DEAL::FE_DGQ<3>(2) ok
+DEAL::Checking DGQ2 against DGQ4 in 1d:
+DEAL::FE_DGQ<1>(2) ok
+DEAL::FE_DGQ<1>(4) ok
+DEAL::Checking DGQ4 against DGQ2 in 1d:
+DEAL::FE_DGQ<1>(4) ok
+DEAL::FE_DGQ<1>(2) ok
+DEAL::Checking DGQ2 against DGQ4 in 2d:
+DEAL::FE_DGQ<2>(2) ok
+DEAL::FE_DGQ<2>(4) ok
+DEAL::Checking DGQ4 against DGQ2 in 2d:
+DEAL::FE_DGQ<2>(4) ok
+DEAL::FE_DGQ<2>(2) ok
+DEAL::Checking DGQ2 against DGQ4 in 3d:
+DEAL::FE_DGQ<3>(2) ok
+DEAL::FE_DGQ<3>(4) ok
+DEAL::Checking DGQ4 against DGQ2 in 3d:
+DEAL::FE_DGQ<3>(4) ok
+DEAL::FE_DGQ<3>(2) ok
+DEAL::Checking DGQ3 against DGQ3 in 1d:
+DEAL::FE_DGQ<1>(3) ok
+DEAL::FE_DGQ<1>(3) ok
+DEAL::Checking DGQ3 against DGQ3 in 1d:
+DEAL::FE_DGQ<1>(3) ok
+DEAL::FE_DGQ<1>(3) ok
+DEAL::Checking DGQ3 against DGQ3 in 2d:
+DEAL::FE_DGQ<2>(3) ok
+DEAL::FE_DGQ<2>(3) ok
+DEAL::Checking DGQ3 against DGQ3 in 2d:
+DEAL::FE_DGQ<2>(3) ok
+DEAL::FE_DGQ<2>(3) ok
+DEAL::Checking DGQ3 against DGQ3 in 3d:
+DEAL::FE_DGQ<3>(3) ok
+DEAL::FE_DGQ<3>(3) ok
+DEAL::Checking DGQ3 against DGQ3 in 3d:
+DEAL::FE_DGQ<3>(3) ok
+DEAL::FE_DGQ<3>(3) ok
+DEAL::Checking DGQ3 against DGQ5 in 1d:
+DEAL::FE_DGQ<1>(3) ok
+DEAL::FE_DGQ<1>(5) ok
+DEAL::Checking DGQ5 against DGQ3 in 1d:
+DEAL::FE_DGQ<1>(5) ok
+DEAL::FE_DGQ<1>(3) ok
+DEAL::Checking DGQ3 against DGQ5 in 2d:
+DEAL::FE_DGQ<2>(3) ok
+DEAL::FE_DGQ<2>(5) ok
+DEAL::Checking DGQ5 against DGQ3 in 2d:
+DEAL::FE_DGQ<2>(5) ok
+DEAL::FE_DGQ<2>(3) ok
+DEAL::Checking DGQ3 against DGQ5 in 3d:
+DEAL::FE_DGQ<3>(3) ok
+DEAL::FE_DGQ<3>(5) ok
+DEAL::Checking DGQ5 against DGQ3 in 3d:
+DEAL::FE_DGQ<3>(5) ok
+DEAL::FE_DGQ<3>(3) ok
+DEAL::Checking DGQ4 against DGQ5 in 1d:
+DEAL::FE_DGQ<1>(4) ok
+DEAL::FE_DGQ<1>(5) ok
+DEAL::Checking DGQ5 against DGQ4 in 1d:
+DEAL::FE_DGQ<1>(5) ok
+DEAL::FE_DGQ<1>(4) ok
+DEAL::Checking DGQ4 against DGQ5 in 2d:
+DEAL::FE_DGQ<2>(4) ok
+DEAL::FE_DGQ<2>(5) ok
+DEAL::Checking DGQ5 against DGQ4 in 2d:
+DEAL::FE_DGQ<2>(5) ok
+DEAL::FE_DGQ<2>(4) ok
+DEAL::Checking DGQ4 against DGQ5 in 3d:
+DEAL::FE_DGQ<3>(4) ok
+DEAL::FE_DGQ<3>(5) ok
+DEAL::Checking DGQ5 against DGQ4 in 3d:
+DEAL::FE_DGQ<3>(5) ok
+DEAL::FE_DGQ<3>(4) ok
+DEAL::Checking DGP0 against DGP0 in 1d:
+DEAL::FE_DGP<1>(0) ok
+DEAL::FE_DGP<1>(0) ok
+DEAL::Checking DGP0 against DGP0 in 1d:
+DEAL::FE_DGP<1>(0) ok
+DEAL::FE_DGP<1>(0) ok
+DEAL::Checking DGP0 against DGP0 in 2d:
+DEAL::FE_DGP<2>(0) ok
+DEAL::FE_DGP<2>(0) ok
+DEAL::Checking DGP0 against DGP0 in 2d:
+DEAL::FE_DGP<2>(0) ok
+DEAL::FE_DGP<2>(0) ok
+DEAL::Checking DGP0 against DGP0 in 3d:
+DEAL::FE_DGP<3>(0) ok
+DEAL::FE_DGP<3>(0) ok
+DEAL::Checking DGP0 against DGP0 in 3d:
+DEAL::FE_DGP<3>(0) ok
+DEAL::FE_DGP<3>(0) ok
+DEAL::Checking DGP0 against DGP1 in 1d:
+DEAL::FE_DGP<1>(0) ok
+DEAL::FE_DGP<1>(1) ok
+DEAL::Checking DGP1 against DGP0 in 1d:
+DEAL::FE_DGP<1>(1) ok
+DEAL::FE_DGP<1>(0) ok
+DEAL::Checking DGP0 against DGP1 in 2d:
+DEAL::FE_DGP<2>(0) ok
+DEAL::FE_DGP<2>(1) ok
+DEAL::Checking DGP1 against DGP0 in 2d:
+DEAL::FE_DGP<2>(1) ok
+DEAL::FE_DGP<2>(0) ok
+DEAL::Checking DGP0 against DGP1 in 3d:
+DEAL::FE_DGP<3>(0) ok
+DEAL::FE_DGP<3>(1) ok
+DEAL::Checking DGP1 against DGP0 in 3d:
+DEAL::FE_DGP<3>(1) ok
+DEAL::FE_DGP<3>(0) ok
+DEAL::Checking DGP0 against DGP2 in 1d:
+DEAL::FE_DGP<1>(0) ok
+DEAL::FE_DGP<1>(2) ok
+DEAL::Checking DGP2 against DGP0 in 1d:
+DEAL::FE_DGP<1>(2) ok
+DEAL::FE_DGP<1>(0) ok
+DEAL::Checking DGP0 against DGP2 in 2d:
+DEAL::FE_DGP<2>(0) ok
+DEAL::FE_DGP<2>(2) ok
+DEAL::Checking DGP2 against DGP0 in 2d:
+DEAL::FE_DGP<2>(2) ok
+DEAL::FE_DGP<2>(0) ok
+DEAL::Checking DGP0 against DGP2 in 3d:
+DEAL::FE_DGP<3>(0) ok
+DEAL::FE_DGP<3>(2) ok
+DEAL::Checking DGP2 against DGP0 in 3d:
+DEAL::FE_DGP<3>(2) ok
+DEAL::FE_DGP<3>(0) ok
+DEAL::Checking DGP0 against DGP4 in 1d:
+DEAL::FE_DGP<1>(0) ok
+DEAL::FE_DGP<1>(4) ok
+DEAL::Checking DGP4 against DGP0 in 1d:
+DEAL::FE_DGP<1>(4) ok
+DEAL::FE_DGP<1>(0) ok
+DEAL::Checking DGP0 against DGP4 in 2d:
+DEAL::FE_DGP<2>(0) ok
+DEAL::FE_DGP<2>(4) ok
+DEAL::Checking DGP4 against DGP0 in 2d:
+DEAL::FE_DGP<2>(4) ok
+DEAL::FE_DGP<2>(0) ok
+DEAL::Checking DGP0 against DGP4 in 3d:
+DEAL::FE_DGP<3>(0) ok
+DEAL::FE_DGP<3>(4) ok
+DEAL::Checking DGP4 against DGP0 in 3d:
+DEAL::FE_DGP<3>(4) ok
+DEAL::FE_DGP<3>(0) ok
+DEAL::Checking DGP1 against DGP1 in 1d:
+DEAL::FE_DGP<1>(1) ok
+DEAL::FE_DGP<1>(1) ok
+DEAL::Checking DGP1 against DGP1 in 1d:
+DEAL::FE_DGP<1>(1) ok
+DEAL::FE_DGP<1>(1) ok
+DEAL::Checking DGP1 against DGP1 in 2d:
+DEAL::FE_DGP<2>(1) ok
+DEAL::FE_DGP<2>(1) ok
+DEAL::Checking DGP1 against DGP1 in 2d:
+DEAL::FE_DGP<2>(1) ok
+DEAL::FE_DGP<2>(1) ok
+DEAL::Checking DGP1 against DGP1 in 3d:
+DEAL::FE_DGP<3>(1) ok
+DEAL::FE_DGP<3>(1) ok
+DEAL::Checking DGP1 against DGP1 in 3d:
+DEAL::FE_DGP<3>(1) ok
+DEAL::FE_DGP<3>(1) ok
+DEAL::Checking DGP1 against DGP3 in 1d:
+DEAL::FE_DGP<1>(1) ok
+DEAL::FE_DGP<1>(3) ok
+DEAL::Checking DGP3 against DGP1 in 1d:
+DEAL::FE_DGP<1>(3) ok
+DEAL::FE_DGP<1>(1) ok
+DEAL::Checking DGP1 against DGP3 in 2d:
+DEAL::FE_DGP<2>(1) ok
+DEAL::FE_DGP<2>(3) ok
+DEAL::Checking DGP3 against DGP1 in 2d:
+DEAL::FE_DGP<2>(3) ok
+DEAL::FE_DGP<2>(1) ok
+DEAL::Checking DGP1 against DGP3 in 3d:
+DEAL::FE_DGP<3>(1) ok
+DEAL::FE_DGP<3>(3) ok
+DEAL::Checking DGP3 against DGP1 in 3d:
+DEAL::FE_DGP<3>(3) ok
+DEAL::FE_DGP<3>(1) ok
+DEAL::Checking DGP1 against DGP5 in 1d:
+DEAL::FE_DGP<1>(1) ok
+DEAL::FE_DGP<1>(5) ok
+DEAL::Checking DGP5 against DGP1 in 1d:
+DEAL::FE_DGP<1>(5) ok
+DEAL::FE_DGP<1>(1) ok
+DEAL::Checking DGP1 against DGP5 in 2d:
+DEAL::FE_DGP<2>(1) ok
+DEAL::FE_DGP<2>(5) ok
+DEAL::Checking DGP5 against DGP1 in 2d:
+DEAL::FE_DGP<2>(5) ok
+DEAL::FE_DGP<2>(1) ok
+DEAL::Checking DGP1 against DGP5 in 3d:
+DEAL::FE_DGP<3>(1) ok
+DEAL::FE_DGP<3>(5) ok
+DEAL::Checking DGP5 against DGP1 in 3d:
+DEAL::FE_DGP<3>(5) ok
+DEAL::FE_DGP<3>(1) ok
+DEAL::Checking DGP2 against DGP2 in 1d:
+DEAL::FE_DGP<1>(2) ok
+DEAL::FE_DGP<1>(2) ok
+DEAL::Checking DGP2 against DGP2 in 1d:
+DEAL::FE_DGP<1>(2) ok
+DEAL::FE_DGP<1>(2) ok
+DEAL::Checking DGP2 against DGP2 in 2d:
+DEAL::FE_DGP<2>(2) ok
+DEAL::FE_DGP<2>(2) ok
+DEAL::Checking DGP2 against DGP2 in 2d:
+DEAL::FE_DGP<2>(2) ok
+DEAL::FE_DGP<2>(2) ok
+DEAL::Checking DGP2 against DGP2 in 3d:
+DEAL::FE_DGP<3>(2) ok
+DEAL::FE_DGP<3>(2) ok
+DEAL::Checking DGP2 against DGP2 in 3d:
+DEAL::FE_DGP<3>(2) ok
+DEAL::FE_DGP<3>(2) ok
+DEAL::Checking DGP2 against DGP2 in 1d:
+DEAL::FE_DGP<1>(2) ok
+DEAL::FE_DGP<1>(2) ok
+DEAL::Checking DGP2 against DGP2 in 1d:
+DEAL::FE_DGP<1>(2) ok
+DEAL::FE_DGP<1>(2) ok
+DEAL::Checking DGP2 against DGP2 in 2d:
+DEAL::FE_DGP<2>(2) ok
+DEAL::FE_DGP<2>(2) ok
+DEAL::Checking DGP2 against DGP2 in 2d:
+DEAL::FE_DGP<2>(2) ok
+DEAL::FE_DGP<2>(2) ok
+DEAL::Checking DGP2 against DGP2 in 3d:
+DEAL::FE_DGP<3>(2) ok
+DEAL::FE_DGP<3>(2) ok
+DEAL::Checking DGP2 against DGP2 in 3d:
+DEAL::FE_DGP<3>(2) ok
+DEAL::FE_DGP<3>(2) ok
+DEAL::Checking DGP2 against DGP4 in 1d:
+DEAL::FE_DGP<1>(2) ok
+DEAL::FE_DGP<1>(4) ok
+DEAL::Checking DGP4 against DGP2 in 1d:
+DEAL::FE_DGP<1>(4) ok
+DEAL::FE_DGP<1>(2) ok
+DEAL::Checking DGP2 against DGP4 in 2d:
+DEAL::FE_DGP<2>(2) ok
+DEAL::FE_DGP<2>(4) ok
+DEAL::Checking DGP4 against DGP2 in 2d:
+DEAL::FE_DGP<2>(4) ok
+DEAL::FE_DGP<2>(2) ok
+DEAL::Checking DGP2 against DGP4 in 3d:
+DEAL::FE_DGP<3>(2) ok
+DEAL::FE_DGP<3>(4) ok
+DEAL::Checking DGP4 against DGP2 in 3d:
+DEAL::FE_DGP<3>(4) ok
+DEAL::FE_DGP<3>(2) ok
+DEAL::Checking DGP3 against DGP3 in 1d:
+DEAL::FE_DGP<1>(3) ok
+DEAL::FE_DGP<1>(3) ok
+DEAL::Checking DGP3 against DGP3 in 1d:
+DEAL::FE_DGP<1>(3) ok
+DEAL::FE_DGP<1>(3) ok
+DEAL::Checking DGP3 against DGP3 in 2d:
+DEAL::FE_DGP<2>(3) ok
+DEAL::FE_DGP<2>(3) ok
+DEAL::Checking DGP3 against DGP3 in 2d:
+DEAL::FE_DGP<2>(3) ok
+DEAL::FE_DGP<2>(3) ok
+DEAL::Checking DGP3 against DGP3 in 3d:
+DEAL::FE_DGP<3>(3) ok
+DEAL::FE_DGP<3>(3) ok
+DEAL::Checking DGP3 against DGP3 in 3d:
+DEAL::FE_DGP<3>(3) ok
+DEAL::FE_DGP<3>(3) ok
+DEAL::Checking DGP3 against DGP5 in 1d:
+DEAL::FE_DGP<1>(3) ok
+DEAL::FE_DGP<1>(5) ok
+DEAL::Checking DGP5 against DGP3 in 1d:
+DEAL::FE_DGP<1>(5) ok
+DEAL::FE_DGP<1>(3) ok
+DEAL::Checking DGP3 against DGP5 in 2d:
+DEAL::FE_DGP<2>(3) ok
+DEAL::FE_DGP<2>(5) ok
+DEAL::Checking DGP5 against DGP3 in 2d:
+DEAL::FE_DGP<2>(5) ok
+DEAL::FE_DGP<2>(3) ok
+DEAL::Checking DGP3 against DGP5 in 3d:
+DEAL::FE_DGP<3>(3) ok
+DEAL::FE_DGP<3>(5) ok
+DEAL::Checking DGP5 against DGP3 in 3d:
+DEAL::FE_DGP<3>(5) ok
+DEAL::FE_DGP<3>(3) ok
+DEAL::Checking DGP4 against DGP5 in 1d:
+DEAL::FE_DGP<1>(4) ok
+DEAL::FE_DGP<1>(5) ok
+DEAL::Checking DGP5 against DGP4 in 1d:
+DEAL::FE_DGP<1>(5) ok
+DEAL::FE_DGP<1>(4) ok
+DEAL::Checking DGP4 against DGP5 in 2d:
+DEAL::FE_DGP<2>(4) ok
+DEAL::FE_DGP<2>(5) ok
+DEAL::Checking DGP5 against DGP4 in 2d:
+DEAL::FE_DGP<2>(5) ok
+DEAL::FE_DGP<2>(4) ok
+DEAL::Checking DGP4 against DGP5 in 3d:
+DEAL::FE_DGP<3>(4) ok
+DEAL::FE_DGP<3>(5) ok
+DEAL::Checking DGP5 against DGP4 in 3d:
+DEAL::FE_DGP<3>(5) ok
+DEAL::FE_DGP<3>(4) ok
+DEAL::Checking Nedelec1 against Nedelec1 in 2d:
+DEAL::FE_Nedelec<2>(1) ok
+DEAL::FE_Nedelec<2>(1) ok
+DEAL::Checking Nedelec1 against Nedelec1 in 2d:
+DEAL::FE_Nedelec<2>(1) ok
+DEAL::FE_Nedelec<2>(1) ok
+DEAL::Checking Nedelec1 against Nedelec1 in 3d:
+DEAL::FE_Nedelec<3>(1) ok
+DEAL::FE_Nedelec<3>(1) ok
+DEAL::Checking Nedelec1 against Nedelec1 in 3d:
+DEAL::FE_Nedelec<3>(1) ok
+DEAL::FE_Nedelec<3>(1) ok
+DEAL::Checking FE_Q<1>(1)3 against FE_Q<1>(2)3 in 1d:
+DEAL::FESystem<1>[FE_Q<1>(1)^3] ok
+DEAL::FESystem<1>[FE_Q<1>(2)^3] ok
+DEAL::Checking FE_Q<1>(2)3 against FE_Q<1>(1)3 in 1d:
+DEAL::FESystem<1>[FE_Q<1>(2)^3] ok
+DEAL::FESystem<1>[FE_Q<1>(1)^3] ok
+DEAL::Checking FE_DGQ<1>(2)2 against FE_DGQ<1>(3)2 in 1d:
+DEAL::FESystem<1>[FE_DGQ<1>(2)^2] ok
+DEAL::FESystem<1>[FE_DGQ<1>(3)^2] ok
+DEAL::Checking FE_DGQ<1>(3)2 against FE_DGQ<1>(2)2 in 1d:
+DEAL::FESystem<1>[FE_DGQ<1>(3)^2] ok
+DEAL::FESystem<1>[FE_DGQ<1>(2)^2] ok
+DEAL::Checking FE_DGP<1>(3)1 against FE_DGP<1>(1)1 in 1d:
+DEAL::FESystem<1>[FE_DGP<1>(3)] ok
+DEAL::FESystem<1>[FE_DGP<1>(1)] ok
+DEAL::Checking FE_DGP<1>(1)1 against FE_DGP<1>(3)1 in 1d:
+DEAL::FESystem<1>[FE_DGP<1>(1)] ok
+DEAL::FESystem<1>[FE_DGP<1>(3)] ok
+DEAL::Checking FE_Q<2>(1)3 against FE_Q<2>(2)3 in 2d:
+DEAL::FESystem<2>[FE_Q<2>(1)^3] ok
+DEAL::FESystem<2>[FE_Q<2>(2)^3] ok
+DEAL::Checking FE_Q<2>(2)3 against FE_Q<2>(1)3 in 2d:
+DEAL::FESystem<2>[FE_Q<2>(2)^3] ok
+DEAL::FESystem<2>[FE_Q<2>(1)^3] ok
+DEAL::Checking FE_DGQ<2>(2)2 against FE_DGQ<2>(3)2 in 2d:
+DEAL::FESystem<2>[FE_DGQ<2>(2)^2] ok
+DEAL::FESystem<2>[FE_DGQ<2>(3)^2] ok
+DEAL::Checking FE_DGQ<2>(3)2 against FE_DGQ<2>(2)2 in 2d:
+DEAL::FESystem<2>[FE_DGQ<2>(3)^2] ok
+DEAL::FESystem<2>[FE_DGQ<2>(2)^2] ok
+DEAL::Checking FE_DGP<2>(3)1 against FE_DGP<2>(1)1 in 2d:
+DEAL::FESystem<2>[FE_DGP<2>(3)] ok
+DEAL::FESystem<2>[FE_DGP<2>(1)] ok
+DEAL::Checking FE_DGP<2>(1)1 against FE_DGP<2>(3)1 in 2d:
+DEAL::FESystem<2>[FE_DGP<2>(1)] ok
+DEAL::FESystem<2>[FE_DGP<2>(3)] ok
+DEAL::Checking FE_Q<3>(1)3 against FE_Q<3>(2)3 in 3d:
+DEAL::FESystem<3>[FE_Q<3>(1)^3] ok
+DEAL::FESystem<3>[FE_Q<3>(2)^3] ok
+DEAL::Checking FE_Q<3>(2)3 against FE_Q<3>(1)3 in 3d:
+DEAL::FESystem<3>[FE_Q<3>(2)^3] ok
+DEAL::FESystem<3>[FE_Q<3>(1)^3] ok
+DEAL::Checking FE_DGQ<3>(2)2 against FE_DGQ<3>(3)2 in 3d:
+DEAL::FESystem<3>[FE_DGQ<3>(2)^2] ok
+DEAL::FESystem<3>[FE_DGQ<3>(3)^2] ok
+DEAL::Checking FE_DGQ<3>(3)2 against FE_DGQ<3>(2)2 in 3d:
+DEAL::FESystem<3>[FE_DGQ<3>(3)^2] ok
+DEAL::FESystem<3>[FE_DGQ<3>(2)^2] ok
+DEAL::Checking FE_DGP<3>(3)1 against FE_DGP<3>(1)1 in 3d:
+DEAL::FESystem<3>[FE_DGP<3>(3)] ok
+DEAL::FESystem<3>[FE_DGP<3>(1)] ok
+DEAL::Checking FE_DGP<3>(1)1 against FE_DGP<3>(3)1 in 3d:
+DEAL::FESystem<3>[FE_DGP<3>(1)] ok
+DEAL::FESystem<3>[FE_DGP<3>(3)] ok
diff --git a/tests/results/sparc-sun-solaris2.7+gcc2.95/fe/fe_tools_09.output b/tests/results/sparc-sun-solaris2.7+gcc2.95/fe/fe_tools_09.output
new file mode 100644 (file)
index 0000000..807d770
--- /dev/null
@@ -0,0 +1,643 @@
+
+DEAL::Checking Q1 against Q1 in 1d:
+DEAL::FE_Q<1>(1) ok
+DEAL::FE_Q<1>(1) ok
+DEAL::Checking Q1 against Q1 in 1d:
+DEAL::FE_Q<1>(1) ok
+DEAL::FE_Q<1>(1) ok
+DEAL::Checking Q1 against Q1 in 2d:
+DEAL::FE_Q<2>(1) ok
+DEAL::FE_Q<2>(1) ok
+DEAL::Checking Q1 against Q1 in 2d:
+DEAL::FE_Q<2>(1) ok
+DEAL::FE_Q<2>(1) ok
+DEAL::Checking Q1 against Q1 in 3d:
+DEAL::FE_Q<3>(1) ok
+DEAL::FE_Q<3>(1) ok
+DEAL::Checking Q1 against Q1 in 3d:
+DEAL::FE_Q<3>(1) ok
+DEAL::FE_Q<3>(1) ok
+DEAL::Checking Q1 against Q2 in 1d:
+DEAL::FE_Q<1>(1) ok
+DEAL::FE_Q<1>(2) ok
+DEAL::Checking Q2 against Q1 in 1d:
+DEAL::FE_Q<1>(2) ok
+DEAL::FE_Q<1>(1) ok
+DEAL::Checking Q1 against Q2 in 2d:
+DEAL::FE_Q<2>(1) ok
+DEAL::FE_Q<2>(2) ok
+DEAL::Checking Q2 against Q1 in 2d:
+DEAL::FE_Q<2>(2) ok
+DEAL::FE_Q<2>(1) ok
+DEAL::Checking Q1 against Q2 in 3d:
+DEAL::FE_Q<3>(1) ok
+DEAL::FE_Q<3>(2) ok
+DEAL::Checking Q2 against Q1 in 3d:
+DEAL::FE_Q<3>(2) ok
+DEAL::FE_Q<3>(1) ok
+DEAL::Checking Q1 against Q3 in 1d:
+DEAL::FE_Q<1>(1) ok
+DEAL::FE_Q<1>(3) ok
+DEAL::Checking Q3 against Q1 in 1d:
+DEAL::FE_Q<1>(3) ok
+DEAL::FE_Q<1>(1) ok
+DEAL::Checking Q1 against Q3 in 2d:
+DEAL::FE_Q<2>(1) ok
+DEAL::FE_Q<2>(3) ok
+DEAL::Checking Q3 against Q1 in 2d:
+DEAL::FE_Q<2>(3) ok
+DEAL::FE_Q<2>(1) ok
+DEAL::Checking Q1 against Q3 in 3d:
+DEAL::FE_Q<3>(1) ok
+DEAL::FE_Q<3>(3) ok
+DEAL::Checking Q3 against Q1 in 3d:
+DEAL::FE_Q<3>(3) ok
+DEAL::FE_Q<3>(1) ok
+DEAL::Checking Q2 against Q2 in 1d:
+DEAL::FE_Q<1>(2) ok
+DEAL::FE_Q<1>(2) ok
+DEAL::Checking Q2 against Q2 in 1d:
+DEAL::FE_Q<1>(2) ok
+DEAL::FE_Q<1>(2) ok
+DEAL::Checking Q2 against Q2 in 2d:
+DEAL::FE_Q<2>(2) ok
+DEAL::FE_Q<2>(2) ok
+DEAL::Checking Q2 against Q2 in 2d:
+DEAL::FE_Q<2>(2) ok
+DEAL::FE_Q<2>(2) ok
+DEAL::Checking Q2 against Q2 in 3d:
+DEAL::FE_Q<3>(2) ok
+DEAL::FE_Q<3>(2) ok
+DEAL::Checking Q2 against Q2 in 3d:
+DEAL::FE_Q<3>(2) ok
+DEAL::FE_Q<3>(2) ok
+DEAL::Checking Q2 against Q3 in 1d:
+DEAL::FE_Q<1>(2) ok
+DEAL::FE_Q<1>(3) ok
+DEAL::Checking Q3 against Q2 in 1d:
+DEAL::FE_Q<1>(3) ok
+DEAL::FE_Q<1>(2) ok
+DEAL::Checking Q2 against Q3 in 2d:
+DEAL::FE_Q<2>(2) ok
+DEAL::FE_Q<2>(3) ok
+DEAL::Checking Q3 against Q2 in 2d:
+DEAL::FE_Q<2>(3) ok
+DEAL::FE_Q<2>(2) ok
+DEAL::Checking Q2 against Q3 in 3d:
+DEAL::FE_Q<3>(2) ok
+DEAL::FE_Q<3>(3) ok
+DEAL::Checking Q3 against Q2 in 3d:
+DEAL::FE_Q<3>(3) ok
+DEAL::FE_Q<3>(2) ok
+DEAL::Checking Q3 against Q3 in 1d:
+DEAL::FE_Q<1>(3) ok
+DEAL::FE_Q<1>(3) ok
+DEAL::Checking Q3 against Q3 in 1d:
+DEAL::FE_Q<1>(3) ok
+DEAL::FE_Q<1>(3) ok
+DEAL::Checking Q3 against Q3 in 2d:
+DEAL::FE_Q<2>(3) ok
+DEAL::FE_Q<2>(3) ok
+DEAL::Checking Q3 against Q3 in 2d:
+DEAL::FE_Q<2>(3) ok
+DEAL::FE_Q<2>(3) ok
+DEAL::Checking Q3 against Q3 in 3d:
+DEAL::FE_Q<3>(3) ok
+DEAL::FE_Q<3>(3) ok
+DEAL::Checking Q3 against Q3 in 3d:
+DEAL::FE_Q<3>(3) ok
+DEAL::FE_Q<3>(3) ok
+DEAL::Checking DGQ0 against DGQ0 in 1d:
+DEAL::FE_DGQ<1>(0) ok
+DEAL::FE_DGQ<1>(0) ok
+DEAL::Checking DGQ0 against DGQ0 in 1d:
+DEAL::FE_DGQ<1>(0) ok
+DEAL::FE_DGQ<1>(0) ok
+DEAL::Checking DGQ0 against DGQ0 in 2d:
+DEAL::FE_DGQ<2>(0) ok
+DEAL::FE_DGQ<2>(0) ok
+DEAL::Checking DGQ0 against DGQ0 in 2d:
+DEAL::FE_DGQ<2>(0) ok
+DEAL::FE_DGQ<2>(0) ok
+DEAL::Checking DGQ0 against DGQ0 in 3d:
+DEAL::FE_DGQ<3>(0) ok
+DEAL::FE_DGQ<3>(0) ok
+DEAL::Checking DGQ0 against DGQ0 in 3d:
+DEAL::FE_DGQ<3>(0) ok
+DEAL::FE_DGQ<3>(0) ok
+DEAL::Checking DGQ0 against DGQ1 in 1d:
+DEAL::FE_DGQ<1>(0) ok
+DEAL::FE_DGQ<1>(1) ok
+DEAL::Checking DGQ1 against DGQ0 in 1d:
+DEAL::FE_DGQ<1>(1) ok
+DEAL::FE_DGQ<1>(0) ok
+DEAL::Checking DGQ0 against DGQ1 in 2d:
+DEAL::FE_DGQ<2>(0) ok
+DEAL::FE_DGQ<2>(1) ok
+DEAL::Checking DGQ1 against DGQ0 in 2d:
+DEAL::FE_DGQ<2>(1) ok
+DEAL::FE_DGQ<2>(0) ok
+DEAL::Checking DGQ0 against DGQ1 in 3d:
+DEAL::FE_DGQ<3>(0) ok
+DEAL::FE_DGQ<3>(1) ok
+DEAL::Checking DGQ1 against DGQ0 in 3d:
+DEAL::FE_DGQ<3>(1) ok
+DEAL::FE_DGQ<3>(0) ok
+DEAL::Checking DGQ0 against DGQ2 in 1d:
+DEAL::FE_DGQ<1>(0) ok
+DEAL::FE_DGQ<1>(2) ok
+DEAL::Checking DGQ2 against DGQ0 in 1d:
+DEAL::FE_DGQ<1>(2) ok
+DEAL::FE_DGQ<1>(0) ok
+DEAL::Checking DGQ0 against DGQ2 in 2d:
+DEAL::FE_DGQ<2>(0) ok
+DEAL::FE_DGQ<2>(2) ok
+DEAL::Checking DGQ2 against DGQ0 in 2d:
+DEAL::FE_DGQ<2>(2) ok
+DEAL::FE_DGQ<2>(0) ok
+DEAL::Checking DGQ0 against DGQ2 in 3d:
+DEAL::FE_DGQ<3>(0) ok
+DEAL::FE_DGQ<3>(2) ok
+DEAL::Checking DGQ2 against DGQ0 in 3d:
+DEAL::FE_DGQ<3>(2) ok
+DEAL::FE_DGQ<3>(0) ok
+DEAL::Checking DGQ0 against DGQ4 in 1d:
+DEAL::FE_DGQ<1>(0) ok
+DEAL::FE_DGQ<1>(4) ok
+DEAL::Checking DGQ4 against DGQ0 in 1d:
+DEAL::FE_DGQ<1>(4) ok
+DEAL::FE_DGQ<1>(0) ok
+DEAL::Checking DGQ0 against DGQ4 in 2d:
+DEAL::FE_DGQ<2>(0) ok
+DEAL::FE_DGQ<2>(4) ok
+DEAL::Checking DGQ4 against DGQ0 in 2d:
+DEAL::FE_DGQ<2>(4) ok
+DEAL::FE_DGQ<2>(0) ok
+DEAL::Checking DGQ0 against DGQ4 in 3d:
+DEAL::FE_DGQ<3>(0) ok
+DEAL::FE_DGQ<3>(4) ok
+DEAL::Checking DGQ4 against DGQ0 in 3d:
+DEAL::FE_DGQ<3>(4) ok
+DEAL::FE_DGQ<3>(0) ok
+DEAL::Checking DGQ1 against DGQ1 in 1d:
+DEAL::FE_DGQ<1>(1) ok
+DEAL::FE_DGQ<1>(1) ok
+DEAL::Checking DGQ1 against DGQ1 in 1d:
+DEAL::FE_DGQ<1>(1) ok
+DEAL::FE_DGQ<1>(1) ok
+DEAL::Checking DGQ1 against DGQ1 in 2d:
+DEAL::FE_DGQ<2>(1) ok
+DEAL::FE_DGQ<2>(1) ok
+DEAL::Checking DGQ1 against DGQ1 in 2d:
+DEAL::FE_DGQ<2>(1) ok
+DEAL::FE_DGQ<2>(1) ok
+DEAL::Checking DGQ1 against DGQ1 in 3d:
+DEAL::FE_DGQ<3>(1) ok
+DEAL::FE_DGQ<3>(1) ok
+DEAL::Checking DGQ1 against DGQ1 in 3d:
+DEAL::FE_DGQ<3>(1) ok
+DEAL::FE_DGQ<3>(1) ok
+DEAL::Checking DGQ1 against DGQ3 in 1d:
+DEAL::FE_DGQ<1>(1) ok
+DEAL::FE_DGQ<1>(3) ok
+DEAL::Checking DGQ3 against DGQ1 in 1d:
+DEAL::FE_DGQ<1>(3) ok
+DEAL::FE_DGQ<1>(1) ok
+DEAL::Checking DGQ1 against DGQ3 in 2d:
+DEAL::FE_DGQ<2>(1) ok
+DEAL::FE_DGQ<2>(3) ok
+DEAL::Checking DGQ3 against DGQ1 in 2d:
+DEAL::FE_DGQ<2>(3) ok
+DEAL::FE_DGQ<2>(1) ok
+DEAL::Checking DGQ1 against DGQ3 in 3d:
+DEAL::FE_DGQ<3>(1) ok
+DEAL::FE_DGQ<3>(3) ok
+DEAL::Checking DGQ3 against DGQ1 in 3d:
+DEAL::FE_DGQ<3>(3) ok
+DEAL::FE_DGQ<3>(1) ok
+DEAL::Checking DGQ1 against DGQ5 in 1d:
+DEAL::FE_DGQ<1>(1) ok
+DEAL::FE_DGQ<1>(5) ok
+DEAL::Checking DGQ5 against DGQ1 in 1d:
+DEAL::FE_DGQ<1>(5) ok
+DEAL::FE_DGQ<1>(1) ok
+DEAL::Checking DGQ1 against DGQ5 in 2d:
+DEAL::FE_DGQ<2>(1) ok
+DEAL::FE_DGQ<2>(5) ok
+DEAL::Checking DGQ5 against DGQ1 in 2d:
+DEAL::FE_DGQ<2>(5) ok
+DEAL::FE_DGQ<2>(1) ok
+DEAL::Checking DGQ1 against DGQ5 in 3d:
+DEAL::FE_DGQ<3>(1) ok
+DEAL::FE_DGQ<3>(5) ok
+DEAL::Checking DGQ5 against DGQ1 in 3d:
+DEAL::FE_DGQ<3>(5) ok
+DEAL::FE_DGQ<3>(1) ok
+DEAL::Checking DGQ2 against DGQ2 in 1d:
+DEAL::FE_DGQ<1>(2) ok
+DEAL::FE_DGQ<1>(2) ok
+DEAL::Checking DGQ2 against DGQ2 in 1d:
+DEAL::FE_DGQ<1>(2) ok
+DEAL::FE_DGQ<1>(2) ok
+DEAL::Checking DGQ2 against DGQ2 in 2d:
+DEAL::FE_DGQ<2>(2) ok
+DEAL::FE_DGQ<2>(2) ok
+DEAL::Checking DGQ2 against DGQ2 in 2d:
+DEAL::FE_DGQ<2>(2) ok
+DEAL::FE_DGQ<2>(2) ok
+DEAL::Checking DGQ2 against DGQ2 in 3d:
+DEAL::FE_DGQ<3>(2) ok
+DEAL::FE_DGQ<3>(2) ok
+DEAL::Checking DGQ2 against DGQ2 in 3d:
+DEAL::FE_DGQ<3>(2) ok
+DEAL::FE_DGQ<3>(2) ok
+DEAL::Checking DGQ2 against DGQ2 in 1d:
+DEAL::FE_DGQ<1>(2) ok
+DEAL::FE_DGQ<1>(2) ok
+DEAL::Checking DGQ2 against DGQ2 in 1d:
+DEAL::FE_DGQ<1>(2) ok
+DEAL::FE_DGQ<1>(2) ok
+DEAL::Checking DGQ2 against DGQ2 in 2d:
+DEAL::FE_DGQ<2>(2) ok
+DEAL::FE_DGQ<2>(2) ok
+DEAL::Checking DGQ2 against DGQ2 in 2d:
+DEAL::FE_DGQ<2>(2) ok
+DEAL::FE_DGQ<2>(2) ok
+DEAL::Checking DGQ2 against DGQ2 in 3d:
+DEAL::FE_DGQ<3>(2) ok
+DEAL::FE_DGQ<3>(2) ok
+DEAL::Checking DGQ2 against DGQ2 in 3d:
+DEAL::FE_DGQ<3>(2) ok
+DEAL::FE_DGQ<3>(2) ok
+DEAL::Checking DGQ2 against DGQ4 in 1d:
+DEAL::FE_DGQ<1>(2) ok
+DEAL::FE_DGQ<1>(4) ok
+DEAL::Checking DGQ4 against DGQ2 in 1d:
+DEAL::FE_DGQ<1>(4) ok
+DEAL::FE_DGQ<1>(2) ok
+DEAL::Checking DGQ2 against DGQ4 in 2d:
+DEAL::FE_DGQ<2>(2) ok
+DEAL::FE_DGQ<2>(4) ok
+DEAL::Checking DGQ4 against DGQ2 in 2d:
+DEAL::FE_DGQ<2>(4) ok
+DEAL::FE_DGQ<2>(2) ok
+DEAL::Checking DGQ2 against DGQ4 in 3d:
+DEAL::FE_DGQ<3>(2) ok
+DEAL::FE_DGQ<3>(4) ok
+DEAL::Checking DGQ4 against DGQ2 in 3d:
+DEAL::FE_DGQ<3>(4) ok
+DEAL::FE_DGQ<3>(2) ok
+DEAL::Checking DGQ3 against DGQ3 in 1d:
+DEAL::FE_DGQ<1>(3) ok
+DEAL::FE_DGQ<1>(3) ok
+DEAL::Checking DGQ3 against DGQ3 in 1d:
+DEAL::FE_DGQ<1>(3) ok
+DEAL::FE_DGQ<1>(3) ok
+DEAL::Checking DGQ3 against DGQ3 in 2d:
+DEAL::FE_DGQ<2>(3) ok
+DEAL::FE_DGQ<2>(3) ok
+DEAL::Checking DGQ3 against DGQ3 in 2d:
+DEAL::FE_DGQ<2>(3) ok
+DEAL::FE_DGQ<2>(3) ok
+DEAL::Checking DGQ3 against DGQ3 in 3d:
+DEAL::FE_DGQ<3>(3) ok
+DEAL::FE_DGQ<3>(3) ok
+DEAL::Checking DGQ3 against DGQ3 in 3d:
+DEAL::FE_DGQ<3>(3) ok
+DEAL::FE_DGQ<3>(3) ok
+DEAL::Checking DGQ3 against DGQ5 in 1d:
+DEAL::FE_DGQ<1>(3) ok
+DEAL::FE_DGQ<1>(5) ok
+DEAL::Checking DGQ5 against DGQ3 in 1d:
+DEAL::FE_DGQ<1>(5) ok
+DEAL::FE_DGQ<1>(3) ok
+DEAL::Checking DGQ3 against DGQ5 in 2d:
+DEAL::FE_DGQ<2>(3) ok
+DEAL::FE_DGQ<2>(5) ok
+DEAL::Checking DGQ5 against DGQ3 in 2d:
+DEAL::FE_DGQ<2>(5) ok
+DEAL::FE_DGQ<2>(3) ok
+DEAL::Checking DGQ3 against DGQ5 in 3d:
+DEAL::FE_DGQ<3>(3) ok
+DEAL::FE_DGQ<3>(5) ok
+DEAL::Checking DGQ5 against DGQ3 in 3d:
+DEAL::FE_DGQ<3>(5) ok
+DEAL::FE_DGQ<3>(3) ok
+DEAL::Checking DGQ4 against DGQ5 in 1d:
+DEAL::FE_DGQ<1>(4) ok
+DEAL::FE_DGQ<1>(5) ok
+DEAL::Checking DGQ5 against DGQ4 in 1d:
+DEAL::FE_DGQ<1>(5) ok
+DEAL::FE_DGQ<1>(4) ok
+DEAL::Checking DGQ4 against DGQ5 in 2d:
+DEAL::FE_DGQ<2>(4) ok
+DEAL::FE_DGQ<2>(5) ok
+DEAL::Checking DGQ5 against DGQ4 in 2d:
+DEAL::FE_DGQ<2>(5) ok
+DEAL::FE_DGQ<2>(4) ok
+DEAL::Checking DGQ4 against DGQ5 in 3d:
+DEAL::FE_DGQ<3>(4) ok
+DEAL::FE_DGQ<3>(5) ok
+DEAL::Checking DGQ5 against DGQ4 in 3d:
+DEAL::FE_DGQ<3>(5) ok
+DEAL::FE_DGQ<3>(4) ok
+DEAL::Checking DGP0 against DGP0 in 1d:
+DEAL::FE_DGP<1>(0) ok
+DEAL::FE_DGP<1>(0) ok
+DEAL::Checking DGP0 against DGP0 in 1d:
+DEAL::FE_DGP<1>(0) ok
+DEAL::FE_DGP<1>(0) ok
+DEAL::Checking DGP0 against DGP0 in 2d:
+DEAL::FE_DGP<2>(0) ok
+DEAL::FE_DGP<2>(0) ok
+DEAL::Checking DGP0 against DGP0 in 2d:
+DEAL::FE_DGP<2>(0) ok
+DEAL::FE_DGP<2>(0) ok
+DEAL::Checking DGP0 against DGP0 in 3d:
+DEAL::FE_DGP<3>(0) ok
+DEAL::FE_DGP<3>(0) ok
+DEAL::Checking DGP0 against DGP0 in 3d:
+DEAL::FE_DGP<3>(0) ok
+DEAL::FE_DGP<3>(0) ok
+DEAL::Checking DGP0 against DGP1 in 1d:
+DEAL::FE_DGP<1>(0) ok
+DEAL::FE_DGP<1>(1) ok
+DEAL::Checking DGP1 against DGP0 in 1d:
+DEAL::FE_DGP<1>(1) ok
+DEAL::FE_DGP<1>(0) ok
+DEAL::Checking DGP0 against DGP1 in 2d:
+DEAL::FE_DGP<2>(0) ok
+DEAL::FE_DGP<2>(1) ok
+DEAL::Checking DGP1 against DGP0 in 2d:
+DEAL::FE_DGP<2>(1) ok
+DEAL::FE_DGP<2>(0) ok
+DEAL::Checking DGP0 against DGP1 in 3d:
+DEAL::FE_DGP<3>(0) ok
+DEAL::FE_DGP<3>(1) ok
+DEAL::Checking DGP1 against DGP0 in 3d:
+DEAL::FE_DGP<3>(1) ok
+DEAL::FE_DGP<3>(0) ok
+DEAL::Checking DGP0 against DGP2 in 1d:
+DEAL::FE_DGP<1>(0) ok
+DEAL::FE_DGP<1>(2) ok
+DEAL::Checking DGP2 against DGP0 in 1d:
+DEAL::FE_DGP<1>(2) ok
+DEAL::FE_DGP<1>(0) ok
+DEAL::Checking DGP0 against DGP2 in 2d:
+DEAL::FE_DGP<2>(0) ok
+DEAL::FE_DGP<2>(2) ok
+DEAL::Checking DGP2 against DGP0 in 2d:
+DEAL::FE_DGP<2>(2) ok
+DEAL::FE_DGP<2>(0) ok
+DEAL::Checking DGP0 against DGP2 in 3d:
+DEAL::FE_DGP<3>(0) ok
+DEAL::FE_DGP<3>(2) ok
+DEAL::Checking DGP2 against DGP0 in 3d:
+DEAL::FE_DGP<3>(2) ok
+DEAL::FE_DGP<3>(0) ok
+DEAL::Checking DGP0 against DGP4 in 1d:
+DEAL::FE_DGP<1>(0) ok
+DEAL::FE_DGP<1>(4) ok
+DEAL::Checking DGP4 against DGP0 in 1d:
+DEAL::FE_DGP<1>(4) ok
+DEAL::FE_DGP<1>(0) ok
+DEAL::Checking DGP0 against DGP4 in 2d:
+DEAL::FE_DGP<2>(0) ok
+DEAL::FE_DGP<2>(4) ok
+DEAL::Checking DGP4 against DGP0 in 2d:
+DEAL::FE_DGP<2>(4) ok
+DEAL::FE_DGP<2>(0) ok
+DEAL::Checking DGP0 against DGP4 in 3d:
+DEAL::FE_DGP<3>(0) ok
+DEAL::FE_DGP<3>(4) ok
+DEAL::Checking DGP4 against DGP0 in 3d:
+DEAL::FE_DGP<3>(4) ok
+DEAL::FE_DGP<3>(0) ok
+DEAL::Checking DGP1 against DGP1 in 1d:
+DEAL::FE_DGP<1>(1) ok
+DEAL::FE_DGP<1>(1) ok
+DEAL::Checking DGP1 against DGP1 in 1d:
+DEAL::FE_DGP<1>(1) ok
+DEAL::FE_DGP<1>(1) ok
+DEAL::Checking DGP1 against DGP1 in 2d:
+DEAL::FE_DGP<2>(1) ok
+DEAL::FE_DGP<2>(1) ok
+DEAL::Checking DGP1 against DGP1 in 2d:
+DEAL::FE_DGP<2>(1) ok
+DEAL::FE_DGP<2>(1) ok
+DEAL::Checking DGP1 against DGP1 in 3d:
+DEAL::FE_DGP<3>(1) ok
+DEAL::FE_DGP<3>(1) ok
+DEAL::Checking DGP1 against DGP1 in 3d:
+DEAL::FE_DGP<3>(1) ok
+DEAL::FE_DGP<3>(1) ok
+DEAL::Checking DGP1 against DGP3 in 1d:
+DEAL::FE_DGP<1>(1) ok
+DEAL::FE_DGP<1>(3) ok
+DEAL::Checking DGP3 against DGP1 in 1d:
+DEAL::FE_DGP<1>(3) ok
+DEAL::FE_DGP<1>(1) ok
+DEAL::Checking DGP1 against DGP3 in 2d:
+DEAL::FE_DGP<2>(1) ok
+DEAL::FE_DGP<2>(3) ok
+DEAL::Checking DGP3 against DGP1 in 2d:
+DEAL::FE_DGP<2>(3) ok
+DEAL::FE_DGP<2>(1) ok
+DEAL::Checking DGP1 against DGP3 in 3d:
+DEAL::FE_DGP<3>(1) ok
+DEAL::FE_DGP<3>(3) ok
+DEAL::Checking DGP3 against DGP1 in 3d:
+DEAL::FE_DGP<3>(3) ok
+DEAL::FE_DGP<3>(1) ok
+DEAL::Checking DGP1 against DGP5 in 1d:
+DEAL::FE_DGP<1>(1) ok
+DEAL::FE_DGP<1>(5) ok
+DEAL::Checking DGP5 against DGP1 in 1d:
+DEAL::FE_DGP<1>(5) ok
+DEAL::FE_DGP<1>(1) ok
+DEAL::Checking DGP1 against DGP5 in 2d:
+DEAL::FE_DGP<2>(1) ok
+DEAL::FE_DGP<2>(5) ok
+DEAL::Checking DGP5 against DGP1 in 2d:
+DEAL::FE_DGP<2>(5) ok
+DEAL::FE_DGP<2>(1) ok
+DEAL::Checking DGP1 against DGP5 in 3d:
+DEAL::FE_DGP<3>(1) ok
+DEAL::FE_DGP<3>(5) ok
+DEAL::Checking DGP5 against DGP1 in 3d:
+DEAL::FE_DGP<3>(5) ok
+DEAL::FE_DGP<3>(1) ok
+DEAL::Checking DGP2 against DGP2 in 1d:
+DEAL::FE_DGP<1>(2) ok
+DEAL::FE_DGP<1>(2) ok
+DEAL::Checking DGP2 against DGP2 in 1d:
+DEAL::FE_DGP<1>(2) ok
+DEAL::FE_DGP<1>(2) ok
+DEAL::Checking DGP2 against DGP2 in 2d:
+DEAL::FE_DGP<2>(2) ok
+DEAL::FE_DGP<2>(2) ok
+DEAL::Checking DGP2 against DGP2 in 2d:
+DEAL::FE_DGP<2>(2) ok
+DEAL::FE_DGP<2>(2) ok
+DEAL::Checking DGP2 against DGP2 in 3d:
+DEAL::FE_DGP<3>(2) ok
+DEAL::FE_DGP<3>(2) ok
+DEAL::Checking DGP2 against DGP2 in 3d:
+DEAL::FE_DGP<3>(2) ok
+DEAL::FE_DGP<3>(2) ok
+DEAL::Checking DGP2 against DGP2 in 1d:
+DEAL::FE_DGP<1>(2) ok
+DEAL::FE_DGP<1>(2) ok
+DEAL::Checking DGP2 against DGP2 in 1d:
+DEAL::FE_DGP<1>(2) ok
+DEAL::FE_DGP<1>(2) ok
+DEAL::Checking DGP2 against DGP2 in 2d:
+DEAL::FE_DGP<2>(2) ok
+DEAL::FE_DGP<2>(2) ok
+DEAL::Checking DGP2 against DGP2 in 2d:
+DEAL::FE_DGP<2>(2) ok
+DEAL::FE_DGP<2>(2) ok
+DEAL::Checking DGP2 against DGP2 in 3d:
+DEAL::FE_DGP<3>(2) ok
+DEAL::FE_DGP<3>(2) ok
+DEAL::Checking DGP2 against DGP2 in 3d:
+DEAL::FE_DGP<3>(2) ok
+DEAL::FE_DGP<3>(2) ok
+DEAL::Checking DGP2 against DGP4 in 1d:
+DEAL::FE_DGP<1>(2) ok
+DEAL::FE_DGP<1>(4) ok
+DEAL::Checking DGP4 against DGP2 in 1d:
+DEAL::FE_DGP<1>(4) ok
+DEAL::FE_DGP<1>(2) ok
+DEAL::Checking DGP2 against DGP4 in 2d:
+DEAL::FE_DGP<2>(2) ok
+DEAL::FE_DGP<2>(4) ok
+DEAL::Checking DGP4 against DGP2 in 2d:
+DEAL::FE_DGP<2>(4) ok
+DEAL::FE_DGP<2>(2) ok
+DEAL::Checking DGP2 against DGP4 in 3d:
+DEAL::FE_DGP<3>(2) ok
+DEAL::FE_DGP<3>(4) ok
+DEAL::Checking DGP4 against DGP2 in 3d:
+DEAL::FE_DGP<3>(4) ok
+DEAL::FE_DGP<3>(2) ok
+DEAL::Checking DGP3 against DGP3 in 1d:
+DEAL::FE_DGP<1>(3) ok
+DEAL::FE_DGP<1>(3) ok
+DEAL::Checking DGP3 against DGP3 in 1d:
+DEAL::FE_DGP<1>(3) ok
+DEAL::FE_DGP<1>(3) ok
+DEAL::Checking DGP3 against DGP3 in 2d:
+DEAL::FE_DGP<2>(3) ok
+DEAL::FE_DGP<2>(3) ok
+DEAL::Checking DGP3 against DGP3 in 2d:
+DEAL::FE_DGP<2>(3) ok
+DEAL::FE_DGP<2>(3) ok
+DEAL::Checking DGP3 against DGP3 in 3d:
+DEAL::FE_DGP<3>(3) ok
+DEAL::FE_DGP<3>(3) ok
+DEAL::Checking DGP3 against DGP3 in 3d:
+DEAL::FE_DGP<3>(3) ok
+DEAL::FE_DGP<3>(3) ok
+DEAL::Checking DGP3 against DGP5 in 1d:
+DEAL::FE_DGP<1>(3) ok
+DEAL::FE_DGP<1>(5) ok
+DEAL::Checking DGP5 against DGP3 in 1d:
+DEAL::FE_DGP<1>(5) ok
+DEAL::FE_DGP<1>(3) ok
+DEAL::Checking DGP3 against DGP5 in 2d:
+DEAL::FE_DGP<2>(3) ok
+DEAL::FE_DGP<2>(5) ok
+DEAL::Checking DGP5 against DGP3 in 2d:
+DEAL::FE_DGP<2>(5) ok
+DEAL::FE_DGP<2>(3) ok
+DEAL::Checking DGP3 against DGP5 in 3d:
+DEAL::FE_DGP<3>(3) ok
+DEAL::FE_DGP<3>(5) ok
+DEAL::Checking DGP5 against DGP3 in 3d:
+DEAL::FE_DGP<3>(5) ok
+DEAL::FE_DGP<3>(3) ok
+DEAL::Checking DGP4 against DGP5 in 1d:
+DEAL::FE_DGP<1>(4) ok
+DEAL::FE_DGP<1>(5) ok
+DEAL::Checking DGP5 against DGP4 in 1d:
+DEAL::FE_DGP<1>(5) ok
+DEAL::FE_DGP<1>(4) ok
+DEAL::Checking DGP4 against DGP5 in 2d:
+DEAL::FE_DGP<2>(4) ok
+DEAL::FE_DGP<2>(5) ok
+DEAL::Checking DGP5 against DGP4 in 2d:
+DEAL::FE_DGP<2>(5) ok
+DEAL::FE_DGP<2>(4) ok
+DEAL::Checking DGP4 against DGP5 in 3d:
+DEAL::FE_DGP<3>(4) ok
+DEAL::FE_DGP<3>(5) ok
+DEAL::Checking DGP5 against DGP4 in 3d:
+DEAL::FE_DGP<3>(5) ok
+DEAL::FE_DGP<3>(4) ok
+DEAL::Checking Nedelec1 against Nedelec1 in 2d:
+DEAL::FE_Nedelec<2>(1) ok
+DEAL::FE_Nedelec<2>(1) ok
+DEAL::Checking Nedelec1 against Nedelec1 in 2d:
+DEAL::FE_Nedelec<2>(1) ok
+DEAL::FE_Nedelec<2>(1) ok
+DEAL::Checking Nedelec1 against Nedelec1 in 3d:
+DEAL::FE_Nedelec<3>(1) ok
+DEAL::FE_Nedelec<3>(1) ok
+DEAL::Checking Nedelec1 against Nedelec1 in 3d:
+DEAL::FE_Nedelec<3>(1) ok
+DEAL::FE_Nedelec<3>(1) ok
+DEAL::Checking FE_Q<1>(1)3 against FE_Q<1>(2)3 in 1d:
+DEAL::FESystem<1>[FE_Q<1>(1)^3] ok
+DEAL::FESystem<1>[FE_Q<1>(2)^3] ok
+DEAL::Checking FE_Q<1>(2)3 against FE_Q<1>(1)3 in 1d:
+DEAL::FESystem<1>[FE_Q<1>(2)^3] ok
+DEAL::FESystem<1>[FE_Q<1>(1)^3] ok
+DEAL::Checking FE_DGQ<1>(2)2 against FE_DGQ<1>(3)2 in 1d:
+DEAL::FESystem<1>[FE_DGQ<1>(2)^2] ok
+DEAL::FESystem<1>[FE_DGQ<1>(3)^2] ok
+DEAL::Checking FE_DGQ<1>(3)2 against FE_DGQ<1>(2)2 in 1d:
+DEAL::FESystem<1>[FE_DGQ<1>(3)^2] ok
+DEAL::FESystem<1>[FE_DGQ<1>(2)^2] ok
+DEAL::Checking FE_DGP<1>(3)1 against FE_DGP<1>(1)1 in 1d:
+DEAL::FESystem<1>[FE_DGP<1>(3)] ok
+DEAL::FESystem<1>[FE_DGP<1>(1)] ok
+DEAL::Checking FE_DGP<1>(1)1 against FE_DGP<1>(3)1 in 1d:
+DEAL::FESystem<1>[FE_DGP<1>(1)] ok
+DEAL::FESystem<1>[FE_DGP<1>(3)] ok
+DEAL::Checking FE_Q<2>(1)3 against FE_Q<2>(2)3 in 2d:
+DEAL::FESystem<2>[FE_Q<2>(1)^3] ok
+DEAL::FESystem<2>[FE_Q<2>(2)^3] ok
+DEAL::Checking FE_Q<2>(2)3 against FE_Q<2>(1)3 in 2d:
+DEAL::FESystem<2>[FE_Q<2>(2)^3] ok
+DEAL::FESystem<2>[FE_Q<2>(1)^3] ok
+DEAL::Checking FE_DGQ<2>(2)2 against FE_DGQ<2>(3)2 in 2d:
+DEAL::FESystem<2>[FE_DGQ<2>(2)^2] ok
+DEAL::FESystem<2>[FE_DGQ<2>(3)^2] ok
+DEAL::Checking FE_DGQ<2>(3)2 against FE_DGQ<2>(2)2 in 2d:
+DEAL::FESystem<2>[FE_DGQ<2>(3)^2] ok
+DEAL::FESystem<2>[FE_DGQ<2>(2)^2] ok
+DEAL::Checking FE_DGP<2>(3)1 against FE_DGP<2>(1)1 in 2d:
+DEAL::FESystem<2>[FE_DGP<2>(3)] ok
+DEAL::FESystem<2>[FE_DGP<2>(1)] ok
+DEAL::Checking FE_DGP<2>(1)1 against FE_DGP<2>(3)1 in 2d:
+DEAL::FESystem<2>[FE_DGP<2>(1)] ok
+DEAL::FESystem<2>[FE_DGP<2>(3)] ok
+DEAL::Checking FE_Q<3>(1)3 against FE_Q<3>(2)3 in 3d:
+DEAL::FESystem<3>[FE_Q<3>(1)^3] ok
+DEAL::FESystem<3>[FE_Q<3>(2)^3] ok
+DEAL::Checking FE_Q<3>(2)3 against FE_Q<3>(1)3 in 3d:
+DEAL::FESystem<3>[FE_Q<3>(2)^3] ok
+DEAL::FESystem<3>[FE_Q<3>(1)^3] ok
+DEAL::Checking FE_DGQ<3>(2)2 against FE_DGQ<3>(3)2 in 3d:
+DEAL::FESystem<3>[FE_DGQ<3>(2)^2] ok
+DEAL::FESystem<3>[FE_DGQ<3>(3)^2] ok
+DEAL::Checking FE_DGQ<3>(3)2 against FE_DGQ<3>(2)2 in 3d:
+DEAL::FESystem<3>[FE_DGQ<3>(3)^2] ok
+DEAL::FESystem<3>[FE_DGQ<3>(2)^2] ok
+DEAL::Checking FE_DGP<3>(3)1 against FE_DGP<3>(1)1 in 3d:
+DEAL::FESystem<3>[FE_DGP<3>(3)] ok
+DEAL::FESystem<3>[FE_DGP<3>(1)] ok
+DEAL::Checking FE_DGP<3>(1)1 against FE_DGP<3>(3)1 in 3d:
+DEAL::FESystem<3>[FE_DGP<3>(1)] ok
+DEAL::FESystem<3>[FE_DGP<3>(3)] ok

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.