]> https://gitweb.dealii.org/ - dealii-svn.git/commitdiff
Implement face and subface interpolation matrices for the FESystem element
authorbangerth <bangerth@0785d39b-7218-0410-832d-ea1e28bc413d>
Fri, 11 Aug 2006 15:14:28 +0000 (15:14 +0000)
committerbangerth <bangerth@0785d39b-7218-0410-832d-ea1e28bc413d>
Fri, 11 Aug 2006 15:14:28 +0000 (15:14 +0000)
git-svn-id: https://svn.dealii.org/trunk@13665 0785d39b-7218-0410-832d-ea1e28bc413d

deal.II/deal.II/include/fe/fe_system.h
deal.II/deal.II/source/fe/fe_system.cc
tests/bits/face_interpolation/cmp/generic
tests/bits/subface_interpolation/cmp/generic

index f09bd41d9fc8906cbbb470ed23bad787072d914e..7a6636a8fd37e0431a49c36766de640f477b6191 100644 (file)
@@ -409,6 +409,60 @@ class FESystem : public FiniteElement<dim>
                                       */
     virtual bool hp_constraints_are_implemented () const;
     
+                                    /**
+                                     * Return the matrix
+                                     * interpolating from a face of
+                                     * of one element to the face of
+                                     * the neighboring element. 
+                                     * The size of the matrix is
+                                     * then @p dofs_per_face times
+                                     * <tt>source.dofs_per_face</tt>.
+                                     *
+                                     * Base elements of this element will
+                                     * have to implement this function. They
+                                     * may only provide interpolation
+                                     * matrices for certain source finite
+                                     * elements, for example those from the
+                                     * same family. If they don't implement
+                                     * interpolation from a given element,
+                                     * then they must throw an exception of
+                                     * type
+                                     * FiniteElement<dim>::ExcInterpolationNotImplemented,
+                                     * which will get propagated out from
+                                     * this element.
+                                     */
+    virtual void
+    get_face_interpolation_matrix (const FiniteElement<dim> &source,
+                                  FullMatrix<double>       &matrix) const;
+    
+
+                                    /**
+                                     * Return the matrix
+                                     * interpolating from a face of
+                                     * of one element to the subface of
+                                     * the neighboring element. 
+                                     * The size of the matrix is
+                                     * then @p dofs_per_face times
+                                     * <tt>source.dofs_per_face</tt>.
+                                     *
+                                     * Base elements of this element will
+                                     * have to implement this function. They
+                                     * may only provide interpolation
+                                     * matrices for certain source finite
+                                     * elements, for example those from the
+                                     * same family. If they don't implement
+                                     * interpolation from a given element,
+                                     * then they must throw an exception of
+                                     * type
+                                     * FiniteElement<dim>::ExcInterpolationNotImplemented,
+                                     * which will get propagated out from
+                                     * this element.
+                                     */
+    virtual void
+    get_subface_interpolation_matrix (const FiniteElement<dim> &source,
+                                     const unsigned int        subface,
+                                     FullMatrix<double>       &matrix) const;
+
                                     /**
                                      * If, on a vertex, several
                                      * finite elements are active,
index 6aeb731c2fed1665d903843f19c818995d8c7612..cd4f6982d308dd8980c3ada6c395e832042d7e43 100644 (file)
@@ -1851,8 +1851,6 @@ bool
 FESystem<dim>::
 hp_constraints_are_implemented () const
 {
-  return false;
-
   for (unsigned int b=0; b<n_base_elements(); ++b)
     if (base_element(b).hp_constraints_are_implemented() == false)
       return false;
@@ -1862,6 +1860,260 @@ hp_constraints_are_implemented () const
 
 
 
+template <int dim>
+void
+FESystem<dim>::
+get_face_interpolation_matrix (const FiniteElement<dim> &x_source_fe,
+                              FullMatrix<double>       &interpolation_matrix) const
+{
+  AssertThrow ((x_source_fe.get_name().find ("FE_System<") == 0)
+              ||
+              (dynamic_cast<const FESystem<dim>*>(&x_source_fe) != 0),
+              typename FiniteElement<dim>::
+              ExcInterpolationNotImplemented());
+
+  Assert (interpolation_matrix.m() == this->dofs_per_face,
+         ExcDimensionMismatch (interpolation_matrix.m(),
+                               this->dofs_per_face));
+  Assert (interpolation_matrix.n() == x_source_fe.dofs_per_face,
+         ExcDimensionMismatch (interpolation_matrix.m(),
+                               x_source_fe.dofs_per_face));
+
+                                  // since dofs for each base are
+                                  // independent, we only have to stack
+                                  // things up from base element to base
+                                  // element
+                                  //
+                                  // the problem is that we have to work with
+                                  // two FEs (this and fe_other). only deal
+                                  // with the case that both are FESystems
+                                  // and that they both have the same number
+                                  // of bases (counting multiplicity) each of
+                                  // which match in their number of
+                                  // components. this covers
+                                  // FESystem(FE_Q(p),1,FE_Q(q),2) vs
+                                  // FESystem(FE_Q(r),2,FE_Q(s),1), but not
+                                  // FESystem(FE_Q(p),1,FE_Q(q),2) vs
+                                  // FESystem(FESystem(FE_Q(r),2),1,FE_Q(s),1)
+  const FESystem<dim> *fe_other_system
+    = dynamic_cast<const FESystem<dim>*>(&x_source_fe);
+
+                                  // clear matrix, since we will not get to
+                                  // set all elements
+  interpolation_matrix = 0;
+  
+                                    // loop over all the base elements of
+                                    // this and the other element, counting
+                                    // their multiplicities
+  unsigned int base_index       = 0,
+              base_index_other = 0;
+  unsigned int multiplicity       = 0,
+              multiplicity_other = 0;
+
+  FullMatrix<double> base_to_base_interpolation;
+  
+  while (true)
+    {
+      const FiniteElement<dim>
+       &base       = base_element(base_index),
+       &base_other = fe_other_system->base_element(base_index_other);
+
+      Assert (base.n_components() == base_other.n_components(),
+             ExcNotImplemented());
+
+                                      // get the interpolation from the bases
+      base_to_base_interpolation.reinit (base.dofs_per_face,
+                                        base_other.dofs_per_face);
+      base.get_face_interpolation_matrix (base_other,
+                                         base_to_base_interpolation);
+      
+                                      // now translate entries. we'd like to
+                                      // have something like
+                                      // face_base_to_system_index, but that
+                                      // doesn't exist. rather, all we have
+                                      // is the reverse. well, use that then
+      for (unsigned int i=0; i<this->dofs_per_face; ++i)
+       if (this->face_system_to_base_index(i).first
+           ==
+           std::make_pair (base_index, multiplicity))
+         for (unsigned int j=0; j<fe_other_system->dofs_per_face; ++j)
+           if (fe_other_system->face_system_to_base_index(j).first
+               ==
+               std::make_pair (base_index_other, multiplicity_other))
+             interpolation_matrix(i, j)
+               = base_to_base_interpolation(this->face_system_to_base_index(i).second,
+                                            fe_other_system->face_system_to_base_index(j).second);
+         
+                                      // advance to the next base element
+                                      // for this and the other
+                                      // fe_system; see if we can simply
+                                      // advance the multiplicity by one,
+                                      // or if have to move on to the
+                                      // next base element
+      ++multiplicity;
+      if (multiplicity == element_multiplicity(base_index))
+       {
+         multiplicity = 0;
+         ++base_index;
+       }
+      ++multiplicity_other;
+      if (multiplicity_other ==
+         fe_other_system->element_multiplicity(base_index_other))
+       {
+         multiplicity_other = 0;
+         ++base_index_other;
+       }
+
+                                      // see if we have reached the end
+                                      // of the present element. if so,
+                                      // we should have reached the end
+                                      // of the other one as well
+      if (base_index == n_base_elements())
+       {
+         Assert (base_index_other == fe_other_system->n_base_elements(),
+                 ExcInternalError());
+         break;
+       }
+
+                                      // if we haven't reached the end of
+                                      // this element, we shouldn't have
+                                      // reached the end of the other one
+                                      // either
+      Assert (base_index_other != fe_other_system->n_base_elements(),
+             ExcInternalError());
+    }
+}
+
+
+
+template <int dim>
+void
+FESystem<dim>::
+get_subface_interpolation_matrix (const FiniteElement<dim> &x_source_fe,
+                                 const unsigned int        subface,
+                                 FullMatrix<double>       &interpolation_matrix) const
+{
+  AssertThrow ((x_source_fe.get_name().find ("FE_System<") == 0)
+              ||
+              (dynamic_cast<const FESystem<dim>*>(&x_source_fe) != 0),
+              typename FiniteElement<dim>::
+              ExcInterpolationNotImplemented());
+
+  Assert (interpolation_matrix.m() == this->dofs_per_face,
+         ExcDimensionMismatch (interpolation_matrix.m(),
+                               this->dofs_per_face));
+  Assert (interpolation_matrix.n() == x_source_fe.dofs_per_face,
+         ExcDimensionMismatch (interpolation_matrix.m(),
+                               x_source_fe.dofs_per_face));
+
+                                  // since dofs for each base are
+                                  // independent, we only have to stack
+                                  // things up from base element to base
+                                  // element
+                                  //
+                                  // the problem is that we have to work with
+                                  // two FEs (this and fe_other). only deal
+                                  // with the case that both are FESystems
+                                  // and that they both have the same number
+                                  // of bases (counting multiplicity) each of
+                                  // which match in their number of
+                                  // components. this covers
+                                  // FESystem(FE_Q(p),1,FE_Q(q),2) vs
+                                  // FESystem(FE_Q(r),2,FE_Q(s),1), but not
+                                  // FESystem(FE_Q(p),1,FE_Q(q),2) vs
+                                  // FESystem(FESystem(FE_Q(r),2),1,FE_Q(s),1)
+  const FESystem<dim> *fe_other_system
+    = dynamic_cast<const FESystem<dim>*>(&x_source_fe);
+
+                                  // clear matrix, since we will not get to
+                                  // set all elements
+  interpolation_matrix = 0;
+  
+                                    // loop over all the base elements of
+                                    // this and the other element, counting
+                                    // their multiplicities
+  unsigned int base_index       = 0,
+              base_index_other = 0;
+  unsigned int multiplicity       = 0,
+              multiplicity_other = 0;
+
+  FullMatrix<double> base_to_base_interpolation;
+  
+  while (true)
+    {
+      const FiniteElement<dim>
+       &base       = base_element(base_index),
+       &base_other = fe_other_system->base_element(base_index_other);
+
+      Assert (base.n_components() == base_other.n_components(),
+             ExcNotImplemented());
+
+                                      // get the interpolation from the bases
+      base_to_base_interpolation.reinit (base.dofs_per_face,
+                                        base_other.dofs_per_face);
+      base.get_subface_interpolation_matrix (base_other,
+                                            subface,
+                                            base_to_base_interpolation);
+      
+                                      // now translate entries. we'd like to
+                                      // have something like
+                                      // face_base_to_system_index, but that
+                                      // doesn't exist. rather, all we have
+                                      // is the reverse. well, use that then
+      for (unsigned int i=0; i<this->dofs_per_face; ++i)
+       if (this->face_system_to_base_index(i).first
+           ==
+           std::make_pair (base_index, multiplicity))
+         for (unsigned int j=0; j<fe_other_system->dofs_per_face; ++j)
+           if (fe_other_system->face_system_to_base_index(j).first
+               ==
+               std::make_pair (base_index_other, multiplicity_other))
+             interpolation_matrix(i, j)
+               = base_to_base_interpolation(this->face_system_to_base_index(i).second,
+                                            fe_other_system->face_system_to_base_index(j).second);
+         
+                                      // advance to the next base element
+                                      // for this and the other
+                                      // fe_system; see if we can simply
+                                      // advance the multiplicity by one,
+                                      // or if have to move on to the
+                                      // next base element
+      ++multiplicity;
+      if (multiplicity == element_multiplicity(base_index))
+       {
+         multiplicity = 0;
+         ++base_index;
+       }
+      ++multiplicity_other;
+      if (multiplicity_other ==
+         fe_other_system->element_multiplicity(base_index_other))
+       {
+         multiplicity_other = 0;
+         ++base_index_other;
+       }
+
+                                      // see if we have reached the end
+                                      // of the present element. if so,
+                                      // we should have reached the end
+                                      // of the other one as well
+      if (base_index == n_base_elements())
+       {
+         Assert (base_index_other == fe_other_system->n_base_elements(),
+                 ExcInternalError());
+         break;
+       }
+
+                                      // if we haven't reached the end of
+                                      // this element, we shouldn't have
+                                      // reached the end of the other one
+                                      // either
+      Assert (base_index_other != fe_other_system->n_base_elements(),
+             ExcInternalError());
+    }
+}
+
+
+
 template <int dim>
 template <int structdim>
 std::vector<std::pair<unsigned int, unsigned int> >
index 695c78f8ed0ee5e455ef92cf1085f591cadce27a..b682f4faa34a858389b8263e5cd44da3edc06a5f 100644 (file)
@@ -1130,14 +1130,122 @@ DEAL::Checking FE_DGQ<1>(3)2 against FE_DGQ<1>(2)2 in 1d:
 DEAL::Checking FE_DGP<1>(3)1 against FE_DGP<1>(1)1 in 1d:
 DEAL::Checking FE_DGP<1>(1)1 against FE_DGP<1>(3)1 in 1d:
 DEAL::Checking FE_Q<2>(1)3 against FE_Q<2>(2)3 in 2d:
+DEAL::FESystem<2>[FE_Q<2>(1)^3]  vs.  FESystem<2>[FE_Q<2>(1)^3]
+DEAL::1.0 1.0
+DEAL::2.4
+DEAL::1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 
+DEAL::FESystem<2>[FE_Q<2>(2)^3]  vs.  FESystem<2>[FE_Q<2>(2)^3]
+DEAL::1.0 1.0
+DEAL::3.0
+DEAL::1.0 0 1.0 0 1.0 0 1.0 0 1.0 1.0 1.0 0 1.0 0 1.0 0 1.0 0 
+DEAL::FESystem<2>[FE_Q<2>(1)^3]  vs.  FESystem<2>[FE_Q<2>(2)^3]
+DEAL::1.0 1.5
+DEAL::1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 
 DEAL::Checking FE_Q<2>(2)3 against FE_Q<2>(1)3 in 2d:
+DEAL::FESystem<2>[FE_Q<2>(2)^3]  vs.  FESystem<2>[FE_Q<2>(2)^3]
+DEAL::1.0 1.0
+DEAL::3.0
+DEAL::1.0 0 1.0 0 1.0 0 1.0 0 1.0 1.0 1.0 0 1.0 0 1.0 0 1.0 0 
+DEAL::FESystem<2>[FE_Q<2>(1)^3]  vs.  FESystem<2>[FE_Q<2>(1)^3]
+DEAL::1.0 1.0
+DEAL::2.4
+DEAL::1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 
+DEAL::FESystem<2>[FE_Q<2>(1)^3]  vs.  FESystem<2>[FE_Q<2>(2)^3]
+DEAL::1.0 1.5
+DEAL::1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 
 DEAL::Checking FE_DGQ<2>(2)2 against FE_DGQ<2>(3)2 in 2d:
+DEAL::FESystem<2>[FE_DGQ<2>(2)^2]  vs.  FESystem<2>[FE_DGQ<2>(2)^2]
+DEAL::(Empty matrix)
+DEAL::FESystem<2>[FE_DGQ<2>(3)^2]  vs.  FESystem<2>[FE_DGQ<2>(3)^2]
+DEAL::(Empty matrix)
+DEAL::FESystem<2>[FE_DGQ<2>(2)^2]  vs.  FESystem<2>[FE_DGQ<2>(3)^2]
+DEAL::(Empty matrix)
+DEAL::FESystem<2>[FE_DGQ<2>(3)^2]  vs.  FESystem<2>[FE_DGQ<2>(2)^2]
+DEAL::(Empty matrix)
 DEAL::Checking FE_DGQ<2>(3)2 against FE_DGQ<2>(2)2 in 2d:
+DEAL::FESystem<2>[FE_DGQ<2>(3)^2]  vs.  FESystem<2>[FE_DGQ<2>(3)^2]
+DEAL::(Empty matrix)
+DEAL::FESystem<2>[FE_DGQ<2>(2)^2]  vs.  FESystem<2>[FE_DGQ<2>(2)^2]
+DEAL::(Empty matrix)
+DEAL::FESystem<2>[FE_DGQ<2>(3)^2]  vs.  FESystem<2>[FE_DGQ<2>(2)^2]
+DEAL::(Empty matrix)
+DEAL::FESystem<2>[FE_DGQ<2>(2)^2]  vs.  FESystem<2>[FE_DGQ<2>(3)^2]
+DEAL::(Empty matrix)
 DEAL::Checking FE_DGP<2>(3)1 against FE_DGP<2>(1)1 in 2d:
+DEAL::FESystem<2>[FE_DGP<2>(3)]  vs.  FESystem<2>[FE_DGP<2>(3)]
+DEAL::(Empty matrix)
+DEAL::FESystem<2>[FE_DGP<2>(1)]  vs.  FESystem<2>[FE_DGP<2>(1)]
+DEAL::(Empty matrix)
+DEAL::FESystem<2>[FE_DGP<2>(3)]  vs.  FESystem<2>[FE_DGP<2>(1)]
+DEAL::(Empty matrix)
+DEAL::FESystem<2>[FE_DGP<2>(1)]  vs.  FESystem<2>[FE_DGP<2>(3)]
+DEAL::(Empty matrix)
 DEAL::Checking FE_DGP<2>(1)1 against FE_DGP<2>(3)1 in 2d:
+DEAL::FESystem<2>[FE_DGP<2>(1)]  vs.  FESystem<2>[FE_DGP<2>(1)]
+DEAL::(Empty matrix)
+DEAL::FESystem<2>[FE_DGP<2>(3)]  vs.  FESystem<2>[FE_DGP<2>(3)]
+DEAL::(Empty matrix)
+DEAL::FESystem<2>[FE_DGP<2>(1)]  vs.  FESystem<2>[FE_DGP<2>(3)]
+DEAL::(Empty matrix)
+DEAL::FESystem<2>[FE_DGP<2>(3)]  vs.  FESystem<2>[FE_DGP<2>(1)]
+DEAL::(Empty matrix)
 DEAL::Checking FE_Q<3>(1)3 against FE_Q<3>(2)3 in 3d:
+DEAL::FESystem<3>[FE_Q<3>(1)^3]  vs.  FESystem<3>[FE_Q<3>(1)^3]
+DEAL::1.0 1.0
+DEAL::3.5
+DEAL::1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 
+DEAL::FESystem<3>[FE_Q<3>(2)^3]  vs.  FESystem<3>[FE_Q<3>(2)^3]
+DEAL::1.0 1.0
+DEAL::5.2
+DEAL::1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 1.0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 
+DEAL::FESystem<3>[FE_Q<3>(1)^3]  vs.  FESystem<3>[FE_Q<3>(2)^3]
+DEAL::1.0 2.2
+DEAL::1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 
 DEAL::Checking FE_Q<3>(2)3 against FE_Q<3>(1)3 in 3d:
+DEAL::FESystem<3>[FE_Q<3>(2)^3]  vs.  FESystem<3>[FE_Q<3>(2)^3]
+DEAL::1.0 1.0
+DEAL::5.2
+DEAL::1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 1.0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 
+DEAL::FESystem<3>[FE_Q<3>(1)^3]  vs.  FESystem<3>[FE_Q<3>(1)^3]
+DEAL::1.0 1.0
+DEAL::3.5
+DEAL::1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 
+DEAL::FESystem<3>[FE_Q<3>(1)^3]  vs.  FESystem<3>[FE_Q<3>(2)^3]
+DEAL::1.0 2.2
+DEAL::1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 1.0 0 
 DEAL::Checking FE_DGQ<3>(2)2 against FE_DGQ<3>(3)2 in 3d:
+DEAL::FESystem<3>[FE_DGQ<3>(2)^2]  vs.  FESystem<3>[FE_DGQ<3>(2)^2]
+DEAL::(Empty matrix)
+DEAL::FESystem<3>[FE_DGQ<3>(3)^2]  vs.  FESystem<3>[FE_DGQ<3>(3)^2]
+DEAL::(Empty matrix)
+DEAL::FESystem<3>[FE_DGQ<3>(2)^2]  vs.  FESystem<3>[FE_DGQ<3>(3)^2]
+DEAL::(Empty matrix)
+DEAL::FESystem<3>[FE_DGQ<3>(3)^2]  vs.  FESystem<3>[FE_DGQ<3>(2)^2]
+DEAL::(Empty matrix)
 DEAL::Checking FE_DGQ<3>(3)2 against FE_DGQ<3>(2)2 in 3d:
+DEAL::FESystem<3>[FE_DGQ<3>(3)^2]  vs.  FESystem<3>[FE_DGQ<3>(3)^2]
+DEAL::(Empty matrix)
+DEAL::FESystem<3>[FE_DGQ<3>(2)^2]  vs.  FESystem<3>[FE_DGQ<3>(2)^2]
+DEAL::(Empty matrix)
+DEAL::FESystem<3>[FE_DGQ<3>(3)^2]  vs.  FESystem<3>[FE_DGQ<3>(2)^2]
+DEAL::(Empty matrix)
+DEAL::FESystem<3>[FE_DGQ<3>(2)^2]  vs.  FESystem<3>[FE_DGQ<3>(3)^2]
+DEAL::(Empty matrix)
 DEAL::Checking FE_DGP<3>(3)1 against FE_DGP<3>(1)1 in 3d:
+DEAL::FESystem<3>[FE_DGP<3>(3)]  vs.  FESystem<3>[FE_DGP<3>(3)]
+DEAL::(Empty matrix)
+DEAL::FESystem<3>[FE_DGP<3>(1)]  vs.  FESystem<3>[FE_DGP<3>(1)]
+DEAL::(Empty matrix)
+DEAL::FESystem<3>[FE_DGP<3>(3)]  vs.  FESystem<3>[FE_DGP<3>(1)]
+DEAL::(Empty matrix)
+DEAL::FESystem<3>[FE_DGP<3>(1)]  vs.  FESystem<3>[FE_DGP<3>(3)]
+DEAL::(Empty matrix)
 DEAL::Checking FE_DGP<3>(1)1 against FE_DGP<3>(3)1 in 3d:
+DEAL::FESystem<3>[FE_DGP<3>(1)]  vs.  FESystem<3>[FE_DGP<3>(1)]
+DEAL::(Empty matrix)
+DEAL::FESystem<3>[FE_DGP<3>(3)]  vs.  FESystem<3>[FE_DGP<3>(3)]
+DEAL::(Empty matrix)
+DEAL::FESystem<3>[FE_DGP<3>(1)]  vs.  FESystem<3>[FE_DGP<3>(3)]
+DEAL::(Empty matrix)
+DEAL::FESystem<3>[FE_DGP<3>(3)]  vs.  FESystem<3>[FE_DGP<3>(1)]
+DEAL::(Empty matrix)
index c5bdcf8d2bcc91c4a08568fd9c2e0eba5762fbc2..29e0febc9ee6ecbe9ed360f0ce2b647220b213d4 100644 (file)
@@ -3058,14 +3058,338 @@ DEAL::Checking FE_DGQ<1>(3)2 against FE_DGQ<1>(2)2 in 1d:
 DEAL::Checking FE_DGP<1>(3)1 against FE_DGP<1>(1)1 in 1d:
 DEAL::Checking FE_DGP<1>(1)1 against FE_DGP<1>(3)1 in 1d:
 DEAL::Checking FE_Q<2>(1)3 against FE_Q<2>(2)3 in 2d:
+DEAL::FESystem<2>[FE_Q<2>(1)^3]  vs.  FESystem<2>[FE_Q<2>(1)^3]
+DEAL::1.0 1.5
+DEAL::2.1
+DEAL::1.0 0 1.0 0.50 1.0 0 0.50 0 0.50 0 0.50 0 
+DEAL::FESystem<2>[FE_Q<2>(2)^3]  vs.  FESystem<2>[FE_Q<2>(2)^3]
+DEAL::1.2 1.8
+DEAL::2.9
+DEAL::1.0 0 1.0 0.38 1.0 0 0 0 0 0 0 0 0.75 0 0.75 0 0.75 0 
+DEAL::FESystem<2>[FE_Q<2>(1)^3]  vs.  FESystem<2>[FE_Q<2>(2)^3]
+DEAL::1.0 2.2
+DEAL::1.0 0 1.0 0.50 1.0 0 0.50 0 0.50 0 0.50 0 
+DEAL::FESystem<2>[FE_Q<2>(1)^3]  vs.  FESystem<2>[FE_Q<2>(1)^3]
+DEAL::1.0 1.5
+DEAL::2.1
+DEAL::0.50 0 0.50 0 0.50 0 1.0 0 1.0 0.50 1.0 0 
+DEAL::FESystem<2>[FE_Q<2>(2)^3]  vs.  FESystem<2>[FE_Q<2>(2)^3]
+DEAL::1.2 1.8
+DEAL::2.9
+DEAL::0 0 0 -0.12 0 0 1.0 0 1.0 1.0 1.0 0 0.75 0 0.75 1.0 0.75 0 
+DEAL::FESystem<2>[FE_Q<2>(1)^3]  vs.  FESystem<2>[FE_Q<2>(2)^3]
+DEAL::1.0 2.2
+DEAL::0.50 0 0.50 0 0.50 0 1.0 0 1.0 0.50 1.0 0 
 DEAL::Checking FE_Q<2>(2)3 against FE_Q<2>(1)3 in 2d:
+DEAL::FESystem<2>[FE_Q<2>(2)^3]  vs.  FESystem<2>[FE_Q<2>(2)^3]
+DEAL::1.2 1.8
+DEAL::2.9
+DEAL::1.0 0 1.0 0.38 1.0 0 0 0 0 0 0 0 0.75 0 0.75 0 0.75 0 
+DEAL::FESystem<2>[FE_Q<2>(1)^3]  vs.  FESystem<2>[FE_Q<2>(1)^3]
+DEAL::1.0 1.5
+DEAL::2.1
+DEAL::1.0 0 1.0 0.50 1.0 0 0.50 0 0.50 0 0.50 0 
+DEAL::FESystem<2>[FE_Q<2>(1)^3]  vs.  FESystem<2>[FE_Q<2>(2)^3]
+DEAL::1.0 2.2
+DEAL::1.0 0 1.0 0.50 1.0 0 0.50 0 0.50 0 0.50 0 
+DEAL::FESystem<2>[FE_Q<2>(2)^3]  vs.  FESystem<2>[FE_Q<2>(2)^3]
+DEAL::1.2 1.8
+DEAL::2.9
+DEAL::0 0 0 -0.12 0 0 1.0 0 1.0 1.0 1.0 0 0.75 0 0.75 1.0 0.75 0 
+DEAL::FESystem<2>[FE_Q<2>(1)^3]  vs.  FESystem<2>[FE_Q<2>(1)^3]
+DEAL::1.0 1.5
+DEAL::2.1
+DEAL::0.50 0 0.50 0 0.50 0 1.0 0 1.0 0.50 1.0 0 
+DEAL::FESystem<2>[FE_Q<2>(1)^3]  vs.  FESystem<2>[FE_Q<2>(2)^3]
+DEAL::1.0 2.2
+DEAL::0.50 0 0.50 0 0.50 0 1.0 0 1.0 0.50 1.0 0 
 DEAL::Checking FE_DGQ<2>(2)2 against FE_DGQ<2>(3)2 in 2d:
+DEAL::FESystem<2>[FE_DGQ<2>(2)^2]  vs.  FESystem<2>[FE_DGQ<2>(2)^2]
+DEAL::(Empty matrix)
+DEAL::FESystem<2>[FE_DGQ<2>(3)^2]  vs.  FESystem<2>[FE_DGQ<2>(3)^2]
+DEAL::(Empty matrix)
+DEAL::FESystem<2>[FE_DGQ<2>(2)^2]  vs.  FESystem<2>[FE_DGQ<2>(3)^2]
+DEAL::(Empty matrix)
+DEAL::FESystem<2>[FE_DGQ<2>(3)^2]  vs.  FESystem<2>[FE_DGQ<2>(2)^2]
+DEAL::(Empty matrix)
+DEAL::FESystem<2>[FE_DGQ<2>(2)^2]  vs.  FESystem<2>[FE_DGQ<2>(2)^2]
+DEAL::(Empty matrix)
+DEAL::FESystem<2>[FE_DGQ<2>(3)^2]  vs.  FESystem<2>[FE_DGQ<2>(3)^2]
+DEAL::(Empty matrix)
+DEAL::FESystem<2>[FE_DGQ<2>(2)^2]  vs.  FESystem<2>[FE_DGQ<2>(3)^2]
+DEAL::(Empty matrix)
+DEAL::FESystem<2>[FE_DGQ<2>(3)^2]  vs.  FESystem<2>[FE_DGQ<2>(2)^2]
+DEAL::(Empty matrix)
 DEAL::Checking FE_DGQ<2>(3)2 against FE_DGQ<2>(2)2 in 2d:
+DEAL::FESystem<2>[FE_DGQ<2>(3)^2]  vs.  FESystem<2>[FE_DGQ<2>(3)^2]
+DEAL::(Empty matrix)
+DEAL::FESystem<2>[FE_DGQ<2>(2)^2]  vs.  FESystem<2>[FE_DGQ<2>(2)^2]
+DEAL::(Empty matrix)
+DEAL::FESystem<2>[FE_DGQ<2>(3)^2]  vs.  FESystem<2>[FE_DGQ<2>(2)^2]
+DEAL::(Empty matrix)
+DEAL::FESystem<2>[FE_DGQ<2>(2)^2]  vs.  FESystem<2>[FE_DGQ<2>(3)^2]
+DEAL::(Empty matrix)
+DEAL::FESystem<2>[FE_DGQ<2>(3)^2]  vs.  FESystem<2>[FE_DGQ<2>(3)^2]
+DEAL::(Empty matrix)
+DEAL::FESystem<2>[FE_DGQ<2>(2)^2]  vs.  FESystem<2>[FE_DGQ<2>(2)^2]
+DEAL::(Empty matrix)
+DEAL::FESystem<2>[FE_DGQ<2>(3)^2]  vs.  FESystem<2>[FE_DGQ<2>(2)^2]
+DEAL::(Empty matrix)
+DEAL::FESystem<2>[FE_DGQ<2>(2)^2]  vs.  FESystem<2>[FE_DGQ<2>(3)^2]
+DEAL::(Empty matrix)
 DEAL::Checking FE_DGP<2>(3)1 against FE_DGP<2>(1)1 in 2d:
+DEAL::FESystem<2>[FE_DGP<2>(3)]  vs.  FESystem<2>[FE_DGP<2>(3)]
+DEAL::(Empty matrix)
+DEAL::FESystem<2>[FE_DGP<2>(1)]  vs.  FESystem<2>[FE_DGP<2>(1)]
+DEAL::(Empty matrix)
+DEAL::FESystem<2>[FE_DGP<2>(3)]  vs.  FESystem<2>[FE_DGP<2>(1)]
+DEAL::(Empty matrix)
+DEAL::FESystem<2>[FE_DGP<2>(1)]  vs.  FESystem<2>[FE_DGP<2>(3)]
+DEAL::(Empty matrix)
+DEAL::FESystem<2>[FE_DGP<2>(3)]  vs.  FESystem<2>[FE_DGP<2>(3)]
+DEAL::(Empty matrix)
+DEAL::FESystem<2>[FE_DGP<2>(1)]  vs.  FESystem<2>[FE_DGP<2>(1)]
+DEAL::(Empty matrix)
+DEAL::FESystem<2>[FE_DGP<2>(3)]  vs.  FESystem<2>[FE_DGP<2>(1)]
+DEAL::(Empty matrix)
+DEAL::FESystem<2>[FE_DGP<2>(1)]  vs.  FESystem<2>[FE_DGP<2>(3)]
+DEAL::(Empty matrix)
 DEAL::Checking FE_DGP<2>(1)1 against FE_DGP<2>(3)1 in 2d:
+DEAL::FESystem<2>[FE_DGP<2>(1)]  vs.  FESystem<2>[FE_DGP<2>(1)]
+DEAL::(Empty matrix)
+DEAL::FESystem<2>[FE_DGP<2>(3)]  vs.  FESystem<2>[FE_DGP<2>(3)]
+DEAL::(Empty matrix)
+DEAL::FESystem<2>[FE_DGP<2>(1)]  vs.  FESystem<2>[FE_DGP<2>(3)]
+DEAL::(Empty matrix)
+DEAL::FESystem<2>[FE_DGP<2>(3)]  vs.  FESystem<2>[FE_DGP<2>(1)]
+DEAL::(Empty matrix)
+DEAL::FESystem<2>[FE_DGP<2>(1)]  vs.  FESystem<2>[FE_DGP<2>(1)]
+DEAL::(Empty matrix)
+DEAL::FESystem<2>[FE_DGP<2>(3)]  vs.  FESystem<2>[FE_DGP<2>(3)]
+DEAL::(Empty matrix)
+DEAL::FESystem<2>[FE_DGP<2>(1)]  vs.  FESystem<2>[FE_DGP<2>(3)]
+DEAL::(Empty matrix)
+DEAL::FESystem<2>[FE_DGP<2>(3)]  vs.  FESystem<2>[FE_DGP<2>(1)]
+DEAL::(Empty matrix)
 DEAL::Checking FE_Q<3>(1)3 against FE_Q<3>(2)3 in 3d:
+DEAL::FESystem<3>[FE_Q<3>(1)^3]  vs.  FESystem<3>[FE_Q<3>(1)^3]
+DEAL::1.0 2.2
+DEAL::2.6
+DEAL::1.0 0 1.0 0.25 1.0 0 0.50 0 0.50 0 0.50 0 0.50 0 0.50 0 0.50 0 0.25 0 0.25 0 0.25 0 
+DEAL::FESystem<3>[FE_Q<3>(2)^3]  vs.  FESystem<3>[FE_Q<3>(2)^3]
+DEAL::1.6 3.1
+DEAL::4.7
+DEAL::1.0 0 1.0 0.14 1.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.75 0 0.75 0.75 0.75 0 0 0 0 0 0 0 0.75 0 0.75 0 0.75 0 0 0 0 0 0 0 0.56 0 0.56 0 0.56 0 
+DEAL::FESystem<3>[FE_Q<3>(1)^3]  vs.  FESystem<3>[FE_Q<3>(2)^3]
+DEAL::1.0 5.1
+DEAL::1.0 0 1.0 0.25 1.0 0 0.50 0 0.50 0 0.50 0 0.50 0 0.50 0 0.50 0 0.25 0 0.25 0 0.25 0 
+DEAL::FESystem<3>[FE_Q<3>(1)^3]  vs.  FESystem<3>[FE_Q<3>(1)^3]
+DEAL::1.0 2.2
+DEAL::2.6
+DEAL::0.50 0 0.50 0 0.50 0 1.0 0 1.0 0.25 1.0 0 0.25 0 0.25 0 0.25 0 0.50 0 0.50 0 0.50 0 
+DEAL::FESystem<3>[FE_Q<3>(2)^3]  vs.  FESystem<3>[FE_Q<3>(2)^3]
+DEAL::1.6 3.1
+DEAL::4.7
+DEAL::0 0 0 -0.047 0 0 1.0 0 1.0 0 1.0 0 0 0 0 0 0 0 0 0 0 -0.12 0 0 0 0 0 0 0 0 0.75 0 0.75 1.0 0.75 0 0.75 0 0.75 0 0.75 0 0 0 0 0 0 0 0.56 0 0.56 0 0.56 0 
+DEAL::FESystem<3>[FE_Q<3>(1)^3]  vs.  FESystem<3>[FE_Q<3>(2)^3]
+DEAL::1.0 5.1
+DEAL::0.50 0 0.50 0 0.50 0 1.0 0 1.0 0.25 1.0 0 0.25 0 0.25 0 0.25 0 0.50 0 0.50 0 0.50 0 
+DEAL::FESystem<3>[FE_Q<3>(1)^3]  vs.  FESystem<3>[FE_Q<3>(1)^3]
+DEAL::1.0 2.2
+DEAL::2.6
+DEAL::0.50 0 0.50 0 0.50 0 0.25 0 0.25 0 0.25 0 1.0 0 1.0 0.25 1.0 0 0.50 0 0.50 0 0.50 0 
+DEAL::FESystem<3>[FE_Q<3>(2)^3]  vs.  FESystem<3>[FE_Q<3>(2)^3]
+DEAL::1.6 3.1
+DEAL::4.7
+DEAL::0 0 0 -0.047 0 0 0 0 0 0 0 0 1.0 0 1.0 0 1.0 0 0 0 0 0 0 0 0.75 0 0.75 0.75 0.75 0 0 0 0 0 0 0 0 0 0 0 0 0 0.75 0 0.75 0 0.75 0 0.56 0 0.56 0 0.56 0 
+DEAL::FESystem<3>[FE_Q<3>(1)^3]  vs.  FESystem<3>[FE_Q<3>(2)^3]
+DEAL::1.0 5.1
+DEAL::0.50 0 0.50 0 0.50 0 0.25 0 0.25 0 0.25 0 1.0 0 1.0 0.25 1.0 0 0.50 0 0.50 0 0.50 0 
+DEAL::FESystem<3>[FE_Q<3>(1)^3]  vs.  FESystem<3>[FE_Q<3>(1)^3]
+DEAL::1.0 2.2
+DEAL::2.6
+DEAL::0.25 0 0.25 0 0.25 0 0.50 0 0.50 0 0.50 0 0.50 0 0.50 0 0.50 0 1.0 0 1.0 0.25 1.0 0 
+DEAL::FESystem<3>[FE_Q<3>(2)^3]  vs.  FESystem<3>[FE_Q<3>(2)^3]
+DEAL::1.6 3.1
+DEAL::4.7
+DEAL::0 0 0 0.016 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.0 0 1.0 0.38 1.0 0 0 0 0 0 0 0 0.75 0 0.75 0 0.75 0 0 0 0 0 0 0 0.75 0 0.75 0 0.75 0 0.56 0 0.56 1.0 0.56 0 
+DEAL::FESystem<3>[FE_Q<3>(1)^3]  vs.  FESystem<3>[FE_Q<3>(2)^3]
+DEAL::1.0 5.1
+DEAL::0.25 0 0.25 0 0.25 0 0.50 0 0.50 0 0.50 0 0.50 0 0.50 0 0.50 0 1.0 0 1.0 0.25 1.0 0 
 DEAL::Checking FE_Q<3>(2)3 against FE_Q<3>(1)3 in 3d:
+DEAL::FESystem<3>[FE_Q<3>(2)^3]  vs.  FESystem<3>[FE_Q<3>(2)^3]
+DEAL::1.6 3.1
+DEAL::4.7
+DEAL::1.0 0 1.0 0.14 1.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.75 0 0.75 0.75 0.75 0 0 0 0 0 0 0 0.75 0 0.75 0 0.75 0 0 0 0 0 0 0 0.56 0 0.56 0 0.56 0 
+DEAL::FESystem<3>[FE_Q<3>(1)^3]  vs.  FESystem<3>[FE_Q<3>(1)^3]
+DEAL::1.0 2.2
+DEAL::2.6
+DEAL::1.0 0 1.0 0.25 1.0 0 0.50 0 0.50 0 0.50 0 0.50 0 0.50 0 0.50 0 0.25 0 0.25 0 0.25 0 
+DEAL::FESystem<3>[FE_Q<3>(1)^3]  vs.  FESystem<3>[FE_Q<3>(2)^3]
+DEAL::1.0 5.1
+DEAL::1.0 0 1.0 0.25 1.0 0 0.50 0 0.50 0 0.50 0 0.50 0 0.50 0 0.50 0 0.25 0 0.25 0 0.25 0 
+DEAL::FESystem<3>[FE_Q<3>(2)^3]  vs.  FESystem<3>[FE_Q<3>(2)^3]
+DEAL::1.6 3.1
+DEAL::4.7
+DEAL::0 0 0 -0.047 0 0 1.0 0 1.0 0 1.0 0 0 0 0 0 0 0 0 0 0 -0.12 0 0 0 0 0 0 0 0 0.75 0 0.75 1.0 0.75 0 0.75 0 0.75 0 0.75 0 0 0 0 0 0 0 0.56 0 0.56 0 0.56 0 
+DEAL::FESystem<3>[FE_Q<3>(1)^3]  vs.  FESystem<3>[FE_Q<3>(1)^3]
+DEAL::1.0 2.2
+DEAL::2.6
+DEAL::0.50 0 0.50 0 0.50 0 1.0 0 1.0 0.25 1.0 0 0.25 0 0.25 0 0.25 0 0.50 0 0.50 0 0.50 0 
+DEAL::FESystem<3>[FE_Q<3>(1)^3]  vs.  FESystem<3>[FE_Q<3>(2)^3]
+DEAL::1.0 5.1
+DEAL::0.50 0 0.50 0 0.50 0 1.0 0 1.0 0.25 1.0 0 0.25 0 0.25 0 0.25 0 0.50 0 0.50 0 0.50 0 
+DEAL::FESystem<3>[FE_Q<3>(2)^3]  vs.  FESystem<3>[FE_Q<3>(2)^3]
+DEAL::1.6 3.1
+DEAL::4.7
+DEAL::0 0 0 -0.047 0 0 0 0 0 0 0 0 1.0 0 1.0 0 1.0 0 0 0 0 0 0 0 0.75 0 0.75 0.75 0.75 0 0 0 0 0 0 0 0 0 0 0 0 0 0.75 0 0.75 0 0.75 0 0.56 0 0.56 0 0.56 0 
+DEAL::FESystem<3>[FE_Q<3>(1)^3]  vs.  FESystem<3>[FE_Q<3>(1)^3]
+DEAL::1.0 2.2
+DEAL::2.6
+DEAL::0.50 0 0.50 0 0.50 0 0.25 0 0.25 0 0.25 0 1.0 0 1.0 0.25 1.0 0 0.50 0 0.50 0 0.50 0 
+DEAL::FESystem<3>[FE_Q<3>(1)^3]  vs.  FESystem<3>[FE_Q<3>(2)^3]
+DEAL::1.0 5.1
+DEAL::0.50 0 0.50 0 0.50 0 0.25 0 0.25 0 0.25 0 1.0 0 1.0 0.25 1.0 0 0.50 0 0.50 0 0.50 0 
+DEAL::FESystem<3>[FE_Q<3>(2)^3]  vs.  FESystem<3>[FE_Q<3>(2)^3]
+DEAL::1.6 3.1
+DEAL::4.7
+DEAL::0 0 0 0.016 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.0 0 1.0 0.38 1.0 0 0 0 0 0 0 0 0.75 0 0.75 0 0.75 0 0 0 0 0 0 0 0.75 0 0.75 0 0.75 0 0.56 0 0.56 1.0 0.56 0 
+DEAL::FESystem<3>[FE_Q<3>(1)^3]  vs.  FESystem<3>[FE_Q<3>(1)^3]
+DEAL::1.0 2.2
+DEAL::2.6
+DEAL::0.25 0 0.25 0 0.25 0 0.50 0 0.50 0 0.50 0 0.50 0 0.50 0 0.50 0 1.0 0 1.0 0.25 1.0 0 
+DEAL::FESystem<3>[FE_Q<3>(1)^3]  vs.  FESystem<3>[FE_Q<3>(2)^3]
+DEAL::1.0 5.1
+DEAL::0.25 0 0.25 0 0.25 0 0.50 0 0.50 0 0.50 0 0.50 0 0.50 0 0.50 0 1.0 0 1.0 0.25 1.0 0 
 DEAL::Checking FE_DGQ<3>(2)2 against FE_DGQ<3>(3)2 in 3d:
+DEAL::FESystem<3>[FE_DGQ<3>(2)^2]  vs.  FESystem<3>[FE_DGQ<3>(2)^2]
+DEAL::(Empty matrix)
+DEAL::FESystem<3>[FE_DGQ<3>(3)^2]  vs.  FESystem<3>[FE_DGQ<3>(3)^2]
+DEAL::(Empty matrix)
+DEAL::FESystem<3>[FE_DGQ<3>(2)^2]  vs.  FESystem<3>[FE_DGQ<3>(3)^2]
+DEAL::(Empty matrix)
+DEAL::FESystem<3>[FE_DGQ<3>(3)^2]  vs.  FESystem<3>[FE_DGQ<3>(2)^2]
+DEAL::(Empty matrix)
+DEAL::FESystem<3>[FE_DGQ<3>(2)^2]  vs.  FESystem<3>[FE_DGQ<3>(2)^2]
+DEAL::(Empty matrix)
+DEAL::FESystem<3>[FE_DGQ<3>(3)^2]  vs.  FESystem<3>[FE_DGQ<3>(3)^2]
+DEAL::(Empty matrix)
+DEAL::FESystem<3>[FE_DGQ<3>(2)^2]  vs.  FESystem<3>[FE_DGQ<3>(3)^2]
+DEAL::(Empty matrix)
+DEAL::FESystem<3>[FE_DGQ<3>(3)^2]  vs.  FESystem<3>[FE_DGQ<3>(2)^2]
+DEAL::(Empty matrix)
+DEAL::FESystem<3>[FE_DGQ<3>(2)^2]  vs.  FESystem<3>[FE_DGQ<3>(2)^2]
+DEAL::(Empty matrix)
+DEAL::FESystem<3>[FE_DGQ<3>(3)^2]  vs.  FESystem<3>[FE_DGQ<3>(3)^2]
+DEAL::(Empty matrix)
+DEAL::FESystem<3>[FE_DGQ<3>(2)^2]  vs.  FESystem<3>[FE_DGQ<3>(3)^2]
+DEAL::(Empty matrix)
+DEAL::FESystem<3>[FE_DGQ<3>(3)^2]  vs.  FESystem<3>[FE_DGQ<3>(2)^2]
+DEAL::(Empty matrix)
+DEAL::FESystem<3>[FE_DGQ<3>(2)^2]  vs.  FESystem<3>[FE_DGQ<3>(2)^2]
+DEAL::(Empty matrix)
+DEAL::FESystem<3>[FE_DGQ<3>(3)^2]  vs.  FESystem<3>[FE_DGQ<3>(3)^2]
+DEAL::(Empty matrix)
+DEAL::FESystem<3>[FE_DGQ<3>(2)^2]  vs.  FESystem<3>[FE_DGQ<3>(3)^2]
+DEAL::(Empty matrix)
+DEAL::FESystem<3>[FE_DGQ<3>(3)^2]  vs.  FESystem<3>[FE_DGQ<3>(2)^2]
+DEAL::(Empty matrix)
 DEAL::Checking FE_DGQ<3>(3)2 against FE_DGQ<3>(2)2 in 3d:
+DEAL::FESystem<3>[FE_DGQ<3>(3)^2]  vs.  FESystem<3>[FE_DGQ<3>(3)^2]
+DEAL::(Empty matrix)
+DEAL::FESystem<3>[FE_DGQ<3>(2)^2]  vs.  FESystem<3>[FE_DGQ<3>(2)^2]
+DEAL::(Empty matrix)
+DEAL::FESystem<3>[FE_DGQ<3>(3)^2]  vs.  FESystem<3>[FE_DGQ<3>(2)^2]
+DEAL::(Empty matrix)
+DEAL::FESystem<3>[FE_DGQ<3>(2)^2]  vs.  FESystem<3>[FE_DGQ<3>(3)^2]
+DEAL::(Empty matrix)
+DEAL::FESystem<3>[FE_DGQ<3>(3)^2]  vs.  FESystem<3>[FE_DGQ<3>(3)^2]
+DEAL::(Empty matrix)
+DEAL::FESystem<3>[FE_DGQ<3>(2)^2]  vs.  FESystem<3>[FE_DGQ<3>(2)^2]
+DEAL::(Empty matrix)
+DEAL::FESystem<3>[FE_DGQ<3>(3)^2]  vs.  FESystem<3>[FE_DGQ<3>(2)^2]
+DEAL::(Empty matrix)
+DEAL::FESystem<3>[FE_DGQ<3>(2)^2]  vs.  FESystem<3>[FE_DGQ<3>(3)^2]
+DEAL::(Empty matrix)
+DEAL::FESystem<3>[FE_DGQ<3>(3)^2]  vs.  FESystem<3>[FE_DGQ<3>(3)^2]
+DEAL::(Empty matrix)
+DEAL::FESystem<3>[FE_DGQ<3>(2)^2]  vs.  FESystem<3>[FE_DGQ<3>(2)^2]
+DEAL::(Empty matrix)
+DEAL::FESystem<3>[FE_DGQ<3>(3)^2]  vs.  FESystem<3>[FE_DGQ<3>(2)^2]
+DEAL::(Empty matrix)
+DEAL::FESystem<3>[FE_DGQ<3>(2)^2]  vs.  FESystem<3>[FE_DGQ<3>(3)^2]
+DEAL::(Empty matrix)
+DEAL::FESystem<3>[FE_DGQ<3>(3)^2]  vs.  FESystem<3>[FE_DGQ<3>(3)^2]
+DEAL::(Empty matrix)
+DEAL::FESystem<3>[FE_DGQ<3>(2)^2]  vs.  FESystem<3>[FE_DGQ<3>(2)^2]
+DEAL::(Empty matrix)
+DEAL::FESystem<3>[FE_DGQ<3>(3)^2]  vs.  FESystem<3>[FE_DGQ<3>(2)^2]
+DEAL::(Empty matrix)
+DEAL::FESystem<3>[FE_DGQ<3>(2)^2]  vs.  FESystem<3>[FE_DGQ<3>(3)^2]
+DEAL::(Empty matrix)
 DEAL::Checking FE_DGP<3>(3)1 against FE_DGP<3>(1)1 in 3d:
+DEAL::FESystem<3>[FE_DGP<3>(3)]  vs.  FESystem<3>[FE_DGP<3>(3)]
+DEAL::(Empty matrix)
+DEAL::FESystem<3>[FE_DGP<3>(1)]  vs.  FESystem<3>[FE_DGP<3>(1)]
+DEAL::(Empty matrix)
+DEAL::FESystem<3>[FE_DGP<3>(3)]  vs.  FESystem<3>[FE_DGP<3>(1)]
+DEAL::(Empty matrix)
+DEAL::FESystem<3>[FE_DGP<3>(1)]  vs.  FESystem<3>[FE_DGP<3>(3)]
+DEAL::(Empty matrix)
+DEAL::FESystem<3>[FE_DGP<3>(3)]  vs.  FESystem<3>[FE_DGP<3>(3)]
+DEAL::(Empty matrix)
+DEAL::FESystem<3>[FE_DGP<3>(1)]  vs.  FESystem<3>[FE_DGP<3>(1)]
+DEAL::(Empty matrix)
+DEAL::FESystem<3>[FE_DGP<3>(3)]  vs.  FESystem<3>[FE_DGP<3>(1)]
+DEAL::(Empty matrix)
+DEAL::FESystem<3>[FE_DGP<3>(1)]  vs.  FESystem<3>[FE_DGP<3>(3)]
+DEAL::(Empty matrix)
+DEAL::FESystem<3>[FE_DGP<3>(3)]  vs.  FESystem<3>[FE_DGP<3>(3)]
+DEAL::(Empty matrix)
+DEAL::FESystem<3>[FE_DGP<3>(1)]  vs.  FESystem<3>[FE_DGP<3>(1)]
+DEAL::(Empty matrix)
+DEAL::FESystem<3>[FE_DGP<3>(3)]  vs.  FESystem<3>[FE_DGP<3>(1)]
+DEAL::(Empty matrix)
+DEAL::FESystem<3>[FE_DGP<3>(1)]  vs.  FESystem<3>[FE_DGP<3>(3)]
+DEAL::(Empty matrix)
+DEAL::FESystem<3>[FE_DGP<3>(3)]  vs.  FESystem<3>[FE_DGP<3>(3)]
+DEAL::(Empty matrix)
+DEAL::FESystem<3>[FE_DGP<3>(1)]  vs.  FESystem<3>[FE_DGP<3>(1)]
+DEAL::(Empty matrix)
+DEAL::FESystem<3>[FE_DGP<3>(3)]  vs.  FESystem<3>[FE_DGP<3>(1)]
+DEAL::(Empty matrix)
+DEAL::FESystem<3>[FE_DGP<3>(1)]  vs.  FESystem<3>[FE_DGP<3>(3)]
+DEAL::(Empty matrix)
 DEAL::Checking FE_DGP<3>(1)1 against FE_DGP<3>(3)1 in 3d:
+DEAL::FESystem<3>[FE_DGP<3>(1)]  vs.  FESystem<3>[FE_DGP<3>(1)]
+DEAL::(Empty matrix)
+DEAL::FESystem<3>[FE_DGP<3>(3)]  vs.  FESystem<3>[FE_DGP<3>(3)]
+DEAL::(Empty matrix)
+DEAL::FESystem<3>[FE_DGP<3>(1)]  vs.  FESystem<3>[FE_DGP<3>(3)]
+DEAL::(Empty matrix)
+DEAL::FESystem<3>[FE_DGP<3>(3)]  vs.  FESystem<3>[FE_DGP<3>(1)]
+DEAL::(Empty matrix)
+DEAL::FESystem<3>[FE_DGP<3>(1)]  vs.  FESystem<3>[FE_DGP<3>(1)]
+DEAL::(Empty matrix)
+DEAL::FESystem<3>[FE_DGP<3>(3)]  vs.  FESystem<3>[FE_DGP<3>(3)]
+DEAL::(Empty matrix)
+DEAL::FESystem<3>[FE_DGP<3>(1)]  vs.  FESystem<3>[FE_DGP<3>(3)]
+DEAL::(Empty matrix)
+DEAL::FESystem<3>[FE_DGP<3>(3)]  vs.  FESystem<3>[FE_DGP<3>(1)]
+DEAL::(Empty matrix)
+DEAL::FESystem<3>[FE_DGP<3>(1)]  vs.  FESystem<3>[FE_DGP<3>(1)]
+DEAL::(Empty matrix)
+DEAL::FESystem<3>[FE_DGP<3>(3)]  vs.  FESystem<3>[FE_DGP<3>(3)]
+DEAL::(Empty matrix)
+DEAL::FESystem<3>[FE_DGP<3>(1)]  vs.  FESystem<3>[FE_DGP<3>(3)]
+DEAL::(Empty matrix)
+DEAL::FESystem<3>[FE_DGP<3>(3)]  vs.  FESystem<3>[FE_DGP<3>(1)]
+DEAL::(Empty matrix)
+DEAL::FESystem<3>[FE_DGP<3>(1)]  vs.  FESystem<3>[FE_DGP<3>(1)]
+DEAL::(Empty matrix)
+DEAL::FESystem<3>[FE_DGP<3>(3)]  vs.  FESystem<3>[FE_DGP<3>(3)]
+DEAL::(Empty matrix)
+DEAL::FESystem<3>[FE_DGP<3>(1)]  vs.  FESystem<3>[FE_DGP<3>(3)]
+DEAL::(Empty matrix)
+DEAL::FESystem<3>[FE_DGP<3>(3)]  vs.  FESystem<3>[FE_DGP<3>(1)]
+DEAL::(Empty matrix)

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.