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
*/
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);
};
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
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
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
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
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
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
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
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
#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
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));
+ }
}
+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 -------------------------------*/
(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 ---------------------------*/
<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
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)
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 \
--- /dev/null
+//---------------------------- 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;
+}
+
--- /dev/null
+
+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
--- /dev/null
+
+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
--- /dev/null
+
+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